Carrito de Compras
Este módulo maneja la gestión del carrito de compras de los usuarios en el sistema AgroMarket.
Endpoints
GET /api/v1/cart
Obtiene el carrito de compras del usuario autenticado.
URL: /api/v1/cart
Método: GET
Headers:
Authorization: Bearer <token>
Respuesta exitosa (200):
{
"user": "507f1f77bcf86cd799439011",
"items": [
{
"productId": "507f1f77bcf86cd799439012",
"quantity": 2,
"product": {
"_id": "507f1f77bcf86cd799439012",
"name": "Manzanas Rojas",
"price": 2.50,
"image": "https://ejemplo.com/manzanas.jpg",
"stock": 50
}
}
]
}
Respuesta con carrito vacío (200):
{
"user": "507f1f77bcf86cd799439011",
"items": []
}
POST /api/v1/cart/add
Agrega un producto al carrito de compras.
URL: /api/v1/cart/add
Método: POST
Headers:
Authorization: Bearer <token>
Content-Type: application/json
Body:
{
"productId": "507f1f77bcf86cd799439012",
"quantity": 2
}
Respuesta exitosa (200):
{
"user": "507f1f77bcf86cd799439011",
"items": [
{
"productId": "507f1f77bcf86cd799439012",
"quantity": 2,
"product": {
"_id": "507f1f77bcf86cd799439012",
"name": "Manzanas Rojas",
"price": 2.50,
"image": "https://ejemplo.com/manzanas.jpg",
"stock": 50
}
}
]
}
Respuesta de error (400):
{
"message": "Cannot add more than 10 items to cart. Current stock is 10."
}
Respuesta de error (404):
{
"message": "Producto no encontrado"
}
DELETE /api/v1/cart/remove
Elimina un producto específico del carrito de compras.
URL: /api/v1/cart/remove
Método: DELETE
Headers:
Authorization: Bearer <token>
Content-Type: application/json
Body:
{
"productId": "507f1f77bcf86cd799439012"
}
Respuesta exitosa (200):
{
"user": "507f1f77bcf86cd799439011",
"items": []
}
Respuesta de error (404):
{
"message": "Carrito no encontrado"
}
POST /api/v1/cart/clear
Elimina todos los productos del carrito de compras.
URL: /api/v1/cart/clear
Método: POST
Headers:
Authorization: Bearer <token>
Respuesta exitosa (200):
{
"message": "Cart cleared"
}
Respuesta de error (404):
{
"message": "Carrito no encontrado"
}
PATCH /api/v1/cart/update
Actualiza las cantidades de múltiples productos en el carrito de compras.
URL: /api/v1/cart/update
Método: PATCH
Headers:
Authorization: Bearer <token>
Content-Type: application/json
Body:
{
"items": [
{
"productId": "507f1f77bcf86cd799439012",
"quantity": 3
},
{
"productId": "507f1f77bcf86cd799439013",
"quantity": 1
}
]
}
Respuesta exitosa (200):
{
"updatedItems": [
{
"productId": "507f1f77bcf86cd799439012",
"quantity": 3,
"product": {
"_id": "507f1f77bcf86cd799439012",
"name": "Manzanas Rojas",
"price": 2.50,
"image": "https://ejemplo.com/manzanas.jpg",
"stock": 50
}
},
{
"productId": "507f1f77bcf86cd799439013",
"quantity": 1,
"product": {
"_id": "507f1f77bcf86cd799439013",
"name": "Plátanos",
"price": 1.80,
"image": "https://ejemplo.com/platanos.jpg",
"stock": 30
}
}
],
"removedItems": []
}
Respuesta de error (400):
{
"message": "Items array is required and cannot be empty."
}
Respuesta de error (404):
{
"message": "Carrito no encontrado"
}
Códigos de Error Comunes
Código | Descripción |
---|---|
400 | Error de validación o stock insuficiente |
401 | Token de autenticación inválido o faltante |
404 | Carrito o producto no encontrado |
500 | Error interno del servidor |
Notas Importantes
- Todos los endpoints requieren autenticación mediante token JWT
- No se puede agregar más productos de los disponibles en stock
- La cantidad debe ser un número entero positivo
- Al actualizar cantidades, se pueden remover productos si la cantidad es 0
- El carrito se crea automáticamente para cada usuario
- Los productos se identifican por su ID único
- Las cantidades se validan contra el stock disponible