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."
}