Axuz Developers

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.

  • Acesso: Pública
  • Serviço: https://auth-api.axuz.net

Autenticação aceita

Sem autenticação (rota pública ou protegida por link/assinatura).

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.

Motivo: usuário perdeu senha; precisamos de um canal fora-de-banda (email) para provar identidade sem expor se o email existe (privacy + anti-enum) e sem virar vetor de email-bomb / brute pra sanidade do worker de envio (piso §segurança: rate-limit em endpoints públicos que disparam I/O caro ou envio de email). Comportamento: rate-limit em dois buckets antes de qualquer trabalho — per-IP (pwresetIPMax=5 / pwresetIPWindow=15min) e per-email (pwresetEmailMax=3 / pwresetEmailWindow=1h). Estouro devolve 429 com header Retry-After (o 429 conta chamadas, não existência do email — anti-enum preservado). O bucket per-email só é aplicado se o email tem formato mínimo (@), pra atacante que manda lixo não travar o bucket de vítimas reais. Se o user existe, gera token opaco, hash SHA-256 e persiste com TTL de 60min. Envia email; falha de send é logada e engolida (degrade gracioso: token já existe no DB, ops pode entregar link manualmente). Se o email não existe no DB, ainda responde 200 opaco pra bloquear enumeração. Backend: in-memory (RateLimiter facade do auth_api — decisão deliberada; auth_api é single-instance). Quando escalar horizontalmente, plugar backend Redis via axuz_core/ratelimit mantendo a mesma facade (piso 10: fail-open no blip do Redis já documentado no factory de axuz_core).

Entradas: body JSON {"email": "..."}, IP via X-Forwarded-For.

Retorno: 200 opaca em maioria dos casos; 429 + Retry-After quando rate-limit estoura; 500 só em falha de DB ao inserir o token (aqui vaza existência — smell histórico, registrado). Efeito: INSERT em password_reset_tokens; envia email via h.sender.Send (I/O externa); consome tokens dos buckets in-memory per-IP e per-email.

Parâmetros

Sem parâmetros.

Corpo da requisição

Corpo JSON. O schema detalhado deste endpoint ainda não está tipado na spec; veja a descrição da operação.

application/json

NomeTipoObrigatórioDescrição
(corpo)objectnão
{}

Respostas

200

Opaca em maioria dos casos

429

Limite de requisições excedido.

NomeTipoObrigatórioDescrição
errorstringsim

500

Só em falha de DB ao inserir o token (aqui vaza existência — smell histórico, registrado). Efeito: INSERT em password_reset_tokens

NomeTipoObrigatórioDescrição
errorstringsim

Exemplos

O "Try it" está desligado nesta referência. Use os exemplos com a sua credencial de teste.

curl

curl -sS -X POST 'https://auth-api.axuz.net/auth/password/request' \
  -H "Content-Type: application/json" \
  -d '{}'

Node.js

const res = await fetch("https://auth-api.axuz.net/auth/password/request", {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
console.log(await res.json());

Python

import os
import requests

res = requests.request(
    "POST",
    "https://auth-api.axuz.net/auth/password/request",
    json={},
    timeout=30,
)
res.raise_for_status()
print(res.json())