Saltar al contenido principal

Reenviar Verificación

Envía un nuevo email de verificación al usuario. Usa esto cuando el email de verificación original no fue recibido o el token expiró.

Endpoint

POST /api/v1/auth/resend-verification

Autenticación

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

Request

Content-Type

application/json

Request Body

CampoTipoRequeridoDescripción
emailstringDirección de email para reenviar verificación

Ejemplo de Request

{
"email": "juan@ejemplo.com"
}

Response

Response Exitoso (200 OK)

{
"message": "Email de verificación enviado exitosamente",
"success": true
}

Ejemplos

curl -X POST https://api.callcov.com/api/v1/auth/resend-verification \
-H "Content-Type: application/json" \
-d '{
"email": "juan@ejemplo.com"
}'

Errores

400 Bad Request

Email ya verificado:

{
"detail": "Email ya verificado"
}

404 Not Found

Usuario no encontrado:

{
"detail": "Usuario no encontrado"
}

500 Internal Server Error

Error al enviar email:

{
"detail": "Error al enviar email de verificación"
}

Comportamiento

Cuando este endpoint es llamado:

  1. Invalida todos los tokens de verificación anteriores para este usuario
  2. Genera un nuevo token de verificación (expira en 15 minutos)
  3. Envía nuevo email de verificación
  4. Devuelve mensaje de éxito

Limitación de Tasa

Para prevenir abuso, este endpoint tiene limitación de tasa:

  • Máximo 3 requests por email por hora
  • Máximo 10 requests por IP por hora

Casos de Uso

Email de Verificación No Recibido

function resendVerificationEmail(email) {
return fetch('https://api.callcov.com/api/v1/auth/resend-verification', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email })
});
}

// En tu formulario de login
async function handleLogin(email, password) {
try {
const response = await loginUser(email, password);
} catch (error) {
if (error.message.includes('verifica tu email')) {
// Mostrar botón "Reenviar email de verificación"
const resendButton = document.getElementById('resend-button');
resendButton.style.display = 'block';

resendButton.onclick = async () => {
await resendVerificationEmail(email);
alert('¡Email de verificación enviado! Por favor revisa tu bandeja de entrada.');
};
}
}
}

Token de Verificación Expirado

// Cuando el usuario hace clic en enlace de verificación expirado
const urlParams = new URLSearchParams(window.location.search);
const token = urlParams.get('token');

try {
const response = await fetch('/api/v1/auth/verify-email', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ code: token })
});

if (!response.ok) {
const error = await response.json();
if (error.detail.includes('expirado')) {
// Mostrar formulario de reenvío de verificación
showResendVerificationForm();
}
}
} catch (error) {
console.error(error);
}

Consideraciones de Seguridad

  • Tokens anteriores invalidados: Todos los tokens de verificación antiguos se marcan como usados
  • Limitación de tasa: Previene bombardeo de emails
  • Tokens de un solo uso: Cada nuevo token solo puede usarse una vez
  • Tiempo limitado: Los nuevos tokens expiran en 15 minutos

Relacionado