Carrito - bootcamp-uchile-2026/grupo-4-backend GitHub Wiki

Carrito

Servicio encargado de gestionar el carrito de compras actual de un usuario.

Permite consultar el carrito, agregar productos, actualizar cantidades, eliminar productos y vaciar el carrito completo.

Endpoints

  • GET /carrito - Obtener información del carrito
  • POST /carrito/items - Agregar un producto al carrito
  • PUT /carrito/items/{itemId} - Actualizar la cantidad de un producto
  • DELETE /carrito/items/{itemId} -Eliminar un producto del carrito
  • DELETE /carrito - Vaciar el carrito completo

Modelo

Carrito

Representa el carrito de compras asociado a un usuario.

Campo Tipo Descripción
id number Identificador único del carrito
usuarioId number Identificador del usuario propietario del carrito
items CartItem[] Productos incluidos en el carrito
totalItems number Cantidad total de unidades de productos en el carrito
totalPrice number Precio total de los productos incluidos en el carrito

CartItem

Representa un producto dentro del carrito.

Campo Tipo Descripción
itemId number Identificador único del producto
itemName string Nombre del producto
unitPrice number Precio unitario del producto
quantity number Cantidad de unidades del producto
subtotal number Precio total correspondiente a las unidades del producto

DTOs

CartResponseDto

DTO utilizado para representar el carrito completo en las respuestas.

Campos

Campo Tipo Requerido Descripción
cartId number Sí Identificador único del carrito
userId number Sí Identificador del usuario propietario del carrito
items CartItemResponseDto[] Sí Productos incluidos en el carrito
totalItems number Sí Cantidad total de unidades de productos
totalPrice number Sí Precio total de los productos del carrito

Ejemplo

    {
      "cartId": 1,
      "userId": 1,
      "items": [
        {
          "itemId": 2,
          "itemName": "Vino Los Portales",
          "unitPrice": 19990,
          "quantity": 2,
          "subtotal": 39980
        }
      ],
      "totalItems": 2,
      "totalPrice": 39980
    }

AddCartItemDto

DTO utilizado para agregar un producto al carrito.

Campos

Campo Tipo Requerido Descripción
itemId number Sí Identificador del producto
quantity number Sí Cantidad de unidades del producto a agregar

Ejemplo de Request Body

    {
      "itemId": 2,
      "quantity": 2
    }

UpdateCartItemDto

DTO utilizado para actualizar la cantidad de un producto que ya se encuentra en el carrito.

Campos

Campo Tipo Requerido Descripción
quantity number Sí Nueva cantidad de unidades del producto

Ejemplo de Request Body

    {
      "quantity": 5
    }

CartItemResponseDto

DTO utilizado para representar un producto dentro del carrito en las respuestas.

Campos

Campo Tipo Requerido Descripción
itemId number Sí Identificador del producto
itemName string Sí Nombre del producto
unitPrice number Sí Precio unitario del producto
quantity number Sí Cantidad de unidades del producto
subtotal number Sí Subtotal correspondiente al producto

Ejemplo

    {
      "itemId": 5,
      "itemName": "Vino Los Portales",
      "unitPrice": 19990,
      "quantity": 2,
      "subtotal": 39980
    }

Endpoints detallados

GET /carrito

Obtiene el carrito actual del usuario.

Response — 200 OK

    {
      "cartId": 1,
      "userId": 1,
      "items": [
        {
          "itemId": 2,
          "itemName": "Vino Los Portales",
          "unitPrice": 19990,
          "quantity": 2,
          "subtotal": 39980
        },
        {
          "itemId": 4,
          "itemName": "Vino Los Comensales",
          "unitPrice": 24990,
          "quantity": 1,
          "subtotal": 24990
        }
      ],
      "totalItems": 3,
      "totalPrice": 64970
    }

POST /carrito/items

Agrega un producto al carrito del usuario.

Request Body

Utiliza AddCartItemDto.

    {
      "itemId": 4,
      "quantity": 2
    }

Response — 201 Created

    {
      "itemId": 4,
      "itemName": "Vino Los Comensales",
      "unitPrice": 24990,
      "quantity": 2,
      "subtotal": 49980
    }

Response — 400 Bad Request

Los datos enviados no son válidos.

    {
      "statusCode": 400,
      "message": "Los datos enviados no son válidos."
    }

Response — 404 Not Found

El producto no existe.

    {
      "statusCode": 404,
      "message": "Producto no encontrado."
    }

PUT /carrito/items/{itemId}

Actualiza la cantidad de un producto existente en el carrito.

Path Parameters

Parámetro Tipo Requerido Descripción
itemId number Sí Identificador único del producto

Request Body

Utiliza UpdateCartItemDto.

    {
      "quantity": 2
    }

Response — 200 OK

    {
      "itemId": 4,
      "itemName": "Vino Los Comensales",
      "unitPrice": 24990,
      "quantity": 2,
      "subtotal": 49980
    }

Response — 400 Bad Request

El ID o los datos enviados no son válidos.

    {
      "statusCode": 400,
      "message": "El ID o los datos del producto no son válidos."
    }

Response — 404 Not Found

El producto no existe en el carrito.

    {
      "statusCode": 404,
      "message": "El producto no existe en el carrito."
    }

DELETE /carrito/items/{itemId}

Elimina un producto específico del carrito.

Path Parameters

Parámetro Tipo Requerido Descripción
itemId number Sí Identificador único del producto

Ejemplo de solicitud

    DELETE /carrito/items/1

Response — 204 No Content

El producto fue eliminado 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 del producto no es válido."
    }

Response — 404 Not Found

El producto no existe en el carrito.

    {
      "statusCode": 404,
      "message": "El producto no existe en el carrito."
    }

DELETE /carrito

Vacía todos los productos del carrito del usuario.

No requiere parámetros, ya que el carrito corresponde al usuario actual.

Response — 204 No Content

El carrito fue vaciado correctamente.

No se retorna un cuerpo en la respuesta.

Response — 404 Not Found

El carrito no existe.

    {
      "statusCode": 404,
      "message": "Carrito no encontrado."
    }