Skip to main content

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

Todos los endpoints bajo /api/reportes son de solo lectura y requieren autenticación con Bearer token. Tanto usuarios ADMIN como BIBLIOTECARIO tienen acceso completo a estos endpoints; no hay restricción de rol.
Incluye el token JWT en el encabezado Authorization en cada solicitud:
Authorization: Bearer <tu_token_jwt>
Sin token, o con uno inválido o expirado, el servidor responde con 401 Unauthorized. Obtén tu token en POST /api/auth/login.

GET /api/reportes/dashboard

Retorna un resumen agregado del estado actual de la biblioteca: conteo de socios, materiales y préstamos, con desglose por subestados. Útil para la pantalla principal del panel de administración.
curl -X GET https://api.biblioteca.com/api/reportes/dashboard \
  -H "Authorization: Bearer <token>"
Respuesta 200 OK
{
  "success": true,
  "message": "Operación exitosa",
  "data": {
    "socios": {
      "total": 3,
      "activos": 3,
      "morosos": 0
    },
    "materiales": {
      "total": 2,
      "disponibles": 1,
      "prestados": 1
    },
    "prestamos": {
      "activos": 1,
      "mora": 0,
      "vencidos": 0,
      "devueltos": 5,
      "hoy": 1,
      "devoluccionesHoy": 0
    }
  }
}
data.socios.total
integer
Total de socios registrados en el sistema, independientemente de su estado.
data.socios.activos
integer
Socios con estado ACTIVO, habilitados para realizar préstamos.
data.socios.morosos
integer
Socios con estado MOROSO. No pueden solicitar nuevos préstamos hasta regularizar su situación.
data.materiales.total
integer
Total de materiales (libros, revistas, etc.) en el catálogo.
data.materiales.disponibles
integer
Materiales con estado DISPONIBLE, listos para ser prestados.
data.materiales.prestados
integer
Materiales con estado PRESTADO, actualmente fuera de la biblioteca.
data.prestamos.activos
integer
Préstamos en curso con estado ACTIVO (dentro del plazo de devolución).
data.prestamos.mora
integer
Préstamos con estado MORA (plazo de devolución vencido y marcados explícitamente como en mora).
data.prestamos.vencidos
integer
Préstamos con estado ACTIVO cuya fechaDevolucion ya pasó pero aún no se marcaron como MORA. Ejecuta PATCH /api/prestamos/actualizar-mora para sincronizarlos.
data.prestamos.devueltos
integer
Total histórico de préstamos con estado DEVUELTO.
data.prestamos.hoy
integer
Préstamos creados (salidos) durante el día de hoy (desde las 00:00:00 hora local).
data.prestamos.devoluccionesHoy
integer
Préstamos devueltos durante el día de hoy.

GET /api/reportes/prestamos-activos

Retorna todos los préstamos actualmente activos o en mora, incluyendo datos del socio y del material asociado. Los resultados se ordenan por fechaDevolucion ascendente, lo que pone primero los préstamos más próximos a vencer (o ya vencidos).
curl -X GET https://api.biblioteca.com/api/reportes/prestamos-activos \
  -H "Authorization: Bearer <token>"
Respuesta 200 OK
{
  "success": true,
  "message": "Operación exitosa",
  "data": [
    {
      "id": 7,
      "estado": "ACTIVO",
      "fechaPrestamo": "2024-06-01T10:00:00.000Z",
      "fechaDevolucion": "2024-06-15T10:00:00.000Z",
      "fechaDevReal": null,
      "socio": {
        "nombre": "Carlos",
        "apellido": "Rodríguez",
        "dni": "12345678"
      },
      "material": {
        "titulo": "Cien años de soledad",
        "tipo": "LIBRO"
      }
    },
    {
      "id": 4,
      "estado": "MORA",
      "fechaPrestamo": "2024-05-10T09:00:00.000Z",
      "fechaDevolucion": "2024-05-24T09:00:00.000Z",
      "fechaDevReal": null,
      "socio": {
        "nombre": "Ana",
        "apellido": "López",
        "dni": "87654321"
      },
      "material": {
        "titulo": "Historia Universal",
        "tipo": "LIBRO"
      }
    }
  ]
}
data[].estado
string
Estado del préstamo. En este endpoint solo aparecen ACTIVO o MORA.
data[].fechaDevolucion
string (ISO 8601)
Fecha límite de devolución pactada. Resultados ordenados por este campo de forma ascendente.
data[].socio
object
Datos del socio: nombre, apellido y dni.
data[].material
object
Datos del material: titulo y tipo (e.g. LIBRO, REVISTA).

GET /api/reportes/socios-morosos

Retorna todos los socios cuyo estado actual es MOROSO, junto con sus préstamos en mora y el total de préstamos históricos.
curl -X GET https://api.biblioteca.com/api/reportes/socios-morosos \
  -H "Authorization: Bearer <token>"
Para obtener datos actualizados, ejecuta primero PATCH /api/prestamos/actualizar-mora. Ese endpoint recorre los préstamos con fechaDevolucion vencida, los marca con estado MORA y actualiza el estado de los socios afectados a MOROSO. Sin esa llamada previa, este reporte puede mostrar información desactualizada si hay préstamos vencidos que aún no fueron procesados.
Respuesta 200 OK
{
  "success": true,
  "message": "Operación exitosa",
  "data": [
    {
      "id": 3,
      "nombre": "Ana",
      "apellido": "López",
      "dni": "87654321",
      "estado": "MOROSO",
      "prestamos": [
        {
          "id": 4,
          "estado": "MORA",
          "fechaDevolucion": "2024-05-24T09:00:00.000Z",
          "material": {
            "titulo": "Historia Universal"
          }
        }
      ],
      "_count": {
        "prestamos": 3
      }
    }
  ]
}
data[].prestamos
array
Préstamos del socio con estado MORA. Incluye id, estado, fechaDevolucion y material.titulo.
data[]._count.prestamos
integer
Total histórico de préstamos del socio (todos los estados combinados).

GET /api/reportes/materiales-populares

Retorna los 10 materiales más prestados del catálogo, ordenados por número de préstamos históricos de mayor a menor. Útil para identificar los títulos con mayor demanda.
curl -X GET https://api.biblioteca.com/api/reportes/materiales-populares \
  -H "Authorization: Bearer <token>"
Respuesta 200 OK
{
  "success": true,
  "message": "Operación exitosa",
  "data": [
    {
      "id": 1,
      "titulo": "Cien años de soledad",
      "autor": "Gabriel García Márquez",
      "tipo": "LIBRO",
      "estado": "DISPONIBLE",
      "_count": {
        "prestamos": 12
      }
    },
    {
      "id": 5,
      "titulo": "Física conceptual",
      "autor": "Paul G. Hewitt",
      "tipo": "LIBRO",
      "estado": "PRESTADO",
      "_count": {
        "prestamos": 8
      }
    }
  ]
}
data[].\_count.prestamos
integer
Número total de veces que el material ha sido prestado (histórico, todos los estados). Determina el orden descendente de los resultados.
data[].estado
string
Estado actual del material. DISPONIBLE indica que puede ser prestado ahora mismo.

GET /api/reportes/historial

Retorna un historial de préstamos filtrable por rango de fechas y estado. Los resultados incluyen datos anidados del socio y del material. Limitado a los últimos 100 registros por solicitud, ordenados por fechaPrestamo descendente.
curl -X GET "https://api.biblioteca.com/api/reportes/historial?estado=DEVUELTO&desde=2024-01-01&hasta=2024-06-30" \
  -H "Authorization: Bearer <token>"

Parámetros de consulta (query params)

estado
string
Filtra por estado del préstamo. Valores válidos: ACTIVO, DEVUELTO, MORA. Si se omite, se retornan préstamos de todos los estados.
desde
string (ISO 8601 date)
Filtra préstamos cuya fechaPrestamo sea mayor o igual a esta fecha. Formato recomendado: YYYY-MM-DD. Ejemplo: desde=2024-01-01
hasta
string (ISO 8601 date)
Filtra préstamos cuya fechaPrestamo sea menor o igual a esta fecha. Formato recomendado: YYYY-MM-DD. Ejemplo: hasta=2024-06-30
Respuesta 200 OK
{
  "success": true,
  "message": "Operación exitosa",
  "data": [
    {
      "id": 10,
      "estado": "DEVUELTO",
      "fechaPrestamo": "2024-05-30T08:00:00.000Z",
      "fechaDevolucion": "2024-06-13T08:00:00.000Z",
      "fechaDevReal": "2024-06-10T16:45:00.000Z",
      "socio": {
        "nombre": "Carlos",
        "apellido": "Rodríguez",
        "dni": "12345678"
      },
      "material": {
        "titulo": "Cien años de soledad",
        "tipo": "LIBRO",
        "isbn": "978-0307474728"
      }
    }
  ]
}
data[].estado
string
Estado del préstamo. Posibles valores: ACTIVO, DEVUELTO, MORA.
data[].fechaPrestamo
string (ISO 8601)
Fecha en que se realizó el préstamo. Campo base para el filtrado por rango y para el orden descendente de los resultados.
data[].fechaDevolucion
string (ISO 8601)
Fecha límite de devolución pactada al momento del préstamo.
data[].fechaDevReal
string (ISO 8601) | null
Fecha real de devolución. Solo tiene valor cuando el estado es DEVUELTO. null si el material aún no fue devuelto.
data[].socio
object
Datos del socio: nombre, apellido y dni.
data[].material
object
Datos del material: titulo, tipo e isbn (puede ser null si el material no tiene ISBN registrado).

Build docs developers (and LLMs) love