# Erreurs

> Le catalogue d'erreurs : statut HTTP, codes de problème OperationOutcome et quoi faire pour chacun.

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

Sous `/fhir/R4` les erreurs sont `OperationOutcome` ; ailleurs `{"error": {"type", "message", "field"?}}`. Chaque réponse contient `Anpheros-Request-Id` ; citez-le lorsque vous écrivez au support.

| HTTP | `issue.code` / `type` | Signification | Que faire |
|---|---|---|---|
| 400 | `invalid`, `structure`, `value` | JSON malformé, FHIR invalide, valeur non présente dans un jeu de valeurs requis, paramètre de recherche non pris en charge, filtre de portée non pris en charge | corriger la requête ; le message nomme le champ |
| 400 | `too-costly` | imbrication de ressources > 64 niveaux, texte > 10 000 caractères | simplifier la ressource |
| 401 | `login` | identifiant manquant, inconnu, expiré ou révoqué ; consentement n'est plus actif ; la réponse contient `WWW-Authenticate: Bearer realm="anpheros"` (avec `error="invalid_token"` lorsqu'un identifiant a été envoyé) | se réauthentifier ; pour OAuth, rafraîchir ou donner à nouveau son consentement |
| 403 | `forbidden` | portée, propriété (écrit par une autre organisation), octroi en lecture seule, administrateur uniquement | demander la bonne portée ; écrire votre propre ressource |
| 404 | `not-found` | n'existe pas pour cet appelant | ne jamais supposer l'existence à partir d'un 404 |
| 409 | `conflict` | clé d'idempotence en cours ; document déjà final ; limite de point de terminaison | réessayer peu de temps après / utiliser une nouvelle clé |
| 410 | `deleted` | ressource ou fichier supprimé | — |
| 412 | `conflict` | `If-Match` incompatibilité de version | relire, puis mettre à jour |
| 413 | `too-costly` | corps ou document dépassant la limite | diviser ou compresser |
| 422 | `not-found` / `invalid` | patient référencé n'existe pas pour vous ; ressource déplacée entre patients ; clé d'idempotence réutilisée avec un autre corps | corriger la référence |
| 429 | `throttled` | limite de débit par identifiant ou par IP | attendre `Retry-After` secondes ; les SDK le font |
| 503 | `transient` | stockage de documents indisponible | réessayer avec un backoff |
| 500 | `exception` | erreur inattendue, enregistrée et auditée avec l'ID de la requête | signaler l'ID de la requête |
