Methods


Entity Properties


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”.

bom.search (null|object $filters = null, null|array $options = null)

Retrieve list of BOMs.

Parameters

orderdescription
0
  • null - Retrieve list of all BOMs.
  • object - Retrieve list of BOMs using specified filters.
Allowed properties for filtering: "product_bom_id", "sku", "name", "yield_qty", "is_kit_on_demand", "is_kit_to_stock", "assembly_instructions", "priority".
1
  • null - No options will be applied.
  • object - Apply specified 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 (object $bomData)

Create new BOM.

Parameters

orderdescription
0 object - BOM data.

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 (int $bomId, object $bomData)

Update BOM data.

Parameters

orderdescription
0 int - BOM ID.
1 object - 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 (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

orderdescription
0 int - BOM ID.

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

product_bom_id
{ "product_bom_id" : 71 }
An automatically generated unique identifier for a BOM.
name
{ "name" : "Build Product 1" }
A descriptive name to indicate what action a BOM will take.
sku
{ "sku" : "product1" }
The product SKU that will be substituted by the BOM components.
yield_qty
{ "yield_qty" : 1 }
The number of product units produced by the BOM. A positive integer.
is_kit_on_demand
{ "is_kit_on_demand" : "1" }
If this option is true, order items will automatically be substituted by the BOM during warehouse allocation. Allowed: "1" - TRUE, "0" - FALSE
is_kit_to_stock
{ "is_kit_to_stock" : "1" }
If this option is true, the BOM will be available for use with a Work Order. Allowed: "1" - TRUE, "0" - FALSE
assembly_instructions
{ "assembly_instructions" : "Bubble wrap all components individually and place in a B32 box." }
Instructions for assembling the BOM.
priority
{ "priority" : 2 }
If multiple BOMs are defined for a SKU, then they will be processed in ascending order of this field. An integer.
components
{ "components" : [{ "sku" : "component-a", "qty" : 1 }] }
A list of BOM component objects.

BOM Component Properties

bom_child_id
{ "bom_child_id" : 71 }
An automatically generated unique identifier for a BOM component.
product_bom_id
{ "product_bom_id" : 70 }
The unique identifier of the parent BOM of the component item.
sku
{ "sku" : "component-A" }
The product SKU of the component.
qty
{ "qty" : 1 }
The quantity of the component item consumed by the BOM. A positive integer.