Skip to main content
Version: Pre-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 Iframe messages SetUpSettings to set the version, BOMRequested, ProductListWithBOMRequested and ProductListWithBOM, to get the Bill of Material in the planner.

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

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. base cabinet, appliance, accessory. The sub components of the products are listed in the children array of objects. Notice that a child product may have his own children. As such the products structure must be interpreted as a tree with multiple levels of components and sub-components. For individual product description in BOM, see products.

linears: array of objects describing products related to kitchen linears. e.g. worktop, wallpanel, wall edge strip, plinth, cornice and deco strip. The sub components of the linears products are listed in the children array of objects. e.g. cutout or edges for worktop board. For individual linears product description in BOM, see linears.

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

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

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

totalPrice: (from Version 2) object containing the following attributes:

  • regular: sum of all regular prices
  • current: sum of all current prices
  • discountType: type of discount. Possible values are regular(no discount), reduced (normal discount) and membership (membership discount)
  • startDate: latest of all products start dates
  • endDate: earliest of all products end dates.
  • secondaryCurrencyRegular and secondaryCurrencyCurrent (from Version 11 to support secondary currency in the pricing): sum of the secondary currency prices, respectively for the regular and current amounts.
  • currency: the currency code used by the planner. 3 letters string following ISO 4217.

finance: (from Version 6) object the following attributes:

  • monthly: monthly price for the project
  • deposit: initial deposit amount
  • duration: loan duration in months (chosen by the user)
  • activated: indicates if the user has selected the monthly price display

Notes: The finance object is present if the application distribution settings finance is defined and contains at least 1 valid loan duration.

Structure sample


"products": [
{
"children": [
...
]
(see products description)
},
...
],
"linears": [
{
"children": [
...
]
(see linears description)
},
...
],
"packs": [
{
(see packs description)
},
...
],
"decos": [
{
(see decos description)
},
...
],
"bays": [
{
(see bays description)
},
...
],
"totalPrice": {
"regular": (double),
"secondaryCurrencyRegular": (double),
"current": (double),
"secondaryCurrencyCurrent": (double),
"discountType": (string),
"startDate": (string),
"endDate": (string),
"currency": (string)
},
"finance": {
"monthly": (double),
"deposit": (double),
"duration": (double),
"activated": (boolean)
}

products

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

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "13848"
referenceProduct referenceString"reference": "BU_01"
nameProduct nameString"name": "BU"
typeIDThe product closed tag ID of the productNumber"typeID": 518
typeFurniture typeString"type": "furniture"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["FurnitureConfigurator"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Base Unit Generic"
shortDescriptionShort description of the productString"shortDescription": "Box assembly with frame, legs and cover panels",
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": "Bryo"
clientMetadataThe client metadata of the productany"clientMetadata": { "someKey": "someValue" }
productSheetUrlThe product sheet URLString"productSheetUrl": "https://url"
nomenclatureNumberNumber of the furniture in the 2D plan (only pieces of furniture have it)
Refer to Numbering 🔗
Number"nomenclatureNumber":1
widthProduct width parameter
/!\ This is the default value, not the current value.
Number"width": 400
heightProduct height parameter
/!\ This is the default value, not the current value.
Number"height": 800
depthProduct depth parameter
/!\ This is the default value, not the current value.
Number"depth": 370
energylabelProduct energy label parameter (deprecated)String"energyLabel": "A"
energylabel2Product energy label parameter (new)String"energyLabel2": "B"
repairabilityIndexProduct repairability index parameterNumber"repairabilityIndex": 5.6
durabilityIndexProduct durability index parameterNumber"durabilityIndex": 8.6
computedWidth (from Version 12)Product current width valueNumber"width": 400
computedHeight (from Version 12)Product current height valueNumber"height": 800
computedDepth (from Version 12)Product current depth valueNumber"depth": 370
commercialDimensionsProduct commercial dimensions parameter
/!\ the exported value is the default value, not the current value.
String"commercialDimensions": "W800 x D600 x H800"
isPricelessTrue if the item has no possible priceBoolean"isPriceless": false
price (from Version 2)Product price if definedPriceStructureSee Price
itemNote (from Version 4)The note associated to the product, if it existsString"itemNote": "place this cabinet 10mm away from the wall to avoid the pipes\nalso the plinth must be placed with care"
uuid (from Version 5)An unique identifier of the product. Not available for automatic fillers nor worktops, wall panel, wall edge strip, cornice, deco strip, plinthsString"uuid": "EA3BD237-9116-4316-8039-CA2A9295EC1"
roomNameCurrent room name of the product.String"roomName": "Living room"
roomTypeCurrent room type of the product.String"roomType": "12"
hashHash of the productString"hash": "1fb17d713c9524bc"
recognizedBlock (from Version 16)The block product recognized for this product if anyProductStructure"recognizedBlock": { see products description }

linears

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

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "14063"
referenceProduct referenceString"reference": "DELAMINATE_1"
nameProduct nameString"name": "DELAMINATE_1"
typeIDThe product closed tag ID of the productNumber"typeID": 443
typeFurniture typeString"type": "material"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["FurnitureConfigurator"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Precut, 28mm Laminate"
shortDescriptionShort description of the productString"shortDescription": "Precut, 28mm Laminate",
thumbnailURLLargeProduct thumbnail (size 512)String"thumbnailURLLarge": "https://.../512.jpg"
thumbnailURLMediumProduct thumbnail (size 256)String"thumbnailURLMedium": "https://.../256.jpg"
thumbnailURLSmallProduct thumbnail (size 64)String"thumbnailURLSmall": "https://.../64.jpg"
svgURLUsed only for edge finish products. Edge symbol URLString"svgURL": "https://xyz/Symbols/1.svg"
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": "Bryo"
clientMetadataThe client metadata of the productany"clientMetadata": { "someKey": "someValue" }
productSheetUrlThe product sheet URLString"productSheetUrl": "https://url"
widthProduct width as defined in product informationNumber"width": 1860
heightProduct height as defined in product informationNumber"height": 28
depthProduct depth as defined in product informationNumber"depth": 635
computedWidthwidth for the linear computedNumber"computedWidth": 893
computedHeightheight for the linear computedNumber"computedHeight": 28
computedDepthdepth for the linear computedNumber"computedDepth": 635
boardID (from version 7)Value used only for worktop products (and wall panels from version 10): list of nomenclature numbers of the board (same number visible in 2DPlans)Number"boardID": [3, 4]
quantityNumber of the same elementNumber"quantity": 1
linearValue used only for linear products (e.g. calculated linear meter of a worktop or wall edge strip). The decimal precision of this value is controlled by the application distribution parameter linearPrecisionNumber"linear": 1.035
squareValue used only for linear products (e.g. calculated square meters of a wallpanel board). The decimal precision of this value is controlled by the application distribution parameter linearPrecisionNumber"square": 0.512
isPricelessTrue if the item has no possible price This properties is use in linear to indicate that this linear is not possible to price due to error like:
- Impossible shape
- Bad board orientation
Some applicative rules will indicate what is wrong with a linear if those applicative rules are configure
Boolean"isPriceless": true
price (from Version 2)Product price if definedPriceStructureSee Price
position (from Version 3)Value used only for optimized Cover Panel boards. Indicates the position of the board.String"position”:"top", “bottom” or "back"
furnitureList (from Version 3)Value used only for optimized Cover Panel boards. Identifies all the pieces of furniture that the board is attached to.Array of Integer"furnitureList": [3, 4, 5]
ecoFee (from Version 10)Value used only for linear products. Defines the ecofee price for linearsNumber"ecoFee": 0.82
weight (from Version 10)Value used only linear products. Defines the weight for linearsNumber"weight": 6.324
linearTypeDefines the type of linearsString"linearType": "Riser"
roomNameCurrent room name of the linear.String"roomName": "Hallway"
roomTypeCurrent room type of the linear.String"roomType": "4"
hashHash of the productString"hash": "1fb17d713c9524bc"

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

decos

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

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "4339"
referenceProduct referenceString"reference": "peinture_RAL_1000_satin"
nameProduct nameString"name": "PAINT"
typeIDThe product closed tag ID of the productNumber"typeID": 357
typeFurniture typeString"type": "material"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["material"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Peinture satinée"
shortDescriptionShort description of the productString"shortDescription": "Peinture satinée.",
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": "2024-03-01T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2024-03-31T00: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": "Bryo"
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": 44
quantityNumber of the same elementNumber"quantity": 1
priceProduct price if definedPriceStructure[See Price](#price)
hashHash of the productString"hash": "1fb17d713c9524bc"
materialTagNameDecoration typeString"materialTagName": "Paints"
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 bay product in the BOM.

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "43739"
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": "2024-03-01T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2024-03-31T00: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": "Bryo"
clientMetadataInformation from the product info of the productString"clientMetadata": {json}
widthProduct width parameter
/!\ This is the default value, not the current value.
Number"width": 1400
heightProduct height parameter
/!\ This is the default value, not the current value.
Number"height": 800
depthProduct depth parameter
/!\ This is the default value, not the current value.
Number"depth": 370
isPricelessTrue if the item has no possible priceBoolean"isPriceless": false
price (from Version 2)Product price if definedPriceStructureSee Price
hashHash of the productString"hash": "1fb17d713c9524bc"

Hash

The hash of a product is a 16 characters string based on the following attribute, when they exist : dbID, quantity, linear, square, width, depth, height, and the hash computed on the children.

Two identical BOM Items have the same hash.

Price

The price of a product is defined by a JSON object called PriceStructure. This price description was introduced with BOM Version 2.

The PriceStructure is composed of 3 objects regular,current and ecoFee 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. ecoFee object contains information on the ecoFee price of the object if defined for a product. 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.

Now the product base price is also visile in the BOM for the products and their components in the BOM.

NOTE : The "totalPrice" attribute of the BOM is not a PriceStructure object.

Price Sample

"price": {
"regular": {
"value": 70,
"type": "regular",
"startDate": null,
"endDate": null,
"additionalData": null,
"secondaryCurrencyValue": 230
},
"current": {
"value": 50,
"type": "membership",
"startDate": "2019-12-12T00:00:00.000Z",
"endDate": "2022-12-18T00:00:00.000Z",
"additionalData": null,
"secondaryCurrencyValue": 200
},
"ecoFee":{
"value": 24,
"type": "ecoFee",
"startDate": null,
"endDate": null,
"additionalData": null
},
"discountType": "membership"
}

Base Price Sample

"basePrice": 1000,
"fabricDetails": {
"dbId": "92496",
"isUserProduct": false,
"quantity": 1.5392,
"price": {
"unit": 25,
"total": 38.48
}
}

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

AttributeDescriptionData TypeExample
valueThe price valueNumber"value": 150
typeThe price typeString"type": "regular"
"type": "reduced"
"type": "membership"
"type": "ecoFee"
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 information. See also [Pricing Parameters](http://3dcloud-doc.enterprise.by.me/docs/3dcloud/setup-products/setup_pricing#pricing-parameters).Object"additionalData": { "pricingMethod" : "linearMeter", "minimumPricingArea": 0.5 }
secondaryCurrencyValue (from Version 11)The price value in the optional secondary currency. If no secondary currency is provided, or if a product does not have a price in the secondary currency, this attribute is not present in the price structure.Number"secondaryCurrencyValue": 200

Specific behavior in BOM

In this section are listed the elements that receive a specific treatment in the BOM.

Board algorithm

Some products have a specific board algorithm run for them when it comes to their pricing. This behavior is expected for board-like products (i.e. flat rectangular pieces of material).

The board algorithm is automatically run for 3 kind of products:

▪ Worktops
▪ Wall panels
▪ Cover panels

It can also be triggered on products that are not in the list above by adding a boolean parameter to the generic product : priceBestBoard (starting with BOM v8).

Note: This algorithm takes a few assumptions on the products it is run on. These assumptions are all true for the 3 kinds of product automatically affected (worktops, wall-panels and cover-panels), if you follow their respective setup documentations. If you use the priceBestBoard parameter, you have to make sure that these assumptions are all verified on your product:

  • the product must be a generic product (see Generic Products ).
  • it must declare all its available boards through the mapping system.
  • the only allowed parameters for the board mappings are width, depth and height. It is not mandatory to use the 3 of them. For example, it is possible to only do a mapping on the width parameter to differentiate the boards.
  • all the board products must have the 3 dimension parameters width, depth and height with the correct board dimensions as their default value.

Here is the list of the algorithm steps when it is executed:

  1. get the actual dimension of the board in the planner.
  2. from all the boards declared in the mappings, ignore all the ones that are too small to cover the computed area.
  3. from all the remaining boards, pick the one that has the smallest volume (volume = width * depth * height)
  4. the board found is used in the BOM.
  • if no board is found (all boards are too small for example), no priced item is resolved in the BOM.
For worktops and wall panels (from Version 2)

Worktops and wall panels are located in the "linears" section of the BOM. They will always consist of a main item that represents the linear product (reference, thumbnail, dates, etc.) and a list of boards that represent the actual articles to buy. See Set Up Worktops and Set Up Wall Panels for more information.

Notes:
▪ Board items are located in the "children" of the main item
▪ The price only appears in the board articles and not in the main item
▪ Board items may have children themselves (cut-outs, etc.)
▪ There will be 1 main item per linear in the project. If there are 2 different worktops with the same ID in the project, there will be 2 worktop items in the BOM each having its own list of board items

For top, bottom and optionaly back cover panels (from Version 3)

Top and bottom cover-panels are located in the “linears” section of the BOM because an optimization tries to share cover panel boards between several cabinets. Because cover panels are part of the assembly tree, top and bottom cover panel elements are removed from the “products” section of the BOM. Then, a dedicated element is created in the “linears” section for each cover panel reference. In the children of this element there is 1 BOM item for each board.

Each board contains these attributes (along with all regular BOM item attributes):

  • “position” : “top”, “bottom” or "back". Indicates the position of the board.
  • “furnitureList” : Array of furniture nomenclature numbers. Identifies all the pieces of furniture that the board is attached to.

Notes:
▪ The board item is placed as the only "children" of the main cover-panel item
▪ The price only appears in the board articles and not in the main item
▪ The board item cannot have children itself

For all other kind of cover-panels (from Version 2)

Cover panels are located in the "products" section of the BOM, they are part of product assemblies. For each assembly element that has the Cover panels type, the board algorithm runs and determines the unique best board depending on its dimensions. See Set Up Cover Panels for more information.

Notes:
▪ The board item is placed as the only "children" of the main cover-panel item
▪ The price only appears in the board articles and not in the main item
▪ The board item cannot have children itself

For any product with the priceBestBoard parameter (from Version 8)

Any product that has the priceBestBoard parameter, no matter its value, is treated the same way as non-optimzed cover-panels (see above). They are always located in the "products" section of the BOM, as they are part of product assemblies. For more information about the priceBestBoard parameter, see the associated pricing documentation.

Notes:
▪ The board item is placed as the only "children" of the main product item
▪ The price only appears in the board articles and not in the main item
▪ The board item cannot have children itself

linearPercentageByItem

If an assembly element has the pricingMethod "linearPercentageByItem", it receives a special treatment in the BOM. First, it is removed from the "products" section of the BOM. Then, a dedicated element is created in the "linears" section. This behavior was introduced from Version 2. See Set Up the Pricing for more information.

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 5 sections products, linears, packs, decos and bays(from Version 13) 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.

The section finance (from Version 6) 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)
},
...
],
"linears": [
{
(see linear structure description)
},
...
],
"packs": [
{
(see pack structure description)
},
...
],
"decos": [
{
(see doco structure description)
},
...
],
"bays": [
{
(see bay structure description)
},
...
],
"totalPrice": {
...
},
"finance": {
...
},
"locale": (string),
"currency": (string),
"distributionID": (string),
"version": (number),
products, linears, packs, decos and bays

The attributes below are used to describe products, linears, packs, decos and bays in the BOM in project metadata.

AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "14063"
computedWidthreal width of the product or the linearNumber"computedWidth": 893
computedHeightreal height of the product or the linearNumber"computedHeight": 28
computedDepthreal depth of the product or the linearNumber"computedDepth": 635
quantityNumber of the same elementNumber"quantity": 1
linearValue used only for linear products (e.g. calculated linear meter of a wall edge strip). The decimal precision of this value is controlled by the distribution parameter "linearPrecision"Number"linear": 1.03
squareValue used only for linear products (e.g. calculated square meters of a wallpanel board). The decimal precision of this value is controlled by the distribution parameter "linearPrecision"Number"square": 0.5
nomenclatureNumberNumber of the furniture in the 2D plan (only pieces of furniture have it)
Refer to Numbering 🔗
Number"nomenclatureNumber":1
frontIn case of an edge finish product and precise whether this one is a front edgeBoolean"front": false
itemNote (from Version 4)The note associated to the product, if it existsString"itemNote": "place this cabinet 10mm away from the wall to avoid the pipes\nalso the plinth must be placed with care"
uuid (from Version 5)An unique identifier of the product. Not available for automatic fillers for now.String"uuid": "EA3BD237-9116-4316-8039-CA2A9295EC1"

BOM Object Version 20

This version adds two new attributes, merchandiseGroupNo and rangeID, to every item in the BOM. Those parameters give more information regarding the range and the category of merchandise the products belong to.

BOM Object Version 18

This version adds a new attribute, priceDetails, to items that use Configuration Sets for their price configuration. This attribute is an array that gathers all the price information of the solved configuration.

BOM Object Version 17

In this version, the numbering system for worktops and wall panels is updated. This change affects the value of the bom parameter boardID. More information can be found here: Numbering 🔗

BOM Object Version 16

No change for Kitchen application.

BOM Object Version 15

This version adds a new attribute, materialTagName, to every decoration item in the BOM. This parameter is a string that identifies the type of the deco item.

BOM Object Version 14

This version adds a 16 characters hash to every item in the BOM, based on the dbID, quantity, linear, square, width, depth, height, and the hash computed on the children

BOM Object Version 13

This version adds the support for adding price of bays to the total price. The price will be increased by each bay that is added to the planner along with its pricing.

BOM Object Version 12

This version adds the real dimensions of every products and sub-products in their BOM items. The added attributes are computedWidth, computedHeight and computedDepth. They are set for every products and sub-products as long as they are not priced per pack or with a custom pricing method such as linearPercentageByItem.

BOM Object Version 11

This version adds the support for a secondary currency in the planner. It adds the secondaryCurrencyValue attribute of regular and current prices in BOM items. It also adds the secondaryCurrencyRegular and secondaryCurrencyCurrent prices in the totalPrice attribute.

BOM Object Version 10

This version adds the ecoFee price and weight to linear products if it's defined for any product based on the availability of the parameter ecoFeeCategory. It also introduces the boardID information for wall panels.

BOM Object Version 9

This version adds the ecoFee parameter in the price section if it is defined for any product. The ecoFee parameter adds the valid ecoFee price to the price section.

BOM Object Version 8

This version adds the support for the priceBestBoard product parameter, that triggers the board algorithm on any product.

BOM Object Version 7

This version adds the boardID information to the worktop boards. These IDs are the same as the board numbers displayed in the 2DPlans, and in the worktop export.

BOM Object Version 6

This version adds the finance object to the BOM. This is used to propose and display a monthly pricing to the consumer.

BOM Object Version 5

This BOM version 5 adds the attribute uuid to the Product definition. This unique identifier is added to all products directly inserted in the project. It can be used to maintain the link between the kitchen planner and the sales system.

BOM Object Version 4

The version 4 of the BOM adds the attribute itemNote to the Product definition. The note associated to a product is typically used to convey instruction to the kitchen fitter.

BOM Object Version 3

The version 3 of the BOM introduces an optimization that share cover panel boards between several cabinets. Due to this optimization Top and bottom cover-panels are located in the “linears” section of the BOM. See Specific behavior in BOM Previously part of the assembly tree, top and bottom cover-panel elements do not appear in the “products” section of the BOM. Instead, a dedicated element is created in the “linears” section for each cover-panel reference. In the children of this element there is 1 BOM item for each board. Each board is defined with all regular BOM item attributes and the additional attributes position and furnitureList.

BOM Object Version 2

The version 2 of the BOM improves the price description for the total price and each product price. See Price. It introduces the board algorithm for worktops, wall panels and cover panels. See Specific Behavior in BOM. The pricing method linearPercentageByItem specific behavior in BOM is also provided. See Specific Behavior in BOM.

BOM Object Version 1

BOM Structure

Structure Example

"products": [
{
{see product structure description}
},
...
],
"linears": [
{
{see linear structure description}
},
...
],
"packs": [
{
(see pack structure description)
},
...
],
"decos": [
{
(see doco structure description)
},
...
],
"bays": [
{
(see bay structure description)
},
...
],
"totalPrice": (double),
"formattedTotalPrice": (string)

Structure Description

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

High Level BOM Structure

products: Array of objects - describing products in the scene (base cabinets, appliances, accessories..
children: Array of objects – contain sub-components of the product

linears: Array of objects - describing products related to kitchen linear (worktop, plinth)
children: Array of objects – contain components/sub-components (i.e. cutout for wall panel board)

packs: Array of objects - describing products that are bought by batch.
children: Array of objects – contain sub-components of the product

decos: Array of objects - describing products related to decorations e.g. paint, wallpaper, tile, flooring.
children: Array of objects – contain sub-components of the product

bays: Array of objects - describing products related to bays e.g. openings, doors, windows.
children: Array of objects – contain sub-components of the product

totalPrice: Double - Total price of the kitchen
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": "13848"
priceProduct priceNumber"price": 50
formattedPriceProduct priceString"formattedPrice": "£50"
referenceProduct referenceString"reference": "BU_01"
nameProduct nameString"name": "BU"
typeIDThe product closed tag ID of the productNumber"typeID": 518
typeFurniture typeString"type": "furniture"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["FurnitureConfigurator"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Base Unit Generic"
shortDescriptionShort description of the productString"shortDescription": "Box assembly with frame, legs and cover panels"
thumbnailURLLargeProduct thumbnail (size 512)String"thumbnailURLLarge": "https://xyz.jpg"
thumbnailURLMediumProduct thumbnail (size 256)String"thumbnailURLLarge": "https://xyz.jpg"
thumbnailURLSmallProduct thumbnail (size 64)String"thumbnailURLLarge": "https://xyz.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": "Bryo"
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
Linear Structure
AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": " 14063"
priceProduct priceNumber"price": 50
formattedPriceProduct priceString"formattedPrice": "£50"
referenceProduct referenceString"reference": "DELAMINATE_1"
nameProduct nameString"name": "DELAMINATE_1"
typeIDThe product closed tag ID of the productNumber"typeID": 443
typeFurniture typeString"type": " material"
freeTagsArray of free tags associated to the furnitureArray of String"freeTags": ["FurnitureConfigurator"]
commercialDescriptionCommercial description of the productString"commercialDescription": "Precut, 28mm Laminate"
shortDescriptionShort description of the productString"shortDescription": "Precut, 28mm Laminate"
thumbnailURLLargeProduct thumbnail (size 512)String"thumbnailURLLarge": "https://xyz.jpg"
thumbnailURLMediumProduct thumbnail (size 256)String"thumbnailURLLarge": "https://xyz.jpg"
thumbnailURLSmallProduct thumbnail (size 64)String"thumbnailURLLarge": "https://xyz.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": "Bryo"
widthProduct width as defined in product informationNumber"width": 1860
heightProduct height as defined in product informationNumber"height": 28
depthProduct depth as defined in product informationNumber"depth": 635
computedWidthValue used only for linear products: width for the linear computedNumber"computedWidth": 893
computedHeightValue used only for linear products : height for the linear computedNumber"computedHeight": 28
computedDepthValue used only for linear products : depth for the linear computedNumber"computedDepth": 635
quantityNumber of the same elementNumber"quantity": 1
linearValue used only for linear products (e.g. calculated linear meter of a wall edge strip)Number"linear": 1.03
squareValue used only for linear products (e.g. calculated square meters of a wallpanel board)Number"square": 0.5
linearTypeDefines the type of linearsString"linearType": "Riser"
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.

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": "2023-12-12T00:00:00.000Z",
endDateEnd date of the product availability (timestamp)String"endDate": "2024-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": "Bryo"
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"
roomName(Optional)Current room name of the decoration product.String"roomName": "Kitchen room"
roomType(Optional)Current room type of the decoration product.String"roomType": "12"
Bays Structure
AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": "18848"
priceProduct priceNumber"price": 50
formattedPriceProduct priceString"formattedPrice": "£50"
referenceProduct referenceString"reference": "TW_031"
nameProduct nameString"name": "VP"
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)String"thumbnailURLLarge": "https://xyz.jpg"
thumbnailURLMediumProduct thumbnail (size 256)String"thumbnailURLLarge": "https://xyz.jpg"
thumbnailURLSmallProduct thumbnail (size 64)String"thumbnailURLLarge": "https://xyz.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": "Bryo"
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

BOM in Project metadata

Structure

"products": [
{
{see product structure description}
},
...
],
"linears": [
{
{see linear structure description}
},
...
],
"packs": [
{
(see pack structure description)
},
...
],
"decos": [
{
(see doco structure description)
},
...
],
"bays": [
{
(see bay structure description)
},
...
],
"totalPrice": (double),
"formattedTotalPrice": (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 (base cabinets, appliances, accessories,...)
linears: Array of objects - describing products related to kitchen linear (worktop, plinth)
packs: Array of objects - describing products that are bought by batch.
decos: Array of objects - describing products related to decorations e.g. paint, wallpaper, tile, flooring.
bays: Array of objects - describing products related to bays e.g. openings, doors, windows.
totalPrice: Double - Total price of the kitchen
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 🔗)
version: The iframe version. It drives the data structure of the returned BOM items.

Low Level BOM Structure
Product/Linear/Pack Structure
AttributeDescriptionData TypeExample
dbIDDatabase ID of the productString"dbID": " 14063"
computedWidthValue used only for linear products : width for the linear computedNumber"computedWidth": 893
computedHeightValue used only for linear products : height for the linear computedNumber"computedHeight": 28
computedDepthValue used only for linear products : depth for the linear computedNumber"computedDepth": 635
quantityNumber of the same elementNumber"quantity": 1
linearValue used only for linear products (e.g. calculated linear meter of a wall edge strip)Number"linear": 1.03
squareValue used only for linear products (e.g. calculated square meters of a wallpanel board)Number"square": 0.5
nomenclatureNumberNumber of the furniture in the 2D plan (only pieces of furniture have it)
Refer to Numbering 🔗
Number"nomenclatureNumber":1
frontIn case of an edge finish product and precise whether this one is a front edgeBoolean"front": false