Skip to main content
Version: Released

Bill of Material Reference

 

This section describes the Bill of Material (BOM) in JSON format retrieved from iFrame messages in the planner or from the project metadata through web services API. The Bill of Material is used for instance to generate customer specific display of Item List. For compatibility reasons the Bill of Material is versionned. It is recommended to use the most recent version in development phase but to set the version used in production phase.

Refer to Web Services API GET​/projects​/{ID}​/metadata​/{applicationID} to get the Bill Of Material through API.

Notes:
▪ We introduced a BOM versioning in Home application. ▪ In order to have all the available attributes in the BOM, the new version goes from version 1 to 16. ▪ This change is needed to make the BOM structure uniformed between the application.

BOM in iFrame messages

The BOM retrieved from a project through iFrame messages is a JSON object structured with the following sections.

products: array of objects describing products directly inserted in the project; e.g. sofas, beds, chairs, accessories. For individual product description in BOM, see products.

decos: array of objects describing products related to decorations e.g. paint, wallpaper, tile, flooring. For individual decoration description in BOM, see decorations.

bays: array of objects describing products related to bays e.g. openings, doors, windows. For individual bays description in BOM, see bays.

packs: array of objects describing products that are bought by batch. e.g. leg, handle. See packs description.

marketZone: the marketZone to define the catalog that is used for a country in the external configurator.

totalPrice: the total price of the home project.

Structure sample

"products": [
{
(see products description)
},
...
],
"decos": [
{
(see linears description)
},
...
],
"bays": [
{
(see bays description)
},
...
],
"packs": [
{
(see packs description)
},
...
],
"marketZone": (string),
"totalPrice": {
"regular": (number),
"current": (number),
"discountType": (string),
"vatInformation": (string),
"startDate": (string),
"endDate": (string),
"currency": (string)
}
}

products

The attributes below are used to describe a product in the BOM.

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "14562"
referenceProduct referenceString"reference": "chaise_accoudoir_20"
nameProduct nameString"name": "Baker Francis Chairs"
typeIDThe product closed tag ID of the productNumber"typeID": 7
typeFurniture typeString"type": "furniture"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["illustrationProduct"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Baker Francis Chair"
shortDescriptionShort description of the productString"shortDescription": "Chair with several materials",
thumbnailURLLargeProduct thumbnail (size 512 pixels)String"thumbnailURLLarge": "https://.../512.jpg"
thumbnailURLMediumProduct thumbnail (size 256 pixels)String"thumbnailURLMedium": "https://.../256.jpg"
thumbnailURLSmallProduct thumbnail (size 64 pixels)String"thumbnailURLSmall": "https://.../64.jpg"
startDateStart date of the product availability (timestamp)String"startDate": "2016-12-12T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2017-12-18T00:00:00.000Z",
isExpiredTrue if the product was expired at the time of BOM generationBoolean"isExpired": false
brandIDID of the brand where the product is availableNumber"brandID": 1
brandNameBrand nameString"brandName": "BryoForHR"
clientMetadataInformation from the product info of the productString"clientMetadata": {json}
widthProduct width as defined in product informationNumber"width": 400
heightProduct height as defined in product informationNumber"height": 800
depthProduct depth as defined in product informationNumber"depth": 370
priceProduct price if definedPriceStructureSee Price
roomNameCurrent room name of the product.String"roomName": "Living room"
roomTypeCurrent room type of the product.String"roomType": "12"
recognizedBlockThe block product recognized for this product if anyProductStructureSee Block

decos

The attributes below are used to describe a decoration product in the BOM.

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "74450"
referenceProduct referenceString"reference": "oak_parquet"
nameProduct nameString"name": "Oak Parquet"
typeIDThe product closed tag ID of the productNumber"typeID": 355
typeFurniture typeString"type": "material"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["material"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Solid parquet is made from one and the same thickness of noble wood."
energylabelProduct energy label parameterString"energyLabel": "A"
repairabilityIndexProduct repairability index parameterNumber"repairabilityIndex": 5.6
durabilityIndexProduct durability index parameterNumber"durabilityIndex": 8.6
shortDescriptionShort description of the productString"shortDescription": "Oak parquet with different thickness.",
thumbnailURLLargeProduct thumbnail (size 512 pixels)String"thumbnailURLLarge": "https://.../512.jpg"
thumbnailURLMediumProduct thumbnail (size 256 pixels)String"thumbnailURLMedium": "https://.../256.jpg"
thumbnailURLSmallProduct thumbnail (size 64 pixels)String"thumbnailURLSmall": "https://.../64.jpg"
startDateStart date of the product availability (timestamp)String"startDate": "2016-12-12T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2017-12-18T00:00:00.000Z",
isExpiredTrue if the product was expired at the time of BOM generationBoolean"isExpired": false
brandIDID of the brand where the product is availableNumber"brandID": 1
brandNameBrand nameString"brandName": "BryoForHR"
clientMetadataInformation from the product info of the productString"clientMetadata": {json}
squareValue used only for decorations (e.g. calculated square meters of a parquet)Number"square": 26
quantityNumber of the same elementNumber"quantity": 1
materialTagNameThe tag name used to identify the type of the decoration displayed in the item listString"materialTagName": "Hardwoods"
priceProduct price if definedPriceStructureSee Price
roomName(Optional See priceDecoByRoom)Current room name of the decoration product.String"roomName": "Kitchen room"
roomType(Optional See priceDecoByRoom)Current room type of the decoration product.String"roomType": "12"

bays

The attributes below are used to describe a product in the BOM.

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "18962"
referenceProduct referenceString"reference": "fen_4_anthracite_blanc"
nameProduct nameString"name": "Cancun double window"
typeIDThe product closed tag ID of the productNumber"typeID": 252
typeFurniture typeString"type": "opening"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["RemoveFromSearch"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Double window"
shortDescriptionShort description of the productString"shortDescription": "Double window",
thumbnailURLLargeProduct thumbnail (size 512 pixels)String"thumbnailURLLarge": "https://.../512.jpg"
thumbnailURLMediumProduct thumbnail (size 256 pixels)String"thumbnailURLMedium": "https://.../256.jpg"
thumbnailURLSmallProduct thumbnail (size 64 pixels)String"thumbnailURLSmall": "https://.../64.jpg"
startDateStart date of the product availability (timestamp)String"startDate": "2016-12-12T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2017-12-18T00:00:00.000Z",
isExpiredTrue if the product was expired at the time of BOM generationBoolean"isExpired": false
brandIDID of the brand where the product is availableNumber"brandID": 1
brandNameBrand nameString"brandName": "BryoForHR"
clientMetadataInformation from the product info of the productString"clientMetadata": {json}
widthProduct width as defined in product informationNumber"width": 1400
heightProduct height as defined in product informationNumber"height": 800
depthProduct depth as defined in product informationNumber"depth": 370
priceProduct price if definedPriceStructureSee Price

packs

The packs products are described with the same attributes than products with the additional attribute quantity. See products description. Notice that price is unitary price of each pack element. Multiply quantity by price to compute contribution of pack products to the total price.

AttributeDescriptionData TypeExample
quantityNumber of packs products needed for the projectNumber"quantity": 5

marketZone

MarketZone is a parameter in the app distribution settings to allow the retailers to specify the marketZone for the catalog that is used for a country in the external configurator in Home Retailers. It is a string value like "West-EU" for example. It's an optional parameter and the retailers fill this parameter as per the requirement.

AttributeDescriptionData TypeExample
marketZonemarketZone for specific catalogString"marketZone": "West-EU"

Price

The price of a product is defined by a JSON object called PriceStructure.

The PriceStructure is composed of 2 objects regular and current and the attribute discountType. regular object contains information on the regular price of the object. current object contains information on the price that is applied currently. discountType is the type of discount applied for the current price. Possible values for discountType are:

regular: no discount, the current price is the regular price.
reduced : current price is a reduced price.
discounted : current price is a discounted price.
membership : current price is a membership price.

NOTE : The "totalPrice" attribute of the BOM is not a PriceStructure object, but it has the same top-level attributes.

Price Sample
"price": 
{
"regular": {
"value": 630,
"type": "regular",
"startDate": null,
"endDate": null,
"additionalData": null
},
"current": {
"value": 575,
"type": "reduced",
"startDate": null,
"endDate": null,
"additionalData": null
},
"discountType": "reduced"
}

Below are described the 5 attributes of the regular and current prices.

AttributeDescriptionData TypeExample
valueThe price valueNumber"value": 150
typeThe price typeString"type": "regular"
"type": "reduced"
"type": "membership"
startDateStart date of the price validity (timestamp)String"startDate": "2016-12-12T00:00:00.000Z",
endDateEnd date of the price validity (timestamp)String"endDate": "2017-12-18T00:00:00.000Z",
additionalDataAdditional price informationObject" additionalData ": { "pricingMethod" : "squareFeet"}

Block

A block is a specific composition of products which can be detected and recognized. A block appears in the BOM as a product.

Detailed information about blocks can be found in related section of the Product Configurator documentation.

BOM in project metadata

The BOM of a project retrieved through web services API GET​/projects​/{ID}​/metadata​/{applicationID} is a JSON object with a similar structure than BOM object retrieved from iFrame Message. This BOM in metadata is stored when saving the project with minimun product information. It is sufficient to retrieve products and gather up to date information on each product. The expand option of GET​/projects​/{ID}​/metadata​/{applicationID} is designed for that.

The 4 sections products, decos, bays and packs are presents but with less products information than in BOM from iFrame message. Product information needs to be completed before use.

The section totalPrice is identical to BOM from iFrame message.

4 additional attributes are provided :

locale: the locale used in the planner to edit the project. Usually it is a combination of 2 letter langage code following ISO 639-1 with a 2 letter country code following ISO 3166-1.
currency: string of 3 letter string following ISO 4217.
distributionID: Application Distribution ID
version: the iframe version. It drives the data structure of the returned BOM items.

Structure sample
"products": [
{
(see product structure description)
},
...
],
"decos": [
{
(see linear structure description)
},
...
],
"bays": [
{
(see bays structure description)
},
...
],
"packs": [
{
(see pack structure description)
},
...
],
"totalPrice": {
"regular": (number),
"current": (number),
"discountType": (string),
"vatInformation": (string),
"startDate": (string),
"endDate": (string)
},
"locale": (string),
"currency": (string),
"distributionID": (string),
"version": (number),

BOM Object Version 16

This version adds a new attribute, recognizedBlock, to products in the BOM for which a block product has been recognized, based on their composition. This parameter is an object containing the same attributes than the ones used to describe a product.

BOM Object Version 1

BOM Structure

Structure Example
"products": [
{
{see product structure description}
},
...
]
"decos": [
{
{see linear structure description}
},
...
]
"bays": [
{
(see bays structure description)
},
...
]
"packs": [
{
(see pack structure description)
},
...
]
"totalPrice": {
"regular": (number),
"current": (number),
"discountType": (string),
"vatInformation": (string),
"startDate": (string),
"endDate": (string)
},
"formattedTotalPrice": (string)
Structure Description

Context: This structure is sent through iframe messages in the application. BOM is retrieved as an "Object".

High Level BOM Structure

products: Array of objects - describing products in the scene (sofa, beds, accessories, etc.)
decos: Array of objects - describing products related to home decoration (paint, wallpaper, tiles, flooring)
bays: Array of objects - describing products related to bays(openings, doors, windows)
packs: Array of objects - describing products that are bought by batch.
totalPrice: Object - describing total price of the project.
formattedTotalPrice: String - Total price of the kitchen, formatted as per the current currency locale

Low Level BOM Structure
Product structure
AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "14562"
priceProduct priceNumber"price": 50
formattedPriceProduct priceString"formattedPrice": "€50"
referenceProduct referenceString"reference": "chaise_accoudoir_20"
nameProduct nameString"name": "Baker Francis Chairs"
typeIDThe product closed tag ID of the productNumber"typeID": 7
typeFurniture typeString"type": "furniture"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["illustrationProduct"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Baker Francis Chair"
shortDescriptionShort description of the productString"shortDescription": "Chair with several materials",
thumbnailURLLargeProduct thumbnail (size 512 pixels)String"thumbnailURLLarge": "https://.../512.jpg"
thumbnailURLMediumProduct thumbnail (size 256 pixels)String"thumbnailURLMedium": "https://.../256.jpg"
thumbnailURLSmallProduct thumbnail (size 64 pixels)String"thumbnailURLSmall": "https://.../64.jpg"
startDateStart date of the product availability (timestamp)String"startDate": "2016-12-12T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2017-12-18T00:00:00.000Z",
isExpiredTrue if the product was expired at the time of BOM generationBoolean"isExpired": false
brandIDID of the brand where the product is availableNumber"brandID": 1
brandNameBrand nameString"brandName": "BryoForHR"
clientMetadataInformation from the product info of the productString"clientMetadata": {json}
widthProduct width as defined in product informationNumber"width": 400
heightProduct height as defined in product informationNumber"height": 800
depthProduct depth as defined in product informationNumber"depth": 370
Decos Structure
AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "74450"
priceProduct priceNumber"price": 50
formattedPriceProduct priceString"formattedPrice": "€50"
referenceProduct referenceString"reference": "oak_parquet"
nameProduct nameString"name": "Oak Parquet"
typeIDThe product closed tag ID of the productNumber"typeID": 355
typeFurniture typeString"type": "material"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["material"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Solid parquet is made from one and the same thickness of noble wood."
shortDescriptionShort description of the productString"shortDescription": "Oak parquet with different thickness.",
thumbnailURLLargeProduct thumbnail (size 512 pixels)String"thumbnailURLLarge": "https://.../512.jpg"
thumbnailURLMediumProduct thumbnail (size 256 pixels)String"thumbnailURLMedium": "https://.../256.jpg"
thumbnailURLSmallProduct thumbnail (size 64 pixels)String"thumbnailURLSmall": "https://.../64.jpg"
startDateStart date of the product availability (timestamp)String"startDate": "2016-12-12T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2017-12-18T00:00:00.000Z",
isExpiredTrue if the product was expired at the time of BOM generationBoolean"isExpired": false
brandIDID of the brand where the product is availableNumber"brandID": 1
brandNameBrand nameString"brandName": "BryoForHR"
clientMetadataInformation from the product info of the productString"clientMetadata": {json}
squareValue used only for decorations (e.g. calculated square meters of a parquet)Number"square": 26
quantityNumber of the same elementNumber"quantity": 1
materialTagNameThe tag name used to identify the type of the decoration displayed in the item listString"materialTagName": "Hardwoods"
Bays structure
AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "18962"
priceProduct priceNumber"price": 50
formattedPriceProduct priceString"formattedPrice": "€50"
referenceProduct referenceString"reference": "fen_4_anthracite_blanc"
nameProduct nameString"name": "Cancun double window"
typeIDThe product closed tag ID of the productNumber"typeID": 252
typeFurniture typeString"type": "opening"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["illustrationProduct"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Double window"
shortDescriptionShort description of the productString"shortDescription": "Double window",
thumbnailURLLargeProduct thumbnail (size 512 pixels)String"thumbnailURLLarge": "https://.../512.jpg"
thumbnailURLMediumProduct thumbnail (size 256 pixels)String"thumbnailURLMedium": "https://.../256.jpg"
thumbnailURLSmallProduct thumbnail (size 64 pixels)String"thumbnailURLSmall": "https://.../64.jpg"
startDateStart date of the product availability (timestamp)String"startDate": "2016-12-12T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2017-12-18T00:00:00.000Z",
isExpiredTrue if the product was expired at the time of BOM generationBoolean"isExpired": false
brandIDID of the brand where the product is availableNumber"brandID": 1
brandNameBrand nameString"brandName": "BryoForHR"
clientMetadataInformation from the product info of the productString"clientMetadata": {json}
widthProduct width as defined in product informationNumber"width": 1400
heightProduct height as defined in product informationNumber"height": 800
depthProduct depth as defined in product informationNumber"depth": 370
Pack structure

Same structure as "Product" with quantity value. Refer to the section "Product structure". Notice that price is unitary price of each pack element. You have to multiply quantity by price to get total price of the packs.

BOM in Project metadata

Structure
"products": [
{
{see product structure description}
},
...
],
"decos": [
{
{see linear structure description}
},
...
],
"bays": [
{
{see bays structure description}
},
...
],
"packs": [
{
(see pack structure description)
},
...
],
"totalPrice": {
"regular": (number),
"current": (number),
"discountType": (string),
"vatInformation": (string),
"startDate": (string),
"endDate": (string)
},
"locale": (string),
"currency": (string),
"distributionID": (string),
"version": (number),
Structure Description

Context: This structure is sent through project metadata web service (/projects/:projectID/metadata/2). As information is stored, product information needs to be refreshed before use. That is why there is less information than in the previous structure. BOM is retrieved as an "Object".

High Level BOM Structure

products: Array of objects - describing products in the scene (sofa, beds, accessories, etc.)
decos: Array of objects - describing products related to home decoration (paint, wallpaper, tiles, flooring)
bays: Array of objects - describing products related to bays(openings, doors, windows)
packs: Array of objects - describing products that are bought by pack.
totalPrice: Object - describing total price of the project.
formattedTotalPrice: String - Total price of the kitchen, formatted as per the current currency locale
locale: String - Combination of :
 ▪ MANDATORY: 2 letter code of a language, following ISO 639-1. Refer to ISO 639-1 documentation 🔗
 ▪ OPTIONAL: 2 letter code of a region / country, following ISO 3166-1. Refer to ISO 3166-1 documentation 🔗
currency: String - 3 letter string following ISO 4217
distributionID: Application Distribution ID (Refer to ISO 4217 documentation 🔗)
marketZone: String - describing marketZone for catalog
version: The iframe version. It drives the data structure of the returned BOM items.