Pular para o conteúdo
Decoding Chat API

Recurso de autenticação

O recurso de Autenticação cobre cadastro, login, recuperação de conta e transferência de sessão para um novo dispositivo. Todas as rotas nesta página estão sob /v1/auth.

Autenticação e Autenticação HTTP definem a sintaxe de credenciais e os namespaces de credenciais. A alteração das credenciais de uma conta que já está conectada é coberta por Alterações de e-mail e senha, Autenticação multifator e Verificação de telefone.

A maioria das operações não precisa de uma credencial de Authorization, porque a solicitação tem um token de uso único, ticket de MFA, asserção WebAuthn ou credencial de conta própria. Listar sessões de autenticação, encerrar sessões de autenticação, reenviar verificação de e-mail, sair e concluir handoff para desktop são as únicas operações nesta página que leem uma credencial de Authorization. O handoff completo para desktop lê o cabeçalho apenas quando seu corpo omite o campo token. As três primeiras requerem uma sessão de usuário comum, e cada uma rejeita um token de bot e um token bearer OAuth2 com 403 ACCESS_DENIED. Todas as três ainda admitem uma sessão cuja conta está sinalizada por atividade suspeita.

Cada rota tem um bucket de rota e também está sujeita ao limite HTTP global. Um bucket de rota é chaveado pelo usuário autenticado quando a solicitação tem uma credencial resolúvel e pelo endereço IP do cliente caso contrário. A negação do bucket ou global retorna 429 RATE_LIMITED.

Uma forma JSON inválida retorna 400 INVALID_FORM_BODY com entradas de objeto de erro de validação em errors. Uma falha inesperada retorna 500 INTERNAL_SERVER_ERROR. Todos os códigos enumerados nesta página estão registrados em Erros, e cada campo snowflake é a forma de string decimal definida por Snowflakes.

Quando o SSO está ativado e forçado, cada operação de autenticação local retorna 403 SSO_REQUIRED. A rota de status de SSO, início e conclusão de SSO, logout, ambas as rotas de sessão e todas as rotas de handoff permanecem disponíveis sob imposição. Todas as outras rotas nesta página são operações de autenticação local.

Um login bem-sucedido cria uma sessão de autenticação e emite seu token. O Decoding Chat não define limite para sessões ativas e não remove nenhuma quando uma sessão adicional é iniciada, então uma conta mantém uma sessão por login até revogá-las através de encerrar sessões de autenticação.

A revogação de uma sessão, seja a conta a revogando ou um administrador a encerrando, impede que seu token autentique solicitações. Sua conexão Gateway principal recebe Sessão Inválida com d: false e permanece aberta, não autenticada. Nenhum Dispatch do Gateway é emitido para a própria revogação, então um cliente descobre sobre isso através desse frame ou da próxima solicitação que não consegue autenticar.

Um token de sessão recém-emitido e a conta a que pertence. Login com senha sem segundo fator, conclusão de MFA, autenticação WebAuthn detectável, registro imediato, redefinição de senha, reversão de e-mail, conclusão de SSO, pesquisa de autorização de IP e pesquisa de handoff retornam esses campos.

CampoTipoDescrição
token1stringO token da sessão do usuário recém-emitido
user_idsnowflakeO ID do usuário autenticado
userobjeto usuário parcialA representação pública da conta autenticada

1 O token é o prefixo literal flx_ seguido por exatamente 36 caracteres base62, e essa resposta é a única maneira de lê-lo

O estado público do single sign-on. O mesmo objeto é incorporado pelo documento de descoberta de instância.

CampoTipoDescrição
enabled1booleanSe o SSO pode ser iniciado nesta instância
enforced2booleanSe o SSO é obrigatório para todos os usuários
display_name?stringO nome de exibição do provedor configurado, ou nulo quando nenhum está definido
redirect_uristringO URI de redirecionamento OAuth2 padrão usado para o retorno de chamada do provedor

1 O valor é verdadeiro apenas quando o operador ativou o SSO e o provedor tem uma URL de autorização, uma URL de token, um ID de cliente e uma URL JWKS ou URL de informações do usuário. Cada URL é configurada ou descoberta a partir do emissor. Um provedor que não possui qualquer um deles relata falso

2 O valor é verdadeiro apenas quando enabled também é verdadeiro, e cada operação de autenticação local então retorna 403 SSO_REQUIRED

Os parâmetros para enviar o usuário ao provedor de identidade, vinculados a um novo estado de SSO.

CampoTipoDescrição
authorization_urlstringA URL de autorização do provedor com o estado, nonce e desafio PKCE
state1stringO estado CSRF de uso único
redirect_uristringO URI de retorno de chamada vinculado a este estado

1 A primeira solicitação de concluir SSO que apresenta o estado não expirado o consome, quer essa solicitação seja bem-sucedida ou não

Um cliente DEVE retornar o estado inalterado e NÃO DEVE interpretar seu conteúdo.

A conclusão de SSO sempre emite uma sessão. Ele estende a resposta do token de autenticação com o redirecionamento vinculado ao estado consumido.

CampoTipoDescrição
tokenstringO token da sessão do usuário recém-emitido
user_idsnowflakeO ID do usuário autenticado
userobjeto usuário parcialA representação pública da conta autenticada
redirect_to1stringO redirecionamento higienizado que estava vinculado ao estado de SSO consumido

1 O valor é a string vazia quando o início de SSO não recebeu nenhum redirect_to ou quando o valor fornecido não sobreviveu à higienização

Objeto de resposta de registro com aprovação pendente

Seção intitulada “Objeto de resposta de registro com aprovação pendente”

O ID de um registro que um administrador ainda precisa aprovar. O registro retorna este objeto quando a conta entra em aprovação.

CampoTipoDescrição
registration_pending_approvalbooleanSempre true
user_idsnowflakeO ID da conta registrada aguardando aprovação

Todo resultado autenticado nesta página incorpora a representação da conta pública. O objeto de usuário parcial no recurso de Usuários o define, juntamente com suas preferências de menção de resposta.

O ticket e a lista de métodos que um cliente precisa para concluir um login com um segundo fator. O login por senha retorna esse objeto quando a conta tem um.

CampoTipoDescrição
mfabooleanSempre true
ticket1stringO ticket consumido por uma conclusão de MFA TOTP ou WebAuthn
allowed_methods2array[string]Os métodos disponíveis para esta conta, retirados de totp e webauthn (máx. 10 itens)
totpbooleanSe a conta possui o tipo de autenticador de senha de uso único baseado em tempo
webauthnbooleanSe pelo menos uma credencial WebAuthn está registrada

1 O ticket é retido por cinco minutos, é destruído após cinco tentativas de código com falha e é consumido pela conclusão que emite a sessão

2 A matriz lista os autenticadores da conta na ordem fixa totp e depois webauthn, e omite qualquer valor que a conta não possui

Ambas as operações de opção WebAuthn retornam um objeto PublicKeyCredential request options que um navegador passa diretamente para sua solicitação de credencial. O objeto de opções de autenticação WebAuthn no recurso de Autenticação multifator define seus campos, juntamente com seu descritor de credencial WebAuthn e os objetos resultados da extensão do cliente WebAuthn.

Um desafio emitido para conclusão de MFA também está vinculado ao seu ticket e à conta, portanto não pode ser repetido em login detectável. A rota MFA lista todas as credenciais registradas para a conta resolvida em allowCredentials. A rota detectável omite o membro, pois a descoberta acontece no autenticador.

Uma solicitação de autenticação WebAuthn tem o resultado da credencial do navegador como response e o desafio original do servidor como challenge. O Decoding Chat aceita campos WebAuthn adicionais. O objeto de asserção WebAuthn no recurso de Autenticação multifator define os campos, juntamente com sua resposta de asserção WebAuthn e os objetos resultados da extensão do cliente WebAuthn.

Uma sessão ativa pertencente à conta autenticada. A listagem é ordenada pela atividade recente aproximada, do mais novo para o mais antigo.

CampoTipoDescrição
id_hash1stringO resumo SHA-256 base64url do token da sessão
client_info?objeto ?informações do clienteOs metadados do cliente analisados, gravados quando a sessão foi criada
masked_ip?stringO endereço IP semirredigido gravado para a sessão
approx_last_used_at??ISO8601 timestampO tempo aproximado da última solicitação que usou esta sessão
current2booleanSe esta sessão forneceu a credencial para a solicitação atual

1 Este resumo é o único identificador de sessão que a API expõe e é o valor exato aceito por encerrar sessões de autenticação

2 Exatamente uma entrada é verdadeira, a sessão cujo token autenticou a solicitação

Um cliente que precisa identificar sua própria sessão lê a entrada cujo current é verdadeiro.

Os metadados do dispositivo analisados registrados para uma sessão ou um handoff pendente.

CampoTipoDescrição
platform??stringA plataforma do cliente gravada, resolvida do User-Agent
os??stringO sistema operacional gravado
browser?1?stringO navegador gravado
devicestringA classe do dispositivo, seja mobile ou desktop
location?objeto ?localização do clienteA geolocalização aproximada derivada do endereço IP gravado

1 Um cliente nativo ou Electron relata nulo, assim como uma sessão criada por uma solicitação não analisável. Um handoff omite o membro inteiramente

Os metadados do dispositivo são inferidos a partir dos cabeçalhos de solicitação do cliente. Trate platform como um rótulo de exibição, não como um identificador de aplicativo estável. A localização é aproximada e pode estar indisponível. Uma sessão então relata um location nulo, enquanto um handoff relata um objeto com membros nulos.

A geolocalização aproximada que o Decoding Chat deriva do endereço IP gravado para uma sessão ou handoff.

CampoTipoDescrição
city??stringA cidade aproximada
region??stringA região aproximada
country??stringO país aproximado

O resultado da verificação de um token de redefinição de senha sem consumi-lo.

CampoTipoDescrição
valid1booleanSe o token é válido e não expirado

1 Um token de redefinição de senha expira uma hora após ser emitido

O estado de um ticket de autorização por IP, conforme observado pelo dispositivo cujo login estava retido.

CampoTipoDescrição
completedbooleanSe o link de autorização foi usado e uma sessão foi emitida
token?1?stringO token da sessão do usuário recém-emitido
user_id?1?snowflakeO ID do usuário autenticado
user?1objeto ?usuário parcialA representação pública da conta autenticada

1 Os campos estão presentes juntos apenas quando completed é verdadeiro, e um ticket ainda pendente retorna completed sozinho

Candidatos a nome de usuário derivados de um nome de exibição.

CampoTipoDescrição
suggestions1array[string]Os candidatos a nome de usuário gerados (máx. 20 itens)

1 A matriz tem no máximo um candidato. Está vazia quando o nome de exibição fornecido não deriva em nenhum nome de usuário permitido

O código que identifica um handoff de desktop pendente.

CampoTipoDescrição
code1stringO código de handoff a apresentar ao dispositivo aprovador
expires_atISO8601 timestampO horário em que o handoff expira, cinco minutos após a criação
poll_secret?stringO segredo que o dispositivo iniciador apresenta para ler o token emitido

1 O código tem 12 caracteres retirados do alfabeto ABCDEFGHJKMNPQRSTUVWXYZ23456789, renderizados como dois grupos de seis separados por um hífen

Os metadados do dispositivo exibidos para o dispositivo aprovador antes de transferir uma sessão.

CampoTipoDescrição
statusstringO estado, seja pending ou expired
client_info?1objeto ?informações do clienteOs metadados do dispositivo iniciador

1 O valor é nulo sempre que o status for expired

O estado de um handoff para desktop conforme observado pelo dispositivo que o iniciou.

CampoTipoDescrição
status1stringO estado, um de pending, expired ou completed
token?2?stringO token da sessão do usuário recém-emitido
user_id?2?snowflakeO ID do usuário autenticado
user?2objeto ?usuário parcialA representação pública da conta autenticada

1 Um código desconhecido e um código expirado ambos relatam expired

2 Os campos estão presentes juntos apenas quando o status é completed

GET/v1/auth/sso/statusUnauthenticated

Lê o estado público do single sign-on da instância. Autenticação não é necessária. Retorna um objeto status de SSO.

A operação permanece disponível enquanto o SSO é imposto. Compartilha o bucket auth:sso:start, que permite 10 solicitações a cada 10 segundos.

StatusCorpoCondição
200objeto status de SSOO estado público do SSO foi lido
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento
POST/v1/auth/sso/startUnauthenticated

Inicia um fluxo de single sign-on. Autenticação não é necessária. Retorna um objeto início de SSO. Envie o usuário para authorization_url inalterado.

CampoTipoDescrição
redirect_to?1?stringO redirecionamento pós-autenticação para vincular ao estado
redirect_uri?2?stringO URI de retorno de chamada do provedor a ser usado em vez do padrão configurado

1 O Decoding Chat higieniza o valor antes de vinculá-lo ao estado e descarta um valor que não sobrevive, o que a resposta de conclusão de SSO relata como a string vazia. A higienização mantém o valor aparado apenas quando ele começa com um único /, tem no máximo 2.048 caracteres e não contém retorno de carro (CR) ou alimentação de linha (LF)

2 Os valores aceitos são o padrão da instância relatado como redirect_uri por obter status de SSO e o retorno de chamada móvel fluxer://auth/sso/callback, e qualquer outro valor retorna o código de campo INVALID_URL_FORMAT. O valor aceito é vinculado ao estado e reutilizado na troca de token

StatusCorpoCondição
200objeto início de SSOO estado foi criado
400resposta de erroO corpo é malformado ou o URI de retorno de chamada não é um valor aceito
403resposta de erroO SSO está desativado ou sua configuração resolvida está incompleta, retornando FEATURE_TEMPORARILY_DISABLED
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O estado retornado pode ser concluído uma vez e expira após dez minutos. O início do fluxo não altera nenhum estado da conta e não emite Dispatch do Gateway.

10 solicitações por 10 segundos, no bucket auth:sso:start.

POST/v1/auth/sso/completeUnauthenticated

Conclui um fluxo de single sign-on e entra ou cria a conta vinculada. Autenticação não é necessária. Retorna uma resposta de conclusão de SSO.

CampoTipoDescrição
codestringO código de autorização retornado pelo provedor (1-4096 caracteres)
state1stringO estado retornado pelo início de SSO (1-4096 caracteres)

1 O estado é consumido na primeira chamada que o resolve, portanto uma solicitação repetida com o mesmo estado retorna o código de campo INVALID_OR_EXPIRED_SSO_STATE

O Decoding Chat recusa a adoção apenas quando a conta já possui um sujeito provedor diferente.

A troca do provedor e a resolução de reivindicações podem retornar os códigos de campo INVALID_SSO_AUTHORIZATION_CODE, INVALID_SSO_TOKEN, FAILED_TO_FETCH_SSO_USER_INFO, FAILED_TO_PARSE_SSO_USER_INFO, SSO_PROVIDER_DID_NOT_RETURN_EMAIL, SSO_IDENTITY_MISMATCH, SSO_MISCONFIGURED, INVALID_EMAIL_ADDRESS, EMAIL_DOMAIN_NOT_ALLOWED_FOR_SSO ou SSO_UNABLE_TO_ALLOCATE_DISCRIMINATOR. Um e-mail de provedor não verificado usa o código de campo INVALID_SSO_TOKEN.

O registro fechado retorna 403 REGISTRATION_CLOSED, uma conta desconhecida em uma instância com o provisionamento automático desativado retorna 403 SSO_REQUIRED, uma conta aguardando aprovação retorna 403 REGISTRATION_PENDING_APPROVAL, e a suspensão da conta retorna 403 ACCOUNT_SUSPENDED_TEMPORARILY ou 403 ACCOUNT_SUSPENDED_PERMANENTLY. Um nome de usuário provisionado ou nome de exibição contendo uma substring bloqueada retorna 403 CONTENT_BLOCKED.

Um e-mail de provedor verificado que adota uma conta de bot retorna 403 BOT_USER_AUTH_SESSION_CREATION_DENIED, e um que adota um registro rejeitado retorna 403 REGISTRATION_REJECTED.

StatusCorpoCondição
200resposta de conclusão de SSOSSO concluído e uma sessão foi emitida
400resposta de erroO corpo, o estado, a troca do provedor, as reivindicações ou o e-mail resolvido é inválido
403resposta de erroSSO, política de registro, uma conta de bot ou suspensão de conta rejeita a conclusão
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroA troca do provedor de identidade não pôde ser concluída
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Uma conclusão com falha requer um novo fluxo de SSO. Uma conta recém-criada tem um e-mail verificado, sem senha local ou autenticador, e configurações padrão. O registro via SSO não aceita convites e não entra em nenhuma guilda.

O registro em modo de aprovação, em vez disso, retorna 403 REGISTRATION_PENDING_APPROVAL e não cria nenhuma sessão. Caso contrário, a operação cria uma sessão de autenticação e limpa uma suspensão temporária expirada.

15 solicitações por 10 segundos, no bucket auth:sso:complete.

POST/v1/auth/registerUnauthenticated

Cria uma conta comum. Retorna uma resposta de token de autenticação quando a instância admite a conta imediatamente e uma resposta de registro com aprovação pendente quando não o faz. Emite um evento de Gateway Guild Member Add para cada guilda em que a nova conta entra por meio de um convite ou por meio da única guilda de comunidade da instância.

O registro verifica o CAPTCHA quando o CAPTCHA está ativado. Ele permite 3 tentativas por hora para cada endereço IP de cliente e 15 por hora para cada sub-rede de cliente, que é a rede IPv4 /24 ou IPv6 /48. Um endereço de e-mail fornecido permite 3 tentativas a cada 15 minutos por conta própria. Essas permissões são separadas do bucket da rota, e apenas uma implantação com dev.relax_registration_rate_limits definido como verdadeiro as desativa.

CampoTipoDescrição
X-Captcha-Token?1stringA prova emitida pelo provedor de CAPTCHA
X-Captcha-Type?2stringO provedor que emitiu a prova, seja hcaptcha ou turnstile
Accept-Language?3stringA etiqueta de idioma que seleciona o local armazenado na nova conta

1 Uma prova ausente retorna 400 CAPTCHA_REQUIRED e uma prova rejeitada retorna 400 INVALID_CAPTCHA, e a verificação é ignorada inteiramente quando o CAPTCHA está desativado para a instância

2 Omitir o cabeçalho seleciona o provedor configurado da instância

3 O local analisado se torna o local da conta e seleciona o idioma do e-mail de verificação

CampoTipoDescrição
email?1stringO endereço de e-mail da conta
username?2stringO nome de usuário da conta (1-32 caracteres, letras, dígitos e sublinhados)
global_name?stringO nome de exibição após a normalização (1-32 caracteres)
password?3stringA senha da conta (8-256 caracteres)
date_of_birth?4stringA data de nascimento na forma exata YYYY-MM-DD
consent?5booleanSe os termos de serviço e a política de privacidade são aceitos (padrão falso)
invite_code??stringO convite aceito imediatamente após o registro (0-256 caracteres)
registration_url_code?6?stringO código de URL de registro emitido pelo administrador (1-256 caracteres)
theme?stringA preferência de tema inicial, um de dark, dark_legacy, coal, light ou system

1 Omitir o endereço de e-mail cria uma conta não reivindicada, que não tem caminho de recuperação até ser reivindicada. Um endereço cujo domínio não tem registros DNS utilizáveis, ou cujo domínio de nível superior é bloqueado pela política da conta, retorna o código de campo INVALID_EMAIL_ADDRESS, e um endereço já em uso retorna EMAIL_ALREADY_IN_USE

2 Omitir o nome de usuário deriva um de global_name quando esse valor produz um nome de usuário permitido e, caso contrário, aloca um nome de usuário gerado, em ambos os casos com um discriminador alocado pelo servidor

3 A senha é verificada em relação ao corpus público de senhas vazadas descrito em redefinir uma senha, e uma correspondência retorna o código de campo PASSWORD_IS_TOO_COMMON

4 O campo é obrigatório quando a instância coleta data de nascimento. Um valor ausente ou em branco, ou um valor no formato YYYY-MM-DD que não seja uma data de calendário real, retorna o código de campo INVALID_DATE_OF_BIRTH_FORMAT. Um valor que não tem dez caracteres no formato YYYY-MM-DD falha na validação do esquema com o código de campo STRING_LENGTH_EXACT ou INVALID_FORMAT

5 Um valor falso ou ausente retorna o código de campo MUST_AGREE_TO_TOS_AND_PRIVACY_POLICY na instância oficial e em qualquer instância que publique um documento de termos ou privacidade

6 Um código fornecido em uma instância com URLs de registro de administrador desativadas e um código que não é resolvido, ambos retornam 400 REGISTRATION_URL_INVALID. Um código válido substitui o modo de registro fechado e substitui o modo de aprovação da instância por sua própria configuração de aprovação

O Decoding Chat resolve a região a partir do endereço IP do cliente, e uma idade abaixo do mínimo para essa região retorna o código de campo MUST_BE_MINIMUM_AGE. Esse mínimo é de 13 anos, a menos que a política da conta defina um mínimo diferente para a região, e o mínimo aplicado aparece apenas na mensagem localizada.

O registro retorna 403 REGISTRATION_CLOSED quando a instância é fechada e nenhuma URL de registro válida foi fornecida. Um nome de usuário cujo espaço discriminador está esgotado retorna o código de campo TOO_MANY_USERS_WITH_THIS_USERNAME. Um nome de usuário ou nome de exibição contendo uma substring bloqueada retorna 403 CONTENT_BLOCKED.

StatusCorpoCondição
200resposta de token de autenticação | resposta de registro com aprovação pendenteO registro foi concluído ou entrou no estado de aprovação
400resposta de erroO corpo, CAPTCHA, campos da conta ou código da URL de registro é inválido
403resposta de erroA imposição de SSO, a política de registro ou a moderação de conteúdo rejeita o registro
429resposta de limite de taxaUm bucket de rota, global, e-mail, IP ou sub-rede nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A operação aplica as políticas de registro, domínio de e-mail, senha vazada e região da instância antes de criar a conta, e sua política de risco pode definir sinalizadores de atividade suspeita na conta criada. Ele registra os termos aceitos e a política de privacidade, autoriza o endereço IP do cliente de registro e envia uma mensagem de verificação de e-mail quando a instância envia e-mail. Uma instância que não envia e-mail marca o endereço verificado na criação.

O registro aceita o invite_code do corpo, ou o convite de auto-join configurado da instância quando o corpo não tem nenhum. Em uma instância com o modo de comunidade única habilitado, a conta também entra na guilda da comunidade. Cada entrada emite Guild Member Add para as sessões da guilda afetada. A política de registro pode suprimir a admissão do convite.

O registro em modo de aprovação não cria participação na guilda nem sessão de autenticação, e a conta não pode fazer login até que um administrador a aprove. Qualquer outro registro bem-sucedido cria uma sessão e retorna seu token.

10 solicitações por 10 segundos, no bucket auth:register.

POST/v1/auth/loginUnauthenticated

Valida e-mail local e credenciais de senha. Autenticação não é necessária. Retorna uma resposta de token de autenticação quando não há segundo fator nem aprovação de IP pendente e uma resposta de desafio MFA quando a conta possui um segundo fator.

O login verifica o CAPTCHA quando o CAPTCHA está ativado. Também permite 10 tentativas por endereço IP do cliente em 30 minutos, chaveadas pelo endereço IPv4 exato ou pela rede IPv6 /64, e 5 tentativas por endereço de e-mail em 15 minutos. Toda tentativa admitida consome ambas as permissões, independentemente de as credenciais se revelarem corretas, e um login bem-sucedido não limpa nenhuma.

CampoTipoDescrição
X-Captcha-Token?1stringA prova emitida pelo provedor de CAPTCHA
X-Captcha-Type?2stringO provedor que emitiu a prova, seja hcaptcha ou turnstile
X-Fluxer-Client-Properties?3stringO JSON codificado em base64 com o os do cliente que está relatando
User-Agent?3stringA string do cliente gravada na sessão criada e mostrada por listar sessões de autenticação

1 Uma prova ausente retorna 400 CAPTCHA_REQUIRED e uma prova rejeitada retorna 400 INVALID_CAPTCHA, e a verificação é ignorada inteiramente quando o CAPTCHA está desativado para a instância

2 Omitir o cabeçalho seleciona o provedor configurado da instância

3 Ambos os valores alimentam o objeto informações do cliente registrado na sessão, e X-Fluxer-Client-Properties é lido apenas para um User-Agent nativo do Decoding Chat

CampoTipoDescrição
emailstringO endereço de e-mail da conta
passwordstringA senha da conta (8-256 caracteres)
invite_code?1?stringO convite aceito imediatamente após um login bem-sucedido (0-256 caracteres)

1 O convite é aceito apenas em um login que é concluído sem um segundo fator, e a falha em aceitá-lo não falha no login. Um login retido para autorização de IP descarta o convite

Um novo endereço IP do cliente em uma conta que não possui nem um segundo fator nem o sinalizador de revisor da app store retorna 403 IP_AUTHORIZATION_REQUIRED. O corpo desse erro tem ip_authorization_required definido como verdadeiro, o ticket usado pelas operações de autorização de IP, o email da conta e resend_available_in definido para 30 segundos.

Quando a instância desativou a autorização de novo IP ou não envia e-mail, o Decoding Chat autoriza o endereço IP do cliente silenciosamente e o login continua. Uma conta que já possui um segundo fator nunca entra na autorização de IP.

A política da conta pode retornar 403 REGISTRATION_PENDING_APPROVAL, 403 REGISTRATION_REJECTED, 403 ACCOUNT_SUSPENDED_TEMPORARILY ou 403 ACCOUNT_SUSPENDED_PERMANENTLY. Uma conta de bot retorna 403 BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED.

Uma senha correta também limpa uma suspensão temporária expirada antes de qualquer segundo fator ser solicitado. Uma suspensão de administrador temporária ou permanente ativa permanece em vigor, e o login retorna seu 403.

StatusCorpoCondição
200resposta de token de autenticação | resposta de desafio MFAAs credenciais são aceitas
400resposta de erroO corpo, CAPTCHA, e-mail ou senha é inválido
403resposta de erroA política de conta, a imposição de SSO ou a autorização de IP impedem o login
409resposta de erroCONFLICT, porque o estado de exclusão foi alterado ao cancelar uma exclusão auto-agendada
429resposta de limite de taxaUm bucket de rota, global, e-mail ou IP nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Um login bem-sucedido em uma conta com um segundo fator retorna um ticket MFA válido por cinco minutos e não emite sessão. Quando a aprovação de IP é necessária, o ticket de autorização permanece válido por 15 minutos e a conta recebe uma mensagem de autorização.

Um login bem-sucedido sem aprovação de MFA ou IP pendente cria uma sessão de autenticação. Ele aceita o convite fornecido primeiro, o que emite Guild Member Add para as sessões da guilda.

10 solicitações por 10 segundos, no bucket auth:login.

POST/v1/auth/login/mfa/totpUnauthenticated

Consome um ticket MFA e valida uma senha de uso único baseada em tempo ou um código de backup não consumido e cria a sessão. Autenticação não é necessária. Retorna uma resposta de token de autenticação.

A verificação MFA também permite 10 tentativas com falha por conta em 15 minutos e destrói o ticket após 5 tentativas com falha.

CampoTipoDescrição
code1stringO código do autenticador ou um código de backup não consumido
ticketstringO ticket retornado pelo login com senha

1 Um código autenticador validado é reivindicado por 30 segundos, portanto, o mesmo código não pode ser apresentado duas vezes. Um código de backup é consumido permanentemente na tentativa que o aceita

Um ticket expirado ou desconhecido retorna o código de campo SESSION_TIMEOUT em ticket. Uma conta sem inscrição TOTP retorna o código de campo TOTP_NOT_ENABLED em code. Tanto um código incorreto quanto qualquer código apresentado após a permissão de tentativa por conta ou por ticket estar esgotada retornam o código de campo INVALID_CODE em code. Um ticket que é resolvido para uma conta de bot retorna 403 BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED.

StatusCorpoCondição
200resposta de token de autenticaçãoO ticket e o código são aceitos
400resposta de erroO corpo, ticket ou código é inválido
403resposta de erroA imposição de SSO rejeita a operação ou o ticket se resolve em uma conta de bot
404resposta de erroO ticket se resolve para uma conta que não existe mais
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O sucesso consome o ticket, limpa os contadores de tentativa com falha por conta e por ticket e cria uma sessão de autenticação. Uma falha consome uma tentativa de cada contador. Nenhum Dispatch do Gateway é emitido.

5 solicitações por minuto, no bucket compartilhado auth:login:mfa.

POST/v1/auth/login/mfa/webauthn/authentication-optionsUnauthenticated

Resolve a conta a partir de um ticket MFA e cria um desafio restrito às credenciais registradas daquela conta. Autenticação não é necessária. Retorna um objeto opções de autenticação WebAuthn.

CampoTipoDescrição
ticket1stringO ticket retornado pelo login com senha (1-256 caracteres)

1 O ticket é lido, mas não consumido

Um cliente DEVE ainda concluir o desafio retornado através de concluir o login com WebAuthn MFA antes que o ticket expire. Um ticket expirado ou desconhecido retorna o código de campo SESSION_TIMEOUT em ticket. Uma conta sem nenhuma credencial registrada retorna 400 NO_PASSKEYS_REGISTERED.

StatusCorpoCondição
200objeto opções de autenticação WebAuthnO ticket se resolve em uma conta com pelo menos uma credencial
400resposta de erroO corpo ou ticket é inválido, ou a conta não possui credencial registrada
403resposta de erroA imposição de SSO rejeita a operação
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A operação emite um desafio WebAuthn de uso único válido por cinco minutos e vinculado a esse fluxo MFA, conta e ticket. Ela não altera o estado da conta. Nenhum Dispatch do Gateway é emitido.

5 solicitações por minuto, no bucket compartilhado auth:login:mfa.

POST/v1/auth/login/mfa/webauthnUnauthenticated

Consome o ticket MFA, verifica a asserção WebAuthn contra o desafio e cria a sessão. Autenticação não é necessária. Retorna uma resposta de token de autenticação.

CampoTipoDescrição
responseobjeto asserção WebAuthnA asserção da credencial do navegador
challenge1stringO desafio retornado por obter opções MFA do WebAuthn
ticketstringO ticket retornado pelo login com senha

1 O desafio é consumido antes da verificação e é aceito apenas quando seu contexto vinculado, conta e ticket correspondem todos a esta solicitação

Um ticket expirado ou desconhecido retorna o código de campo SESSION_TIMEOUT em ticket. Uma incompatibilidade de desafio, uma credencial desconhecida, uma chave pública armazenada que não pode ser decodificada, um contador de assinaturas que o autenticador não avançou e uma falha na verificação de assinatura retornam 401 PASSKEY_AUTHENTICATION_FAILED. Uma asserção verificada cujo contador de assinaturas reportado não pode ser lido retorna 500 INVALID_WEBAUTHN_AUTHENTICATION_COUNTER.

Esta operação compartilha as permissões de tentativa MFA de concluir o login com TOTP. Ele permite 10 tentativas com falha por conta em 15 minutos e destrói o ticket após 5 tentativas com falha. Uma permissão esgotada retorna o código de campo INVALID_CODE em ticket.

StatusCorpoCondição
200resposta de token de autenticaçãoO ticket e a asserção são aceitos
400resposta de erroO corpo ou ticket é inválido
401resposta de erroFalha na verificação do desafio ou da asserção
403resposta de erroA imposição de SSO rejeita a operação ou o ticket resolve para uma conta de bot
404resposta de erroO ticket se resolve para uma conta que não existe mais
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroA asserção verificada não relatou nenhum contador de assinaturas legível, ou a solicitação não pôde ser concluída
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O sucesso consome o desafio e o ticket e cria uma sessão de autenticação. Nenhum Dispatch do Gateway é emitido.

5 solicitações por minuto, no bucket compartilhado auth:login:mfa.

POST/v1/auth/webauthn/authentication-optionsUnauthenticated

Cria um desafio para login detectável. Autenticação não é necessária. Retorna um objeto opções de autenticação WebAuthn.

A solicitação não tem corpo e não usa parâmetros. Ele não restringe as credenciais em allowCredentials porque a seleção ocorre no autenticador.

StatusCorpoCondição
200objeto opções de autenticação WebAuthnO desafio detectável foi emitido
403resposta de erroA imposição de SSO rejeita a operação
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A operação emite um desafio WebAuthn detectável de uso único válido por cinco minutos e vinculado apenas ao contexto detectável. Ela não altera o estado da conta. Nenhum Dispatch do Gateway é emitido.

20 solicitações por 10 segundos, no bucket auth:webauthn:options.

POST/v1/auth/webauthn/authenticateUnauthenticated

Resolve a conta a partir do ID da credencial apresentado, verifica a asserção com verificação de usuário necessária, aplica a política de suspensão de conta e cria a sessão. Autenticação não é necessária. Retorna uma resposta de token de autenticação.

CampoTipoDescrição
responseobjeto asserção WebAuthnA asserção da credencial do navegador
challenge1stringO desafio retornado por obter opções WebAuthn detectáveis

1 O desafio é consumido antes da verificação e é aceito apenas quando foi emitido para o contexto detectável; portanto, um desafio emitido para MFA ou para modo sudo não pode ser usado aqui

Um ID de credencial desconhecido, uma incompatibilidade de desafio, uma chave pública armazenada que não pode ser decodificada, um contador de assinaturas que o autenticador não avançou e uma falha na verificação de assinatura retornam 401 PASSKEY_AUTHENTICATION_FAILED. Uma asserção verificada cujo contador de assinaturas reportado não pode ser lido retorna 500 INVALID_WEBAUTHN_AUTHENTICATION_COUNTER. A suspensão da conta retorna 403 ACCOUNT_SUSPENDED_TEMPORARILY ou 403 ACCOUNT_SUSPENDED_PERMANENTLY.

Uma conta de bot retorna 403 BOT_USER_AUTH_SESSION_CREATION_DENIED. Uma conta que não foi admitida retorna 403 REGISTRATION_PENDING_APPROVAL ou 403 REGISTRATION_REJECTED.

StatusCorpoCondição
200resposta de token de autenticaçãoA asserção e a política da conta são aceitas
400resposta de erroO corpo é malformado
401resposta de erroFalha na verificação do desafio ou da asserção
403resposta de erroA imposição de SSO, a suspensão da conta, uma conta de bot ou um registro não admitido rejeita o login
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroA asserção verificada não relatou nenhum contador de assinaturas legível, ou a solicitação não pôde ser concluída
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O sucesso consome o desafio, limpa uma suspensão temporária expirada e cria uma sessão de autenticação. Nenhum Dispatch do Gateway é emitido.

10 solicitações por 10 segundos, no bucket auth:webauthn:authenticate.

POST/v1/auth/logoutBot

Revoga a sessão identificada pelo token da sessão do usuário no cabeçalho Authorization. Retorna 204 sem nenhum corpo.

A solicitação não tem corpo. A operação requer uma credencial que resolva para uma conta e admite uma sinalizada por atividade suspeita. Um token ausente, malformado ou desconhecido retorna 401 UNAUTHORIZED. Um token bearer OAuth2 retorna 403 ACCESS_DENIED. Um bot não possui sessão, então um token de bot é aceito e não revoga nada.

StatusCorpoCondição
204vazioA sessão foi revogada, ou a credencial é um token de bot
401resposta de erroO token está ausente, malformado ou não nomeia nenhuma sessão ativa
403resposta de erroA credencial é um token bearer OAuth2
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroA revogação da sessão falha inesperadamente
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A revogação desta sessão encerra sua sessão do Gateway, conforme afirma o comportamento compartilhado. Nenhum Dispatch do Gateway é emitido para a revogação.

20 solicitações por 10 segundos, no bucket auth:logout.

POST/v1/auth/verifyUnauthenticated

Consome um token de verificação de e-mail e marca o endereço atual da conta como verificado. Autenticação não é necessária. Retorna 204 sem nenhum corpo.

CampoTipoDescrição
tokenstringO token entregue por e-mail, exatamente 64 caracteres

Um token desconhecido, já consumido ou de conta excluída retorna o código de campo INVALID_OR_EXPIRED_VERIFICATION_TOKEN.

StatusCorpoCondição
204vazioO endereço foi verificado
400resposta de erroO corpo ou token é inválido
403resposta de erroA imposição de SSO rejeita a operação, ou o token resolve para uma conta de bot
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A operação marca o endereço atual como verificado, limpa seu estado devolvido e limpa todo sinalizador de atividade suspeita que a verificação ou reverificação de um endereço de e-mail satisfaça. Emite um Gateway Dispatch de User Update para as próprias sessões da conta.

10 solicitações por minuto, no bucket auth:verify.

POST/v1/auth/verify/resend

Emite e envia um novo token de verificação de e-mail para a conta autenticada. Requer um token de sessão de usuário para um usuário comum. Retorna 204 sem nenhum corpo.

A solicitação não tem corpo. Quando o endereço atual já está verificado e nenhum sinalizador de atividade suspeita de reverificação está definido, a operação retorna 204 e não envia nada.

StatusCorpoCondição
204vazioUma mensagem foi enviada ou a verificação já foi concluída
401resposta de erroA credencial de sessão do usuário está ausente ou é inválida
403resposta de erroA imposição de SSO rejeita a operação, ou a credencial é um token de bot ou um token bearer OAuth2
429resposta de limite de taxaUma rota, bucket global ou por endereço nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A operação cria um token de verificação de 64 caracteres vinculado à conta e ao seu endereço atual, válido por 24 horas, e envia a mensagem de verificação. Tokens de verificação emitidos anteriormente permanecem válidos. Nenhum Dispatch do Gateway é emitido.

10 solicitações por minuto, no bucket auth:verify:resend, e o endereço de destino permite 3 mensagens a cada 15 minutos.

POST/v1/auth/forgotUnauthenticated

Aceita uma solicitação de recuperação de senha para um endereço de e-mail. Autenticação não é necessária. Retorna 204 sem nenhum corpo.

A recuperação de senha verifica o CAPTCHA quando o CAPTCHA está ativado. O Decoding Chat consome o endereço IP do cliente e as permissões de endereço de e-mail antes de validar o endereço, e esgotar qualquer um dos dois retorna 429.

CampoTipoDescrição
X-Captcha-Token?1stringA prova emitida pelo provedor de CAPTCHA
X-Captcha-Type?2stringO provedor que emitiu a prova, seja hcaptcha ou turnstile

1 Uma prova ausente retorna 400 CAPTCHA_REQUIRED e uma prova rejeitada retorna 400 INVALID_CAPTCHA, e a verificação é ignorada inteiramente quando o CAPTCHA está desativado para a instância

2 Omitir o cabeçalho seleciona o provedor configurado da instância

CampoTipoDescrição
email1stringO endereço que recebe o link de redefinição

1 Um endereço cujo domínio não tem registros DNS utilizáveis retorna o código de campo INVALID_EMAIL_ADDRESS, enquanto um endereço que passa na validação DNS, mas não pertence a nenhuma conta, retorna a resposta de sucesso comum

StatusCorpoCondição
204vazioA solicitação foi aceita, independentemente de a conta existir ou não
400resposta de erroO corpo, CAPTCHA ou endereço de e-mail é inválido
403resposta de erroA imposição de SSO rejeita a operação, ou o endereço pertence a uma conta de bot
429resposta de limite de taxaUma rota, bucket global, e-mail ou IP de cliente nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O Decoding Chat envia um token de redefinição de 64 caracteres por e-mail para um endereço que se resolve para uma conta. O token está vinculado a essa conta e ao seu endereço atual e é válido por uma hora. Nada mais muda. Nenhum Dispatch do Gateway é emitido.

5 solicitações por minuto, no bucket auth:forgot, e a recuperação permite 20 tentativas por endereço IP de cliente e 5 tentativas por endereço de e-mail em cada janela de 30 minutos.

GET/v1/auth/reset/{token}Unauthenticated

Verifica um token de redefinição sem consumi-lo. Autenticação não é necessária. Retorna um objeto validade de redefinição de senha.

CampoTipoDescrição
tokenstringO token de redefinição de senha, exatamente 64 caracteres

Um token bem formado que é desconhecido, já consumido ou vinculado a uma conta excluída retorna o mesmo objeto com valid definido como falso.

StatusCorpoCondição
200objeto validade de redefinição de senhaO token bem formado foi verificado
400resposta de erroO parâmetro do caminho do token falha na validação
403resposta de erroA imposição de SSO rejeita a operação
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Esta leitura não consome o token nem altera o estado da conta. Nenhum Dispatch do Gateway é emitido.

20 solicitações por minuto, no bucket auth:reset:validate.

POST/v1/auth/resetUnauthenticated

Consome um token de redefinição válido e substitui a senha da conta, depois emite uma nova sessão ou um desafio MFA. Autenticação não é necessária. Retorna uma resposta de token de autenticação quando a conta não possui um segundo fator, e uma resposta de desafio MFA quando possui.

CampoTipoDescrição
tokenstringO token de redefinição de senha, exatamente 64 caracteres
password1stringA senha substituta (8-256 caracteres)

1 A senha é verificada no corpus público de senhas vazadas antes do token ser gasto, e uma correspondência retorna o código de campo PASSWORD_IS_TOO_COMMON

Um token desconhecido ou já consumido e um token vinculado a uma conta excluída retornam o código de campo INVALID_OR_EXPIRED_RESET_TOKEN. Uma suspensão temporária ativa retorna 403 ACCOUNT_SUSPENDED_TEMPORARILY. Uma suspensão permanente retorna o código de campo INVALID_OR_EXPIRED_RESET_TOKEN e nunca 403 ACCOUNT_SUSPENDED_PERMANENTLY. Uma conta de bot retorna 403 BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED.

As senhas são verificadas em relação a um corpus de senhas vazadas, como ocorre durante o registro e a reversão de e-mail.

StatusCorpoCondição
200resposta de token de autenticação | resposta de desafio MFAA senha foi substituída
400resposta de erroO corpo, token ou senha de substituição é inválido
403resposta de erroA imposição de SSO, uma conta de bot ou uma suspensão temporária ativa rejeita a mutação
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A operação substitui a senha, registra a hora da mudança, limpa uma suspensão temporária expirada, encerra todas as sessões de autenticação na conta e consome o token de redefinição apresentado. Cada sessão encerrada perde sua sessão do Gateway, conforme afirma o comportamento compartilhado. Outros tokens de redefinição pendentes não são invalidados, portanto, um segundo link de recuperação emitido anteriormente ainda funciona.

Uma conta sem um segundo fator recebe, então, uma nova sessão e seu token. Uma conta com um segundo fator recebe, em vez disso, um ticket MFA de cinco minutos, e a conclusão do MFA cria a sessão.

10 solicitações por minuto, no bucket auth:reset.

POST/v1/auth/email-revertUnauthenticated

Consome o token entregue no endereço de e-mail anterior, restaura esse endereço, substitui a senha, encerra todas as sessões de autenticação e limpa todos os segundos fatores. O endereço IP que fez a solicitação se torna o único endereço IP autorizado. Retorna uma resposta de token de autenticação. Emite um evento de Gateway User Update.

O token é válido por 24 horas após a alteração de endereço que o emitiu.

CampoTipoDescrição
tokenstringO token de reversão de e-mail, exatamente 64 caracteres
password1stringA senha substituta (8-256 caracteres)

1 O valor torna-se a nova senha da conta, e o Decoding Chat o verifica contra o corpus público de senhas vazadas, retornando o código de campo PASSWORD_IS_TOO_COMMON em caso de correspondência

Um token desconhecido ou já consumido, e um token vinculado a uma conta que não existe mais, retornam o código de campo INVALID_OR_EXPIRED_REVERT_TOKEN. A suspensão da conta retorna 403 ACCOUNT_SUSPENDED_TEMPORARILY ou 403 ACCOUNT_SUSPENDED_PERMANENTLY, e uma conta de bot retorna 403 BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED.

O Decoding Chat verifica a senha de substituição no mesmo corpus de senhas vazadas descrito em redefinir uma senha antes de gastar o token.

StatusCorpoCondição
200resposta de token de autenticaçãoO endereço e a recuperação de credenciais foram concluídos
400resposta de erroO corpo, o token ou a senha de substituição é inválido
403resposta de erroA imposição de SSO, uma conta de bot ou suspensão de conta rejeita a mutação
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O endereço de e-mail anterior se torna verificado e a senha de substituição se torna a senha da conta. Todas as outras sessões, segundos fatores e endereços IP autorizados são removidos. Apenas o endereço IP da solicitação permanece autorizado.

A conta recebe User Update. As sessões de Gateway existentes terminam conforme descrito em comportamento compartilhado, e a resposta retorna uma nova sessão de autenticação.

10 solicitações por minuto, no bucket auth:email_revert.

GET/v1/auth/sessions

Lista cada sessão de autenticação ativa pertencente à conta autenticada, com as atividades mais recentes primeiro. Requer um token de sessão de usuário para um usuário comum. Retorna uma matriz de objetos sessão de autenticação.

A solicitação não tem corpo e não requer parâmetros.

StatusCorpoCondição
200array[objeto sessão de autenticação]As sessões ativas foram lidas
401resposta de erroA credencial de sessão do usuário está ausente ou é inválida
403resposta de erroA credencial é um token de bot ou um token bearer OAuth2
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Esta leitura não altera o estado da sessão. Nenhum Dispatch do Gateway é emitido.

40 solicitações por 10 segundos, no bucket auth:sessions.

POST/v1/auth/sessions/logoutMFA

Exclui as sessões de autenticação nomeadas. Requer um token de sessão de usuário para um usuário comum e modo sudo. Retorna 204 sem nenhum corpo.

O chamador DEVE enviar um token sudo válido no cabeçalho X-Fluxer-Sudo-Mode-JWT, ou fornecer uma senha ou prova MFA no corpo.

CampoTipoDescrição
session_id_hashes1array[string]Os resumos de sessão a serem excluídos (máx. 100 entradas)
password?2stringA prova de senha para uma conta sem um segundo fator (8-256 caracteres)
mfa_method?3stringO método de prova, seja totp ou webauthn
mfa_code?stringO código do autenticador ou um código de backup não consumido quando o método é totp (1-32 caracteres)
webauthn_response?objeto asserção WebAuthnA asserção quando o método é webauthn
webauthn_challenge?stringO desafio vinculado à asserção do modo sudo

1 Cada valor é a string base64url id_hash de listar sessões de autenticação. O Decoding Chat ignora um identificador desconhecido, e uma matriz vazia não exclui nada e ainda retorna 204

2 A senha é aceita apenas quando a conta não possui um segundo fator, e um valor que não corresponda retorna o código de campo INVALID_PASSWORD

3 A prova MFA é aceita apenas quando a conta possui um segundo fator. Qualquer falha retorna o código de campo INVALID_MFA_CODE em mfa_code, e uma prova bem-sucedida emite um novo token sudo

Um método totp lê mfa_code como um código de autenticador e aceita um código de backup não consumido em seu lugar. Um método webauthn lê webauthn_response e webauthn_challenge juntos e aceita apenas um desafio que foi emitido para o contexto sudo.

Uma prova ausente ou inutilizável retorna 403 SUDO_MODE_REQUIRED, cujo corpo de erro tem membros de nível superior has_mfa e methods, e methods informa se totp e webauthn estão disponíveis.

StatusCorpoCondição
204vazioToda sessão nomeada estava ausente ou foi excluída
400resposta de erroO corpo ou a prova fornecida é inválida
401resposta de erroA credencial de sessão do usuário está ausente ou é inválida
403resposta de erroA credencial é um token de bot ou um token bearer OAuth2, ou é necessário o modo sudo
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Cada sessão nomeada é excluída e perde sua sessão do Gateway, conforme afirma o comportamento compartilhado. Uma nova prova MFA emite um novo token sudo, enquanto um token de entrada aceito é ecoado inalterado. O Decoding Chat define qualquer token que resulte no cabeçalho de resposta X-Fluxer-Sudo-Mode-JWT. Uma prova de senha em uma conta sem segundo fator não emite token, então o cabeçalho não é definido a menos que a solicitação já tivesse um. Nenhum Dispatch do Gateway é emitido.

20 solicitações por 10 segundos, no bucket auth:sessions:logout.

POST/v1/auth/authorize-ipUnauthenticated

Consome o token de autorização entregue por e-mail, autoriza o endereço IP do cliente pendente e conclui o login que aguardava. Autenticação não é necessária. Retorna 204 sem nenhum corpo.

CampoTipoDescrição
tokenstringO token de autorização entregue por e-mail

Um token desconhecido, expirado, já consumido ou que não corresponda à conta retorna o código de campo INVALID_OR_EXPIRED_AUTHORIZATION_TOKEN. Um token que se resolve para uma conta que não existe mais retorna 404 UNKNOWN_USER, e aquele que se resolve para uma conta de bot retorna 403 BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED. A criação da sessão também rejeita uma conta que não foi admitida ou está suspensa, com os códigos listados em fazer login com uma senha.

StatusCorpoCondição
204vazioO endereço IP foi autorizado e o novo token de sessão é legível por meio da pesquisa de autorização de IP
400resposta de erroO corpo ou token de autorização é inválido
403resposta de erroA imposição de SSO rejeita a operação ou o token resolve para uma conta de bot
404resposta de erroO token se resolve para uma conta que não existe mais
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A operação adiciona o endereço IP do cliente pendente ao conjunto autorizado da conta e cria uma sessão de autenticação. Essa sessão assume o endereço IP, o user agent e o sistema operacional reportado capturados quando o login foi tentado. Consome o token de autorização e o ticket do login pendente.

O token de sessão é então publicado em relação ao ticket e permanece legível por pesquisa de autorização de IP durante 60 segundos. O chamador desta operação recebe 204 e nenhum token próprio. Nenhum Dispatch do Gateway é emitido.

5 solicitações por minuto, no bucket auth:authorize_ip.

POST/v1/auth/ip-authorization/resendUnauthenticated

Envia novamente a mensagem de autorização para um ticket de autorização IP pendente. Autenticação não é necessária. Retorna 204 sem nenhum corpo.

CampoTipoDescrição
ticket1stringO ticket retornado pelo erro de login IP_AUTHORIZATION_REQUIRED

1 O reenvio reutiliza o token de autorização já vinculado ao ticket, para que uma mensagem entregue por um envio anterior permaneça válida

Um ticket desconhecido ou expirado retorna o código de campo INVALID_OR_EXPIRED_AUTHORIZATION_TICKET. Um reenvio em menos de 30 segundos após a emissão do ticket retorna 429 IP_AUTHORIZATION_RESEND_COOLDOWN com um cabeçalho Retry-After e um resend_available_in de nível superior em segundos. Um segundo reenvio retorna 400 IP_AUTHORIZATION_RESEND_LIMIT_EXCEEDED.

StatusCorpoCondição
204vazioA mensagem foi enviada novamente
400resposta de erroO corpo ou o ticket é inválido, ou o único reenvio do ticket já foi usado
403resposta de erroA imposição de SSO rejeita a operação
429resposta de limite de taxaUm bucket de rota ou global nega a solicitação, ou o atraso de reenvio não passou
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O Decoding Chat envia a mensagem de autorização ao endereço associado à tentativa de login e marca o único reenvio do ticket usado independentemente de a entrega ser bem-sucedida. Nenhum estado da conta muda. Nenhum Dispatch do Gateway é emitido.

5 solicitações por minuto, no bucket auth:ip_authorization_resend, e cada ticket permite exatamente um reenvio, não antes de 30 segundos após a emissão do ticket.

GET/v1/auth/ip-authorization/pollUnauthenticated

Lê o resultado do login associado a um ticket de autorização de IP. Autenticação não é necessária. Retorna um objeto pesquisa de autorização por IP.

CampoTipoDescrição
ticketstringO ticket retornado pelo erro de login IP_AUTHORIZATION_REQUIRED

Um ticket desconhecido ou expirado retorna o código de campo INVALID_OR_EXPIRED_AUTHORIZATION_TICKET, que também é o resultado assim que a retenção do resultado de 60 segundos tiver passado.

StatusCorpoCondição
200objeto pesquisa de autorização por IPO ticket foi lido
400resposta de erroA consulta é malformada ou o ticket é desconhecido ou expirado
403resposta de erroA imposição de SSO rejeita a operação
404resposta de erroO resultado concluído nomeia uma conta que não existe mais, retornando UNKNOWN_USER
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

60 solicitações por minuto, no bucket auth:ip_authorization_poll.

POST/v1/auth/username-suggestionsUnauthenticated

Deriva candidatos a nome de usuário de um nome de exibição. Autenticação não é necessária. Retorna um objeto de sugestões de nome de usuário.

A rota compartilha o bucket auth:register, que permite 10 solicitações a cada 10 segundos.

CampoTipoDescrição
global_namestringO nome de exibição após a normalização (1-32 caracteres)
StatusCorpoCondição
200objeto sugestões de nome de usuárioOs candidatos foram gerados
400resposta de erroO corpo ou o nome de exibição é inválido
403resposta de erroA imposição de SSO rejeita a operação
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Esta leitura não reserva nenhum nome de usuário e não altera nenhum estado da conta. Nenhum Dispatch do Gateway é emitido.

POST/v1/auth/handoff/initiateUnauthenticated

Cria um handoff pendente e retorna o código que o dispositivo iniciador mostra a um dispositivo já conectado. Autenticação não é necessária. Retorna um objeto iniciação de handoff.

A solicitação não tem corpo. O Decoding Chat deriva os metadados do dispositivo exibidos para o dispositivo aprovador a partir da própria solicitação.

CampoTipoDescrição
User-Agent?stringA string de cliente apresentada ao dispositivo aprovador e gravada na sessão que o handoff cria
X-Fluxer-Client-Properties?stringO JSON codificado em base64 com o os do cliente de relatório, lido apenas para um User-Agent nativo do Decoding Chat
StatusCorpoCondição
200objeto iniciação de handoffUma solicitação de handoff foi criada
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O handoff permanece pendente por cinco minutos e registra o endereço IP do cliente, o user agent e o sistema operacional reportado do dispositivo iniciador. A iniciação não cria nenhuma sessão. Nenhum Dispatch do Gateway é emitido.

10 solicitações por minuto, no bucket auth:handoff:initiate.

GET/v1/auth/handoff/{code}/infoUnauthenticated

Descreve o dispositivo que iniciou um handoff pendente para que o dispositivo aprovador possa exibi-lo antes de aprovar, e marca o código como aprovável. Autenticação não é necessária. Retorna um objeto de informações de handoff.

O Decoding Chat conta as tentativas de código com falha em relação ao endereço IP do cliente e o bloqueia após 5 falhas em 15 minutos. Um resultado pendente não registra nenhuma falha, enquanto um código desconhecido ou expirado registra uma.

CampoTipoDescrição
code1stringO código do handoff

1 O Decoding Chat normaliza o valor removendo hifens e espaços em branco e colocando o restante em maiúsculas, e o resultado normalizado tem exatamente 12 caracteres do alfabeto de handoff

Qualquer um que possa acessar a API e conheça o código pode marcá-lo como inspecionado. Recusar a solicitação em um cliente descarta apenas o que aquele cliente está mostrando, e o estado inspecionado permanece até que o handoff seja concluído ou o código expire.

Um código que não tem exatamente 12 caracteres do alfabeto de handoff após hifens e espaços em branco serem removidos retorna 400 INVALID_HANDOFF_CODE. Tanto um código cujas três pesquisas já estão esgotadas quanto uma solicitação de um endereço IP de cliente que esgotou sua permissão de tentativa com falha retornam o mesmo código de erro. Um código desconhecido ou expirado retorna 200 com o status expired e registra uma tentativa com falha.

StatusCorpoCondição
200objeto informações de handoffO estado pendente ou expirado foi lido
400resposta de erroO código está malformado, seu orçamento de pesquisa acabou ou a permissão de tentativa do IP do cliente está esgotada
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Uma pesquisa bem-sucedida consome uma das três pesquisas do código e permite concluir handoff para desktop. Um resultado expirado conta como uma tentativa falha. Não ocorrem alterações no estado da conta nem Dispatch do Gateway.

10 solicitações por minuto, no bucket auth:handoff:info, e cada código permite no máximo três pesquisas bem-sucedidas no total, contadas no próprio código.

POST/v1/auth/handoff/complete

Aprova um handoff pendente emitindo uma nova sessão para o dispositivo iniciador sob a autoridade de uma ativa. Requer o próprio token de sessão de usuário do dispositivo aprovador. Retorna 204 sem nenhum corpo.

O Decoding Chat lê esse token no cabeçalho Authorization ou no campo de corpo token quando o corpo fornece um.

CampoTipoDescrição
code1stringO código de handoff mostrado pelo dispositivo iniciador
token?2stringO próprio token de sessão de usuário do dispositivo aprovador
user_id3snowflakeA conta à qual a sessão de aprovação pertence

1 O código usa o mesmo contrato de normalização de obter informações de handoff de desktop, e apenas um código que a operação já inspecionou é aceito

2 O token do corpo tem precedência sobre o cabeçalho Authorization, e uma solicitação que não fornece nenhum dos dois retorna 401 UNAUTHORIZED

3 Um token fornecido que se resolve em uma conta diferente retorna SESSION_TOKEN_MISMATCH

Um token que se resolve sem sessão ativa retorna 401 INVALID_TOKEN. Um código malformado, desconhecido, concluído ou não inspecionado retorna 400 INVALID_HANDOFF_CODE, assim como uma permissão de tentativa com falha esgotada. Um código expirado retorna INVALID_HANDOFF_CODE ou HANDOFF_CODE_EXPIRED. Inicie um novo handoff em qualquer um dos casos.

A criação de sessão também pode retornar 403 BOT_USER_AUTH_SESSION_CREATION_DENIED para uma conta de bot e 403 REGISTRATION_PENDING_APPROVAL ou 403 REGISTRATION_REJECTED para uma conta que não foi admitida. Uma conta suspensa retorna os códigos de suspensão listados em fazer login com uma senha.

StatusCorpoCondição
204vazioO handoff foi concluído
400resposta de erroO corpo, o código, o estado de expiração ou a propriedade da sessão é inválido
401resposta de erroA credencial de aprovação está ausente, é inválida ou foi revogada
403resposta de erroA sessão de aprovação pertence a um bot ou a uma conta aguardando aprovação ou rejeitada
404resposta de erroA sessão de aprovação resolve para uma conta que não existe mais
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

A conclusão cria uma nova sessão de autenticação para o dispositivo iniciador e publica seu token em relação ao código. O token permanece legível por meio de obter status de handoff de desktop por qualquer tempo que reste dos cinco minutos do handoff. A conclusão também descarta o handoff pendente, de modo que o código não pode ser concluído uma segunda vez e um posterior obter informações de handoff de desktop relata expired.

A sessão de aprovação permanece válida. A nova sessão assume o endereço IP do cliente, o user agent e o sistema operacional reportado do dispositivo iniciador no registro de handoff. Nenhum Dispatch do Gateway é emitido.

10 solicitações por minuto, no bucket auth:handoff:complete, e um endereço IP do cliente é bloqueado após 5 tentativas de código com falha em 15 minutos.

GET/v1/auth/handoff/{code}/statusUnauthenticated

Informa o estado de um handoff ao dispositivo que o iniciou. Autenticação não é necessária. Retorna um objeto status de handoff.

CampoTipoDescrição
codestringO código de handoff, usando o mesmo contrato de normalização de obter informações de handoff de desktop

O código é a única credencial que esta rota verifica. O dispositivo iniciador DEVE consultar a própria conclusão.

StatusCorpoCondição
200objeto status de handoffO estado foi lido ou um código desconhecido foi relatado como expirado
400resposta de erroO código está malformado, retornando INVALID_HANDOFF_CODE
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Uma pesquisa deixa o handoff inalterado. Uma pesquisa contra um handoff concluído registra uma tentativa falha para o endereço IP da pesquisa, porque esta rota não apresenta nenhum poll_secret. Nenhuma alteração no estado da conta e nenhum Dispatch do Gateway é emitido.

60 solicitações por minuto, no bucket auth:handoff:status.

Obter status de handoff de desktop com o segredo da pesquisa

Seção intitulada “Obter status de handoff de desktop com o segredo da pesquisa”
POST/v1/auth/handoff/{code}/statusUnauthenticated

Relata o estado de um handoff e entrega o novo token de sessão uma vez, a um chamador que apresente o segredo de pesquisa emitido na iniciação. Autenticação não é necessária. Retorna um objeto status de handoff.

CampoTipoDescrição
codestringO código de handoff, usando o mesmo contrato de normalização de obter informações de handoff de desktop
CampoTipoDescrição
poll_secretstringO segredo retornado por iniciar handoff para desktop

Um segredo que não corresponda relata pending e registra uma tentativa com falha para o endereço IP da pesquisa. A rota não relata nenhum erro distinto para um segredo errado, portanto, um chamador não pode distinguir um segredo errado de um handoff que o dispositivo de aprovação não concluiu.

StatusCorpoCondição
200objeto status de handoffO estado foi lido ou um código desconhecido foi relatado como expirado
400resposta de erroO código está malformado, retornando INVALID_HANDOFF_CODE
404resposta de erroO handoff concluído nomeia uma conta que não existe mais, retornando UNKNOWN_USER
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

Recuperar o token conclui o handoff. Outras pesquisas o deixam inalterado. Nenhum Dispatch do Gateway é emitido.

60 solicitações por minuto, no bucket auth:handoff:status.

DELETE/v1/auth/handoff/{code}Unauthenticated

Descarta um handoff e tudo armazenado contra seu código. Autenticação não é necessária. Retorna 204 sem nenhum corpo.

CampoTipoDescrição
codestringO código de handoff, usando o mesmo contrato de normalização de obter informações de handoff de desktop
CampoTipoDescrição
poll_secretstringO segredo retornado por iniciar handoff para desktop

Um código desconhecido ou já expirado não tem segredo armazenado, então ele retorna 400 INVALID_HANDOFF_CODE.

StatusCorpoCondição
204vazioO handoff foi descartado
400resposta de erroO código é malformado ou o segredo não corresponde, retornando INVALID_HANDOFF_CODE
429resposta de limite de taxaA rota ou o bucket global nega a solicitação
500resposta de erroOcorre uma falha interna inesperada
503resposta de erroA instância está em seu limite máximo de solicitações em andamento

O cancelamento impede qualquer recuperação adicional de token, mas não revoga uma sessão já criada por conclusão. Nenhum Dispatch do Gateway é emitido.

10 solicitações por minuto, no bucket auth:handoff:cancel.