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
emailstringSíDirecció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​