Autenticação
Login, MFA, sessões, recuperação de senha e passkeys.
| Método | Path | Resumo | Acesso |
|---|---|---|---|
| POST | /auth/impersonation/consume | Troca um access token de impersonation (emitido pelo backoffice pra suporte) por um cookie access_token, deixando o browser autenticado c... | Login |
| POST | /auth/login | Autentica o 1º fator (email+senha) e abre o desafio de 2º fator (wave 9); só emite sessão direto com a política desligada. | Pública |
| GET | /auth/login/mfa | Lê o cookie HttpOnly axuz_mfa_pending (posto pelo callback OAuth), valida o desafio e devolve o mesmo corpo do /auth/login (MFAChallengeB... | Pública |
| POST | /auth/login/mfa/email-otp/send | Body {challenge_id}; desafio válido (sem gastar tentativa); limites: 1 envio/60 s e 5/h por usuário, 20/h por IP; gera, grava e envia (in... | Pública |
| POST | /auth/login/mfa/email-otp/verify | Body {challenge_id, code}; rate limit por IP; gasta 1 tentativa do desafio; confere o código (gasta 1 tentativa do código, uso único) e f... | Pública |
| POST | /auth/login/mfa/totp | (1) decoda {challenge_id, code}; (2) rate limit por IP; (3) gasta 1 tentativa do desafio (atômico, teto 5); (4) confere que a conta TEM T... | Pública |
| POST | /auth/login/mfa/webauthn/begin | Body {challenge_id}; o desafio tem de estar válido; carrega as passkeys do dono do desafio e devolve {webauthn_challenge_id, publicKey}. | Pública |
| POST | /auth/login/mfa/webauthn/finish | Body {challenge_id, webauthn_challenge_id, credential}; gasta 1 tentativa do desafio; a ceremony tem de ser do MESMO usuário do desafio (... | Pública |
| POST | /auth/login/totp | (1) decoda {challenge_id, code}; (2) rate limit por IP; (3) gasta 1 tentativa do desafio (atômico, teto 5); (4) confere que a conta TEM T... | Pública |
| POST | /auth/logout | Encerra a SESSÃO (família de refresh) de forma irreversível. | Pública |
| GET | /auth/me | Devolve o perfil do usuário autenticado + times + role de plataforma pra hidratar o app após F5 ou navegar entre subdomínios. | Login (inclui pré-sessão) |
| GET | /auth/me/emails | Primário de users (id = id do usuário, verified = email_verified_at preenchido) + ListUserEmails. | Login (inclui pré-sessão) |
| POST | /auth/me/emails | Body {email} (normalizado: trim + minúsculas; formato do signup); limites — 10 pedidos/h por usuário e 20/h por IP (contam todo pedido: o... | Login (inclui pré-sessão) |
| DELETE | /auth/me/emails/{id} | O primário nunca (409 primary_not_removable — troque o primário antes); adicional (verificado ou pendente) sai livre — sem piso de método... | Login (inclui pré-sessão) |
| POST | /auth/me/emails/{id}/primary | Id = o próprio primário ⇒ 200 (nada a fazer); senão PromoteUserEmail (o primário antigo vira adicional verificado — a contagem não muda). | Login (inclui pré-sessão) |
| POST | /auth/me/emails/{id}/verify | Id do path (UUID); formato do código antes de I/O; rate limit de falhas por IP; reserva 1 tentativa (teto 5, TTL 10 min); compara o HMAC... | Login (inclui pré-sessão) |
| GET | /auth/me/factors | Sessão plena ou restrita; LoadFactors; factorsView. | Login (inclui pré-sessão) |
| DELETE | /auth/me/identities/{provider} | Provedor ∈ {google, github} (senão 400 invalid_provider); com a política ligada exige re-auth (fator = o provedor, então qualquer método... | Login (inclui pré-sessão) |
| GET | /auth/me/identities/{provider}/link/check | Pré-voo do vínculo — a UI chama com fetch (onde 403 reauth_required abre o diálogo de re-auth) e só depois navega para o link/start. | Login (inclui pré-sessão) |
| GET | /auth/oauth/{provider}/callback | Finaliza o 1º fator social e abre o desafio de 2º fator. | Pública |
| GET | /auth/oauth/{provider}/link/start | Exige sessão (cookie/bearer verificado, não revogado — sessão restrita serve: vincular é cadastrar método); provedor configurado; abre o... | Login (inclui pré-sessão) |
| GET | /auth/oauth/{provider}/start | Inicia o fluxo OAuth redirecionando pro provider. | Pública |
| GET | /auth/oauth/providers | Devolve map name→configured pra o frontend decidir botões. | Pública |
| POST | /auth/password/change | (1) re-auth válida para FactorPassword; (2) âncoras da sessão corrente (sid do access + hash do refresh — callerSessionFromRequest); (3)... | Login (inclui pré-sessão) |
| POST | /auth/password/confirm | 410 {"error":"reset_flow_changed"} sem tocar o banco — o link sozinho nunca redefine. | Pública |
| POST | /auth/password/request | Inicia o fluxo "esqueci minha senha" — grava um token único de 60min em password_reset_tokens e dispara o email com link para o front. | Pública |
| POST | /auth/password/reset/confirm | (1) rate limit de falhas por IP; (2) política de senha ANTES de gastar tentativa/código; (3) modo factor: o método tem de estar ativo, ga... | Pública |
| POST | /auth/password/reset/method/begin | Desafio válido (não gasta tentativa); o método tem de estar ATIVO na conta; delega ao Begin do método. | Pública |
| POST | /auth/password/reset/start | Rate limit por IP (conta só link inválido); valida o link; lê os métodos ativos e a liberação viva; consome o link e abre o desafio (15 m... | Pública |
| POST | /auth/reauth | Body {method, password?, code?}; o método tem de ser um fator que a conta TEM; 10 falhas/15 min por usuário ⇒ 429; sucesso ⇒ grantReauth. | Login (inclui pré-sessão) |
| POST | /auth/reauth/email-otp/send | Mesmo envio/limites do login (dispatchEmailOTP), com purpose=reauth e sem desafio. | Login (inclui pré-sessão) |
| GET | /auth/reauth/options | {methods: fatores disponíveis, accepted: {webauthn:[..], totp:[..], password:[..]}, current: {method, expires_in}|null}. | Login (inclui pré-sessão) |
| POST | /auth/reauth/webauthn/begin | Passkeys do usuário da sessão, UV obrigatório (re-auth libera mudar fator — tem de ser o dono, não só o dispositivo). | Login (inclui pré-sessão) |
| POST | /auth/reauth/webauthn/finish | Body {challenge_id (o da ceremony), credential}; a ceremony tem de ser do usuário da sessão; assinatura válida E com UV; sucesso ⇒ grantR... | Login (inclui pré-sessão) |
| POST | /auth/refresh | (1) cookie ausente → 401 `missing_cookie`; (2) hash não vivo → refreshNotLive decide entre janela de graça multi-tab (BUG-W-10, 200 `rota... | Pública |
| POST | /auth/register | Monta struct. | Pública |
| POST | /auth/resend-verification | Reemite o e-mail de verificação, sempre respondendo 200 opaco pra bloquear enumeração de contas e email-bombing. | Pública |
| POST | /auth/session/upgrade | Exige sessão (cookie/bearer verificado e não revogado); conta ainda abaixo de 3 métodos ⇒ 403 enrollment_required (corpo do contrato, com... | Login (inclui pré-sessão) |
| GET | /auth/sessions | Retorna as sessões ativas (refresh tokens não revogados/expirados) do caller, marcando qual é a corrente. | Pública |
| DELETE | /auth/sessions/{sessionId} | Revoga um refresh token específico (pelo id) do próprio caller. | Login (inclui pré-sessão) |
| POST | /auth/sessions/revoke-others | Revoga todas as sessões (famílias) do caller EXCETO a sessão que fez a chamada. | Pública |
| POST | /auth/signup | Cria uma nova conta (user + credencial argon2id) e dispara o e-mail de verificação, protegido por honeypot, rate-limit, blocklist, geo-bl... | Pública |
| POST | /auth/totp/confirm | Valida o primeiro código digitado pelo autenticador e, se OK, marca o enrollment como confirmado e gera 10 recovery codes. | Login (inclui pré-sessão) |
| POST | /auth/totp/disable | Remove o 2FA inteiro do usuário — só executa se o código atual (ou recovery) for válido. | Login (inclui pré-sessão) |
| POST | /auth/totp/recovery-codes/regenerate | Invalida todos os recovery codes existentes e gera 10 novos. | Login (inclui pré-sessão) |
| POST | /auth/totp/setup | Gera um segredo TOTP novo, encripta com AES-GCM (h.totpCrypt), persiste em user_totp e devolve secret + otpauth URL para o front renderiz... | Login (inclui pré-sessão) |
| GET | /auth/totp/status | Reporta o estado do 2FA do usuário logado: se está enrolled (registrou segredo), se confirmou o primeiro código, e quantos recovery codes... | Login (inclui pré-sessão) |
| POST | /auth/verify-email | Confirma um token de verificação, marca o e-mail como verificado e emite sessão nova (auto-login pós confirmação). | Pública |
| GET | /auth/webauthn/credentials | Devolve a lista de credenciais do user autenticado (settings screen). | Login (inclui pré-sessão) |
| DELETE | /auth/webauthn/credentials/{id} | Remove uma credencial WebAuthn específica do user autenticado. | Login (inclui pré-sessão) |
| POST | /auth/webauthn/login/begin | Inicia o ceremony de autenticação por passkey. | Pública |
| POST | /auth/webauthn/login/finish | Valida a assinatura do authenticator e emite JWT + cookies (login normal). | Pública |
| POST | /auth/webauthn/register/begin | Inicia o ceremony de registro de um passkey. | Login (inclui pré-sessão) |
| POST | /auth/webauthn/register/finish | Valida a resposta do authenticator e persiste a nova credencial em user_webauthn_credentials. | Login (inclui pré-sessão) |
| GET | /auth/ws-token | Devolve o access JWT corrente pro client montar a conexão WebSocket com o axuz_api principal (browser WS API não permite custom cookies/h... | Login |