CustomerForgotPassword¶
POST /customer/auth/forgot-password
Public endpoint; Authorization is not required. Requests password recovery, not email delivery specifically. The server creates a reset token and emits an internal event; workflow chooses a delivery_route and publishes a delivery request to trusted modules. The module owns its templates, channel and provider.
Request¶
{"email":"[email protected]"}
Email is required, 3–255 characters. Brand is resolved from server-provided
__hostname. Without hostname, brand may be supplied explicitly. Identity lookup
is limited to that brand; ambiguous email matches do not produce a recovery event.
Disabled customers do not receive recovery requests.
Response¶
HTTP 202:
{
"success":true,
"message":"If the customer exists, the recovery request has been accepted for processing"
}
The same response is returned for an unknown customer, missing recovery configuration
or a throttled request. It contains neither token nor reset_url and does not confirm
event publication, message queue acceptance or delivery. Invalid email input returns
HTTP 400 with {"error":"INVALID_DATA"}.
Recovery link¶
brand.terminal_host/:language/sign/recovery/:hash
Without an explicit scheme, HTTPS is added to terminal_host; trailing slashes are
removed. Language is customer preferred_language, then brand default_language, then
en. The :hash path segment is the random recovery token, not the email hash or
request_id. No separate customer_password_reset_url setting is required.
The terminal reads the token from the path and submits it to CustomerResetPassword. Opening the page does not consume it.
First-stage limitations¶
Token lifetime: 30 minutes. A new accepted request replaces the previous token.
Requests for a found customer are limited to one per 60 seconds; requests with a
server-provided __ip are additionally limited to 10 per minute. Limits are local to
the server process. Reset state is in memory: restarting the server invalidates links.
No delivery acknowledgement, event retries, replay or durable outbox is provided.
An active workflow rule and an external subscriber are required for delivery.