Saltar al contenido principal

Registrarse

Crea una nueva cuenta de usuario y envía un enlace de verificación por email.

Endpoint​

POST /api/v1/auth/register

Autenticación​

No se requiere autenticación (endpoint público).

Request​

Content-Type​

application/json

Request Body​

CampoTipoRequeridoDescripción
emailstringSíDirección de email válida
phone_numberstringSíNúmero de teléfono en formato E.164 (ej: +1234567890)
passwordstringSíContraseña (ver requisitos abajo)

Requisitos de Contraseña​

Las contraseñas deben cumplir TODOS los siguientes criterios:

  • Mínimo 8 caracteres de longitud
  • Al menos una letra mayúscula (A-Z)
  • Al menos una letra minúscula (a-z)
  • Al menos un dígito (0-9)
  • Al menos un carácter especial (!@#$%^&*(),.?":|<>)

Formato de Número de Teléfono​

Debe estar en formato internacional E.164:

  • Comienza con + (opcional pero recomendado)
  • Código de país (1-3 dígitos)
  • Número de suscriptor (hasta 15 dígitos en total)
  • Ejemplos: +12025551234, +442071234567, +61412345678

Ejemplo de Request​

{
"email": "juan@ejemplo.com",
"phone_number": "+12025551234",
"password": "ContraseñaSegura123!"
}

Response​

Response Exitoso (201 Created)​

{
"message": "Usuario registrado exitosamente. Por favor revisa tu email para el enlace de verificación.",
"success": true
}

Después del registro, el usuario recibirá un email con un enlace de verificación. Deben verificar su email antes de poder iniciar sesión.

Campos del Response​

CampoTipoDescripción
messagestringMensaje de éxito
successbooleanSiempre true para requests exitosos

Flujo de Verificación​

  1. Usuario se registra → Recibe email de verificación
  2. Usuario hace clic en enlace → Redirigido al frontend con token
  3. Frontend llama /auth/verify-email → Usuario es verificado e inicia sesión

Ejemplos​

curl -X POST https://api.callcov.com/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "juan@ejemplo.com",
"phone_number": "+12025551234",
"password": "ContraseñaSegura123!"
}'

Errores​

400 Bad Request​

Email ya registrado:

{
"detail": "Email ya registrado"
}

Número de teléfono ya registrado:

{
"detail": "Número de teléfono ya registrado"
}

Formato de email inválido:

{
"detail": [
{
"loc": ["body", "email"],
"msg": "el valor no es una dirección de email válida",
"type": "value_error.email"
}
]
}

La contraseña no cumple los requisitos:

{
"detail": [
{
"loc": ["body", "password"],
"msg": "La contraseña debe contener al menos una letra mayúscula",
"type": "value_error"
}
]
}

Formato de número de teléfono inválido:

{
"detail": [
{
"loc": ["body", "phone_number"],
"msg": "Formato de número de teléfono inválido. Usa formato E.164 (ej: +1234567890)",
"type": "value_error"
}
]
}

500 Internal Server Error​

Error al enviar email de verificación:

{
"detail": "Error al enviar email de verificación. Por favor intenta de nuevo."
}

Consideraciones de Seguridad​

  • Contraseñas hasheadas: Nunca se almacenan en texto plano
  • Verificación de email requerida: Los usuarios no pueden iniciar sesión hasta verificar
  • Email y teléfono únicos: Previene cuentas duplicadas
  • Limitación de tasa: El endpoint de registro tiene limitación de tasa para prevenir abuso

Verificación de Email​

Después del registro, los usuarios reciben un email que contiene:

  • Enlace de verificación con token
  • El enlace expira en 15 minutos (configurable)
  • El token es de un solo uso

Ejemplo de formato de email de verificación:

Asunto: Verifica tu cuenta de CallCov

Haz clic en el enlace de abajo para verificar tu dirección de email:
https://app.callcov.com/verify-email?token=abc123...

Este enlace expira en 15 minutos.

Pruebas en Desarrollo​

En modo de desarrollo, los emails de verificación se envían a MailHog (accesible en http://localhost:8025).

Relacionado​