Erros
O formato de erro da API legada, com exemplos reais e o significado de cada código HTTP.
Quando algo dá errado, a API responde com um código HTTP (4xx para erro seu, 5xx para erro da plataforma) e um corpo JSON com a descrição. O código HTTP é o que decide o seu fluxo (repetir, corrigir, parar); a mensagem serve para o log e para a pessoa que vai investigar.
O formato do erro
{ "status": 404, "message": "Product not found" }Mais exemplos reais: {"message":"user_id is required","status":400} (campo obrigatório) e {"message":"Invalid credentials","status":401}. A mensagem é uma frase curta; não há campos extras.
A rota POST /api/v1.0/auth_tokens responde por conta própria: {"error":"invalid credentials"} (401), {"message":"Required field: password"} (400) e {"error":"invalid JSON"} (400), sem o campo status.
Códigos HTTP
| Status | Significado | O que fazer |
|---|---|---|
| 200, 201 | Deu certo. 201 indica que algo foi criado. | Siga em frente. |
| 204 | Deu certo e não há corpo (por exemplo, ao cancelar um pedido ou excluir um usuário). | Siga em frente. |
| 400 | Requisição inválida: JSON quebrado, campo obrigatório ausente, valor fora do permitido, regra de negócio violada. | Corrija a requisição. Repetir igual falha de novo. |
| 401 | Sem credencial, credencial inválida ou token vencido ou revogado. | Peça um token novo. Em Basic, confira e-mail e chave. |
| 403 | A credencial é válida, mas não tem permissão: usuário que não é administrador, ou token de outra loja. | Ajuste permissões. Não adianta repetir. |
| 404 | O registro não existe, ou a loja não foi encontrada. | Confira o id e a loja. |
| 422 | Uma regra da loja recusou a operação. A mensagem é a da loja. | Mostre a mensagem; corrija os dados. |
| 500 | Erro interno, ou uma validação que a rota não trata (um id malformado, por exemplo). | Pode repetir com espera crescente; se persistir, abra um chamado com o X-Request-Id. |
| 503 | Loja suspensa, em manutenção, ou a rota estourou o tempo. | Espere e repita. |
Exemplos reais
Falta a credencial (401)
{ "status": 401, "message": "Authentication required. Use HTTP Basic with email:api_key or Bearer <jwt>." }Chave incorreta (401)
{ "status": 401, "message": "Invalid credentials" }Sem permissão (403)
{ "status": 403, "message": "Forbidden: admin scope required" }Registro inexistente (404)
{ "message": "Order not found", "status": 404 }Validação (400)
{ "message": "product (name) is required", "status": 400 }{ "message": "shipping_service_unavailable: a shipping method is required for physical products", "status": 400 }Id malformado (500 em algumas rotas)
Algumas rotas não validam o formato do id e respondem 500 com a descrição do problema na mensagem. Valide o UUID no seu sistema antes de enviar:
{ "message": "Failed to retrieve product", "status": 500 }Tempo esgotado (503)
Uma rota que demora demais é interrompida pela plataforma e responde 503. Trate como erro repetível.
Erros que acontecem antes da sua rota
Duas verificações rodam antes do código da operação, e por isso os erros delas se parecem em toda a API:
- A loja (Endereço e ambientes):
404 tenant not found,503 tenant_suspended. - A autenticação (Autenticação):
401e403com as mensagens da tabela daquela página.
Como tratar erros no seu código
- Olhe o código HTTP primeiro
2xxsegue em frente.401pede um token novo (ou revê a chave).503e5xxentram em repetição com espera. O resto é erro seu. - Leia o corpo para o log e para o usuário
Registre o corpo inteiro e o
X-Request-Id. A descrição está emmessage. - Repita só o que é seguro repetir
Nunca repita um
400,403ou404sem mudar algo. Para criações (pedido), confira antes se o registro já existe (Limites e boas práticas).
Erros comuns
- Procurar o campo
error. Aqui a descrição está emmessage; só a rotaauth_tokensusaerror. - Repetir um
400em loop. Ele nunca passa sem mudança. - Fazer
if mensagem == "...". Use o código HTTP. - Ignorar o
500numa consulta por id. Em geral é um id malformado.