Recuperar la contraseña
Cambiar la contraseña de un cliente que no la recuerda, con un código enviado a su correo o a su teléfono.
Cómo funciona
- Pide el código con
send-code. - El cliente recibe un código de 6 cifras por correo o por SMS.
- Opcional: comprueba el código con
validate-code, por ejemplo para pasar a la pantalla de la contraseña nueva. No lo gasta. - Cambia la contraseña con
change-password, enviando otra vez el código.
El código:
- vale 30 minutos;
- admite 3 intentos fallidos entre
validate-codeychange-password; en el cuarto, la solicitud se anula.
Estas rutas no piden token. Las cuatro comparten un límite de 10 peticiones por minuto.
Parámetros comunes
| Parámetro | Dónde | Cuándo | Reglas |
|---|---|---|---|
type |
Ruta | Siempre | email o phone |
email |
Cuerpo | Con type = email |
Email válido, máximo 200 caracteres. Envíalo en minúsculas |
phone |
Cuerpo | Con type = phone |
El número sin prefijo, tal como está en la cuenta. Máximo 15 caracteres |
country_code |
Cuerpo | Con type = phone |
Prefijo del país, por ejemplo +51. Debe existir |
Pedir el código
POST /api/v1/ecommerce/reset-password/send-code/{type}
{ "email": "[email protected]" }
{
"success": true,
"message": "Se ha enviado un código de verificación al correo electrónico ingresado, reviselo y siga las instrucciones.",
"data": null
}
Cada llamada anula el código anterior y reinicia los intentos.
Reenviar el código
POST /api/v1/ecommerce/reset-password/resend-code/{type}
Mismo cuerpo que al pedirlo. Genera un código nuevo y amplía la validez otros 30 minutos. Hay que esperar 30 segundos desde que se pidió el código.
Comprobar el código
POST /api/v1/ecommerce/reset-password/validate-code/{type}
Los parámetros comunes más code (6 cifras).
{ "email": "[email protected]", "code": "482913" }
{
"success": true,
"message": "Operación realizada de forma correcta.",
"data": { "code": "482913", "is_valid": true }
}
Un código incorrecto no devuelve is_valid: false: responde con el error VERIFICATION_CODE_INVALID.
Cambiar la contraseña
POST /api/v1/ecommerce/reset-password/change-password/{type}
Los parámetros comunes más:
| Campo | Tipo | Obligatorio | Reglas |
|---|---|---|---|
code |
texto | Sí | Exactamente 6 cifras |
password |
texto | Sí | Entre 6 y 200 caracteres |
password_confirmation |
texto | Sí | Igual a password |
{ "email": "[email protected]", "code": "482913", "password": "clave-nueva", "password_confirmation": "clave-nueva" }
{ "success": true, "message": "La contraseña ha sido restablecida de forma correcta.", "data": null }
Cambiar la contraseña genera un token nuevo: todas las sesiones abiertas del cliente se cierran. Para seguir, el cliente debe iniciar sesión otra vez.
Si algo sale mal
| HTTP | code | Cuándo | Qué hacer |
|---|---|---|---|
| 400 | BAD_REQUEST |
type no es email ni phone |
Usa uno de los dos |
| 422 | VALIDATION_ERROR |
Falta un dato, el país no existe o la confirmación no coincide | Corrige el campo que indica errors |
| 404 | USER_NOT_FOUND |
No hay ningún cliente con ese email o teléfono | Pide al cliente que revise el dato |
| 404 | RESET_REQUEST_NOT_FOUND |
No hay ninguna solicitud pedida | Pide el código |
| 422 | RESET_REQUEST_EXPIRED |
Pasaron los 30 minutos | Pide un código nuevo |
| 422 | VERIFICATION_CODE_INVALID |
El código es incorrecto. Gasta un intento | Revisa el código |
| 422 | VERIFICATION_TOO_MANY_ATTEMPTS |
Se agotaron los 3 intentos | Pide un código nuevo |
| 429 | RESEND_TOO_SOON |
Se reenvió antes de 30 segundos | Espera y vuelve a intentarlo |
| 429 | RATE_LIMITED |
Más de 10 peticiones por minuto | Espera lo que indica Retry-After |
| 500 | INTERNAL_ERROR |
No se pudo enviar el correo o el SMS | Reintenta. Si se repite, reporta la reference |