Bulk BOM attachment
Luminous now supports attaching one or more Bills of Materials to many SKUs in a single step, both from the in-app SKU list and via the External V1 API.
From the SKU list (UI)
- Go to Inventory → SKUs.
- Check the checkboxes next to the SKUs you want to update.
- Click the N Selected SKUs button that appears above the list and select Attach BOMs.
- In the dialog, search for and select one or more BOMs from the autocomplete field.
- Choose an attachment mode:
- Add (default): adds the selected BOMs without removing any already attached.
- Replace: removes all currently attached BOMs on each selected SKU and replaces them with the selected ones.
- Click Attach N BOMs. The dialog shows a per-SKU result summary; if everything succeeded it closes automatically after a short delay.
Tip: The dialog shows a count of successes and failures. Expand the details panel to see which SKU+BOM pairs failed and why (e.g. SKU not found, BOM not found).
Via the External V1 API
Endpoint: POST /external/api/v1/products/bulk-attach-boms
Request body:
{
"items": [
{ "internal_sku": "SHIRT-RED-S", "bom_name": "BOM-SHIRT-RED" },
{ "internal_sku": "SHIRT-RED-M", "bom_name": "BOM-SHIRT-RED" },
{ "internal_sku": "PANTS-BLUE-32", "bom_name": "BOM-PANTS-BLUE" }
],
"mode": "add"
}
| Field | Required | Description |
|---|---|---|
items | Yes | Array of { internal_sku, bom_name } pairs. Maximum 10,000 items per call. |
mode | No | "add" (default) — preserves existing BOMs; "replace" — replaces all BOMs on each touched SKU. |
Example response:
{
"processed": 3,
"succeeded": 2,
"failed": 1,
"mode": "add",
"results": [
{ "internal_sku": "SHIRT-RED-S", "bom_name": "BOM-SHIRT-RED", "status": "attached" },
{ "internal_sku": "SHIRT-RED-M", "bom_name": "BOM-SHIRT-RED", "status": "attached" },
{ "internal_sku": "PANTS-BLUE-32", "bom_name": "BOM-PANTS-BLUE", "status": "error", "reason": "BOM not found" }
]
}
Result statuses:
attached— the BOM was successfully attached to the SKU.error— the pair was skipped; thereasonfield explains why (common causes:"SKU not found","BOM not found").
Notes:
- Lookups are case-sensitive for both
internal_skuandbom_name. - A 200 response is returned even when some pairs fail — check
failedand theresultsarray. - The endpoint performs all SKU and BOM lookups in bulk (two queries), so very large requests are efficient.