Pular navegação

Erros da API

Status HTTP, códigos de erro e recomendações de repetição.

Erros

A API usa os códigos de status HTTP convencionais para indicar o resultado e um corpo JSON estruturado para descrever o motivo. Toda resposta de erro tem o mesmo formato: o código, uma mensagem curta e, quando houver, detail com contexto adicional.

{  "error": {    "code": 400301,    "message": "invalid uuid format",    "detail": "see https://en.wikipedia.org/wiki/Universally_unique_identifier"  }}

Campos:

CampoTipoDescrição
error.codenumberCódigo detalhado no nível da aplicação. Combina o status HTTP com a categoria do motivo — a lista completa está abaixo.
error.messagestringExplicação curta em linguagem natural, adequada para logs.
error.detailstringOpcional. Contexto adicional: a lista de campos que falharam na validação, um link para documentação externa ou o valor que foi rejeitado.

Resumo dos códigos de status HTTP

CódigoNomeDescrição
200OKA requisição foi concluída. O corpo da resposta traz o objeto solicitado.
201CreatedO recurso foi criado. O corpo da resposta traz o novo objeto.
204No ContentA requisição foi concluída, mas o endpoint não tem corpo para devolver (em geral, depois de um DELETE).
400Bad RequestA requisição está malformada: faltam campos obrigatórios, os tipos estão errados ou os valores dos parâmetros são inválidos.
401UnauthorizedA autenticação está ausente, inválida ou expirada. Verifique o cabeçalho Authorization.
402Payment RequiredO plano ou o saldo do workspace não cobre esta operação.
403ForbiddenO token está autenticado, mas não tem permissão para este recurso ou ação.
404Not FoundO recurso não existe ou existe, mas não é visível para este token.
429Too Many RequestsO limite de requisições foi excedido. Respeite o cabeçalho Retry-After da resposta antes de tentar de novo.
5xxServer ErrorErro inesperado no servidor. É seguro repetir a requisição com backoff exponencial; se persistir, fale com o suporte.

Códigos numéricos devolvidos em error.code. Os três primeiros dígitos de cada código sempre coincidem com o status HTTP da resposta.

Códigos de autenticação e acesso (1xxxxx)

CódigoNomeDescrição
1IO_ERRORNão foi possível ler o corpo da requisição — normalmente um payload vazio ou malformado, ou uma conexão interrompida durante o envio.
100101AUTH_AUTHORIZATION_HEADER_NOT_FOUNDO cabeçalho Authorization não veio na requisição.
100102UNAUTHORIZEDO token está ausente, inválido ou expirado.
100103ACCESS_DENIEDO token é válido, mas não dá acesso a este recurso ou escopo.
100104INVALID_USERNAME_OR_PASSWORDAs credenciais enviadas ao endpoint de login não correspondem a nenhuma conta.
100105INVALID_CONFIRMATION_TOKENO token de confirmação de e-mail é desconhecido ou expirou. Solicite um novo.
100106LIMIT_REACHEDUma cota ou um limite de requisições do workspace foi atingido.
100107USER_IS_NOT_OWNERA ação exige privilégios de dono do workspace, e o usuário atual não é o dono.

Códigos de requisição inválida e validação (4xxxxx)

CódigoNomeDescrição
400101JSON_SYNTAX_ERRORO corpo da requisição não é um JSON válido.
400102JSON_UNMARSHAL_TYPE_ERRORUm campo do corpo tem um tipo que a API não esperava (por exemplo, uma string onde é preciso um número).
400201HAS_ALREADY_BEEN_TAKENUma restrição de unicidade foi violada: já existe um valor com a chave informada.
400202EMAIL_IS_ALREADY_TAKENJá existe uma conta com este endereço de e-mail.
400203NAME_IS_ALREADY_TAKENJá existe uma entidade com este nome no escopo atual (workspace, projeto, pasta).
400204INVITATION_IS_ALREADY_EXISTUm convite já foi enviado para este destinatário.
400205INVITATION_IS_ALREADY_APPROVEDO convite já foi aceito e não pode ser aceito de novo.
400206BILLING_ACCOUNT_IS_ALREADY_EXISTJá existe uma conta de cobrança vinculada a este workspace.
400207NOT_ENOUGH_MONEYO saldo do workspace não é suficiente para esta operação.
400208NO_BILLING_ACCOUNTO workspace ainda não tem conta de cobrança. Crie uma antes de usar recursos pagos.
400209NO_PAYMENT_METHODNenhuma forma de pagamento está configurada na conta de cobrança.
400210NOT_ENOUGH_REQUIRED_PRODUCTSFaltam no plano atual um ou mais produtos dos quais esta operação depende.
400211NOT_ALLOWED_ADDITIONAL_FOR_TRIALNão é possível comprar adicionais enquanto o workspace estiver no plano de teste.
400212SUBSCRIPTION_NOT_PAIDO workspace tem faturas em aberto. Quite-as antes de continuar.
400213EMAIL_NOT_CONFIRMEDO endereço de e-mail do usuário ainda não foi confirmado.
400214EMAIL_NOT_FOUNDNenhuma conta está associada ao e-mail informado.
400215RESET_TOKEN_NOT_FOUND_OR_EXPIREDO token de redefinição de senha é desconhecido ou expirou. Comece o processo novamente.
400216NOT_ALLOWED_ORDER_FIELDO parâmetro order aponta para um campo pelo qual este endpoint não sabe ordenar.
400301Um dos parâmetros UUID na URL, na query ou no corpo tem formato inválido.
400400UNEXPECTED_VALUEO valor de um parâmetro está fora do conjunto de valores permitidos (em geral, um enum).

Outros códigos de erro (402 / 404 / 500)

CódigoNomeDescrição
402402VALIDATION_ERRORUm ou mais campos falharam na validação. O campo detail costuma listar os campos com erro e os motivos.
404404NO_SUCH_ENTITYO objeto referenciado não existe, foi excluído ou não é visível para este token.
500500INTERNAL_SERVER_ERROROcorreu um erro inesperado no servidor. É seguro repetir a requisição com backoff exponencial.

Tratamento de erros

  • Novas tentativas. É seguro repetir requisições que devolveram 5xx ou estouraram o tempo de espera da rede. Use backoff exponencial e limite o número de tentativas. Respostas 4xx que não sejam 429 não devem ser repetidas — corrija a requisição.
  • Limites de requisições. Ao receber 429, aguarde a quantidade de segundos indicada no cabeçalho Retry-After antes de tentar de novo. Não repita a requisição na hora.
  • Validação. Em 402402 VALIDATION_ERROR, espere encontrar em error.detail o detalhamento por campo. Mostre essas mensagens ao usuário para que ele possa corrigir os dados.
  • Logs. Registre error.code, e não error.message, para alertas e análises: os códigos são estáveis, as mensagens não.