Verificar Email v2
Endpoint para verificar el código enviado por email y finalizar el registro v2 creando la cuenta.
🔄 Qué hace este endpoint
Este endpoint:
1) Verifica el código contra la sesión en Redis
2) Si es válido, consume la sesión y ejecuta completeRegister()
3) Devuelve respuesta de email verificado + estado success
/auth/register/verify?token={token}Verifica el código de email y finaliza el registro v2 creando el usuario
📋 Parámetros
tokenstringrequeridoToken de sesión devuelto por /auth/v2/register (query param)
codestringrequeridoCódigo de 6 dígitos enviado por email
📤 Respuesta
{
"code": 3001,
"message": "Email verified successfully.",
"data": {
"status": "success"
}
}🧠 Comportamiento real (según backend)
Redis keys involucradas
Durante el registro v2, el backend crea (TTL 10 minutos):
session:{token}→{ email, password, codeReferral }sessionCode:{token}→"123456"emailToSession:{email}→{token}
En verificación, el backend:
- valida
session:{token}exista - valida
sessionCode:{token}exista - compara el código
- setea
verify:{token} = 'true'con TTL 5 minutos - luego el controller borra:
session:{token}emailToSession:{email}
- y ejecuta
completeRegister(email, password, codeReferral, { ip, userAgent })
⏱️ Tiempos y expiración (IMPORTANTE)
⏱️ TTL reales
- El token y el código del registro v2 viven 10 minutos (Redis TTL).
- La marcaverify:{token}se guarda por 5 minutos.
- No hay TTL de 24 horas en este flujo.
✅ Respuesta exitosa
Email verificado y usuario creado
Código 3001 - El código es válido, se crea el usuario y el registro queda finalizado.
{
"code": 3001,
"message": "Email verified successfully.",
"data": {
"status": "success"
}
}
Qué sucede internamente:
- Se valida el código (
sessionCode:{token}) - Se consumen/limpian las claves de sesión
- Se ejecuta
completeRegister(...)(creación de usuario + wallets + KYC + auto-trust del dispositivo)
❌ Errores
Datos faltantes o formato inválido
Código 4006 - Falta token, falta code, o code no cumple /^\d{6}$/.
{
"code": 4006,
"message": "Missing required data."
}
Token inválido / sesión no existe
Código 4015 - No existe session:{token} en Redis (expiró o es inválido).
{
"code": 4015,
"message": "Invalid token."
}
Acción sugerida: reiniciar registro con /auth/v2/register.
Código expirado / no existe en sesión
Código 4004 - No existe sessionCode:{token} (expiró o fue limpiado).
{
"code": 4004,
"message": "The verification token is invalid."
}
Acción sugerida: reiniciar registro con /auth/v2/register.
Código incorrecto
Código 4005 - El código no coincide con el almacenado.
{
"code": 4005,
"message": "Invalid verification code."
}
Acción sugerida: reintentar con el código correcto (mientras no expire el TTL de 10 minutos).
Error interno
Código 5001 - Error al completar registro (por ejemplo guardado de usuario).
{
"code": 5001,
"message": "Failed to save user to the database."
}
💻 Ejemplos
JavaScript/TypeScript
const verifyEmailV2 = async (token, code) => {
const response = await fetch(
`https://api.swapbits.co/auth/v2/register/verify?token=${token}`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ code })
}
);
const result = await response.json();
if (result.code === 3001) {
// ✅ Usuario creado y registro finalizado
sessionStorage.removeItem('registrationToken');
window.location.href = '/login?registered=true';
}
return result;
};
cURL
curl -X POST 'https://api.swapbits.co/auth/v2/register/verify?token=registration-token-uuid' \
-H 'Content-Type: application/json' \
-d '{ "code": "123456" }'
⚡ Quick Test
https://api.swapbits.co/auth/v2/register/verify?token=registration-token-uuidcurl -X POST 'https://api.swapbits.co/auth/v2/register/verify?token=registration-token-uuid' \
-H 'Content-Type: application/json' \
-d '{"code":"123456"}'