A Bill of Materials (BOM) defines a relationship between one SKU and a set of component SKUs. For instance, a SKU “Widget-A” could be made up of of three components “Component-A”, “Component-B”, “Component-C”. Placing an order for SKU “Widget-A” would result in “Component-A”, “Component-B”, “Component-C” automatically being fulfilled in it’s place.
BOMs can also define relationships between similar products in different pack/case sizes. For example if “ProductA-12” is a case of 12 single products, and “ProductA-1” is 1 single product from a case of “ProductA-12”, then a BOM relationship could be created to allow orders for “ProductA-1” to be fulfilled by splitting a case of “ProductA-12”, which would avoid having dedicated inventory for “ProductA-1”.
Methods
Entity Properties
bom.search
bom.search(null|object $filters = null, null|array $options = null)
Retrieve list of BOMs.
Parameters
null
- Retrieve list of all BOMs.
object
- Retrieve list of BOMs using specified Search Filters .
Allowed properties for filtering: “product_bom_id”, “sku”, “name”, “yield_qty”, “is_kit_on_demand”, “is_kit_to_stock”, “assembly_instructions”, “priority”.
null
- No options will be applied.
object
- Apply specified Search Options .
Return Value
An array of objects. Each object will contain Bom Properties .
Example Request
Get list of BOMs for one product SKU:
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"method" : "call" ,
"params" : [
"be1c13ed4e03f0ed7f1e4053dfff9658" ,
"bom.search" ,
[
{
"sku" : { "eq" : "product2" }
}
]
]
}
Example Response
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"error" : null ,
"result" : [
{
"product_bom_id" : 73 ,
"name" : "Build Product2" ,
"sku" : "product2" ,
"yield_qty" : 1 ,
"is_kit_on_demand" : 1 ,
"is_kit_to_stock" : 0 ,
"assembly_instructions" : "" ,
"priority" : 0 ,
"components" : [
{
"bom_child_id" : 211 ,
"product_bom_id" : 73 ,
"sku" : "product2_PartA" ,
"qty" : 1
},
{
"bom_child_id" : 212 ,
"product_bom_id" : 73 ,
"sku" : "product2_PartB" ,
"qty" : 1
}
]
}
]
}
Error Codes
code message 104 Invalid filters given. Details in error message.
bom.create
bom.create (object $bomData)
Create new BOM.
Parameters
Return Value
BOM object if successful.
Example Request
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"method" : "call" ,
"params" : [
"be1c13ed4e03f0ed7f1e4053dfff9658" ,
"bom.create" ,
[
{
"name" : "Build Product2" ,
"sku" : "product2" ,
"yield_qty" : 1 ,
"is_kit_on_demand" : 1 ,
"assembly_instructions" : "" ,
"priority" : 0 ,
"components" : [
{
"sku" : "product2_PartA" ,
"qty" : 1
},
{
"sku" : "product2_PartB" ,
"qty" : 1
}
]
}
]
]
}
Example Response
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"error" : null ,
"result" : {
"product_bom_id" : 73 ,
"name" : "Build Product2" ,
"sku" : "product2" ,
"yield_qty" : 1 ,
"is_kit_on_demand" : 1 ,
"is_kit_to_stock" : 0 ,
"assembly_instructions" : "" ,
"priority" : 0 ,
"components" : [
{
"bom_child_id" : 211 ,
"product_bom_id" : 73 ,
"sku" : "product2_PartA" ,
"qty" : 1
},
{
"bom_child_id" : 212 ,
"product_bom_id" : 73 ,
"sku" : "product2_PartB" ,
"qty" : 1
}
]
}
}
Error Codes
code message 102 Invalid data given. Details in error message. 105 Product does not exist.
bom.update
bom.update (int $bomId, object $bomData)
Update BOM data.
Parameters
BOM data.
Allowed properties for update are the same as the create method.
Return Value
true
if BOM was successfully updated.
Example Request
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"method" : "call" ,
"params" : [
"be1c13ed4e03f0ed7f1e4053dfff9658" ,
"bom.update" ,
[
"73" ,
{
"is_kit_on_demand" : 0
}
]
]
}
Example Response
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"error" : null ,
"result" : true
}
bom.delete
bom.delete (int $bomId)
Delete a BOM. A BOM can only be deleted if it is not currently in use by any sales orders or deliveries.
Parameters
Return Value
true
if BOM was successfully deleted.
Example Request
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"method" : "call" ,
"params" : [
"be1c13ed4e03f0ed7f1e4053dfff9658" ,
"bom.delete" ,
[
"73"
]
]
}
Example Response
{
"jsonrpc" : 2.0 ,
"id" : 1234 ,
"error" : null ,
"result" : true
}
Error Codes
code message 101 BOM does not exist.
Entity Properties
BOM Properties
An automatically generated unique identifier for a BOM.
A descriptive name to indicate what action a BOM will take.
The product SKU that will be substituted by the BOM components.
The number of product units produced by the BOM. A positive integer.
If this option is true, order items will automatically be substituted by the BOM during warehouse allocation. Allowed: “1” - TRUE, “0” - FALSE
If this option is true, the BOM will be available for use with a Work Order. Allowed: “1” - TRUE, “0” - FALSE
Instructions for assembling the BOM.
If multiple BOMs are defined for a SKU, then they will be processed in ascending order of this field. An integer.
BOM Component Properties
Show BOM Component Properties
An automatically generated unique identifier for a BOM component.
The unique identifier of the parent BOM of the component item.
The product SKU of the component.
The quantity of the component item consumed by the BOM. A positive integer.