# Errori

> Il catalogo degli errori: stato HTTP, codici di issue di OperationOutcome e cosa fare per ciascuno.

Source: https://developers.anpheros.com/it/guides/errors

Sotto errori `/fhir/R4` ci sono `OperationOutcome`; altrove `{"error": {"type", "message", "field"?}}`. Ogni risposta porta `Anpheros-Request-Id`; citarlo quando si scrive al supporto.

| HTTP | `issue.code` / `type` | Significato | Cosa fare |
|---|---|---|---|
| 400 | `invalid`, `structure`, `value` | JSON malformato, FHIR non valido, valore non in un value set richiesto, parametro di ricerca non supportato, filtro di scope non supportato | correggere la richiesta; il messaggio indica il campo |
| 400 | `too-costly` | annidamento di risorse > 64 livelli, testo > 10.000 caratteri | semplificare la risorsa |
| 401 | `login` | credenziale mancante, sconosciuta, scaduta o revocata; consenso non più attivo; la risposta porta `WWW-Authenticate: Bearer realm="anpheros"` (con `error="invalid_token"` quando è stata inviata una credenziale) | riautenticarsi; per OAuth, aggiornare o ri-consentire |
| 403 | `forbidden` | scope, proprietà (scritto da un'altra organizzazione), grant di sola lettura, solo admin | richiedere lo scope corretto; scrivere la propria risorsa |
| 404 | `not-found` | non esiste per questo chiamante | non presumere mai l'esistenza da un 404 |
| 409 | `conflict` | chiave di idempotenza in corso; documento già finale; limite endpoint | riprovare a breve / usare una nuova chiave |
| 410 | `deleted` | risorsa o file eliminato | — |
| 412 | `conflict` | mancata corrispondenza della versione `If-Match` | rileggere, quindi aggiornare |
| 413 | `too-costly` | corpo o documento oltre il limite | dividere o comprimere |
| 422 | `not-found` / `invalid` | paziente referenziato non esiste per te; risorsa spostata tra pazienti; chiave di idempotenza riutilizzata con un corpo diverso | correggere il riferimento |
| 429 | `throttled` | limite di rate per credenziale o per IP | attendere `Retry-After` secondi; gli SDK lo fanno |
| 503 | `transient` | archiviazione documenti non disponibile | riprovare con backoff |
| 500 | `exception` | errore imprevisto, registrato e verificato con l'ID della richiesta | segnalare l'ID della richiesta |
