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