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.
El módulo de catálogos provee los dos ejes de clasificación que estructuran el fondo bibliográfico de Biblioteca Popular La Palabra: los autores y las categorías. Ambos son entidades de referencia a las que se vinculan los materiales, por lo que mantenerlos limpios y bien definidos impacta directamente en la calidad de las búsquedas, filtros e informes del sistema.
Autores
Modelo
Cada autor se representa con los siguientes campos:
| Campo | Tipo | Requerido | Descripción |
|---|
id | Integer | — | Identificador autoincremental |
nombre | String | ✅ | Nombre(s) del autor |
apellido | String | ✅ | Apellido(s) del autor |
nacionalidad | String | ❌ | País o región de origen (opcional) |
biografia | String | ❌ | Texto libre de presentación biográfica (opcional) |
El campo _count.materiales es calculado y se devuelve en las respuestas de listado e individual para saber cuántos materiales tiene asociados el autor.
Operaciones
| Método | Ruta | Descripción |
|---|
GET | /api/autores | Lista todos los autores. Acepta ?search= para filtrar por nombre, apellido o nacionalidad. |
GET | /api/autores/:id | Obtiene un autor por ID. Incluye la lista completa de sus materiales. |
POST | /api/autores | Crea un nuevo autor. nombre y apellido son obligatorios. |
PUT | /api/autores/:id | Actualiza los datos de un autor existente. |
DELETE | /api/autores/:id | Elimina un autor. Bloqueado si tiene materiales asociados (HTTP 409). |
La combinación nombre + apellido debe ser única en la base de datos (restricción @@unique([nombre, apellido]) en el esquema Prisma). Intentar crear un segundo autor con el mismo nombre completo devolverá un error de restricción de unicidad. Verifica duplicados antes de insertar.
Ejemplo: crear un autor
curl -X POST https://tu-api/api/autores \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"nombre": "Julio",
"apellido": "Cortázar",
"nacionalidad": "Argentina",
"biografia": "Escritor argentino, uno de los maestros del cuento en lengua castellana."
}'
Ejemplo: respuesta al listar autores
{
"success": true,
"data": [
{
"id": 1,
"nombre": "Gabriel",
"apellido": "García Márquez",
"nacionalidad": "Colombia",
"biografia": null,
"_count": { "materiales": 4 }
}
]
}
Categorías
Modelo
| Campo | Tipo | Requerido | Descripción |
|---|
id | Integer | — | Identificador autoincremental |
nombre | String | ✅ | Nombre de la categoría. Debe ser único. |
descripcion | String | ❌ | Descripción libre de la categoría (opcional) |
icono | String | ❌ | Clave de icono Material Symbols (ver lista más abajo) |
Al igual que con los autores, _count.materiales se devuelve calculado en el listado para conocer cuántos materiales pertenecen a cada categoría.
Operaciones
| Método | Ruta | Descripción |
|---|
GET | /api/categorias | Lista todas las categorías ordenadas alfabéticamente. |
GET | /api/categorias/:id | Obtiene una categoría por ID. Incluye la lista de materiales asociados. |
POST | /api/categorias | Crea una nueva categoría. nombre es obligatorio. |
PUT | /api/categorias/:id | Actualiza los datos de una categoría existente. |
DELETE | /api/categorias/:id | Elimina una categoría. Bloqueado si tiene materiales asociados (HTTP 409). |
Iconos disponibles
El campo icono acepta exclusivamente los siguientes 26 valores de la librería Material Symbols. El frontend los muestra en un selector visual al crear o editar una categoría.
Si no se especifica un icono, el esquema usa category como valor por defecto. Cualquier valor fuera de esta lista será rechazado con un error de validación.
menu_book history science lightbulb palette
computer calculate public music_note emoji_events
category book biotech architecture psychology
sports_esports language travel_explore newspaper theater_comedy
pets restaurant sailing stadium volcano
forest
Ejemplo: crear una categoría
curl -X POST https://tu-api/api/categorias \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"nombre": "Astronomía",
"descripcion": "Libros sobre el universo, planetas y exploración espacial.",
"icono": "science"
}'
Seed inicial
Al ejecutar el seed de base de datos, el sistema crea automáticamente los siguientes registros de referencia:
6 categorías por defecto:
| Nombre | Icono |
|---|
| Literatura | menu_book |
| Historia | history |
| Ciencias | science |
| Filosofía | lightbulb |
| Arte | palette |
| Tecnología | computer |
5 autores por defecto:
| Nombre | Apellido | Nacionalidad |
|---|
| Gabriel | García Márquez | Colombia |
| Jorge Luis | Borges | Argentina |
| Isabel | Allende | Chile |
| Mario | Vargas Llosa | Perú |
| Julio | Cortázar | Argentina |
Estos registros sirven como punto de partida para poblar el catálogo. Pueden editarse o eliminarse siempre que no tengan materiales asociados.
Referencia de API
Para la referencia completa de parámetros, esquemas de respuesta y códigos de error consulta los endpoints: