Saltar al contenido principal

Registro de Usuario v2

Registro simplificado: el usuario envía email + contraseña (y opcionalmente código de referido). El backend genera un token de sesión y envía un código de verificación al email.


⏱️ Importante: token y código expiran

El token de registro y el código de verificación tienen TTL de 10 minutos. Si expiran, se debe reiniciar el registro (volver a llamar a /auth/v2/register).


POST/auth/v2/register

Inicia registro v2. Genera (o reutiliza) sesión de verificación y envía código al email.

📋 Parámetros

emailstringrequerido

Correo electrónico del usuario

passwordstringrequerido

Contraseña (debe cumplir el passwordRegex del backend)

codeReferralstring

Código de referido opcional

📤 Respuesta

{
"code": 1010,
"message": "Verification code sent successfully.",
"data": {
  "status": "pending",
  "token": "registration-token-uuid"
}
}

Qué hace el backend (comportamiento real)

1) Verifica si el email ya existe

  • Si el usuario ya existe en DB → retorna error 4002.

2) Reutiliza sesión si ya hay un registro “pendiente” válido

Si existe emailToSession:{email} en Redis y también existen:

  • session:{token}
  • sessionCode:{token}

Entonces no crea una nueva sesión: reutiliza el mismo token y lo retorna.

3) Si no existe sesión válida, crea una nueva

  • Genera token (UUID)
  • Genera code (6 dígitos)
  • Guarda en Redis (TTL 10 minutos):
    • session:{token}{ email, password, codeReferral }
    • sessionCode:{token}code
    • emailToSession:{email}token
  • Envía email con template: account_verification_code

Validaciones

Validación de Email y Password

  • email debe existir y pasar emailRegex
  • password debe existir y pasar passwordRegex
  • Si falla email o password, el endpoint responde 4006.

Tipos de Respuesta

✅ Éxito: código enviado (o sesión reutilizada)

Registro iniciado (pendiente verificación)

Código 1010

{
"code": 1010,
"message": "Verification code sent successfully.",
"data": {
"status": "pending",
"token": "registration-token-uuid"
}
}

Notas:

  • El token es el identificador de la sesión en Redis (TTL 10 minutos).
  • Si el usuario reintenta registrar el mismo email dentro del TTL, puede recibir el mismo token (sesión reutilizada).

❌ Email ya registrado

Email ya registrado

Código 4002

{
"code": 4002,
"message": "The email is already registered."
}

❌ Datos faltantes o inválidos

Datos inválidos

Código 4006 - Email inválido, password inválida (regex) o campos faltantes.

{
"code": 4006,
"message": "Missing required data."
}

❌ Error del servidor

Error interno

Código 5001

{
"code": 5001,
"message": "Failed to save user to the database."
}

Ejemplos

cURL

curl -X POST 'https://api.swapbits.co/auth/v2/register' \
-H 'Content-Type: application/json' \
-d '{
"email": "nuevo@ejemplo.com",
"password": "MiPassword123!",
"codeReferral": "mi_codigo_amigo"
}'

JavaScript/TypeScript

const registerV2 = async (email, password, codeReferral) => {
const res = await fetch('https://api.swapbits.co/auth/v2/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password, codeReferral })
});

const result = await res.json();

if (result.code === 1010) {
sessionStorage.setItem('registrationToken', result.data.token);
// Ir al paso de verificación v2 con token + code
}

return result;
};

⚡ Quick Test

POSThttps://api.swapbits.co/auth/v2/register
curl -X POST 'https://api.swapbits.co/auth/v2/register' \
  -H 'Content-Type: application/json' \
  -d '{"email": "nuevo@ejemplo.com", "password": "MiPassword123!"}'

Enlaces Relacionados