La API del Túnel Subfluvial es una interfaz REST construida con Node.js, Express 5 y TypeScript, respaldada por una base de datos PostgreSQL. Expone todos los recursos necesarios para gestionar visitas guiadas, usuarios, estadísticas, configuración, auditoría e instituciones a través de rutas prefijadas enDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/JuanM84/gestor-visitas/llms.txt
Use this file to discover all available pages before exploring further.
/api/. Todos los endpoints, salvo el inicio de sesión, requieren autenticación mediante JWT Bearer token.
URL base y configuración de entorno
El servidor escucha en el puerto definido por la variable de entornoPORT. Si no está definida, usa el puerto 3000 por defecto.
| Variable de entorno | Propósito | Valor por defecto |
|---|---|---|
PORT | Puerto en que escucha el servidor | 3000 |
FRONTEND_URL | Origen permitido por CORS | http://localhost:5173 |
JWT_SECRET | Clave secreta para firmar los tokens JWT | (requerida) |
JWT_EXPIRY | Duración del token JWT | 24h |
DATABASE_URL | URL de conexión completa a PostgreSQL (p. ej. en Render). Si está definida, tiene precedencia sobre las variables individuales. | (opcional si se usan las vars individuales) |
DB_USER | Usuario de PostgreSQL | postgres |
DB_HOST | Host del servidor PostgreSQL | localhost |
DB_NAME | Nombre de la base de datos | tunel_subfluvial |
DB_PASSWORD | Contraseña del usuario de PostgreSQL | (requerida en local) |
DB_PORT | Puerto de PostgreSQL | 5432 |
JWT_SECRET es obligatoria; sin ella el servidor rechazará todas las peticiones autenticadas. Para la base de datos, define DATABASE_URL (entornos cloud) o las variables individuales DB_USER, DB_HOST, DB_NAME, DB_PASSWORD y DB_PORT (entorno local).Autenticación
La API usa JSON Web Tokens (JWT) transmitidos como Bearer token en la cabeceraAuthorization. El único endpoint público es POST /api/auth/login; todos los demás requieren un token válido.
id, nombre y rol del usuario. La duración del token se controla con la variable JWT_EXPIRY (por defecto 24h). Consulta la página de Autenticación para el flujo completo.
Formato de las peticiones y respuestas
Todas las peticiones y respuestas usanapplication/json. Incluye siempre la cabecera Content-Type en las peticiones con cuerpo.
Formato de error estándar
Cuando una petición falla, la API devuelve un objeto JSON con una sola claveerror:
Formato de éxito
La estructura de la respuesta exitosa varía según el endpoint. Consulta la documentación de cada grupo de rutas para los esquemas específicos.Códigos de estado HTTP
| Código | Significado | Cuándo se usa |
|---|---|---|
200 OK | Éxito | Petición procesada correctamente |
201 Created | Recurso creado | POST que crea un nuevo recurso |
400 Bad Request | Petición inválida | Campos requeridos ausentes o datos incorrectos |
401 Unauthorized | No autenticado | Token ausente, inválido o expirado |
403 Forbidden | Sin permisos | El rol del usuario no está autorizado |
404 Not Found | No encontrado | El recurso solicitado no existe |
500 Internal Server Error | Error del servidor | Error inesperado en el servidor |
Configuración CORS
El servidor tiene CORS habilitado para el origen configurado enFRONTEND_URL. Los métodos y cabeceras permitidos son:
- Métodos:
GET,POST,PUT,PATCH,DELETE,OPTIONS - Cabeceras:
Content-Type,Authorization
Control de acceso por rol
La API implementa control de acceso basado en roles (RBAC) con dos roles disponibles:| Rol | Descripción |
|---|---|
Admin | Acceso completo a todos los endpoints, incluyendo gestión de usuarios, estadísticas y configuración |
Guía | Acceso limitado; puede gestionar visitas y recursos propios de su función |
verificarRol protege los endpoints exclusivos de administradores. Si un usuario con rol Guía intenta acceder a un recurso reservado para Admin, recibirá una respuesta 403 Forbidden:
Health check
Usa este endpoint para verificar que el servidor está en línea sin necesidad de autenticación.GET /api/health
Grupos de endpoints disponibles
Autenticación
Inicio de sesión y obtención del token JWT. Único endpoint público de la API.
Visitas
Creación, consulta, modificación y cancelación de visitas guiadas al túnel.
Gestores
Administración del personal gestor: listado, alta, actualización y baja.
Usuarios
Gestión de usuarios del sistema, incluyendo cambio de contraseña y activación.
Estadísticas y Exportación
Informes estadísticos por rango de fechas y exportación de datos en distintos formatos.
Configuración
Lectura y escritura de parámetros del sistema, como el timeout de sesión.
Días Inhábiles
Gestión del calendario de días en los que no se realizan visitas.
Instituciones
Alta y listado de instituciones educativas o grupos visitantes registrados.
Auditoría
Consulta del registro de auditoría de acciones realizadas en el sistema.