cart.addToCart
This method is used to add items to a Cart.
Version
v1
Arguments
This method has the path /cart/<version>/cart.addToCart and
follows the MicroBase API calling conventions.
| Argument | Required | Type | Example | Description |
|---|---|---|---|---|
| cartId | yes | String | H19PRsec | The id of the Cart to add entries. |
| items | yes | Object List | - | The list of entries to add to the Cart. |
Items
| Argument | Required | Type | Example | Description |
|---|---|---|---|---|
| productId | yes | String | By2ZWfAPnV | The Product Id. |
| quantity | yes | Number | 1 | The quantity of product to add to the Cart. |
| warehouseId | yes | String | 001 | The id of the warehouse to pick products. |
Response
Returns the complete cart:
{
"ok": true,
"cart": {
"id": "H19PRsec",
"customerId": "ANON",
"expirationTime": "2016-08-23T15:16:50.407Z",
"tax": 2062.00,
"beforeTax": 9820.05,
"promotions": {
"almostFulfilledPromos": [],
"fulfilledPromos": [],
"ok": true
},
"taxes": {
"beforeTax": 577.65,
"tax": 121.00,
"ok": true
},
"items": [
{
"taxDetail": "IVA 21%",
"id": "Hypqnvqyx",
"productId": "By2ZWfAPnV",
"quantity": 1,
"price" : {
"amount": 577.65,
"currency": "EUR"
},
"title": "001004721736835 - Frigorífico combi Samsung RB31FEJNCSS/EF No Frost (Samsung)",
"reserves": [
{
"id": "ByT5hDcJg",
"warehouseId": "001",
"quantity": 1,
"expirationTime": "2016-10-23T17:20:05.245Z"
}
],
"tax": 121.00,
"beforeTax": 577.65
}
]
}
}Price selection
The Product can have several Prices, each one with diferent fields, some of the mandatory like amount and
currency and some of them optional like country, customerType, channel and validFrom/validUntil.
When adding Products to the Cart the selection of the Price is made calculating a score for each data coincidence:
The currency must always coincide.
if price.country == customer.country => score = score +1
if price.channel == cart.channel => score = score +2
if price.customerType in customer.tags => score = score +4
In case of score tie, a valid period will win.
Errors
Expected errors that this method could return. Some errors return additional data.
| Error | Data | Description |
|---|---|---|
| cart_not_found | - | The Cart was not found |
| max_quantity_per_product_exceeded | productId, requestedQuantity, maxQuantityAllowed | The requested quantity exceeds the limit. |
| max_number_of_entries_exceeded | requestedEntries, maxEntriesAllowed | The requested entries exceeds the limit. |
| product_not_found | productId | The Product was not found. |
| product_discontinued | productId | The Product is discontinued. |
| validation_error | The data causing the error | Some validation error |
Example
curl --request POST \
--url http://localhost:3000/services/cart/v1/cart.addToCart?cartId=H19PRsec \
--header 'authorization: Bearer xxxxx...' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{ "items": [
{"productId": "By2ZWfAPnV", "quantity": 1, "warehouseId": "001"} \
]}' 