Bol Create Product
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 create product on Bol. We want all triggers, validations and standardizations which are not mentioned here to be a per Product Listing general requirements
The trigger for Product Creation is: Product Account > Product Status = “Product not created”Product Account > List / Update the Whole Item = PendingPlease note we can push up to 10 products at the same time.
API Call: POST https://api.bol.com/retailer/content/products
API Docs: https://api.bol.com/retailer/public/redoc/v9/retailer.html#tag/Product-Content/operation/post-product-content
Sample Body Request:
{
"language": "nl",
"attributes": [
{
"id": "EAN",
"values": [
{
"value": "3275055840834"
}
]
},
{
"id": "Internal Reference",
"values": [
{
"value": "Test12345"
}
]
},
{
"id": "Name",
"values": [
{
"value": "Test Product Do Not Buy"
}
]
},
{
"id": "Product Classification",
"values": [
{
"value": "Blush"
}
]
},
{
"id": "Brand",
"values": [
{
"value": "Candide"
}
]
},
{
"id": "Description",
"values": [
{
"value": "Test Description"
}
]
}
],
"assets": [
{
"url": "https://bebemama.info/Candide/3275055840834_1.jpg",
"labels": [
"FRONT"
],
{
"url": "https://bebemama.info/Candide/3275055840834_1.jpg",
"labels": [
"OTHER"
]
}
]
}
Mapping:
Bol Field | Hemi Field | Comment | ||
---|---|---|---|---|
language |
Account > Country | If we have different Account > Country from Belgium and Netherlands we want to return an error. | ||
attributes |
||||
id |
Product Account > Item Specifics Name |
OR
Product Account > Variation Specifics Name
OR
{{pre-mapped attribute id}} | pre-mapped attributes added below |
| | | values
| Product Account > Item Specifics Value
OR
Product Account > Variation Specifics Value
OR
{{pre-mapped attribute value}} | pre-mapped attributes added below |
| | assets
| | | |
| | | url
| Product > Main Image OR Product > More Picture ULR
OR
Product Account Bol > Main Image OR Product Account Bol > More Images | |
| | | labels
| “OTHER“
OR
”FRONT” | Only for the leading image we want to push ”FRONT” for the Additional Images we use “OTHER“ |
Pre-mapped attributes
These attributes are part of the taxonomy however we map them to internal fields. Please note if we have added Height for example however the category do not support this attribute we do not want to push it. Which mean all validations against the taxonomy have to be made as well.
Bol Field (Attribute id) | Hemi Field (Attribute value) | Required for MP | Comment |
---|---|---|---|
EAN | Product > EAN |
OR Product Account > Marketplace EAN | Based on taxonomy | Product Account > Marketplace EAN with priority | | Internal Reference | Product > SKU | Based on taxonomy | | | Family Key | Product Account > Variation Group | Based on taxonomy | | | Name | Product Account > Title | Based on taxonomy | | | Product Classification | Product Account > Primary Category ID | Based on taxonomy | | | Brand | Product > Brands OR Product Account > Item Specifics | Based on taxonomy | Product Account > Item Specifics with priority | | Description | Product Account >Description | Based on taxonomy | | | Height | Product > Height | Based on taxonomy | | | Length | Product > Length | Based on taxonomy | | | Weight | Product > Weight | Based on taxonomy | | | Width | Product > Width | Based on taxonomy | |
Sample Response:
{
"processStatusId": "99576230722",
"eventType": "CREATE_PRODUCT_CONTENT",
"description": "Create content for product(s).",
"status": "PENDING",
"createTimestamp": "2023-08-16T14:56:08+02:00",
"links": [
{
"rel": "self",
"href": "https://api.bol.com/shared/process-status/99576230722",
"method": "GET"
}
]
}
The product content creation is asynchronous and we will have to create a new feed in Marketplace Feeds table.
After each successfully sent feed for product content creation 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 “Product Create“ | |
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 |
Based on the response reader afterwards we need to mark the products as Product Created and leave them on pending so we can push the offer. Product Account > Product Status = “Product created”Product Account > List / Update the Whole Item = Pending If any errors are returned we want to store them in Product Account > Update Item Error field after the Bol Order Response Reader
Please note we will also add the feed objects which after processing need to be removed.