Skip to main content

Documentation 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.

Los endpoints de Usuarios administran las cuentas internas que operan el sistema de gestión de visitas al Túnel Subfluvial. Los usuarios pueden tener el rol Admin o Guía. La mayoría de los endpoints están restringidos al rol Admin; los endpoints de contraseña y perfil permiten a cada usuario gestionar sus propios datos. Todos los requests requieren un encabezado Authorization: Bearer <token> válido.

GET /api/usuarios

Devuelve la lista de todos los usuarios registrados en el sistema. Este endpoint está restringido al rol Admin.
curl -X GET "https://api.example.com/api/usuarios" \
  -H "Authorization: Bearer <token>"
(array)
array
Array de objetos de usuario.
id
number
Identificador único del usuario.
nombre
string
Nombre completo del usuario.
email
string
Dirección de email de acceso.
rol
string
Rol del usuario: Admin o Guía.
activo
boolean
Indica si la cuenta está actualmente activa.
EstadoSignificado
200Éxito — lista completa de usuarios devuelta
401Token ausente o inválido
403El usuario autenticado no tiene el rol Admin
500Error interno del servidor

POST /api/usuarios

Crea un nuevo usuario del sistema. Restringido al rol Admin. El servicio valida la unicidad del email y aplica el hash de la contraseña antes de persistir.
Solo los usuarios Admin pueden crear nuevas cuentas. La contraseña inicial debe establecerse aquí y comunicarse al nuevo usuario por fuera del sistema. El usuario podrá cambiarla luego a través de PUT /api/usuarios/:id/password.
nombre
string
required
Nombre completo del nuevo usuario.
email
string
required
Dirección de email de acceso. Debe ser única en el sistema.
password
string
required
Contraseña inicial en texto plano. Se almacena como hash bcrypt.
rol
string
required
Rol a asignar: Admin o Guía.
mensaje
string
Mensaje de confirmación: "Usuario creado exitosamente".
usuario
object
El objeto del nuevo usuario recién creado (el hash de contraseña no se devuelve).
curl -X POST "https://api.example.com/api/usuarios" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "Martina López",
    "email": "martina.lopez@tunel.gob.ar",
    "password": "SecureP@ss123",
    "rol": "Guía"
  }'
EstadoSignificado
201Usuario creado — devuelve { mensaje, usuario }
400Error de validación (email duplicado, campos requeridos faltantes, etc.)
401Token ausente o inválido
403El usuario autenticado no tiene el rol Admin

PUT /api/usuarios/:id

Actualiza los datos de perfil de un usuario existente. Solo se pueden modificar nombre, email, telefono y rol a través de este endpoint. Los cambios de contraseña deben realizarse mediante PUT /api/usuarios/:id/password. Restringido al rol Admin.
id
string
required
El identificador único del usuario a actualizar.
nombre
string
Nombre completo actualizado.
email
string
Dirección de email actualizada.
telefono
string
Teléfono de contacto actualizado.
rol
string
Rol actualizado: Admin o Guía.
mensaje
string
Mensaje de confirmación: "Usuario actualizado correctamente.".
usuario
object
El objeto de usuario completo y actualizado.
curl -X PUT "https://api.example.com/api/usuarios/5" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "rol": "Admin",
    "telefono": "+54 343 4000001"
  }'
EstadoSignificado
200Usuario actualizado — devuelve { mensaje, usuario }
400Error de validación o del servicio
401Token ausente o inválido
403El usuario autenticado no tiene el rol Admin

PATCH /api/usuarios/:id/desactivar

Desactiva una cuenta de usuario mediante soft-delete, estableciendo activo = false. El usuario se conserva en la base de datos con fines de auditoría pero no puede volver a iniciar sesión. Restringido al rol Admin.
Se aplican dos protecciones integradas. Primero, un Admin no puede desactivar su propia cuenta mientras tiene la sesión activa — el intento devuelve 400 con el mensaje "No podés desactivar tu propia cuenta mientras tenés la sesión activa.". Segundo, el servicio impide desactivar al último Admin activo para evitar el bloqueo total del sistema.
id
string
required
El identificador único del usuario a desactivar.
mensaje
string
Mensaje de confirmación incluyendo el nombre del usuario, ej. "Usuario \"Martina López\" desactivado correctamente".
usuario
object
El objeto de usuario actualizado con activo igual a false.
curl -X PATCH "https://api.example.com/api/usuarios/5/desactivar" \
  -H "Authorization: Bearer <token>"
EstadoSignificado
200Usuario desactivado — devuelve { mensaje, usuario }
400Intento de auto-desactivación, protección del último Admin, o usuario ya inactivo
401Token ausente o inválido
403El usuario autenticado no tiene el rol Admin
404No se encontró ningún usuario con ese ID

PATCH /api/usuarios/:id/reactivar

Reactiva una cuenta de usuario previamente desactivada estableciendo activo = true. Restringido al rol Admin. El usuario reactivado puede iniciar sesión de inmediato.
id
string
required
El identificador único del usuario a reactivar.
mensaje
string
Mensaje de confirmación incluyendo el nombre del usuario, ej. "Usuario \"Martina López\" reactivado correctamente".
usuario
object
El objeto de usuario actualizado con activo igual a true.
curl -X PATCH "https://api.example.com/api/usuarios/5/reactivar" \
  -H "Authorization: Bearer <token>"
EstadoSignificado
200Usuario reactivado — devuelve { mensaje, usuario }
400Usuario ya se encuentra activo ("El usuario ya se encuentra activo")
401Token ausente o inválido
403El usuario autenticado no tiene el rol Admin
404No se encontró ningún usuario con ese ID

PUT /api/usuarios/:id/password

Cambia la contraseña de una cuenta de usuario. El usuario solicitante debe ser el propietario de la cuenta o tener el rol Admin. Se requieren tanto la contraseña actual como la nueva. La contraseña actual se verifica contra el hash almacenado antes de aplicar el cambio.
id
string
required
El identificador único del usuario cuya contraseña se cambia.
passwordActual
string
required
La contraseña actual del usuario en texto plano, para verificación.
nuevaPassword
string
required
La nueva contraseña en texto plano. Se almacenará como hash bcrypt.
mensaje
string
Mensaje de confirmación: "Contraseña actualizada correctamente.".
curl -X PUT "https://api.example.com/api/usuarios/5/password" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "passwordActual": "SecureP@ss123",
    "nuevaPassword": "NuevaP@ss456"
  }'
EstadoSignificado
200Contraseña cambiada — devuelve { mensaje }
400Campos faltantes o contraseña actual incorrecta
401Token ausente o inválido
403El solicitante no es el propietario de la cuenta ni tiene el rol Admin

GET /api/usuarios/:id/perfil

Devuelve el perfil del usuario especificado. Un usuario solo puede ver su propio perfil a menos que tenga el rol Admin. Devuelve 404 si el usuario no se encuentra.
id
string
required
El identificador único del usuario cuyo perfil se desea consultar.
id
number
Identificador único del usuario.
nombre
string
Nombre completo.
email
string
Dirección de email de acceso.
telefono
string
Teléfono de contacto.
rol
string
Rol actual: Admin o Guía.
activo
boolean
Indica si la cuenta está actualmente activa.
curl -X GET "https://api.example.com/api/usuarios/5/perfil" \
  -H "Authorization: Bearer <token>"
EstadoSignificado
200Éxito — perfil del usuario devuelto
401Token ausente o inválido
403El solicitante no es el propietario de la cuenta ni tiene el rol Admin
404No se encontró ningún usuario con ese ID

PUT /api/usuarios/:id/perfil

Permite a un usuario actualizar sus propios datos de contacto. Solo se pueden modificar email y telefono a través de este endpoint. Solo el propietario de la cuenta puede llamar a este endpoint — ni siquiera un Admin puede actualizar el perfil de otro usuario aquí. Para cambiar nombre o rol, usá PUT /api/usuarios/:id.
id
string
required
El identificador único del usuario cuyo perfil se actualiza. Debe coincidir con el ID del usuario autenticado.
email
string
Dirección de email actualizada.
telefono
string
Teléfono de contacto actualizado.
mensaje
string
Mensaje de confirmación: "Perfil actualizado correctamente.".
usuario
object
El objeto de usuario actualizado con los nuevos datos de contacto.
curl -X PUT "https://api.example.com/api/usuarios/5/perfil" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "martina.nuevo@tunel.gob.ar",
    "telefono": "+54 343 4999999"
  }'
EstadoSignificado
200Perfil actualizado — devuelve { mensaje, usuario }
400Error de validación o del servicio
401Token ausente o inválido
403El usuario autenticado no es el propietario de la cuenta

Build docs developers (and LLMs) love