Pular para o conteúdo principal

Erros

A API do ION Guard utiliza códigos de status HTTP padrão e retorna mensagens de erro em formato JSON consistente.

Formato de resposta de erro

Erro simples

{
"message": "Invalid credentials."
}

Erro de validação (422)

{
"message": "The given data was invalid.",
"errors": {
"email": ["O campo email é obrigatório."],
"password": ["A senha deve ter pelo menos 8 caracteres."]
}
}

O campo message traz um resumo legível (normalmente a primeira mensagem de validação) e o campo errors é um objeto onde cada chave é o nome do campo e o valor é um array com todas as mensagens de erro daquele campo. Sempre baseie a exibição de erros no objeto errors, não apenas no message.

Códigos de status

CódigoSignificadoQuando ocorre
200OKRequisição bem-sucedida
201CreatedRecurso criado com sucesso
204No ContentOperação bem-sucedida sem corpo de resposta
401UnauthorizedToken ausente, inválido ou expirado
403ForbiddenUsuário autenticado mas sem permissão para a ação
404Not FoundRecurso não encontrado
422Unprocessable EntityErro de validação nos dados enviados
429Too Many RequestsRate limit excedido — veja Rate Limiting
500Server ErrorErro interno do servidor

Tratamento recomendado

401 — Token expirado

Quando receber 401, tente renovar o token via refresh. Se o refresh também falhar, redirecione para login.

Requisição → 401 → POST /auth/refresh → Novo token → Repetir requisição
→ 401 no refresh → Redirecionar para login

422 — Erros de validação

Itere sobre o objeto errors para exibir mensagens específicas por campo:

const response = await fetch('/api/v1/sites', { method: 'POST', body, headers });

if (response.status === 422) {
const { errors } = await response.json();
// errors.name → ["O campo nome é obrigatório."]
// errors.timezone → ["O timezone selecionado é inválido."]
}

429 — Rate limit

Aguarde o tempo indicado no header Retry-After e repita a requisição:

if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After');
await sleep(retryAfter * 1000);
// Repetir requisição
}

500 — Erro do servidor

Erros 500 indicam um problema no servidor. Não repita a requisição imediatamente. Se persistir, verifique os logs do servidor ou contate o suporte.