2xx indicam sucesso, 4xx indicam um problema na requisição e 5xx indicam um problema do lado da Routa.
Formato do erro
Todo erro de negócio tem a mesma estrutura, no estilo de APIs de pagamento que você provavelmente já conhece:O
code faz parte do contrato: ele nunca é renomeado. Novos códigos podem ser adicionados a qualquer momento, então trate códigos desconhecidos de forma genérica, usando o type e o status HTTP.request_id também vem no header Routa-Request-Id de toda resposta.
Detalhes acionáveis
Alguns erros trazemdetails com valores que você pode usar programaticamente:
Tipos de erro
billing_error usa 402, nunca 429. Clientes retentam 429, mas esperar não aumenta a franquia de um plano.Status HTTP
Erros de validação de schema
Quando o corpo ou os parâmetros não respeitam o schema da rota (por exemplo, falta um campo obrigatório), a API responde422 com um objeto de validação, e não com o envelope error:
422 assim: se existir error.code, use-o. Caso contrário, é um erro de validação do schema, e property aponta o campo.
Como tratar cada erro
4xx (exceto 409 e 429): corrija a requisição
4xx (exceto 409 e 429): corrija a requisição
Não adianta tentar de novo sem mudar nada. Leia
code, param e message, corrija e envie outra requisição. A exceção são os 409 idempotency_in_progress, que valem uma nova tentativa.429: espere e tente de novo
429: espere e tente de novo
Respeite o header
Retry-After e use espera exponencial com jitter. Veja Limites de taxa.5xx: tente de novo com a mesma idempotency key
5xx: tente de novo com a mesma idempotency key
Falhas do lado da Routa são seguras de repetir se você usa
Idempotency-Key. Reenvie com a mesma chave. Veja Idempotência.Falha de rede ou timeout
Falha de rede ou timeout
Você não sabe se a requisição chegou. Reenvie com a mesma
Idempotency-Key. Ela garante que não haja mensagem duplicada.