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
emailstringDirección de email válida
phone_numberstringNúmero de teléfono en formato E.164 (ej: +1234567890)
passwordstringContraseñ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