Pular para o conteúdo principal

Erros e Status Codes

A API da QuettaCode segue o padrão RFC 7807 (Problem Details for HTTP APIs) para retorno de erros. Isso garante que todos os erros tenham uma estrutura previsível e fácil de parsear.

Estrutura do Erro

Quando uma requisição falha, a API retorna um JSON com o seguinte formato:

{
"type": "about:blank",
"title": "Erro de Validação",
"status": 400,
"detail": "O campo 'email' é obrigatório.",
"instance": "/api/v2/auth/login"
}
  • type: Uma URI que identifica o tipo de erro (pode ser usado para linkar documentação).
  • title: Um resumo curto e legível por humanos sobre o erro.
  • status: O código de status HTTP (o mesmo do header).
  • detail: Uma explicação detalhada específica para esta ocorrência.
  • instance: A URI onde o erro ocorreu.

Códigos HTTP Comuns

Aqui estão os códigos de status mais comuns que você encontrará:

CódigoSignificadoDescrição
200OKRequisição bem sucedida.
201CreatedRecurso criado com sucesso (ex: novo usuário, envio de mensagem).
204No ContentSucesso, mas sem corpo de resposta (ex: delete ou update simples).
400Bad RequestErro de validação nos dados enviados. Verifique o payload.
401UnauthorizedFalha na autenticação. Token inválido, expirado ou ausente.
403ForbiddenAutenticado, mas sem permissão para este recurso (Acesso Negado).
404Not FoundO recurso solicitado não existe (ex: ID de usuário inválido).
422Unprocessable EntityDados sintaticamente corretos, mas semanticamente inválidos.
429Too Many RequestsVocê excedeu o limite de requisições (Rate Limit).
500Internal Server ErrorErro inesperado no servidor. Contate o suporte.

Tratamento Específico

403 Forbidden (Acesso Negado)

Geralmente ocorre quando um usuário tenta acessar recursos de outro Tenant ou uma funcionalidade restrita à role ADMIN.

  • Solução: Verifique as permissões do usuário ou se o ID do recurso pertence ao Tenant logado.

400 Bad Request (Validação)

Geralmente acompanhado de detalhes sobre quais campos falharam na validação.

  • Exemplo:
    {
    "title": "Erro de Validação",
    "status": 400,
    "detail": "O campo 'password' deve ter no mínimo 8 caracteres."
    }