Las categorías son la estructura organizativa del catálogo de Tiendas Mi Cholo. Cada producto debe pertenecer a una categoría activa, lo que facilita la navegación, el filtrado y la generación de reportes de inventario agrupados. La gestión de categorías está parcialmente restringida: cualquier rol puede consultarlas, pero soloDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/Miercoles-Proyecto/llms.txt
Use this file to discover all available pages before exploring further.
ADMIN puede crearlas, editarlas o desactivarlas.
Lectura: todos los roles autenticados (
ADMIN, VENDEDOR, ALMACENERO) pueden usar GET /api/categorias y GET /api/categorias/{id}.Escritura: solo el rol ADMIN puede ejecutar POST, PUT y DELETE. Cualquier otro rol recibirá 403 Forbidden en estas operaciones.Campos de la Categoría
| Campo | Tipo | Requerido | Validación | Descripción |
|---|---|---|---|---|
nombre | String | ✅ | max=100, único | Nombre descriptivo de la categoría |
descripcion | String | ⬜ | max=300 | Detalle o propósito de la categoría |
activo | Boolean | — | default=true | Estado del registro (manejado por la API) |
Endpoints
Listar categorías activas
activo = true.
Respuesta 200 OK
La entidad
Categoria no incluye campo updatedAt. Solo se persiste createdAt en la primera inserción.Obtener categoría por ID
ID interno de la categoría.
404 Not Found:
Crear categoría
ADMIN
nombre debe ser único en la tabla. Si ya existe una categoría con ese nombre (incluso si está inactiva), la solicitud fallará.
Respuesta 200 OK: objeto Categoria creado con su id y createdAt.
Actualizar categoría
ADMIN
ID de la categoría a actualizar.
nombre y descripcion. El campo activo no cambia con este endpoint.
Respuesta 200 OK: objeto Categoria actualizado.
Eliminar categoría (baja lógica)
ADMIN
ID de la categoría a desactivar.
activo = false. La categoría no se elimina de la base de datos; los productos ya asociados conservan la referencia. La categoría desaparece del listado activo, pero los productos activos que la referencian siguen operativos.
Respuesta 204 No Content — sin cuerpo.
Relación con Productos
Las categorías son un requisito directo al trabajar con el catálogo de productos:- Al crear un producto (
POST /api/productos), el campocategoriaIdes obligatorio y debe apuntar a una categoría conactivo = true. - Al importar productos en lote (
POST /api/productos/importar), si el nombre de categoría incluido en el CSV/JSON no existe, el sistema puede auto-crear la categoría por nombre antes de vincular el producto. - En el reporte de inventario PDF (
GET /api/reportes/inventario), los productos se muestran con el nombre de su categoría en la columna correspondiente.
Flujo de Creación de una Categoría
Verificar duplicados
Consulta
GET /api/categorias y verifica que no exista ya una categoría con el mismo nombre. El campo nombre tiene restricción de unicidad en base de datos.Crear la categoría
Envía
POST /api/categorias con nombre (obligatorio) y descripcion (opcional). Guarda el id devuelto.Respuestas de Error Comunes
| Código | Causa |
|---|---|
400 Bad Request | Nombre vacío o nombre duplicado en la tabla |
401 Unauthorized | Token JWT ausente, inválido o expirado |
403 Forbidden | El token pertenece a un rol distinto de ADMIN (en POST, PUT, DELETE) |
404 Not Found | El id no existe en la base de datos |