Pular para conteúdo

Códigos de erro

Catálogo completo. O campo codigo é estável: não é traduzido e não muda entre versões — é nele que o seu tratamento de erro deve se apoiar.

Código HTTP Quando acontece Repetir resolve?
CAMPO_OBRIGATORIO 400 Campo obrigatório ausente. Vem dentro de erros[] Não
VALOR_INVALIDO 400 Valor fora do domínio aceito Não
TIPO_INVALIDO 400 Tipo errado — texto onde se espera número, data malformada Não
VALIDACAO_CAMPOS 400 Falha de validação. Traz erros[] com o detalhe por campo Não
NAO_AUTENTICADO 401 Token ausente, inválido ou expirado Depois de renovar
SEM_PERMISSAO 403 Autenticado, mas sem acesso àquele recurso Não
NAO_ENCONTRADO 404 Recurso inexistente, ou de outro cliente Não
CONFLITO 409 Choca com o estado atual — nome duplicado, vínculo já existente Não
REGRA_NEGOCIO 422 Corpo válido, operação não permitida. O motivo está em detalhe Não
LIMITE_EXCEDIDO 429 Limite de requisições estourado Sim, após Retry-After
ERRO_INTERNO 500 Falha do nosso lado Sim, com backoff

A regra prática

4xx é você, 5xx somos nós.

Repetir um 4xx sem mudar a requisição não vai resolver — só consome o seu limite. As duas exceções são NAO_AUTENTICADO (repita depois de renovar o token) e LIMITE_EXCEDIDO (repita depois do Retry-After).

Status de sucesso

HTTP Quando
200 Leitura ou atualização bem-sucedida
201 Recurso criado. Traz o cabeçalho Location
204 Sucesso sem conteúdo — exclusões e vínculos
207 Lote processado. O resultado está item a item no corpo

O 207 não é um veredito

Ele chega mesmo quando todos os itens falharam. Sempre percorra resultados para saber o que aconteceu com cada um.

Estrutura da resposta de erro

{
  "tipo": "https://docs.checkmob.com/erros/validacao",
  "titulo": "Falha de validação",
  "status": 400,
  "codigo": "VALIDACAO_CAMPOS",
  "detalhe": "O corpo enviado tem campos inválidos.",
  "instancia": "/v2/clientes",
  "erros": [
    { "campo": "nome", "codigo": "CAMPO_OBRIGATORIO", "mensagem": "O campo nome é obrigatório." }
  ]
}

detalhe, instancia e erros são omitidos quando não se aplicam. codigo, status, titulo e tipo estão sempre presentes.

Como tratar cada um em código: erros.