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(null|object $filters = null, null|array $options = null) Retrieve list of BOMs.

Parameters

filters
null | object
  • 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”.
options
null | array
  • 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:
Request
{
    "jsonrpc" : 2.0,
    "id" : 1234,
    "method" : "call",
    "params" : [
        "be1c13ed4e03f0ed7f1e4053dfff9658",
        "bom.search",
        [
            {
                "sku" : { "eq" : "product2" }
            }
        ]
    ]
}

Example Response

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

codemessage
104Invalid filters given. Details in error message.

bom.create

bom.create (object $bomData) Create new BOM.

Parameters

bomData
object
BOM data.

Return Value

BOM object if successful.

Example Request

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

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

codemessage
102Invalid data given. Details in error message.
105Product does not exist.

bom.update

bom.update (int $bomId, object $bomData) Update BOM data.

Parameters

bomId
integer
BOM ID.
bomData
object
BOM data. Allowed properties for update are the same as the create method.

Return Value

true if BOM was successfully updated.

Example Request

Request
{
    "jsonrpc" : 2.0,
    "id" : 1234,
    "method" : "call",
    "params" : [
        "be1c13ed4e03f0ed7f1e4053dfff9658",
        "bom.update",
        [
            "73",
            {
                "is_kit_on_demand" : 0
            }
        ]
    ]
}

Example Response

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

bomId
integer
BOM ID.

Return Value

true if BOM was successfully deleted.

Example Request

Request
{
    "jsonrpc" : 2.0,
    "id" : 1234,
    "method" : "call",
    "params" : [
        "be1c13ed4e03f0ed7f1e4053dfff9658",
        "bom.delete",
        [
            "73"
        ]
    ]
}

Example Response

Response
{
    "jsonrpc" : 2.0,
    "id" : 1234,
    "error" : null,
    "result" : true
}

Error Codes

codemessage
101BOM does not exist.

Entity Properties

BOM Properties

BOM Component Properties