Skip to main content

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

FieldDescription
product__skuThe SKU information of the product to be added to the basket.
quantityThe quantity of the product to be added to the basket.
division__erp_codeThe 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

ParameterDescription
fieldsSpecifies the fields to be included in the export file. Available fields: productsku, division, divisionerp_code, division__name, price, quantity, product_remote_id
formatSpecifies the file format for the export. Acceptable values are csv and xls. The default is xls.
status_cache_keyA 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

FieldDescription
is_readyIndicates whether the file is ready for download (true or false).
urlThe URL to download the exported file once it is ready.
statusProvides the current status of the export process (e.g., waiting, completed).