Basket
Basket stores the items that the user wants to purchase. Users can have multiple active baskets with different segment_remote_id. Users can not add products to the basket other than its own division.
After finishing the shopping, the user can name and save the basket in order to create a quotation later. Upon saving the basket, the status of the basket changes to draft. Users can load the basket any time and continue shopping.
The basket becomes submitted when the user issues a quotation request.
Add Product to Basket
Increase quantity if product is already in the basket, otherwise query commerce api over product_remote_id to get product details and add it.
Example Request
curl --request POST --location 'https://{COMMERCE_URL}/b2b/basket/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token {token}' \
--data '{
"product_remote_id": 1,
"division": 10,
"quantity": 3
}'
Basket items are grouped by product_remote_id which is the id information of the product in the Commerce app. divisions list contains the divisions that the product is added for. total_amount in the first level is the total amount of the basket item. total_amount in basket_items is the total amount of the product of all divisions.
Example Response (200 OK)
{
"id": 7,
"total_amount": "81.65",
"total_quantity": 6,
"basket_items": [
{
"total_amount": "31.65",
"price": "10.55",
"quantity": 3,
"divisions": [
{
"id": 11,
"name": "sub",
"erp_code": "ERP02",
"quantity": 2
},
{
"id": 10,
"name": "main",
"erp_code": "ERP01",
"quantity": 1
}
],
"product": {
"sku": "SKU01"
},
"product_remote_id": 1
},
{
"total_amount": "40.00",
"price": "20.00",
"quantity": 2,
"divisions": [
{
"id": 11,
"name": "sub",
"erp_code": "ERP02",
"quantity": 2
}
],
"product": {
"sku": "SKU02"
},
"product_remote_id": 2
},
{
"total_amount": "10.00",
"price": "10.00",
"quantity": 1,
"divisions": [
{
"id": 10,
"name": "main",
"erp_code": "ERP01",
"quantity": 1
}
],
"product": {
"sku": "SKU03",
"name": "product name",
"price": "10.00",
"currency": "try",
"variants": {
"color": "red"
},
"product_image": "http://example.com/image.jpg"
},
"product_remote_id": 3
}
],
"segment_remote_id": null
}
Remove/Update Product From Basket
Remove or update the product in the basket. If quantity is set to 0, the product is removed from the basket.
Example Request
curl --request PUT --location '{B2B_Backend_URL}/api/v1/basket/' \
--header 'Authorization: Token {Token}' \
--header 'Content-Type: application/json' \
--data '{
"product_remote_id": 1,
"division": 13,
"quantity": 0
}'
Example Response (200 OK)
{
"id": 11,
"total_amount": "61.10",
"total_quantity": 4,
"basket_items": [
{
"total_amount": "21.10",
"price": "10.55",
"quantity": 2,
"divisions": [
{
"id": 14,
"name": "sub",
"erp_code": "ERP02",
"quantity": 2
}
],
"product": {
"sku": "SKU01"
},
"product_remote_id": 1
},
{
"total_amount": "40.00",
"price": "20.00",
"quantity": 2,
"divisions": [
{
"id": 14,
"name": "sub",
"erp_code": "ERP02",
"quantity": 2
}
],
"product": {
"sku": "SKU02"
},
"product_remote_id": 2
}
],
"segment_remote_id": null
}
List Basket
List active basket of the user.
Example Request
curl --request GET --location '{B2B_Backend_URL}/api/v1/basket/' \
--header 'Authorization: Token {Token}' \
Example Response (200 OK)
{
"id": 13,
"total_amount": "71.65",
"total_quantity": 5,
"basket_items": [
{
"total_amount": "31.65",
"price": "10.55",
"quantity": 3,
"divisions": [
{
"id": 17,
"name": "sub",
"erp_code": "ERP02",
"quantity": 2
},
{
"id": 16,
"name": "main",
"erp_code": "ERP01",
"quantity": 1
}
],
"product": {
"sku": "SKU01"
},
"product_remote_id": 1
},
{
"total_amount": "40.00",
"price": "20.00",
"quantity": 2,
"divisions": [
{
"id": 17,
"name": "sub",
"erp_code": "ERP02",
"quantity": 2
}
],
"product": {
"sku": "SKU02"
},
"product_remote_id": 2
}
],
"segment_remote_id": null
}
Delete Basket Item
Delete the basket items that match the given product_remote_id from the basket.
Example Request
curl --request DELETE --location '{B2B_Backend_URL}/api/v1/basket/' \
--header 'Authorization: Token {Token}' \
--header 'Content-Type: application/json' \
--data '{
"product_remote_id": 2
}'
Example Response (200 OK)
{
"id": 32,
"total_amount": "0.00",
"total_quantity": 0,
"basket_items": [],
"segment_remote_id": null
}
List Draft Baskets
List draft baskets of the user.
Example Request
curl --request GET --location '{B2B_Backend_URL}/api/v1/basket/drafts/' \
--header 'Authorization: Token {Token}' \
Example Response (200 OK)
[
{
"id": 18,
"name": null,
"total_amount": 0,
"total_quantity": 0
},
{
"id": 17,
"name": null,
"total_amount": 0,
"total_quantity": 0
}
]
Save Basket
Save the basket with the given name. Saved baskets are changed to draft status.
Example Request
curl --request POST --location '{B2B_Backend_URL}/api/v1/basket/save/' \
--header 'Authorization: Token {Token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "Basket 1"
}'
Load Basket
Load the basket with the given id. Loaded baskets are changed to active status.
Example Request
curl --request POST --location '{B2B_Backend_URL}/api/v1/basket/<basket_id>/load/' \
--header 'Authorization: Token {Token}' \
--header 'Content-Type: application/json' \
--data '{}'
Import Basket
Allows bulk addition of products to the basket by uploading a file.
Example Request
curl --location '{B2B_Backend_URL}/api/v1/basket/bulk-import/' \
--header 'Authorization: Token {token}' \
--form 'filename=@"bulk-import-basket.xls"'
Example Response (200 OK)
{
"message": "File imported successfully."
}
File Fields
Field | Description |
---|---|
product__sku | The SKU information of the product to be added to the basket. |
quantity | The quantity of the product to be added to the basket. |
division__erp_code | The ERP code information of the division. |
Export Basket
Exports products added to the basket as a file. Returns a cache key to track the export status.
Request Parameters
Parameter | Description |
---|---|
fields | Specifies the fields to be included in the export file. Available fields: productsku, division, divisionerp_code, division__name, price, quantity, product_remote_id |
format | Specifies the file format for the export. Acceptable values are csv and xls . The default is xls . |
status_cache_key | A query parameter to track the status of the file export using the cache key returned from the initial request. |
Example Request
curl --location '{B2B_Backend_URL}/api/v1/basket/?fields=division__erp_code
&fields=product__sku
' \
--header 'Authorization: Token {token}'
Example Response (200 OK)
{
"cache_key": "beacaa8ba65571e3840e28a11f17481e"
}
Export File Status
Checks the status of an export file using the cache key obtained from the export request. Provides information on whether the file is ready for download.
Example Request
curl --location '{B2B_Backend_URL}/api/v1/basket/?status_cache_key=8381f01436160bb756c805c5e3c25358' \
--header 'Authorization: Token {token}'
Example Response
{
"is_ready": true,
"url": "{url}/export_file/beacaa8ba65571e3840e28a11f17481e.xls",
"status": "completed"
}
Response Parameters
Field | Description |
---|---|
is_ready | Indicates whether the file is ready for download (true or false ). |
url | The URL to download the exported file once it is ready. |
status | Provides the current status of the export process (e.g., waiting , completed ). |