Claimity Logo
    Manuale d'usoIntegrazione APISupporto
    Accedi

    Claimity API

    Documentazione API

    Riferimento tecnico e guide per l'integrazione con Claimity.

    Panoramica

    L'API utilizza metodi HTTPS ed endpoint RESTful per creare, modificare e gestire le risorse nel sistema. Come formato di scambio viene utilizzato JSON.

    Primi passi

    Questa API offre un accesso completo alle funzioni principali. Che si tratti di integrazioni, automazione o applicazioni proprie, l'API offre la flessibilità necessaria per collegare Claimity ai Suoi sistemi.

    Estensione delle interfacce

    • •Consulti regolarmente il registro delle modifiche per rimanere aggiornato.
    • •Le modifiche incompatibili vengono annunciate in anticipo.
    • •Sarà informato tempestivamente sulle modifiche sostanziali.

    Primi passi

    Ecco come iniziare a utilizzare l'API:

    1

    Creare una coppia di chiavi

    In qualità di amministratore dell'organizzazione, può creare una coppia di chiavi nelle impostazioni dell'organizzazione del Suo account Claimity. Successivamente scarichi la chiave privata (Private Key) e la conservi in un luogo sicuro.

    2

    Autenticarsi

    Con la coppia di chiavi creata e il Suo Client ID può autenticarsi presso l'API Claimity e ottenere così un access token per le Sue richieste.

    3

    Preparare l'header DPoP

    Per inviare una richiesta all'API è necessario creare un header DPoP. Questo header viene firmato con la chiave privata e protegge la richiesta da potenziali rischi per la sicurezza.

    4

    Prima richiesta

    Invii una richiesta autenticata a un endpoint con il Suo access token e l'header DPoP.

    Esempio di richiesta
    curl -X GET \
      https://app.claimity.ch/v1/experts/cases \
      -H 'Accept: application/json' \
      -H 'Authorization: DPoP {access-token}' \
      -H 'DPoP: {dpop-header}'

    Notebook Python

    Per iniziare rapidamente, mettiamo a Sua disposizione dei notebook Python con cui può eseguire richieste API e visualizzare direttamente le risposte.

    Visualizza i notebook su GitHub

    Segnala un problema

    Se ha riscontrato un errore, siamo qui per aiutarLa. Si assicuri prima che il problema sia riproducibile.

    Prima della segnalazione

    • ✓Verificare la riproducibilità
    • ✓Eseguire test dell'API con Postman/Insomnia
    • ✓Raccogliere i dettagli su richiesta e risposta
    • ✗Non inviare dati di accesso nella segnalazione

    Invia segnalazione

    Descriva i passaggi per riprodurre il problema. Il nostro supporto esaminerà il caso tempestivamente e La contatterà il prima possibile.

    Segnala un problema

    Nota: L'API viene messa a disposizione sulla base di questa documentazione. Non è previsto alcun supporto all'implementazione né supporto sul codice.

    Registro delle modifiche

    Tutte le modifiche e gli aggiornamenti della versione attuale dell'API in sintesi.

    2026-10-07

    Novità: importi del caso. I sinistri (assicuratori) e i casi (periti) forniscono nell'elenco e nei dettagli CostEstimateAmount (preventivo), ApprovedAmount (importo approvato dalla perizia) e SavingsAmount (risparmio = preventivo − importo approvato, solo se positivo) – tutti in CHF, null = non registrato. I periti impostano gli importi tramite PUT /v1/experts/cases/{caseId}/amounts (204). Una modifica degli importi aggiorna LastChangedAt. L'estensione è retrocompatibile.

    2026-08-02

    Filtri di sincronizzazione rivisti: updatedSince si chiama ora lastChangedSince (entrambi gli endpoint /v1/insurers/claims e /v1/experts/cases) — il filtro porta così il nome del campo che filtra (LastChangedAt). Novità: lastReportApprovedSince su /v1/insurers/claims restituisce solo i sinistri la cui ultima approvazione di un rapporto è avvenuta in corrispondenza o dopo il momento indicato (i sinistri senza rapporto approvato non corrispondono mai). completedFrom/completedTo restano invariati e filtrano il momento della chiusura più recente del caso.

    2026-07-15

    API per periti: nuovo endpoint per riaprire un caso chiuso (POST /v1/experts/cases/{caseId}:reopen, restituisce 204). Gli endpoint di elenco sono stati ampliati con filtri (ricerca a testo libero q, intervalli di date per creazione/chiusura) e un cursore updatedSince per la sincronizzazione incrementale. I casi forniscono ora LastChangedAt; i sinistri anche LastReportApprovedAt. Gli endpoint di creazione e di caricamento restituiscono ora 201 Created. Ogni risposta restituisce ora un header X-Correlation-Id (un valore valido in entrata viene restituito) per il tracing end-to-end; in caso di errore corrisponde anche all'instance di ProblemDetails.

    2026-06-09

    Aggiunta la nuova categoria «Perizie speciali», inclusi schema e struttura del payload.

    2025-12-30

    Aggiunta di un nuovo endpoint all'API per assicuratori per la validazione della struttura del caso.

    2025-12-28

    Pubblicata la prima versione dell'API.

    Autenticazione

    La Claimity Partner API utilizza OAuth 2.0 Client Credentials con JWT Client Assertion (RS256) e protegge inoltre ogni richiesta con DPoP Proof-of-Possession (ES256). L'access token è vincolato alla Sua chiave DPoP (cnf.jkt): utilizzi un'unica chiave per l'intera sessione — la richiesta del token e ogni chiamata API — e firmi già la richiesta del token con un DPoP proof.

    Flusso di autenticazione

    Ecco come funziona il flusso OAuth2 Client Credentials.

    Diagramma di sequenza del flusso di autenticazione (OAuth2 Client Credentials + DPoP)

    Procedura

    1. Coppia di chiavi: l'organizzazione crea una coppia di chiavi RSA in Claimity (la chiave privata viene conservata in modo sicuro).
    2. JWT Client Assertion: il client genera un JWT di breve durata (RS256).
    3. Richiesta del token: il client invia POST /v1/oauth/token (Client Credentials + Assertion) con un DPoP proof, che vincola il token emesso alla chiave DPoP.
    4. Validazione: il server di autenticazione verifica la firma dell'assertion e le autorizzazioni e restituisce la risposta con il token.
    5. URL della richiesta: il client crea l'URL della richiesta (incl. parametri di query).
    6. DPoP Proof: per ogni richiesta il client crea un DPoP JWT (ES256) vincolato a metodo + URL, firmato con la stessa chiave utilizzata per la richiesta del token.
    7. Chiamata API: il client chiama l'endpoint con Authorization: DPoP access_token e DPoP: ….
    8. Risposta: l'API verifica token/DPoP ed elabora la richiesta / restituisce la risposta.

    Ottenere l'access token

    Per le integrazioni dei partner, la Sua organizzazione si autentica tramite una JWT Client Assertion firmata.

    Prerequisiti

    • •Client ID (ad es. org-expo-00001) disponibile nelle impostazioni dell'organizzazione di Claimity
    • •Chiave privata RSA dalle impostazioni dell'organizzazione di Claimity (da conservare in modo sicuro e da non condividere mai)

    Token endpoint

    URLPOST https://app.claimity.ch/v1/oauth/token
    Content-Typeapplication/x-www-form-urlencoded
    Campi del modulo
    grant_type = client_credentials
    client_id = <il Suo client id>
    client_assertion_type = urn:ietf:params:oauth:client-assertion-type:jwt-bearer
    client_assertion = <JWT (RS256)>
    scope (facoltativo)

    URL

    POST https://app.claimity.ch/v1/oauth/token

    Content-Type

    application/x-www-form-urlencoded

    Campi del modulo

    grant_type = client_credentials
    client_id = <il Suo client id>
    client_assertion_type = urn:ietf:params:oauth:client-assertion-type:jwt-bearer
    client_assertion = <JWT (RS256)>
    scope (facoltativo)
    JWT Client Assertion (RS256)

    L'assertion è un JWT di breve durata (10 minuti) e viene firmata con la Sua chiave privata RSA.

    • •iss/sub = client_id
    • •aud = https://app.claimity.ch/realms/claimity/protocol/openid-connect/token
    • •jti = UUID (univoco)
    • •iat/exp = “now” / “now+600s” (10 min)
    • •kid (facoltativo)
    Esempio: richiesta del token (cURL, segnaposto)
    curl -X POST \
      'https://app.claimity.ch/v1/oauth/token' \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -d 'grant_type=client_credentials' \
      -d 'client_id=org-expo-00001' \
      -d 'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer' \
      -d 'client_assertion=<RS256-JWT-CLIENT-ASSERTION>' \
      -d 'scope=roles'

    Risposta del token

    La risposta contiene un access_token. Importante: per le chiamate API questo token viene utilizzato come DPoP token.

    Inviare richieste API

    Ogni richiesta necessita inoltre di un DPoP Proof JWT. Per ogni richiesta viene generato e firmato (ES256) un nuovo proof, per vincolare la richiesta a metodo + URL — sempre però con la stessa chiave a cui è vincolato l'access token (cnf.jkt). Un proof firmato con un'altra chiave viene rifiutato con 401 "Access token is not bound to the DPoP proof key".

    Header obbligatori

    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Acceptapplication/json
    Content-Typeapplication/json

    Authorization

    DPoP {access_token}

    DPoP

    {dpop_proof_jwt}

    Accept

    application/json

    Content-Type

    application/json
    Contenuto del DPoP proof
    • •htu deve essere l'URL esatto incl. query string
    • •htm deve corrispondere esattamente al metodo HTTP (GET/POST/PUT/DELETE)
    • •jti deve essere nuovo per ogni richiesta (nessun replay)
    • •iat deve rientrare nella finestra temporale consentita (evitare il clock skew)
    • •ath = base64url(SHA-256(access_token))
    Esempio: chiamata API autenticata (cURL)
    curl -X GET \
      'https://app.claimity.ch/v1/experts/cases?page=1&size=50' \
      -H 'Accept: application/json' \
      -H 'Authorization: DPoP {access_token}' \
      -H 'DPoP: {dpop_proof_jwt}'
    Risoluzione dei problemi: 401 invalid_dpop

    Cause frequenti:

    • •not bound: richiesta firmata con una chiave diversa da quella del token — riutilizzare la stessa chiave di sessione e corredare la richiesta del token di un DPoP proof
    • •htu mismatch: l'URL deve essere esatto, incl. query
    • •htm mismatch: il metodo deve corrispondere
    • •iat fuori dalla finestra: correggere l'ora di sistema
    • •replay: jti deve essere nuovo per ogni richiesta
    • •ath mismatch: SHA-256(access_token) base64url

    Correlation ID

    Ogni risposta restituisce un header X-Correlation-Id. Claimity utilizza lo stesso ID nei propri log del server e, in caso di errore, come campo instance del body application/problem+json — lo registri nei Suoi log e lo indichi nelle richieste di supporto.

    Può anche fornire un proprio ID per tracciare una richiesta end-to-end: invii un header di richiesta X-Correlation-Id con un token breve e stampabile (≤ 80 caratteri). Un valore valido viene restituito invariato; un valore non valido o troppo lungo viene ignorato e Claimity genera un proprio ID. Il Correlation ID è indipendente da DPoP (il proof vincola solo metodo + URL), quindi l'aggiunta di questo header non influisce sulla firma.

    Nozioni di base dell'API

    Concetti e convenzioni fondamentali utilizzati nell'intera API.

    Formato della richiesta

    Ogni richiesta è composta da metodo, URL, eventuali parametri di query, header e (per POST/PUT) un body JSON.

    Struttura dell'URL

    Base URL: https://app.claimity.ch
    Path: /v1/<resource>
    Query: ad es. ?page=1&size=50
    Esempio di URL
    https://app.claimity.ch/v1/…?page=1&size=50

    Metodi HTTP

    GETRecuperare risorse
    POSTCreare risorse
    PUTSostituire/aggiornare risorse
    DELETEEliminare risorse

    Header tipici

    • •Accept: application/json
    • •Content-Type: application/json (con body JSON)
    • •Authorization: DPoP <access_token>
    • •DPoP: <dpop_proof_jwt>

    Formato della risposta

    Le risposte sono di norma in formato JSON (Content-Type: application/json) e utilizzano i codici di stato HTTP per segnalare l'esito positivo o l'errore.

    Risposte di successo

    • •2xx (ad es. 200, 201, 204)
    • •Il body contiene di norma un oggetto o un elenco
    Esempio (oggetto)
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
      "id": "…",
      "…": "…"
    }

    Risposte di errore (ProblemDetails)

    • •4xx/5xx (ad es. 400, 401, 403, 404, 429, 500)
    • •Il body segue una struttura simile a ProblemDetails
    Esempio (Problem JSON)
    HTTP/1.1 400 Bad Request
    Content-Type: application/json
    
    {
      "type": "about:blank",
      "title": "Bad Request",
      "status": 400,
      "detail": "…"
    }

    Rate Limiting

    La Partner API è protetta da rate limiting per garantire un utilizzo equo e la stabilità. I limiti vengono applicati per ogni partizione client.

    Validazione anonima

    POST /v1/insurers/claims:validate è utilizzabile senza token ed è quindi soggetto a limiti più restrittivi.

    • •FixedWindow: 10 richieste/minuto per client/IP

    Standard per la Partner API

    Per gli endpoint standard il numero di richieste è leggermente limitato.

    • •TokenBucket: ca. 60 richieste/minuto, Burst fino a 20, Queue 0

    Route dei documenti

    Per gli endpoint con .../documents... valgono limiti più restrittivi (ad es. per upload/download).

    • •TokenBucket: ca. 20 richieste/minuto, Burst fino a 10, Queue 0

    Token endpoint

    Il token endpoint è soggetto a limiti rigorosi per prevenire possibili attacchi.

    • •Fixed Window: 10 richieste/minuto per client
    Quando viene raggiunto un limite (HTTP 429)
    • •Risposta: 429 Too Many Requests (Rejection Code 429)
    • •Header facoltativo: Retry-After
    • •Indicazione di diagnosi/policy: X-RateLimit-Policy
    • •Body: Problem JSON

    Raccomandazioni per i client

    • •In caso di 429 ripetere le richieste con backoff e rispettare Retry-After.
    • •Limitare la frequenza (throttling) di upload/download dei documenti.
    • •I burst sono limitati (nessun queueing) – con un elevato parallelismo si arriva più rapidamente al 429.

    Idempotenza (Idempotency-Key)

    Le richieste POST possono contenere l'header Idempotency-Key (valore univoco a libera scelta, ad es. un UUID). Se la stessa richiesta viene ripetuta — ad esempio dopo un timeout — l'API restituisce nuovamente la risposta salvata, senza eseguire l'operazione una seconda volta.

    • •La chiave è vincolata a metodo, path, client e hash del payload — la stessa chiave con un payload diverso vale come nuova richiesta.
    • •Le risposte salvate vengono conservate per 24 ore per il replay.
    • •I body delle richieste superiori a 16 MB aggirano l'idempotenza; le risposte superiori a 16 MB non vengono salvate per il replay (un retry esegue nuovamente l'operazione).
    • •Raccomandazione: impostarla sempre per POST /v1/insurers/claims — così un retry dopo errori di rete è garantito senza creazioni doppie.

    Catalogo degli errori

    Gli errori seguono la struttura ProblemDetails (title, status, detail). Gli errori di validazione del payload vengono restituiti come ValidationProblemDetails con una mappa errors; ogni messaggio indica il percorso del campo e il requisito concreto.

    titleSignificato
    invalid_org_contextIl token non è associato a un'organizzazione (univoca) del tipo previsto.
    forbiddenCon questo token l'accesso alla risorsa non è consentito.
    org_without_membersL'organizzazione non ha membri — creazione/recupero non possibili.
    invalid_categoryCategoria del caso sconosciuta (consentite: vehicle, appraiser, fraud, special).
    invalid_payloadPayloadJson manca o non è un JSON valido.
    invalid_stateL'azione non è consentita nello stato attuale del caso (ad es. riapertura di un caso non ancora chiuso).
    invalid_document / missing_documentsDocumento non valido o documenti obbligatori mancanti.
    unsupported_content_type / size_limit_exceededTipo di file non consentito o limite di upload superato.
    upstream_timeout / upstream_errorUn servizio a valle non ha risposto (in tempo) — eseguire un retry con backoff.
    Esempio: 400 nella validazione del payload (POST /v1/insurers/claims:validate)
    HTTP/1.1 400 Bad Request
    Content-Type: application/problem+json
    
    {
      "title": "One or more validation errors occurred.",
      "status": 400,
      "errors": {
        "PayloadJson": [
          "PayloadJson does not match the required schema for the selected category.",
          "counterparty.email: is required.",
          "workshop.country: must be one of: CH, DE, AT, FR, IT, LI.",
          "incidentDate: the incident date cannot be in the future — got 2099-01-15, today is 2026-08-02 (Europe/Zurich)."
        ]
      }
    }

    Periti

    Endpoint per i periti per lavorare con casi, documenti e submission di perizie/rapporti.

    Timestamp & sincronizzazione incrementale

    Timestamp e filtri di sincronizzazione (inclusivi >=), denominati come il campo che filtrano:

    • CreatedAt — Momento di creazione del sinistro. Filtri: createdFrom / createdTo.
    • completedFrom / completedTo filtrano in base al momento della chiusura più recente del caso (evento Finalized; per i casi riaperti conta la chiusura più recente). Pensati per periodi di analisi («tutti i casi chiusi nel Q2») — non per la sincronizzazione.
    • LastChangedAt — Ultima modifica rilevante per il partner (stato, documenti, rapporti, commenti, importi). Filtro: lastChangedSince.

    Casi

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di query

    NomeTipoObbligatorioPredefinito
    statusstring
    categorystring
    pageinteger (int32)1
    sizeinteger (int32)50
    inspectionTypestring
    qstring
    createdFromstring (date-time)
    createdTostring (date-time)
    completedFromstring (date-time)
    completedTostring (date-time)
    lastChangedSincestring (date-time)
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MCaseListItemDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "ExternalKey": "string",
          "Category": "vehicle",
          "Status": "Created",
          "CreatedAt": "2025-12-31T12:00:00Z",
          "UpdatedAt": "2025-12-31T12:00:00Z",
          "ExpertComment": "string",
          "PayloadJson": "string",
          "ArchiveState": false,
          "Insurer": {
            "Name": "string",
            "Responsible": {
              "Name": "string",
              "Email": "string",
              "Phone": "string"
            }
          },
          "HailDriveInAccepted": false,
          "LastChangedAt": "2025-12-31T12:00:00Z",
          "CostEstimateAmount": 0,
          "ApprovedAmount": 0,
          "SavingsAmount": 0
        }
      ]
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    ExternalKey
    string✓
    Category
    string✓
    vehiclefraudappraiserspecial
    Status
    string✓
    CreatedAssignedRejectedAcceptedInProgressExpertCompletedAdminApprovedAdminReturnedAdminCancelledFinal
    CreatedAt
    string(date-time)
    UpdatedAt
    string(date-time)
    ExpertComment
    string✓
    PayloadJson
    string✓
    ArchiveState
    boolean
    Insurer
    M2MInsurerDto
    HailDriveInAccepted
    boolean✓
    LastChangedAt

    Partner-sync cursor. Advances on every partner-visible change to the case (report approval, document upload, expert comment, status change). On the next poll, pass the highest value you have seen as the `lastChangedSince` query parameter to fetch only what changed since.

    string(date-time)
    CostEstimateAmount

    Workshop cost estimate in CHF (null = not entered yet). Set by the expert via PUT /v1/experts/cases/{caseId}/amounts.

    number(double)✓
    ApprovedAmount

    Amount approved by the expert report in CHF (null = not entered yet).

    number(double)✓
    SavingsAmount

    Savings in CHF = CostEstimateAmount - ApprovedAmount; only when both are set and the estimate is higher, otherwise null.

    number(double)✓
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ExternalKey": "string",
      "Category": "vehicle",
      "Status": "Created",
      "CreatedAt": "2025-12-31T12:00:00Z",
      "UpdatedAt": "2025-12-31T12:00:00Z",
      "ExpertComment": "string",
      "PayloadJson": "string",
      "ArchiveState": false,
      "Insurer": {
        "Name": "string",
        "Responsible": {
          "Name": "string",
          "Email": "string",
          "Phone": "string"
        }
      },
      "HailDriveInAccepted": false,
      "LastChangedAt": "2025-12-31T12:00:00Z",
      "CostEstimateAmount": 0,
      "ApprovedAmount": 0,
      "SavingsAmount": 0
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Text
    string✓
    Esempio di corpo
    {
      "Text": "string"
    }
    Nessuno schema JSON documentato.

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    CostEstimateAmount

    Workshop cost estimate in CHF (>= 0, max. 2 decimals); null clears it.

    number(double)✓
    ApprovedAmount

    Amount approved by the expert report in CHF (>= 0, max. 2 decimals); null clears it.

    number(double)✓
    Esempio di corpo
    {
      "CostEstimateAmount": 0,
      "ApprovedAmount": 0
    }
    Nessuno schema JSON documentato.

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Reason

    Required reason for reopening the finalized case; recorded on the audited reopened_by_expert event.

    string✓
    Esempio di corpo
    {
      "Reason": "string"
    }
    Nessuno schema JSON documentato.

    Documenti del caso

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓

    Parametri di query

    NomeTipoObbligatorioPredefinito
    pageinteger (int32)1
    sizeinteger (int32)50
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MExpertDocumentDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "FileName": "string",
          "ContentType": "string",
          "SizeBytes": 0,
          "CreatedAt": "2025-12-31T12:00:00Z"
        }
      ]
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓
    documentIdstring (uuid)✓
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    FileName
    string✓
    ContentType
    string✓
    SizeBytes
    integer(int64)
    CreatedAt
    string(date-time)
    ContentBase64
    string✓
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "FileName": "string",
      "ContentType": "string",
      "SizeBytes": 0,
      "CreatedAt": "2025-12-31T12:00:00Z",
      "ContentBase64": "string"
    }

    Rapporti & Submission

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Comment
    string✓
    Esempio di corpo
    {
      "Comment": "string"
    }
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    ClaimId
    string(uuid)
    SequenceNo
    integer(int32)
    Status
    string✓
    DraftSubmittedApprovedReturnedCancelled
    Comment
    string✓
    SubmittedAt
    string(date-time)✓
    CreatedAt
    string(date-time)
    UpdatedAt
    string(date-time)
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "SequenceNo": 0,
      "Status": "Draft",
      "Comment": "string",
      "SubmittedAt": "2025-12-31T12:00:00Z",
      "CreatedAt": "2025-12-31T12:00:00Z",
      "UpdatedAt": "2025-12-31T12:00:00Z"
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Comment
    string✓
    Esempio di corpo
    {
      "Comment": "string"
    }
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    ClaimId
    string(uuid)
    SequenceNo
    integer(int32)
    Status
    string✓
    DraftSubmittedApprovedReturnedCancelled
    Comment
    string✓
    SubmittedAt
    string(date-time)✓
    CreatedAt
    string(date-time)
    UpdatedAt
    string(date-time)
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "SequenceNo": 0,
      "Status": "Draft",
      "Comment": "string",
      "SubmittedAt": "2025-12-31T12:00:00Z",
      "CreatedAt": "2025-12-31T12:00:00Z",
      "UpdatedAt": "2025-12-31T12:00:00Z"
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓

    Parametri di query

    NomeTipoObbligatorioPredefinito
    pageinteger (int32)1
    sizeinteger (int32)50
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MReportListItemDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "SequenceNo": 0,
          "RevisionNo": 0,
          "Status": "Draft",
          "Comment": "string",
          "SubmittedAt": "2025-12-31T12:00:00Z",
          "CreatedAt": "2025-12-31T12:00:00Z",
          "UpdatedAt": "2025-12-31T12:00:00Z"
        }
      ]
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    caseIdstring (uuid)✓
    submissionIdstring (uuid)✓
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    ClaimId
    string(uuid)
    SequenceNo
    integer(int32)
    Status
    string✓
    DraftSubmittedApprovedReturnedCancelled
    Comment
    string✓
    SubmittedAt
    string(date-time)✓
    CreatedAt
    string(date-time)
    UpdatedAt
    string(date-time)
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "SequenceNo": 0,
      "Status": "Draft",
      "Comment": "string",
      "SubmittedAt": "2025-12-31T12:00:00Z",
      "CreatedAt": "2025-12-31T12:00:00Z",
      "UpdatedAt": "2025-12-31T12:00:00Z"
    }

    Documenti della submission

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    submissionIdstring (uuid)✓

    Parametri di query

    NomeTipoObbligatorioPredefinito
    pageinteger (int32)1
    sizeinteger (int32)50
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MExpertReportSubmissionDocumentDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "SubmissionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "FileName": "string",
          "ContentType": "string",
          "SizeBytes": 0,
          "Kind": "string",
          "IsSalvageSale": false,
          "CreatedAt": "2025-12-31T12:00:00Z",
          "ContentBase64": "string"
        }
      ]
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    submissionIdstring (uuid)✓

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    FileName
    string✓
    ContentType
    string✓
    ContentBase64
    string✓
    IsSalvageSale
    boolean✓
    Esempio di corpo
    {
      "FileName": "string",
      "ContentType": "string",
      "ContentBase64": "string",
      "IsSalvageSale": false
    }
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    SubmissionId
    string(uuid)
    ClaimId
    string(uuid)
    FileName
    string✓
    ContentType
    string✓
    SizeBytes
    integer(int64)
    Kind
    string✓
    IsSalvageSale
    boolean
    CreatedAt
    string(date-time)
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "SubmissionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "FileName": "string",
      "ContentType": "string",
      "SizeBytes": 0,
      "Kind": "string",
      "IsSalvageSale": false,
      "CreatedAt": "2025-12-31T12:00:00Z"
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    submissionIdstring (uuid)✓
    docIdstring (uuid)✓
    Nessuno schema JSON documentato.

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    submissionIdstring (uuid)✓
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    ClaimId
    string(uuid)
    SequenceNo
    integer(int32)
    Status
    string✓
    DraftSubmittedApprovedReturnedCancelled
    Comment
    string✓
    SubmittedAt
    string(date-time)✓
    CreatedAt
    string(date-time)
    UpdatedAt
    string(date-time)
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "SequenceNo": 0,
      "Status": "Draft",
      "Comment": "string",
      "SubmittedAt": "2025-12-31T12:00:00Z",
      "CreatedAt": "2025-12-31T12:00:00Z",
      "UpdatedAt": "2025-12-31T12:00:00Z"
    }

    Assicuratori

    Endpoint per gli assicuratori per creare/validare/recuperare sinistri, documenti e panoramiche dei rapporti.

    Timestamp & sincronizzazione incrementale

    Quattro timestamp determinano i filtri degli elenchi e la sincronizzazione. I filtri di sincronizzazione portano il nome del campo che filtrano ed effettuano un confronto inclusivo (>=).

    • CreatedAt — Momento di creazione del sinistro. Filtri: createdFrom / createdTo.
    • completedFrom / completedTo filtrano in base al momento della chiusura più recente del caso (evento Finalized; per i casi riaperti conta la chiusura più recente). Pensati per periodi di analisi («tutti i casi chiusi nel Q2») — non per la sincronizzazione.
    • LastChangedAt — Ultima modifica rilevante per il partner (stato, documenti, rapporti, commenti, importi). Filtro: lastChangedSince.
    • LastReportApprovedAt — Momento dell'ultima approvazione di un rapporto (null, se non ancora avvenuta). Filtro: lastReportApprovedSince — i sinistri senza rapporto approvato non corrispondono mai.

    Procedura di sincronizzazione (poller giornaliero)

    1. Eseguire la richiesta con lastChangedSince=<cursore salvato> (prima esecuzione: senza filtro).
    2. Elaborare i risultati in modo idempotente — il confronto è inclusivo, il valore limite può ricomparire.
    3. Salvare come nuovo cursore il valore massimo di LastChangedAt ricevuto.
    4. Le interessano solo i nuovi rapporti approvati? Stessa procedura con lastReportApprovedSince e LastReportApprovedAt.

    Sinistri

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di query

    NomeTipoObbligatorioPredefinito
    categorystring
    statusstring
    pageinteger (int32)1
    sizeinteger (int32)50
    qstring
    createdFromstring (date-time)
    createdTostring (date-time)
    completedFromstring (date-time)
    completedTostring (date-time)
    lastChangedSincestring (date-time)
    lastReportApprovedSincestring (date-time)
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MInsurerClaimListItemDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "ExternalKey": "string",
          "Category": "vehicle",
          "Status": "Created",
          "CreatedAt": "2025-12-31T12:00:00Z",
          "UpdatedAt": "2025-12-31T12:00:00Z",
          "ExpertComment": "string",
          "PayloadJson": "string",
          "ArchiveState": false,
          "Expert": {
            "Name": "string",
            "Responsible": {
              "Name": "string",
              "Email": "string",
              "Phone": "string"
            }
          },
          "HailDriveInAccepted": false,
          "LastReportApprovedAt": "2025-12-31T12:00:00Z",
          "LastChangedAt": "2025-12-31T12:00:00Z",
          "CostEstimateAmount": 0,
          "ApprovedAmount": 0,
          "SavingsAmount": 0
        }
      ]
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Category
    string✓
    vehiclefraudappraiserspecial
    PayloadJson
    string✓
    Esempio di corpo
    {
      "Category": "vehicle",
      "PayloadJson": "string"
    }
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    ExternalKey
    string✓
    Category
    string✓
    vehiclefraudappraiserspecial
    Status
    string✓
    CreatedAssignedRejectedAcceptedInProgressExpertCompletedAdminApprovedAdminReturnedAdminCancelledFinal
    PayloadJson
    string✓
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ExternalKey": "string",
      "Category": "vehicle",
      "Status": "Created",
      "PayloadJson": "string"
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Category
    string✓
    vehiclefraudappraiserspecial
    PayloadJson
    string✓
    Esempio di corpo
    {
      "Category": "vehicle",
      "PayloadJson": "string"
    }
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Valid
    boolean
    Errors
    object✓
    Esempio di risposta
    {
      "Valid": false,
      "Errors": {}
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    claimIdstring (uuid)✓
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    ExternalKey
    string✓
    Category
    string✓
    vehiclefraudappraiserspecial
    Status
    string✓
    CreatedAssignedRejectedAcceptedInProgressExpertCompletedAdminApprovedAdminReturnedAdminCancelledFinal
    CreatedAt
    string(date-time)
    UpdatedAt
    string(date-time)
    ExpertComment
    string✓
    PayloadJson
    string✓
    ArchiveState
    boolean
    Expert
    M2MExpertDto
    HailDriveInAccepted
    boolean✓
    LastReportApprovedAt

    When the most recently APPROVED report for this claim was approved (null if no report has been approved yet). Poll this to detect that a new report is available without fetching each claim's reports individually. Filterable via the `lastReportApprovedSince` query parameter on the claims list.

    string(date-time)✓
    LastChangedAt

    Partner-sync cursor. Advances on every partner-visible change to the claim (report approval, document upload, expert comment, status change). On the next poll, pass the highest value you have seen as the `lastChangedSince` query parameter to fetch only what changed since.

    string(date-time)
    CostEstimateAmount

    Workshop cost estimate in CHF (null = not entered yet). Set by the expert via PUT /v1/experts/cases/{caseId}/amounts.

    number(double)✓
    ApprovedAmount

    Amount approved by the expert report in CHF (null = not entered yet).

    number(double)✓
    SavingsAmount

    Savings in CHF = CostEstimateAmount - ApprovedAmount; only when both are set and the estimate is higher, otherwise null.

    number(double)✓
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "ExternalKey": "string",
      "Category": "vehicle",
      "Status": "Created",
      "CreatedAt": "2025-12-31T12:00:00Z",
      "UpdatedAt": "2025-12-31T12:00:00Z",
      "ExpertComment": "string",
      "PayloadJson": "string",
      "ArchiveState": false,
      "Expert": {
        "Name": "string",
        "Responsible": {
          "Name": "string",
          "Email": "string",
          "Phone": "string"
        }
      },
      "HailDriveInAccepted": false,
      "LastReportApprovedAt": "2025-12-31T12:00:00Z",
      "LastChangedAt": "2025-12-31T12:00:00Z",
      "CostEstimateAmount": 0,
      "ApprovedAmount": 0,
      "SavingsAmount": 0
    }

    Documenti del sinistro

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    claimIdstring (uuid)✓

    Parametri di query

    NomeTipoObbligatorioPredefinito
    pageinteger (int32)1
    sizeinteger (int32)50
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MInsurerDocumentDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "FileName": "string",
          "ContentType": "string",
          "SizeBytes": 0,
          "CreatedAt": "2025-12-31T12:00:00Z"
        }
      ]
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}
    Content-Typeapplication/json

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    claimIdstring (uuid)✓

    Corpo della richiesta

    Request Schema
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    FileName
    string✓
    ContentType
    string✓
    ContentBase64
    string✓
    Esempio di corpo
    {
      "FileName": "string",
      "ContentType": "string",
      "ContentBase64": "string"
    }
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    FileName
    string✓
    ContentType
    string✓
    SizeBytes
    integer(int64)
    CreatedAt
    string(date-time)
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "FileName": "string",
      "ContentType": "string",
      "SizeBytes": 0,
      "CreatedAt": "2025-12-31T12:00:00Z"
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    claimIdstring (uuid)✓
    documentIdstring (uuid)✓
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Id
    string(uuid)
    FileName
    string✓
    ContentType
    string✓
    SizeBytes
    integer(int64)
    CreatedAt
    string(date-time)
    ContentBase64
    string✓
    Esempio di risposta
    {
      "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "FileName": "string",
      "ContentType": "string",
      "SizeBytes": 0,
      "CreatedAt": "2025-12-31T12:00:00Z",
      "ContentBase64": "string"
    }

    Rapporti sui sinistri

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    claimIdstring (uuid)✓

    Parametri di query

    NomeTipoObbligatorioPredefinito
    pageinteger (int32)1
    sizeinteger (int32)50
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MReportListItemDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "SequenceNo": 0,
          "RevisionNo": 0,
          "Status": "Draft",
          "Comment": "string",
          "SubmittedAt": "2025-12-31T12:00:00Z",
          "CreatedAt": "2025-12-31T12:00:00Z",
          "UpdatedAt": "2025-12-31T12:00:00Z"
        }
      ]
    }

    Header

    Acceptapplication/json
    AuthorizationDPoP {access_token}
    DPoP{dpop_proof_jwt}

    Parametri di percorso

    NomeTipoObbligatorioPredefinito
    claimIdstring (uuid)✓
    submissionIdstring (uuid)✓

    Parametri di query

    NomeTipoObbligatorioPredefinito
    pageinteger (int32)1
    sizeinteger (int32)50
    langstringde
    Schema della risposta
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    Total
    integer(int32)
    Page
    integer(int32)
    Size
    integer(int32)
    Items
    array<M2MReportSubmissionDocumentContentDto>✓
    Esempio di risposta
    {
      "Total": 0,
      "Page": 0,
      "Size": 0,
      "Items": [
        {
          "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "SubmissionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "ClaimId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "FileName": "string",
          "ContentType": "string",
          "SizeBytes": 0,
          "Kind": "string",
          "IsSalvageSale": false,
          "CreatedAt": "2025-12-31T12:00:00Z",
          "ContentBase64": "string"
        }
      ]
    }

    Struttura del caso & validazione

    Ogni categoria descrive con precisione quali campi può contenere il payloadJson.

    Categoria

    Perito auto

    Questa struttura è destinata ai payload della categoria Perito auto.

    Contesto & note

    La categoria di payload Perito auto comprende 96 campi documentati e 50 campi obbligatori.

    Requisiti di formato
    5 particolarità
    Regole & dipendenze
    7 regole definite
    Azioni & link
    Scarica schema

    Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.

    Fare clic per copiare

    payloadJson.insured.firstRegistration

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.counterparty.firstRegistration

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.incidentDate

    Data in formato ISO YYYY-MM-DD

    payloadJson.estimatedAmount

    Stringa numerica senza segno (decimali facoltativi, punto come separatore)

    payloadJson.inspectionDate

    Data in formato ISO YYYY-MM-DD

    Plausibilità delle date (tutte le categorie)

    • •incidentDate non può essere nel futuro.
    • •inspectionDate non può essere nel passato.
    • •firstRegistration e birthDate non possono essere nel futuro – anche in insuredPersons[] e counterpartyPersons[].
    • •Il giorno di riferimento è il giorno corrente nel fuso orario Europe/Zurich, con un giorno di tolleranza in entrambe le direzioni (compensazione dei fusi orari).

    Queste regole non si possono esprimere in JSON Schema – lì non esiste il concetto di «oggi». Per questo non compaiono nello schema scaricabile, ma vengono verificate lato server.

    In base al campo claimInsurance

    Se claimInsurance ha il valore liability, allora:

    • •Campi obbligatori: counterparty
    • •counterparty richiede name, phone, licensePlate, city, carMake

    Se claimInsurance ha uno dei valori partial, comprehensive, allora:

    • •Campi obbligatori: insured
    • •insured richiede name, phone, licensePlate, address, postalCode, city, carMake

    Se claimInsurance ha il valore partial, allora:

    • •claimType deve avere uno dei valori fire, natural_hazard, hail_damage, snow_slide, theft, animal_collision, marten_damage, glass_breakage, vandalism, assistance, falling_objects, parking_damage

    In base al campo inspectionType

    Se inspectionType ha il valore workshop, allora:

    • •Campi obbligatori: inspectionDate, workshop
    • •workshop richiede name, phone, city, postalCode, country
    • •workshop.country deve avere uno dei valori CH, DE, AT, FR, IT, LI

    Se inspectionType ha uno dei valori estimate_review, invoice_review, allora:

    • •Campi obbligatori: workshop
    • •workshop richiede name, phone

    Se inspectionType ha uno dei valori private, live_expertise, allora:

    • •Campi obbligatori: inspectionDate, inspectionContact

    In base al campo inspectionContact

    Se il campo inspectionContact è presente, allora:

    • •inspectionContact richiede name, address, postalCode, city, phone, country
    • •inspectionContact.country deve avere uno dei valori CH, DE, AT, FR, IT, LI

    Schema del payload
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    policyNumber
    string✓
    claimInsurance
    string✓
    liabilitypartialcomprehensive
    claimType
    string✓
    insured
    object✓
    counterparty
    object
    location
    object✓
    incidentDate
    string✓
    damageDescription
    string✓
    estimatedAmount
    oneOf✓
    estimatedCurrency
    string✓
    CHFEURUSD
    inspectionType
    string✓
    workshopprivatelive_expertiseestimate_reviewinvoice_review
    workshop
    object
    inspectionContact
    object
    inspectionDate
    string,null
    remarks
    string,null

    Categoria

    Perito

    Questa struttura è destinata ai payload della categoria Perito.

    Contesto & note

    La categoria di payload Perito comprende 64 campi documentati e 35 campi obbligatori.

    Requisiti di formato
    3 particolarità
    Regole & dipendenze
    4 regole definite
    Azioni & link
    Scarica schema

    Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.

    Fare clic per copiare

    payloadJson.incidentDate

    Data in formato ISO YYYY-MM-DD

    payloadJson.estimatedAmount

    Stringa numerica senza segno (decimali facoltativi, punto come separatore)

    payloadJson.inspectionDate

    Data in formato ISO YYYY-MM-DD

    Plausibilità delle date (tutte le categorie)

    • •incidentDate non può essere nel futuro.
    • •inspectionDate non può essere nel passato.
    • •firstRegistration e birthDate non possono essere nel futuro – anche in insuredPersons[] e counterpartyPersons[].
    • •Il giorno di riferimento è il giorno corrente nel fuso orario Europe/Zurich, con un giorno di tolleranza in entrambe le direzioni (compensazione dei fusi orari).

    Queste regole non si possono esprimere in JSON Schema – lì non esiste il concetto di «oggi». Per questo non compaiono nello schema scaricabile, ma vengono verificate lato server.

    In base al campo claimInsurance

    Se claimInsurance ha il valore liability, allora:

    • •Campi obbligatori: counterparty
    • •insured richiede name
    • •counterparty richiede name, phone, city

    Se claimInsurance ha il valore own, allora:

    • •insured richiede name, phone, city

    In base al campo inspectionType

    Se inspectionType ha il valore onsite, allora:

    • •Campi obbligatori: inspectionDate, inspectionContact
    • •inspectionContact richiede name, postalCode, city, phone, country
    • •inspectionContact.country deve avere uno dei valori CH, DE, AT, FR, IT, LI

    In base al campo inspectionContact

    Se il campo inspectionContact è presente, allora:

    • •inspectionContact richiede name, postalCode, city, phone, country
    • •inspectionContact.country deve avere uno dei valori CH, DE, AT, FR, IT, LI

    Schema del payload
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    policyNumber
    string✓
    claimInsurance
    string✓
    liabilityown
    claimType
    string✓
    buildinginfrastructurehousehold
    insured
    object✓
    counterparty
    object
    location
    object✓
    incidentDate
    string✓
    damageDescription
    string✓
    estimatedAmount
    oneOf✓
    estimatedCurrency
    string✓
    CHFEURUSD
    inspectionType
    string✓
    onsiteestimate_reviewinvoice_review
    inspectionDate
    string,null
    inspectionContact
    object
    remarks
    string,null

    Categoria

    Lotta contro le frodi assicurative

    Questa struttura è destinata ai payload della categoria Frode assicurativa.

    Contesto & note

    La categoria di payload Lotta contro le frodi assicurative comprende 76 campi documentati e 25 campi obbligatori.

    Requisiti di formato
    7 particolarità
    Regole & dipendenze
    2 regole definite
    Azioni & link
    Scarica schema

    Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.

    Fare clic per copiare

    payloadJson.insured.birthDate

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.counterparty.birthDate

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.insuredPersons[].birthDate

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.counterpartyPersons[].birthDate

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.incidentDate

    Data in formato ISO YYYY-MM-DD

    payloadJson.incidentTime

    Campo orario HH:MM (24h)

    payloadJson.estimatedAmount

    Stringa numerica senza segno (decimali facoltativi, punto come separatore)

    Plausibilità delle date (tutte le categorie)

    • •incidentDate non può essere nel futuro.
    • •inspectionDate non può essere nel passato.
    • •firstRegistration e birthDate non possono essere nel futuro – anche in insuredPersons[] e counterpartyPersons[].
    • •Il giorno di riferimento è il giorno corrente nel fuso orario Europe/Zurich, con un giorno di tolleranza in entrambe le direzioni (compensazione dei fusi orari).

    Queste regole non si possono esprimere in JSON Schema – lì non esiste il concetto di «oggi». Per questo non compaiono nello schema scaricabile, ma vengono verificate lato server.

    In base al campo driverAtIncident

    Se driverAtIncident è impostato, allora:

    • •Parte assicurata: in insured e insuredPersons[] al massimo una persona può avere driverAtIncident = "yes" (anche nessuna).
    • •Controparte: in counterparty e counterpartyPersons[] al massimo una persona può avere driverAtIncident = "yes" (anche nessuna).

    In base al campo claimInsurance

    Se claimInsurance ha il valore liability, allora:

    • •Campi obbligatori: counterparty
    • •counterparty richiede name, address, postalCode, city, phone, email

    Schema del payload
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    policyNumber
    string✓
    claimInsurance
    string✓
    liabilitypartialcomprehensive
    claimType
    string✓
    insured
    object✓
    counterparty
    object
    insuredPersons
    array<object>
    counterpartyPersons
    array<object>
    location
    object✓
    incidentDate
    string✓
    incidentTime
    string,null
    damageDescription
    string✓
    estimatedAmount
    oneOf✓
    estimatedCurrency
    string✓
    CHFEURUSD
    supportRequest
    string✓
    remarks
    string,null

    Categoria

    Perizie speciali

    Questa struttura è destinata ai payload della categoria Perizie speciali.

    Contesto & note

    La categoria di payload Perizie speciali comprende 97 campi documentati e 59 campi obbligatori.

    Requisiti di formato
    5 particolarità
    Regole & dipendenze
    14 regole definite
    Azioni & link
    Scarica schema

    Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.

    Fare clic per copiare

    payloadJson.insured.firstRegistration

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.counterparty.firstRegistration

    Data in formato ISO YYYY-MM-DD, stringa vuota ("") o null

    payloadJson.incidentDate

    Data in formato ISO YYYY-MM-DD

    payloadJson.estimatedAmount

    Stringa numerica senza segno (decimali facoltativi, punto come separatore)

    payloadJson.inspectionDate

    Data in formato ISO YYYY-MM-DD

    Plausibilità delle date (tutte le categorie)

    • •incidentDate non può essere nel futuro.
    • •inspectionDate non può essere nel passato.
    • •firstRegistration e birthDate non possono essere nel futuro – anche in insuredPersons[] e counterpartyPersons[].
    • •Il giorno di riferimento è il giorno corrente nel fuso orario Europe/Zurich, con un giorno di tolleranza in entrambe le direzioni (compensazione dei fusi orari).

    Queste regole non si possono esprimere in JSON Schema – lì non esiste il concetto di «oggi». Per questo non compaiono nello schema scaricabile, ma vengono verificate lato server.

    In base al campo machineCategory

    Se machineCategory ha uno dei valori rail_vehicle, aircraft, allora:

    • •claimInsurance deve essere liability

    Se machineCategory ha il valore rail_vehicle, allora:

    • •machineType deve avere uno dei valori gondola, train, tram, rack_railway

    Se machineCategory ha il valore aircraft, allora:

    • •machineType deve avere uno dei valori glider, powered_aircraft, drone

    Se machineCategory ha il valore land_machine, allora:

    • •machineType deve avere uno dei valori tractor, trailer, harvester, stationary_machine

    Se machineCategory ha il valore land_machine, allora:

    • •inspectionType deve avere uno dei valori workshop, private, estimate_review, invoice_review

    Se machineCategory ha uno dei valori rail_vehicle, aircraft, allora:

    • •inspectionType deve avere uno dei valori onsite, estimate_review, invoice_review

    Se machineCategory ha uno dei valori aircraft, land_machine e claimInsurance ha il valore liability, allora:

    • •Campi obbligatori: counterparty
    • •counterparty richiede make

    Se machineCategory ha il valore land_machine e claimInsurance ha uno dei valori partial, comprehensive, allora:

    • •Campi obbligatori: insured
    • •insured richiede carMake

    In base al campo claimInsurance

    Se claimInsurance ha il valore liability, allora:

    • •Campi obbligatori: counterparty
    • •counterparty richiede name, phone, city

    Se claimInsurance ha uno dei valori partial, comprehensive, allora:

    • •Campi obbligatori: insured
    • •insured richiede name, phone, address, postalCode, city

    In base al campo inspectionType

    Se inspectionType ha il valore workshop, allora:

    • •Campi obbligatori: inspectionDate, workshop
    • •workshop richiede name, phone, city, postalCode

    Se inspectionType ha uno dei valori estimate_review, invoice_review, allora:

    • •Campi obbligatori: workshop
    • •workshop richiede name, phone

    Se inspectionType ha uno dei valori private, onsite, allora:

    • •Campi obbligatori: inspectionDate, inspectionContact

    In base al campo inspectionContact

    Se il campo inspectionContact è presente, allora:

    • •inspectionContact richiede name, address, postalCode, city, phone

    Schema del payload
    Tipo: object
    CampoTipoObbligatorioNullableEnum
    policyNumber
    string✓
    claimInsurance
    string✓
    liabilitypartialcomprehensive
    claimType
    string✓
    machineCategory
    string✓
    rail_vehicleaircraftland_machine
    machineType
    string✓
    gondolatraintramrack_railwaygliderpowered_aircraftdronetractortrailerharvesterstationary_machine
    insured
    object✓
    counterparty
    object
    location
    object✓
    incidentDate
    string✓
    damageDescription
    string✓
    estimatedAmount
    oneOf✓
    estimatedCurrency
    string✓
    CHFEURUSD
    inspectionType
    string✓
    workshopprivateonsiteestimate_reviewinvoice_review
    workshop
    object
    inspectionContact
    object
    inspectionDate
    string,null
    remarks
    string,null

    Testa direttamente il PayloadJson

    Invii una richiesta all'API di validazione Claimity e riceva un riscontro immediato sul Suo payload.

    POST/v1/insurers/claims:validate
    application/json

    È richiesta una struttura JSON valida.

    Risposta

    Pronto

    La risposta dell'API di validazione apparirà qui.

    1. Seleziona la categoria
    2. Inserisci il payload JSON o usa l'esempio
    3. Valida payload
    Claimity Logo

    La piattaforma digitale per una gestione efficiente dei sinistri. Automatizzata, trasparente, sicura.

    Assistenza

    • Manuale d'uso
    • Integrazione API
    • Supporto

    Azienda

    • Sito web
    • Prenota un appuntamento

    Contatti

    • info@claimity.ch
    • +41 78 344 77 36
    • Claimity SA
      Wisentalstrasse 7a
      8185 Winkel
      Svizzera

    © 2026 Claimity SA. Tutti i diritti riservati.

    Note legaliInformativa sulla privacyCondizioni d'uso