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:
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.
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.
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.
Prima richiesta
Invii una richiesta autenticata a un endpoint con il Suo access token e l'header DPoP.
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 GitHubSegnala 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 problemaNota: 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.
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.
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.
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.
Aggiunta la nuova categoria «Perizie speciali», inclusi schema e struttura del payload.
Aggiunta di un nuovo endpoint all'API per assicuratori per la validazione della struttura del caso.
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.

Procedura
- Coppia di chiavi: l'organizzazione crea una coppia di chiavi RSA in Claimity (la chiave privata viene conservata in modo sicuro).
- JWT Client Assertion: il client genera un JWT di breve durata (RS256).
- 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.
- Validazione: il server di autenticazione verifica la firma dell'assertion e le autorizzazioni e restituisce la risposta con il token.
- URL della richiesta: il client crea l'URL della richiesta (incl. parametri di query).
- 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.
- Chiamata API: il client chiama l'endpoint con Authorization: DPoP access_token e DPoP: ….
- 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
| 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) |
URL
Content-Type
Campi del modulo
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)
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
| Authorization | DPoP {access_token} |
| DPoP | {dpop_proof_jwt} |
| Accept | application/json |
| Content-Type | application/json |
Authorization
DPoP
Accept
Content-Type
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))
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
Metodi HTTP
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
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
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.
| title | Significato |
|---|---|
| invalid_org_context | Il token non è associato a un'organizzazione (univoca) del tipo previsto. |
| forbidden | Con questo token l'accesso alla risorsa non è consentito. |
| org_without_members | L'organizzazione non ha membri — creazione/recupero non possibili. |
| invalid_category | Categoria del caso sconosciuta (consentite: vehicle, appraiser, fraud, special). |
| invalid_payload | PayloadJson manca o non è un JSON valido. |
| invalid_state | L'azione non è consentita nello stato attuale del caso (ad es. riapertura di un caso non ancora chiuso). |
| invalid_document / missing_documents | Documento non valido o documenti obbligatori mancanti. |
| unsupported_content_type / size_limit_exceeded | Tipo di file non consentito o limite di upload superato. |
| upstream_timeout / upstream_error | Un servizio a valle non ha risposto (in tempo) — eseguire un retry con backoff. |
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
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| status | string | ||
| category | string | ||
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 | |
| inspectionType | string | ||
| q | string | ||
| createdFrom | string (date-time) | ||
| createdTo | string (date-time) | ||
| completedFrom | string (date-time) | ||
| completedTo | string (date-time) | ||
| lastChangedSince | string (date-time) |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MCaseListItemDto> | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Id | string(uuid) | |||
ExternalKey | string | ✓ | ||
Category | string | ✓ | vehiclefraudappraiserspecial | |
Status | string | ✓ | CreatedAssignedRejectedAcceptedInProgressExpertCompletedAdminApprovedAdminReturnedAdminCancelledFinal | |
CreatedAt | string(date-time) | |||
UpdatedAt | string(date-time) | |||
ExpertComment | string | ✓ | ||
| 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) | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Text | string | ✓ |
{
"Text": "string"
}Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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) | ✓ |
{
"CostEstimateAmount": 0,
"ApprovedAmount": 0
}Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Reason Required reason for reopening the finalized case; recorded on the audited reopened_by_expert event. | string | ✓ |
{
"Reason": "string"
}Documenti del caso
Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MExpertDocumentDto> | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ | |
| documentId | string (uuid) | ✓ |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Id | string(uuid) | |||
FileName | string | ✓ | ||
ContentType | string | ✓ | ||
SizeBytes | integer(int64) | |||
CreatedAt | string(date-time) | |||
ContentBase64 | string | ✓ |
{
"Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"FileName": "string",
"ContentType": "string",
"SizeBytes": 0,
"CreatedAt": "2025-12-31T12:00:00Z",
"ContentBase64": "string"
}Rapporti & Submission
Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Comment | string | ✓ |
{
"Comment": "string"
}| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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) |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Comment | string | ✓ |
{
"Comment": "string"
}| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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) |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ |
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MReportListItemDto> | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| caseId | string (uuid) | ✓ | |
| submissionId | string (uuid) | ✓ |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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) |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| submissionId | string (uuid) | ✓ |
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MExpertReportSubmissionDocumentDto> | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| submissionId | string (uuid) | ✓ |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
FileName | string | ✓ | ||
ContentType | string | ✓ | ||
ContentBase64 | string | ✓ | ||
IsSalvageSale | boolean | ✓ |
{
"FileName": "string",
"ContentType": "string",
"ContentBase64": "string",
"IsSalvageSale": false
}| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Id | string(uuid) | |||
SubmissionId | string(uuid) | |||
ClaimId | string(uuid) | |||
FileName | string | ✓ | ||
ContentType | string | ✓ | ||
SizeBytes | integer(int64) | |||
Kind | string | ✓ | ||
IsSalvageSale | boolean | |||
CreatedAt | string(date-time) |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| submissionId | string (uuid) | ✓ | |
| docId | string (uuid) | ✓ |
Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| submissionId | string (uuid) | ✓ |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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) |
{
"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)
- Eseguire la richiesta con lastChangedSince=<cursore salvato> (prima esecuzione: senza filtro).
- Elaborare i risultati in modo idempotente — il confronto è inclusivo, il valore limite può ricomparire.
- Salvare come nuovo cursore il valore massimo di LastChangedAt ricevuto.
- Le interessano solo i nuovi rapporti approvati? Stessa procedura con lastReportApprovedSince e LastReportApprovedAt.
Sinistri
Header
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| category | string | ||
| status | string | ||
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 | |
| q | string | ||
| createdFrom | string (date-time) | ||
| createdTo | string (date-time) | ||
| completedFrom | string (date-time) | ||
| completedTo | string (date-time) | ||
| lastChangedSince | string (date-time) | ||
| lastReportApprovedSince | string (date-time) |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MInsurerClaimListItemDto> | ✓ |
{
"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
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Category | string | ✓ | vehiclefraudappraiserspecial | |
| string | ✓ |
{
"Category": "vehicle",
"PayloadJson": "string"
}| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Id | string(uuid) | |||
ExternalKey | string | ✓ | ||
Category | string | ✓ | vehiclefraudappraiserspecial | |
Status | string | ✓ | CreatedAssignedRejectedAcceptedInProgressExpertCompletedAdminApprovedAdminReturnedAdminCancelledFinal | |
| string | ✓ |
{
"Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"ExternalKey": "string",
"Category": "vehicle",
"Status": "Created",
"PayloadJson": "string"
}Header
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Category | string | ✓ | vehiclefraudappraiserspecial | |
| string | ✓ |
{
"Category": "vehicle",
"PayloadJson": "string"
}| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Valid | boolean | |||
Errors | object | ✓ |
{
"Valid": false,
"Errors": {}
}Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| claimId | string (uuid) | ✓ |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Id | string(uuid) | |||
ExternalKey | string | ✓ | ||
Category | string | ✓ | vehiclefraudappraiserspecial | |
Status | string | ✓ | CreatedAssignedRejectedAcceptedInProgressExpertCompletedAdminApprovedAdminReturnedAdminCancelledFinal | |
CreatedAt | string(date-time) | |||
UpdatedAt | string(date-time) | |||
ExpertComment | string | ✓ | ||
| 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) | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| claimId | string (uuid) | ✓ |
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MInsurerDocumentDto> | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| claimId | string (uuid) | ✓ |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
FileName | string | ✓ | ||
ContentType | string | ✓ | ||
ContentBase64 | string | ✓ |
{
"FileName": "string",
"ContentType": "string",
"ContentBase64": "string"
}| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Id | string(uuid) | |||
FileName | string | ✓ | ||
ContentType | string | ✓ | ||
SizeBytes | integer(int64) | |||
CreatedAt | string(date-time) |
{
"Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"FileName": "string",
"ContentType": "string",
"SizeBytes": 0,
"CreatedAt": "2025-12-31T12:00:00Z"
}Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| claimId | string (uuid) | ✓ | |
| documentId | string (uuid) | ✓ |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Id | string(uuid) | |||
FileName | string | ✓ | ||
ContentType | string | ✓ | ||
SizeBytes | integer(int64) | |||
CreatedAt | string(date-time) | |||
ContentBase64 | string | ✓ |
{
"Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"FileName": "string",
"ContentType": "string",
"SizeBytes": 0,
"CreatedAt": "2025-12-31T12:00:00Z",
"ContentBase64": "string"
}Rapporti sui sinistri
Header
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| claimId | string (uuid) | ✓ |
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MReportListItemDto> | ✓ |
{
"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
Parametri di percorso
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| claimId | string (uuid) | ✓ | |
| submissionId | string (uuid) | ✓ |
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito |
|---|---|---|---|
| page | integer (int32) | 1 | |
| size | integer (int32) | 50 | |
| lang | string | de |
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
Total | integer(int32) | |||
Page | integer(int32) | |||
Size | integer(int32) | |||
Items | array<M2MReportSubmissionDocumentContentDto> | ✓ |
{
"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.
Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.
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)
- •
incidentDatenon può essere nel futuro. - •
inspectionDatenon può essere nel passato. - •
firstRegistrationebirthDatenon possono essere nel futuro – anche ininsuredPersons[]ecounterpartyPersons[]. - •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 - •
counterpartyrichiedename,phone,licensePlate,city,carMake
Se claimInsurance ha uno dei valori partial, comprehensive, allora:
- •Campi obbligatori:
insured - •
insuredrichiedename,phone,licensePlate,address,postalCode,city,carMake
Se claimInsurance ha il valore partial, allora:
- •
claimTypedeve avere uno dei valorifire,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 - •
workshoprichiedename,phone,city,postalCode,country - •
workshop.countrydeve avere uno dei valoriCH,DE,AT,FR,IT,LI
Se inspectionType ha uno dei valori estimate_review, invoice_review, allora:
- •Campi obbligatori:
workshop - •
workshoprichiedename,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:
- •
inspectionContactrichiedename,address,postalCode,city,phone,country - •
inspectionContact.countrydeve avere uno dei valoriCH,DE,AT,FR,IT,LI
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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.
Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.
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)
- •
incidentDatenon può essere nel futuro. - •
inspectionDatenon può essere nel passato. - •
firstRegistrationebirthDatenon possono essere nel futuro – anche ininsuredPersons[]ecounterpartyPersons[]. - •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 - •
insuredrichiedename - •
counterpartyrichiedename,phone,city
Se claimInsurance ha il valore own, allora:
- •
insuredrichiedename,phone,city
In base al campo inspectionType
Se inspectionType ha il valore onsite, allora:
- •Campi obbligatori:
inspectionDate,inspectionContact - •
inspectionContactrichiedename,postalCode,city,phone,country - •
inspectionContact.countrydeve avere uno dei valoriCH,DE,AT,FR,IT,LI
In base al campo inspectionContact
Se il campo inspectionContact è presente, allora:
- •
inspectionContactrichiedename,postalCode,city,phone,country - •
inspectionContact.countrydeve avere uno dei valoriCH,DE,AT,FR,IT,LI
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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.
Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.
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)
- •
incidentDatenon può essere nel futuro. - •
inspectionDatenon può essere nel passato. - •
firstRegistrationebirthDatenon possono essere nel futuro – anche ininsuredPersons[]ecounterpartyPersons[]. - •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 - •
counterpartyrichiedename,address,postalCode,city,phone,email
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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.
Tutti gli schemi sono disponibili come file JSON e possono essere importati direttamente negli strumenti di validazione.
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)
- •
incidentDatenon può essere nel futuro. - •
inspectionDatenon può essere nel passato. - •
firstRegistrationebirthDatenon possono essere nel futuro – anche ininsuredPersons[]ecounterpartyPersons[]. - •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:
- •
claimInsurancedeve essereliability
Se machineCategory ha il valore rail_vehicle, allora:
- •
machineTypedeve avere uno dei valorigondola,train,tram,rack_railway
Se machineCategory ha il valore aircraft, allora:
- •
machineTypedeve avere uno dei valoriglider,powered_aircraft,drone
Se machineCategory ha il valore land_machine, allora:
- •
machineTypedeve avere uno dei valoritractor,trailer,harvester,stationary_machine
Se machineCategory ha il valore land_machine, allora:
- •
inspectionTypedeve avere uno dei valoriworkshop,private,estimate_review,invoice_review
Se machineCategory ha uno dei valori rail_vehicle, aircraft, allora:
- •
inspectionTypedeve avere uno dei valorionsite,estimate_review,invoice_review
Se machineCategory ha uno dei valori aircraft, land_machine e claimInsurance ha il valore liability, allora:
- •Campi obbligatori:
counterparty - •
counterpartyrichiedemake
Se machineCategory ha il valore land_machine e claimInsurance ha uno dei valori partial, comprehensive, allora:
- •Campi obbligatori:
insured - •
insuredrichiedecarMake
In base al campo claimInsurance
Se claimInsurance ha il valore liability, allora:
- •Campi obbligatori:
counterparty - •
counterpartyrichiedename,phone,city
Se claimInsurance ha uno dei valori partial, comprehensive, allora:
- •Campi obbligatori:
insured - •
insuredrichiedename,phone,address,postalCode,city
In base al campo inspectionType
Se inspectionType ha il valore workshop, allora:
- •Campi obbligatori:
inspectionDate,workshop - •
workshoprichiedename,phone,city,postalCode
Se inspectionType ha uno dei valori estimate_review, invoice_review, allora:
- •Campi obbligatori:
workshop - •
workshoprichiedename,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:
- •
inspectionContactrichiedename,address,postalCode,city,phone
| Campo | Tipo | Obbligatorio | Nullable | Enum |
|---|---|---|---|---|
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.
È richiesta una struttura JSON valida.
Risposta
ProntoLa risposta dell'API di validazione apparirà qui.
- Seleziona la categoria
- Inserisci il payload JSON o usa l'esempio
- Valida payload