Skip to content

Esta documentación detalla los endpoints disponibles en el backend del proyecto, los métodos HTTP que utilizan, los parámetros requeridos y las respuestas esperadas.

Información General

  • Base URL: http://localhost:3000/api (o la URL de producción).
  • Formato de datos: application/json.
  • Autenticación: La mayoría de los endpoints requieren un JWT Token en el header de la petición:
    Authorization: Bearer <token>

1. Autenticación (/auth)

Gestiona el acceso, registro y perfiles de usuario.

MétodoEndpointProtecciónDescripción
POST/auth/loginPúblicoInicia sesión. Retorna el token y datos del usuario.
POST/auth/registerPúblicoRegistro de nuevos usuarios estándar.
POST/auth/register/adminCREATE_ADMINRegistro de administradores (solo personal autorizado).
POST/auth/refreshPúblicoRefresca el token de acceso usando una cookie de sesión.
POST/auth/logoutPúblicoCierra la sesión y limpia las cookies.
GET/auth/meAutenticadoObtiene la información del perfil del usuario actual.

2. Usuarios (/users)

Gestión administrativa y consulta de usuarios.

MétodoEndpointProtecciónDescripción
POST/usersAutenticadoCrea un usuario manualmente.
GET/usersREAD_USERSLista todos los usuarios registrados.
GET/users/:idAutenticadoObtiene detalles de un usuario por su ID.
GET/users/username/:usernameAutenticadoBusca un usuario por su nombre de usuario.
PATCH/users/:id/roleUPDATE_USERSCambia el rol (Admin, User, etc.) de un usuario.

3. Reservaciones (/reservations)

Módulo principal para la gestión de préstamos y espacios.

MétodoEndpointProtecciónDescripción
POST/reservationsCREATE_RESERVATIONSCrea una nueva solicitud de reservación.
GET/reservationsREAD_RESERVATIONSLista paginada de reservaciones (Soporta filtros y búsqueda).
GET/reservations/statsREAD_RESERVATIONSObtiene estadísticas generales de reservaciones.
GET/reservations/:idREAD_RESERVATIONSDetalle de una reservación específica.
PATCH/reservations/:idUPDATE_RESERVATIONSActualiza los datos de una reservación.
PATCH/reservations/:id/stateAutenticadoActualiza únicamente el estado (Aprobado/Rechazado) de la reserva.
DELETE/reservations/:idDELETE_RESERVATIONSElimina una reservación del sistema.

4. Laboratorios (/laboratories)

Gestión de los espacios físicos (Laboratorios).

MétodoEndpointProtecciónDescripción
POST/laboratoriesCREATE_LABORATORIESRegistra un nuevo laboratorio.
GET/laboratoriesREAD_LABORATORIESLista todos los laboratorios disponibles.
GET/laboratories/:idREAD_LABORATORIESDetalle de un laboratorio por ID.
PATCH/laboratories/:idUPDATE_LABORATORIESModifica la información de un laboratorio.
DELETE/laboratories/:idDELETE_LABORATORIESElimina un laboratorio.

5. Clases (/classes)

Gestión de las asignaturas o clases que ocupan los laboratorios.

MétodoEndpointProtecciónDescripción
POST/classesAutenticadoRegistra una nueva clase.
GET/classesAutenticadoLista todas las clases.
GET/classes/:idAutenticadoDetalle de una clase específica.
PATCH/classes/:idAutenticadoActualiza información de una clase.
DELETE/classes/:idAutenticadoElimina una clase.

6. Ocupaciones (/ocupations)

Referencia a la ocupación temporal de los espacios.

MétodoEndpointProtecciónDescripción
POST/ocupationsAutenticadoCrea un registro de ocupación.
GET/ocupationsAutenticadoLista ocupaciones. Permite filtrar por ?reservationId=X.
GET/ocupations/:idAutenticadoDetalle de una ocupación.
PATCH/ocupations/:idAutenticadoActualiza una ocupación.
DELETE/ocupations/:idAutenticadoElimina una ocupación.

7. Eventos (/events)

Gestión de eventos especiales programados.

MétodoEndpointProtecciónDescripción
POST/eventsAutenticadoCrea un nuevo evento.
GET/eventsAutenticadoLista todos los eventos.
GET/events/:idAutenticadoObtiene información de un evento.
PATCH/events/:idAutenticadoModifica los datos de un evento.
DELETE/events/:idAutenticadoElimina un evento.

Modelos de Respuesta Comunes

Éxito (JSON)

La mayoría de los endpoints retornan el objeto creado o solicitado directamente, o un mensaje de confirmación.

json
{
  "id": 1,
  "name": "Laboratorio de Computación I",
  "status": "active"
}

Paginación (Reservaciones)

Para el endpoint GET /reservations, se utiliza un formato paginado:

json
{
  "data": [...],
  "meta": {
    "itemsPerPage": 10,
    "totalItems": 50,
    "currentPage": 1,
    "totalPages": 5
  },
  "links": { "first": "...", "last": "...", "next": "...", "previous": "..." }
}

Errores

  • 401 Unauthorized: No se envió el token o es inválido.
  • 403 Forbidden: El usuario no tiene el permiso (PermissionEnum) necesario.
  • 404 Not Found: El recurso solicitado no existe.
  • 400 Bad Request: Los datos enviados no cumplen con la validación de Zod/DTO.