{ "errors": { "invalid_request_body": "Cuerpo de solicitud inválido", "email_already_registered": "El correo electrónico ya está registrado", "registration_closed": "El registro está actualmente cerrado", "failed_register_user": "Error al registrar usuario", "invalid_credentials": "Correo electrónico o contraseña inválidos", "email_not_verified": "Por favor verifica tu correo electrónico antes de iniciar sesión", "failed_login": "Error al iniciar sesión", "failed_generate_token": "Error al generar token", "failed_create_refresh_token": "Error al crear token de actualización", "failed_save_refresh_token": "Error al guardar token de actualización", "invalid_expired_refresh_token": "Token de actualización inválido o expirado", "failed_refresh_token": "Error al actualizar token", "refresh_token_not_found": "Token de actualización no encontrado", "invalid_refresh_token": "Token de actualización inválido", "user_not_authenticated": "Usuario no autenticado", "failed_get_user": "Error al obtener usuario", "failed_get_habits": "Error al obtener hábitos", "failed_create_habit": "Error al crear hábito", "habit_not_found": "Hábito no encontrado", "access_denied": "Acceso denegado", "failed_get_habit": "Error al obtener hábito", "invalid_input": "Entrada inválida", "failed_update_habit": "Error al actualizar hábito", "failed_archive_habit": "Error al archivar hábito", "failed_get_habit_entries": "Error al obtener entradas de hábito", "invalid_date_format": "Formato de fecha inválido (usa AAAA-MM-DD)", "invalid_page_parameter": "Parámetro 'page' inválido", "invalid_limit_parameter": "Parámetro 'limit' inválido (debe ser 1-100)", "pagination_required": "Se requiere paginación: proporciona el parámetro 'limit' o usa un rango de fechas ≤ 1 año", "invalid_from_date_format": "Formato de fecha 'from' inválido (usa AAAA-MM-DD)", "invalid_to_date_format": "Formato de fecha 'to' inválido (usa AAAA-MM-DD)", "habit_already_marked": "El hábito ya está marcado para esta fecha", "failed_mark_habit": "Error al marcar hábito", "habit_entry_not_found": "Entrada de hábito no encontrada", "failed_unmark_habit": "Error al desmarcar hábito", "invalid_expired_verification_token": "Token de verificación inválido o expirado", "email_already_verified": "El correo electrónico ya está verificado", "failed_verify_email": "Error al verificar correo electrónico", "invalid_email": "Correo electrónico inválido", "user_not_found": "Usuario no encontrado", "failed_send_verification_email": "Error al enviar correo de verificación", "email_not_verified_reset": "Por favor verifica tu correo electrónico antes de restablecer la contraseña", "failed_send_reset_email": "Error al enviar correo de restablecimiento", "invalid_token_or_password": "Token inválido o expirado, o no se cumplen los requisitos de contraseña", "failed_reset_password": "Error al restablecer contraseña", "failed_delete_user": "Error al eliminar usuario", "failed_get_stats": "Error al obtener estadísticas", "timezone_required": "La zona horaria es requerida", "invalid_timezone": "Zona horaria inválida (debe ser una zona horaria IANA válida)" }, "success": { "registration_with_verification": "Registro exitoso. Por favor revisa tu correo electrónico para verificar tu cuenta.", "registration_without_verification": "Registro exitoso. Ya puedes iniciar sesión.", "logged_out": "Sesión cerrada exitosamente", "email_verified": "Correo electrónico verificado exitosamente", "verification_email_sent": "Correo de verificación enviado exitosamente", "password_reset_email_sent": "Correo de restablecimiento de contraseña enviado exitosamente", "password_reset": "Contraseña restablecida exitosamente", "user_deleted": "Usuario y todos los datos asociados eliminados exitosamente" }, "validation": { "email_required": "el email es requerido", "email_invalid_format": "el email debe ser una dirección de correo válida", "email_too_long": "el email no debe exceder 254 caracteres", "password_required": "la password es requerida", "password_min_length": "la password debe tener al menos 8 caracteres", "password_max_length": "la password no debe exceder 128 caracteres", "password_uppercase": "la password debe contener al menos una letra mayúscula", "password_lowercase": "la password debe contener al menos una letra minúscula", "password_digit": "la password debe contener al menos un dígito", "password_special_char": "la password debe contener al menos un carácter especial (!@#$%^&*)", "timezone_required": "la timezone es requerida", "timezone_invalid": "la timezone no es una zona horaria IANA válida", "name_required": "el name es requerido", "name_too_long": "el name no debe exceder 255 caracteres", "type_invalid": "el type debe ser uno de: BOOLEAN, COUNTER, VALUE", "frequency_invalid": "la frequency debe ser una de: DAILY, WEEKLY, MONTHLY", "specific_days_required": "specific_days es requerido para frecuencia WEEKLY", "specific_days_invalid": "specific_days debe contener valores entre 0-6 (0=Domingo, 6=Sábado)", "specific_dates_required": "specific_dates es requerido para frecuencia MONTHLY", "specific_dates_invalid": "specific_dates debe contener valores entre 1-31", "target_value_required": "target_value es requerido para tipo VALUE", "target_value_positive": "target_value debe ser positivo" }, "emails": { "verify_email_subject": "Verifica tu dirección de correo electrónico", "verify_email_title": "¡Bienvenido! Por favor verifica tu correo electrónico", "verify_email_body": "Gracias por registrarte. Por favor haz clic en el enlace a continuación para verificar tu dirección de correo electrónico:", "verify_email_link": "Verificar correo electrónico", "verify_email_expiry": "Este enlace expirará en 24 horas.", "verify_email_ignore": "Si no creaste una cuenta, puedes ignorar este correo de forma segura.", "resend_verification_subject": "Verifica tu dirección de correo electrónico", "resend_verification_title": "Verifica tu dirección de correo electrónico", "resend_verification_body": "Por favor haz clic en el enlace a continuación para verificar tu dirección de correo electrónico:", "resend_verification_link": "Verificar correo electrónico", "resend_verification_expiry": "Este enlace expirará en 24 horas.", "resend_verification_ignore": "Si no solicitaste esto, puedes ignorar este correo de forma segura.", "password_reset_subject": "Solicitud de restablecimiento de contraseña", "password_reset_title": "Solicitud de restablecimiento de contraseña", "password_reset_body": "Has solicitado restablecer tu contraseña. Por favor haz clic en el enlace a continuación:", "password_reset_link": "Restablecer contraseña", "password_reset_expiry": "Este enlace expirará en 1 hora.", "password_reset_ignore": "Si no solicitaste esto, puedes ignorar este correo de forma segura.", "welcome_subject": "¡Bienvenido a Apocapoc!", "welcome_title": "¡Bienvenido a Apocapoc!", "welcome_body": "Tu correo electrónico ha sido verificado exitosamente. Ya puedes comenzar a usar todas las funcionalidades de Apocapoc.", "welcome_enjoy": "¡Disfruta construyendo mejores hábitos!" } }