Todos los endpoints de autenticación se encuentran bajo el prefijoDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/camiloivcode/biblioteca-la-palabra/llms.txt
Use this file to discover all available pages before exploring further.
/api/auth. La mayoría son públicos y no requieren token. Las excepciones son GET /api/auth/me y POST /api/auth/logout, que requieren un Authorization: Bearer <accessToken> válido en el encabezado de la solicitud.
Formato de respuesta estándar
Todos los endpoints devuelven una envoltura JSON consistente:POST /api/auth/login
Autenticación requerida: No Autentica a un usuario con su correo electrónico y contraseña. Si las credenciales son válidas y la cuenta está activa, devuelve unaccessToken de corta duración (para adjuntar en cada solicitud subsiguiente) y un refreshToken de larga duración (para renovar el access token).
Request body
Correo electrónico del usuario. Debe ser un email válido. Se normaliza automáticamente a minúsculas.
Contraseña del usuario. No puede estar vacía.
Response
true si la operación fue exitosa."Inicio de sesión exitoso"Ejemplo
Errores
| Código | Motivo |
|---|---|
400 | Body inválido o campos faltantes. |
401 | Credenciales incorrectas (email o contraseña inválidos). |
403 | La cuenta está desactivada. Contactar al administrador. |
422 | Error de validación: el email no tiene formato válido o la contraseña está vacía. |
POST /api/auth/refresh
Autenticación requerida: No Renueva elaccessToken utilizando un refreshToken válido. El usuario asociado al token debe existir y tener la cuenta activa para que la renovación sea exitosa.
Request body
El refresh token previamente obtenido en el endpoint de login. Si se omite, se devuelve un error
400 inmediatamente.Response
true si la operación fue exitosa."Token renovado"Ejemplo
Errores
| Código | Motivo |
|---|---|
400 | refreshToken ausente en el body. |
401 | El refresh token es inválido, está expirado, o el usuario asociado fue desactivado. |
GET /api/auth/me
Autenticación requerida: Sí —Authorization: Bearer <accessToken>
Devuelve el perfil del usuario autenticado actualmente. El ID del usuario se extrae directamente del JWT decodificado por el middleware de autenticación. La contraseña nunca se incluye en la respuesta.
Response
true si la operación fue exitosa."Operación exitosa"Ejemplo
Errores
| Código | Motivo |
|---|---|
401 | Token ausente, inválido o expirado. |
POST /api/auth/logout
Autenticación requerida: Sí —Authorization: Bearer <accessToken>
Cierra la sesión del usuario autenticado. No requiere body. El cliente debe descartar los tokens almacenados localmente tras recibir la respuesta exitosa.
Request body
No se requiere body.Response
true si la operación fue exitosa."Sesión cerrada correctamente"Siempre
null.Ejemplo
Errores
| Código | Motivo |
|---|---|
401 | Token ausente, inválido o expirado. |
POST /api/auth/forgot-password
Autenticación requerida: No Inicia el flujo de recuperación de contraseña. Si el correo electrónico existe en el sistema, se envía un enlace de restablecimiento al email registrado. La respuesta nunca revela si el email existe o no para proteger la privacidad de los usuarios.El enlace de recuperación tiene una validez de 1 hora a partir del momento en que se genera. El envío del correo se realiza a través del servidor SMTP configurado en las variables de entorno del backend.
Request body
Correo electrónico asociado a la cuenta. Debe ser un email válido. Se normaliza automáticamente.
Response
true siempre (independientemente de si el email existe)."Si el correo existe en el sistema, recibirás un enlace de recuperación"Siempre
null.Ejemplo
Errores
| Código | Motivo |
|---|---|
422 | El email no tiene formato válido. |
POST /api/auth/reset-password
Autenticación requerida: No Restablece la contraseña de un usuario usando el token de recuperación recibido por email. El token es de un solo uso y expira 1 hora después de su generación. Internamente, el token recibido se hashea con SHA-256 antes de compararse con el registro en la base de datos.Request body
Token de recuperación recibido en el enlace enviado por email. No puede estar vacío.
Nueva contraseña para la cuenta. Debe tener al menos 6 caracteres.
Response
true si la contraseña fue actualizada correctamente."Contraseña actualizada correctamente"Siempre
null.Ejemplo
Errores
| Código | Motivo |
|---|---|
400 | El token es inválido, ya fue usado, o ha expirado (más de 1 hora). |
422 | La nueva contraseña tiene menos de 6 caracteres, o el token está ausente. |
POST /api/auth/register-request
Autenticación requerida: No Envía una solicitud de registro al administrador de la biblioteca. Este endpoint no crea una cuenta de usuario. Su único efecto es disparar un correo electrónico de notificación al administrador con los datos del solicitante. El administrador deberá crear la cuenta manualmente.Este endpoint es ideal para bibliotecas que requieren aprobación manual antes de permitir el acceso al sistema. El envío del correo depende de la configuración SMTP del entorno.
Request body
Nombre del solicitante. Se aplica trim automático. No puede estar vacío.
Correo electrónico de contacto del solicitante. Debe ser un email válido. Se normaliza automáticamente.
Número de teléfono opcional del solicitante. Se aplica trim automático.
Mensaje opcional del solicitante (p. ej. motivo de la solicitud). Se aplica trim automático.
Response
true si la solicitud fue procesada."Tu solicitud ha sido enviada. El administrador se comunicará contigo."Siempre
null.Ejemplo
Errores
| Código | Motivo |
|---|---|
422 | El nombre está vacío o el email no tiene formato válido. |