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.
- Access: Public
- Service:
https://auth-api.axuz.net
Accepted authentication
No authentication (public route, or protected by link/signature).
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.
Parameters
No parameters.
Request body
Corpo JSON. O schema detalhado deste endpoint ainda não está tipado na spec; veja a descrição da operação.
application/json
| Name | Type | Required | Description |
|---|---|---|---|
(corpo) | object | no |
{}Responses
200
Opaca em maioria dos casos
429
Limite de requisições excedido.
| Name | Type | Required | Description |
|---|---|---|---|
error | string | yes |
500
Só em falha de DB ao inserir o token (aqui vaza existência — smell histórico, registrado). Efeito: INSERT em password_reset_tokens
| Name | Type | Required | Description |
|---|---|---|---|
error | string | yes |
Examples
"Try it" is turned off in this reference. Use the examples with your test credential.
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())