# Erros

> O catálogo de erros: estado HTTP, códigos de problema OperationOutcome e o que fazer para cada um.

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

Sob erros `/fhir/R4` estão `OperationOutcome`; noutros locais `{"error": {"type", "message", "field"?}}`. Cada resposta transporta `Anpheros-Request-Id`; cite-o quando escrever para o suporte.

| HTTP | `issue.code` / `type` | Significado | O que fazer |
|---|---|---|---|
| 400 | `invalid`, `structure`, `value` | JSON malformado, FHIR inválido, valor não num conjunto de valores obrigatório, parâmetro de pesquisa não suportado, filtro de âmbito não suportado | corrija o pedido; o nome da mensagem indica o campo |
| 400 | `too-costly` | aninhamento de recursos > 64 níveis, texto > 10 000 caracteres | simplifique o recurso |
| 401 | `login` | credencial em falta, desconhecida, expirada ou revogada; consentimento já não ativo; a resposta transporta `WWW-Authenticate: Bearer realm="anpheros"` (com `error="invalid_token"` quando foi enviada uma credencial) | reautentique-se; para OAuth, atualize ou reconsinta |
| 403 | `forbidden` | âmbito, propriedade (escrito por outra organização), concessão de apenas leitura, apenas administrador | solicite o âmbito correto; escreva o seu próprio recurso |
| 404 | `not-found` | não existe para este chamador | nunca assuma a existência a partir de um 404 |
| 409 | `conflict` | chave de idempotência em curso; documento já finalizado; limite do endpoint | tente novamente em breve / use uma nova chave |
| 410 | `deleted` | recurso ou ficheiro eliminado | — |
| 412 | `conflict` | incompatibilidade de versão `If-Match` | releia, depois atualize |
| 413 | `too-costly` | corpo ou documento acima do limite | divida ou comprima |
| 422 | `not-found` / `invalid` | paciente referenciado não existe para si; recurso movido entre pacientes; chave de idempotência reutilizada com outro corpo | corrija a referência |
| 429 | `throttled` | limite de taxa por credencial ou por IP | aguarde `Retry-After` segundos; os SDKs fazem isto |
| 503 | `transient` | armazenamento de documentos indisponível | tente novamente com backoff |
| 500 | `exception` | erro inesperado, registado e auditado com o ID do pedido | relate o ID do pedido |
