Bol Update Offer
Summary of Changes: (The purpose of this table is to keep traceability and Product team to highlight the things that were changed into the scope, based on comments or discussions)
Date | Version | Created / Updated | Notes |
---|---|---|---|
10/05/2023 | v1.0 | Bogomil Pavlov | First publish |
The purpose of this document is to describe how we update offers on Bol. The trigger for the Update Offers is Product Account > List / Update the Whole Item = Pending however once we pick the product for full offer update we want to set Product Account > Update Quantity = Pending and Product Account > Update Price= Pending this ways we will be updating the all the offer details.
We want all triggers, validations and standardizations which are not mentioned here to be as per Product Listing general requirements
API Call: PUT https://api.bol.com/retailer/offers/{offer-id}API Docs:https://api.bol.com/retailer/public/redoc/v9/retailer.html#tag/Offers/operation/put-offer
Mapping: The offer-id is our Product Account > Channel Item ID. The offer updates are product per product
Sample Request:
{
"reference": "REF12345",
"onHoldByRetailer": false,
"unknownProductTitle": "Unknown Product Title",
"fulfilment": {
"method": "FBR",
"deliveryCode": "24uurs-23"
}
}
Mapping:
Bol Field | Bol Description | Required | Hemi Field | Comment | |
---|---|---|---|---|---|
reference |
A user-defined reference that helps you identify this particular offer when receiving data from us. This element can optionally be left empty and has a maximum amount of 20 characters. | Yes | Product > SKU | ||
onHoldByRetailer |
Indicates whether or not you want to put this offer for sale on the bol website. Defaults to false. | Yes | “false“ | Hardcoded as “false“ | |
unknownProductTitle |
In case the item is not known to bol you can use this field to identify this particular product. Note: in case the product is known to bol, the unknown product title will not be stored. | No | Product Account > Title | ||
fulfilment |
|||||
method |
Enum: "FBR" "FBB" |
||||
The fulfilment method. Fulfilled by the retailer (FBR) or fulfilled by bol (FBB). | Yes | Account Bol > Fulfilment Method | |||
deliveryCode |
Enum: "24uurs-23" "24uurs-22" "24uurs-21" "24uurs-20" "24uurs-19" "24uurs-18" "24uurs-17" "24uurs-16" "24uurs-15" "24uurs-14" "24uurs-13" "24uurs-12" "1-2d" "2-3d" "3-5d" "4-8d" "1-8d" "MijnLeverbelofte" "VVB" |
||||
The delivery promise that applies to this offer. This value will only be used in combination with fulfilmentMethod 'FBR'. | Yes | Shipping Method > Shipping Service | We want to use our standard shipping template logic and get the Service from the the actual template. |
In order to get the shipping template we first check the Product Account > Shipping Template if we have already assigned one. If nothing is selected in Product Account we get the default Shipping Template If nothing is selected and no default shipping template is set we want to return an error. |
Sample Response:
{
"processStatusId": "1234567",
"entityId": "987654321",
"eventType": "UPDATE_OFFER",
"description": "Example process status description for processing 987654321.",
"status": "SUCCESS",
"errorMessage": "Example process status error message.",
"createTimestamp": "2018-11-14T09:34:41+01:00",
"links": [
{
"rel": "self",
"href": "https://api.bol.com/shared/process-status/1234567",
"method": "GET"
}
]
}
The product offer update is asynchronous and we will have to create a new feed in Marketplace Feeds table.
After each successfully send feed for offer update we will receive the processStatusId
from the response and need to store it in Marketplace Feeds table with the rest of the details as follows.
Bol Field | Hemi Field | Comment |
---|---|---|
processStatusId |
Marketplace Feed > External ID | |
Marketplace Feed > Account | For which account is the feed generated. | |
eventType |
Marketplace Feed > External Type | |
Marketplace Feed > Type | Hardcoded as “Update Offer “ |
|
createTimestamp |
Marketplace Feed > Submitted Date | When the feed is submitted |
Marketplace Feed > Sent Objects Count | How many products we have pushed in the feed | |
Marketplace Feed > Status | If the external status is “PENDING“ we want to set the status as “Processing“. | |
If the external status is “SUCCESS“ or “FAILURE” or “TIMEOUT” we want to set the status as “Completed“. | ||
status |
Marketplace Feed > External Status |
If any errors are returned we want to store them in Product Account > Update Item Error after the Bol Product Response Reader
Please note we will also add the feed objects which after processing need to be removed.