Pular para o conteúdo

Códigos de erro

Como o Authio informa erros nos endpoints de protocolo e na API administrativa, o status HTTP de cada tipo de falha e os códigos que você mais deve encontrar.

O Authio responde erros em dois formatos. Os endpoints de protocolo falam OAuth 2.0, para que bibliotecas padrão os entendam; a API administrativa embrulha todo erro no envelope dela, com um errorCode estável no topo. Os dois levam os mesmos códigos por baixo, então uma falha relatada por uma integração pode ser cruzada com os logs do Authio.

Erros nos endpoints de protocolo

Os endpoints sob /protocol/openid-connect/ respondem com os campos do RFC 6749 §5.2 — error e error_description —, mais error_code, o código por trás do erro:

400 Bad RequestJSON
{
  "error": "invalid_grant",
  "error_description": "Authorization code expired!",
  "error_code": "AuthorizationCodeExpired"
}
errorHTTPCódigos por trás dele
invalid_client401InvalidClientCredentials: um segredo errado, ou um segredo enviado por um método para o qual o client não está registrado.
invalid_grant400AuthorizationCodeNotFound, AuthorizationCodeExpired, AuthorizationCodeClientMismatch, MissingCodeChallenge, MissingCodeVerifier, InvalidCodeVerifier, TokenExpired, RefreshTokenFailed, InvalidUserAuthentication, UserLockedOut, EmailNotConfirmed, UserSuspended
invalid_request400InvalidRequest, InvalidRedirectUri, MissingGrantType, MissingCodeChallengeMethod, PkceMethodNotAllowed, RequiredFields, e um client que não existe ou está inativo.
invalid_scope400InvalidScope: um escopo que o client não habilitou.
invalid_target400InvalidTarget: um resource que o client não pode alcançar.
unauthorized_client400GrantTypeDisabled; AccountNotEntitled quando a assinatura por trás da aplicação não está ativa.
unsupported_grant_type400UnsupportedGrantType
unsupported_response_type400UnsupportedResponseType
access_denied400Um pedido de dispositivo negado; McpIntegrationNotIncluded, ConnectedAccountsNotIncluded ou IntegrationLicenseSuspended quando o plano não cobre o pedido.
authorization_pending, slow_down, expired_token400Consulta do fluxo de dispositivo: continue esperando, consulte mais devagar ou comece de novo.
temporarily_unavailable429 ou 5xxLimite de taxa atingido, ou um serviço de que o Authio depende está indisponível. Tente de novo mais tarde.
server_error500Algo falhou do lado do Authio.

A introspecção e a revogação nunca falham por causa do próprio token: um token inválido, expirado ou desconhecido recebe 200 com active: false da introspecção, e um 200 simples da revogação. O UserInfo responde 401 com invalid_token, ou 403 com insufficient_scope, cada um com o cabeçalho WWW-Authenticate.

Durante um login no navegador, os erros não são JSON. Enquanto o redirect_uri não está comprovado, eles aparecem na tela de erro do client; depois disso, voltam ao redirect_uri com error, error_description, state e iss.

Erros na API administrativa

A API administrativa responde toda falha com o envelope dela: success é false, o status HTTP diz que tipo de falha foi, errorCode dá o nome dela e notifications a explica para uma pessoa. Um erro de validação aponta cada campo recusado:

400 Bad RequestJSON
{
  "statusCode": 400,
  "success": false,
  "notifications": [
    {
      "message": "The description is too long.",
      "field": "description",
      "code": "ValidationFailed"
    }
  ],
  "errorCode": "ValidationFailed",
  "requestId": "0HN8R3K5QJ2VA:00000004"
}

Os códigos são nomes, como NotFound ou AlreadyExists, e o mesmo nome pode vir de áreas diferentes: um realm inexistente e um client inexistente respondem os dois NotFound. Leia o código junto com o endpoint que você chamou e guarde o requestId ao relatar um problema. O envelope em si está descrito em API administrativa.

Status HTTP por tipo de falha

Todo erro que o Authio levanta declara que tipo de falha é, e cada tipo responde com um status:

TipoHTTPSignificado
Invalid400A requisição trouxe algo que as regras recusam.
Unauthorized401Quem chama não provou quem é, ou a prova não se sustentou.
PaymentRequired402A ação exige um plano ou um pagamento que a conta não tem.
Forbidden403Quem chama é conhecido, mas não pode fazer isso.
NotFound404O que a requisição cita não existe, ou não é visível para quem chama.
Conflict409A requisição choca com o estado atual do que ela cita.
Gone410O que a requisição cita existiu e não está mais disponível.
Locked423O que a requisição cita está bloqueado para a ação.
NotImplemented501A ação não é suportada aqui.
UpstreamFailure502Um serviço de que o Authio depende respondeu com falha.
Unavailable503O recurso está temporariamente indisponível.
UpstreamTimeout504Um serviço de que o Authio depende não respondeu a tempo.
Qualquer coisa inesperada500Uma falha que quem chama não poderia ter causado.

Requisições recusadas antes de chegar a um endpoint usam o mesmo envelope: 404 para uma rota desconhecida (NotFound), 405 para um método que a rota não aceita (MethodNotAllowed), 415 para um corpo que não é JSON (UnsupportedMediaType) e 429 para um limite de taxa (TooManyRequests).

Códigos comuns

Requisições e validação

CódigoHTTPO que significaO que fazer
ValidationFailed400O corpo quebrou uma regra, ou não pôde ser lido.Corrija os campos apontados em notifications.
RequiredFields400Faltam campos obrigatórios.Envie todos os campos que o endpoint exige.
NotFound404A rota ou o recurso não existe, ou pertence a outra conta.Confira o caminho e os IDs.
Conflict409A alteração choca com dados salvos nesse meio-tempo.Leia o recurso de novo e tente outra vez.
TooManyRequests429O limite de taxa foi atingido.Espere os segundos indicados em Retry-After.
TemporarilyUnavailable503O Authio não conseguiu falar com o banco de dados ou o cache por um instante; nada foi alterado.Espere os segundos indicados em Retry-After e envie a mesma requisição de novo.
UpstreamFailure, RequestTimeout502, 503, 504Um serviço de que o Authio depende falhou ou não respondeu.Tente de novo mais tarde.
UnexpectedError500Algo falhou do lado do Authio.Tente de novo; se persistir, fale com o suporte informando o requestId.

Usuários e login

CódigoHTTPO que significaO que fazer
Unauthorized401A chamada não leva credenciais válidas.Envie um segredo de API ou um bearer token do realm da plataforma.
Forbidden403Quem chama está autenticado, mas não tem a permissão.Conceda o papel, ou permita-o no segredo de API.
InvalidCredentials401O usuário ou a senha estão errados.Confira e tente de novo.
LockedOut401Tentativas demais com falha: a conta fica bloqueada por um tempo.Espere o bloqueio terminar.
PasswordExpired401A senha precisa ser renovada.Renove pelo link enviado por e-mail.
AccountNotConfirmed401O endereço com que a conta foi criada não foi confirmado.Confirme-o e entre de novo.
AccountInactive401A conta foi desativada.Um administrador do realm a ativa de novo.
ClientAccessDenied401As credenciais estão certas, mas a conta não tem acesso a esta aplicação.Dê à conta acesso ao client.
UserSuspended401O usuário está suspenso.Encerre a suspensão ou espere que ela termine.
SubscriptionLapsed401A conta não tem plano ativo, então o login está pausado.Escolha um plano para trazê-lo de volta.
FirstPurchasePending401A conta foi criada num plano pago que nunca foi pago.Conclua o pagamento.
DuplicateUserName, DuplicateEmail409O usuário ou o e-mail já está em uso.Use outro.

Realms e clients

CódigoHTTPO que significaO que fazer
NotFound404O realm ou o client não existe, ou pertence a outra conta.Confira o ID do realm e o ID do client.
AlreadyExists409Já existe um realm ou client com esse ID.Escolha outro ID, ou leia o existente.
Inactive403O realm ou o client está desativado.Ative-o de novo.
Reserved409O ID é reservado: authio, system, platform, admin, master e internal não podem ser usados.Escolha outro ID.
SystemProtected403O realm e o client da própria plataforma não podem sair de serviço.Mantenha-os ativos.
InconsistentConfiguration400A configuração do client se contradiz e impediria o login.Corrija as configurações apontadas em notifications.
PublicClientHasNoSecret400Um client público não tem segredo para rotacionar.Torne o client confidencial antes, se ele precisar de um segredo.

Tokens e autorização

CódigoHTTPO que significaO que fazer
InvalidClientCredentials401O segredo do client está errado, ou foi enviado por um método para o qual o client não está registrado.Confira o segredo e o método de autenticação no client.
GrantTypeDisabled400O grant não está habilitado no client.Habilite-o no client.
InvalidRedirectUri400O redirect_uri não é igual a nenhum dos registrados.Registre o endereço exato: esquema, host, porta, caminho e query.
InvalidScope400Um escopo pedido não está habilitado no client.Habilite-o, ou deixe de pedi-lo.
MissingCodeChallenge400O client exige PKCE e o pedido não trouxe code_challenge.Envie code_challenge e code_challenge_method.
PkceMethodNotAllowed400O code_challenge_method não está habilitado no client.Use S256, ou habilite o método.
InvalidCodeVerifier400O code_verifier não corresponde ao challenge.Envie o verifier a partir do qual o challenge foi feito.
AuthorizationCodeExpired400O código vale 30 segundos e foi trocado tarde demais.Troque o código assim que ele chegar.
UnsupportedGrantType400O grant_type não é um que o Authio emite.Use um dos grants aceitos.
InvalidTarget400O resource não é um servidor de recurso que o client pode alcançar.Dê ao client acesso ao servidor de recurso.

Plano e cobrança

CódigoHTTPO que significaO que fazer
RealmLimitExceeded, ClientLimitExceeded, UserLimitExceeded, ConsumerLimitExceeded, SecretLimitExceeded, ResourceServerLimitExceeded400A cota do plano para esse recurso acabou.Remova o que não usa mais, ou mude para um plano maior.
SeatLimitExceeded402Todos os assentos da equipe estão ocupados.Libere um assento ou adicione assentos.
NoActiveSubscription400A conta não tem assinatura ativa.Assine um plano para criar realms ou clients.
AccountNotEntitled403A assinatura por trás da aplicação não está ativa, então o login e a emissão de tokens estão pausados.Renove a assinatura.
McpIntegrationNotIncluded, ConnectedAccountsNotIncluded403O plano não inclui tokens MCP ou contas conectadas.Mude para um plano que os inclua.
AuthLayoutNotIncluded403Personalizar as telas de login não está incluído no plano.Mude para um plano que inclua.
SharedTenancyNotIncluded403A conta está no plano Dedicado, então realms e clients não são criados na plataforma compartilhada.Crie-os no console do próprio ambiente.

Consultor de IA

CódigoHTTPO que significaO que fazer
AiAdvisorNotIncludedInPlan403O consultor de IA não está incluído no plano.Mude para um plano que o inclua.
AiAdvisorNotEnabled409O consultor não está ligado para este realm ou client.Ligue-o para esse realm ou client.
AiAdvisorRequiresAccountOperator403Só uma pessoa conectada ao console pode usar o consultor; credenciais de máquina, como chaves de API, não podem.Chame a partir de uma sessão conectada.
AiAdvisorNotConfigured503O consultor não está disponível nesta implantação.Num ambiente dedicado, defina ANTHROPIC_API_KEY em Configuração.
AiAnalysisAlreadyRunning, AiConfigurationAlreadyRunning, AiAccessReviewAlreadyRunning, AiDashboardSummaryAlreadyRunning409A mesma leitura já está sendo produzida.Espere terminar antes de pedir de novo.
AiConfigurationNotActionable409A proposta não está num estado que permita isso: não traz alterações, já foi aplicada ou nunca foi aplicada.Recarregue a proposta.
AiConfigurationStale409O client mudou depois que a proposta foi feita, então aplicá-la desfaria essa mudança.Peça uma proposta nova.
AiAccessReviewPeriodInvalid400O período precisa durar no mínimo uma hora e no máximo 90 dias, e terminar no máximo agora.Escolha um período dentro desses limites.
AiTokenShapeCarriesToken400O formato de token enviado para análise traz o próprio token.Envie o formato do token sem o token.
AiRunLimitExceeded400As execuções de IA do plano para o período acabaram.Espere a contagem recomeçar, ou mude para um plano maior.

Ambiente dedicado

CódigoHTTPO que significaO que fazer
DedicatedInstanceNotFound404A conta ainda não tem ambiente.Ele é preparado assim que a assinatura é confirmada.
DedicatedInstanceNotReady409O ambiente não está rodando, então não pode ser alterado.Tente de novo quando ele estiver pronto.
DedicatedSubscriptionMissing409Nenhuma assinatura Dedicada ativa cobre a conta.Assine o plano Dedicado.
DedicatedVariableNotEditable400A variável é administrada pela plataforma.Altere só as variáveis listadas em Configuração.
DedicatedAdminCredentialUnavailable409A senha do primeiro administrador já foi mostrada e não é mais guardada.Use a recuperação de senha na tela de login do seu ambiente.
DedicatedDomainInvalid400Os nomes de host não podem ser usados: são inválidos, iguais, não ficam sob o mesmo domínio ou ficam sob o domínio da plataforma.Use dois nomes de host seus sob um mesmo domínio.
DedicatedDomainAlreadySet409O ambiente já tem um domínio próprio.Remova-o antes de adicionar outro.
DedicatedDomainNotReady409Os certificados do domínio ainda não foram emitidos.Confira os registros DNS e tente de novo em alguns minutos.
DedicatedServiceNotRunning409O serviço não tem um deploy em execução.Refaça o deploy para iniciá-lo.
DedicatedDeploymentNotFound404O deploy não é um dos deploys recentes do ambiente.Recarregue os serviços e escolha-o de novo.
DedicatedDeploymentNotCancellable409Só um deploy ainda sendo compilado ou implantado pode ser cancelado.Não há o que cancelar; refaça o deploy se precisar.
DedicatedInstanceRemovalFailed502O provedor de hospedagem não terminou de remover o ambiente.Remova de novo; a remoção continua de onde parou.

Próximos passos

Cookies de analytics

Gostaríamos de medir como o console é usado, com o Google Analytics, para enxergar em quais telas as pessoas travam. Isso grava um cookie que reconhece este navegador na sua próxima visita.

Recusar não muda mais nada. Os cookies que mantêm você conectado e lembram o seu idioma e o seu tema são necessários para o console funcionar, e ficam de qualquer forma. Ler a Política de Privacidade