Los endpoints de Visitas son el núcleo del sistema de gestión de visitas al Túnel Subfluvial. Cubren desde el dashboard operativo diario hasta el historial completo, validación de capacidad y transiciones de estado. Todos los endpoints requieren un encabezadoDocumentation 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.
Authorization: Bearer <token> válido.
GET /api/visitas
Devuelve todas las visitas agendadas para un día específico. Es el endpoint usado por el dashboard operativo. Si no se proporcionafecha, el servidor usa la fecha actual.
Forma de la respuesta: { fecha, total, data: [...visitas] }
Fecha objetivo en formato
YYYY-MM-DD. Por defecto usa la fecha actual del servidor si se omite.La fecha consultada, en formato
YYYY-MM-DD.Cantidad total de visitas encontradas para esa fecha.
Array de objetos de visita para el día solicitado.
| Estado | Significado |
|---|---|
200 | Éxito — lista de visitas devuelta |
401 | Token ausente o inválido |
500 | Error interno del servidor |
GET /api/visitas/rango
Devuelve todas las visitas que caen dentro de un rango de fechas. Los parámetrosdesde y hasta son obligatorios; omitir cualquiera devuelve un error 400. La respuesta es un array plano de objetos de visita.
Inicio del rango en formato
YYYY-MM-DD.Fin del rango en formato
YYYY-MM-DD (inclusive).Array plano de objetos de visita dentro del rango solicitado.
| Estado | Significado |
|---|---|
200 | Éxito — array de visitas devuelto |
400 | Falta el parámetro desde o hasta |
401 | Token ausente o inválido |
500 | Error interno del servidor |
GET /api/visitas/historial
Devuelve el historial completo de visitas en forma paginada. Destinado a la vista “Visitantes e Instituciones”. Los resultados están ordenados cronológicamente; usápage y pageSize para navegar por conjuntos de datos grandes.
Número de página a recuperar. Por defecto
1.Cantidad de registros por página. Por defecto
50.Array de objetos de visita para la página solicitada.
Cantidad total de visitas en todas las páginas.
Número de página actual devuelto.
Tamaño de página usado en esta respuesta.
| Estado | Significado |
|---|---|
200 | Éxito — historial paginado devuelto |
401 | Token ausente o inválido |
500 | Error interno del servidor |
GET /api/visitas/calendario
Devuelve datos de ocupación por día para un mes completo, utilizado para renderizar la vista de calendario mensual. Por defecto usa el año y mes actuales si no se proporcionan parámetros. La respuesta es un objeto indexado por número de día (1–31).
Año en cuatro dígitos (ej.
2025). Por defecto el año actual.Número de mes de
1 (enero) a 12 (diciembre). Por defecto el mes actual.Objeto indexado por número de día. Cada clave es un entero del
1 al 31; cada valor contiene visitas (personas), grupos, estado ('parcial', 'lleno' o 'inhabilitado') y texto descriptivo.| Estado | Significado |
|---|---|
200 | Éxito — datos de ocupación mensual devueltos |
401 | Token ausente o inválido |
500 | Error interno del servidor |
GET /api/visitas/:id
Devuelve el detalle completo de una visita, incluyendo datos del gestor, grupo e institución asociados. Devuelve404 si no existe ninguna visita con el ID indicado.
El identificador único de la visita.
Identificador único de la visita.
Fecha de la visita en formato
YYYY-MM-DD.Tipo de visita:
Salón de visitas o Salón + Sala de Comando.Estado actual de la visita:
Agendada, Cancelada o Realizada.Objeto gestor anidado con datos de contacto.
Detalles del grupo incluyendo nombre de institución y cantidad de visitantes.
| Estado | Significado |
|---|---|
200 | Éxito — detalle completo de la visita devuelto |
401 | Token ausente o inválido |
404 | No se encontró ninguna visita con ese ID |
POST /api/visitas
Registra una nueva visita en el sistema. El servicio ejecuta todas las validaciones de negocio —días inhábiles, límite de aforo diario y solapamiento de horario— antes de confirmar la inserción en una transacción de base de datos. El cuerpo de la solicitud tiene tres secciones:visita (datos de la cita), grupo (información del grupo visitante) y gestor_id o nuevoGestor (coordinador de la visita).
Sección visita:
Fecha programada en formato
YYYY-MM-DD.Hora de inicio de la visita (ej.
"09:00").Tipo de visita:
Salón de visitas o Salón + Sala de Comando.Cantidad esperada de visitantes. Debe ser un número mayor a cero.
Indica si la visita incluye cruce del túnel. Por defecto
false.Indica si el grupo requiere accesibilidad. Por defecto
false.Detalle de accesibilidad requerida. Obligatorio si
tiene_discapacidad es true.grupo — para grupos tipo Institución:
Debe ser
"Institución".Nivel educativo del grupo. Valores permitidos:
Infantes, Primario, Secundario, Terciario, Universitario, Adultos Mayores.ID de una institución existente. Requerido si no se envía
nuevaInstitucion.Objeto con
nombre (requerido) y campos opcionales telefono, email, localidad, provincia, pais para crear una institución nueva.Notas opcionales sobre el grupo.
grupo — para grupos tipo Particulares:
Debe ser
"Particulares".Tipo de grupo:
Menores, Adultos o Mixto.Nombre del grupo.
Teléfono de contacto (ej.
0343-4000000).Email de contacto.
Localidad del grupo.
Provincia del grupo.
País del grupo. Por defecto
"Argentina".Notas opcionales sobre el grupo.
ID de un gestor existente. Requerido si no se envía
nuevoGestor.Objeto con
nombre (requerido) y campos opcionales empresa_institucion, telefono, email, localidad, provincia, pais para crear un gestor nuevo en la misma transacción.Mensaje de confirmación:
"Visita registrada con éxito".El ID de la visita recién creada.
| Estado | Significado |
|---|---|
201 | Visita creada — devuelve { mensaje, visita_id } |
400 | Validación fallida: día inhábil, aforo superado, datos inválidos |
401 | Token ausente o inválido |
PUT /api/visitas/:id
Edita los datos de una visita existente. Si se modificanfecha, hora_inicio o cantidad_personas, el servicio re-ejecuta todas las validaciones de capacidad y disponibilidad antes de persistir. Los valores de estado inválidos son rechazados a nivel de controller antes de llegar al servicio.
El identificador único de la visita a actualizar.
Nueva fecha de la visita en formato
YYYY-MM-DD.Nueva hora de inicio (ej.
"10:00").Tipo de visita:
Salón de visitas o Salón + Sala de Comando.Nuevo estado: debe ser
Agendada, Cancelada o Realizada.Cantidad de visitantes actualizada.
Indica si la visita incluye cruce del túnel.
Indica si el grupo requiere accesibilidad.
Detalle de accesibilidad actualizado.
Notas actualizadas sobre el grupo.
ID del gestor de reemplazo.
Objeto con
nombre y campos opcionales para crear un gestor nuevo durante la edición.ID de la institución de reemplazo (solo visitas tipo
Institución).Objeto con
nombre y campos opcionales para crear una institución nueva durante la edición.Mensaje de confirmación:
"Visita modificada exitosamente".El objeto de visita completo y actualizado tal como fue persistido en la base de datos.
| Estado | Significado |
|---|---|
200 | Visita actualizada — devuelve { mensaje, visita } |
400 | Valor de estado inválido, conflicto de capacidad u otro error de validación |
401 | Token ausente o inválido |
PATCH /api/visitas/:id/cancelar
Cancela una visita y registra el motivo en el log de auditoría. El campomotivo describe el motivo de la cancelación. Devuelve 404 si la visita no existe y 409 si ya fue cancelada previamente.
El identificador único de la visita a cancelar.
El motivo de la cancelación, almacenado en el log de auditoría.
Mensaje de confirmación:
"Visita cancelada exitosamente".El objeto de visita actualizado con
estado igual a Cancelada.| Estado | Significado |
|---|---|
200 | Visita cancelada — devuelve { mensaje, visita } |
401 | Token ausente o inválido |
404 | "Visita no encontrada" — no existe ninguna visita con ese ID |
409 | "La visita ya se encuentra cancelada" — la visita ya tiene estado Cancelada |
500 | Error inesperado del servidor |