Categorías - bootcamp-uchile-2026/grupo-4-backend GitHub Wiki
Categorías
Servicio encargado de gestionar las categorías utilizadas para organizar los productos disponibles en el ecommerce.
El servicio permite consultar, crear, actualizar y eliminar categorías, además de buscar categorías por nombre y consultar las categorías más utilizadas.
Endpoints
- GET /categorias - Obtener lista de categorías con filtro opcional por nombre
- GET /categorias/top - Obtener categorías más utilizadas
- GET /categorias/{id} - Obtener categoría por ID
- POST /categorias - Crear categoría
- PATCH /categorias/{id} - Actualizar categoría
- DELETE /categorias/{id} - Eliminar categoría
Modelo
Categoria
Representa una categoría utilizada para clasificar los productos del catálogo.
| Campo | Tipo | Descripción |
|---|---|---|
| id | number | Identificador único de la categoría |
| nombre | string | Nombre de la categoría |
DTOs
CreateCategoriaDto
DTO utilizado para crear una nueva categoría.
Campos
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| nombre | string | Sí | Nombre de la categoría |
Ejemplo de Request Body
{
"nombre": "Mermeladas"
}
UpdateCategoriaDto
DTO utilizado para actualizar parcialmente una categoría existente.
Hereda los campos de CreateCategoriaDto, pero todos son opcionales.
Ejemplo de Request Body
{
"nombre": "Conservas y Mermeladas"
}
CategoriaResponseDto
DTO utilizado para representar una categoría en las respuestas de la API.
{
"id": 1,
"nombre": "Mermeladas"
}
Endpoints detallados
GET /categorias
Obtiene una lista de categorías, opcionalmente filtradas por nombre.
Query Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| nombre | string | No | Busca categorías cuyo nombre contenga el texto indicado |
Ejemplo de solicitud
GET /categorias?nombre=Mermelada
Response — 200 OK
[
{
"id": 1,
"nombre": "Mermeladas"
},
{
"id": 2,
"nombre": "Mermeladas sin azúcar"
}
]
GET /categorias/top
Obtiene las categorías con mayor cantidad de productos.
Query Parameters
| Parámetro | Tipo | Requerido | Valor por defecto | Descripción |
|---|---|---|---|---|
| limite | number | No | 5 | Cantidad máxima de categorías a retornar |
Ejemplo de solicitud
GET /categorias/top?limite=5
Si no se especifica limite, se utiliza el valor 5.
Response — 200 OK
[
{
"id": 1,
"nombre": "Mermeladas"
},
{
"id": 2,
"nombre": "Conservas"
},
{
"id": 3,
"nombre": "Salsas"
}
]
GET /categorias/{id}
Obtiene una categoría específica mediante su identificador.
Path Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| id | number | Sí | Identificador único de la categoría |
Ejemplo de solicitud
GET /categorias/1
Response — 200 OK
{
"id": 1,
"nombre": "Mermeladas"
}
Response — 400 Bad Request
El ID proporcionado no es válido.
{
"statusCode": 400,
"message": "El ID de la categoría no es válido."
}
Response — 404 Not Found
La categoría no existe.
{
"statusCode": 404,
"message": "Categoría no encontrada."
}
POST /categorias
Crea una nueva categoría.
Request Body
Utiliza CreateCategoriaDto.
{
"nombre": "Mermeladas"
}
Response — 201 Created
{
"id": 1,
"nombre": "Mermeladas"
}
Response — 400 Bad Request
Los datos enviados no son válidos.
{
"statusCode": 400,
"message": "Los datos de la categoría no son válidos."
}
Response — 409 Conflict
Ya existe una categoría con el nombre indicado.
{
"statusCode": 409,
"message": "Ya existe una categoría con el nombre indicado."
}
PATCH /categorias/{id}
Actualiza parcialmente los datos de una categoría existente.
Path Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| id | number | Sí | Identificador único de la categoría |
Request Body
Utiliza UpdateCategoriaDto. Todos los campos son opcionales.
{
"nombre": "Mermeladas Artesanales"
}
Response — 200 OK
{
"id": 1,
"nombre": "Mermeladas Artesanales"
}
Response — 400 Bad Request
El ID o los datos enviados no son válidos.
{
"statusCode": 400,
"message": "El ID o los datos de la categoría no son válidos."
}
Response — 404 Not Found
La categoría no existe.
{
"statusCode": 404,
"message": "Categoría no encontrada."
}
Response — 409 Conflict
Ya existe una categoría con el nombre indicado.
{
"statusCode": 409,
"message": "Ya existe una categoría con el nombre indicado."
}
DELETE /categorias/{id}
Elimina una categoría mediante su identificador.
Path Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| id | number | Sí | Identificador único de la categoría |
Ejemplo de solicitud
DELETE /categorias/1
Response — 204 No Content
La categoría fue eliminada correctamente.
No se retorna un cuerpo en la respuesta.
Response — 400 Bad Request
El ID proporcionado no es válido.
{
"statusCode": 400,
"message": "El ID de la categoría no es válido."
}
Response — 404 Not Found
La categoría no existe.
{
"statusCode": 404,
"message": "Categoría no encontrada."
}