{
"suppliers": [
{
"external_supplier_id": "SUP-001",
"name": "Best Foods Co.",
"code": "BEST-FOODS",
"email": "orders@bestfoods.com",
"tax_id": "12-3456789"
},
{
"external_supplier_id": "SUP-002",
"name": "Old Supplier",
"archived": true
}
],
"external_user_id": "user_setup_01"
}
{
"results": [
{ "external_supplier_id": "SUP-001", "id": "sup_01...", "action": "created" },
{ "external_supplier_id": "SUP-002", "id": "sup_02...", "action": "updated" }
],
"summary": { "created": 1, "updated": 1, "unchanged": 0 }
}
Catalog Sync
Sync suppliers (bulk upsert)
Upserts suppliers by external_supplier_id. Suppliers not in the batch are left untouched.
PUT
/
api
/
v1
/
public
/
vendors
/
{vendorId}
/
identity
/
suppliers
{
"suppliers": [
{
"external_supplier_id": "SUP-001",
"name": "Best Foods Co.",
"code": "BEST-FOODS",
"email": "orders@bestfoods.com",
"tax_id": "12-3456789"
},
{
"external_supplier_id": "SUP-002",
"name": "Old Supplier",
"archived": true
}
],
"external_user_id": "user_setup_01"
}
{
"results": [
{ "external_supplier_id": "SUP-001", "id": "sup_01...", "action": "created" },
{ "external_supplier_id": "SUP-002", "id": "sup_02...", "action": "updated" }
],
"summary": { "created": 1, "updated": 1, "unchanged": 0 }
}
string
required
BOH API key with
catalog:write scope.string
required
Vendor UUID.
object[]
required
Array of supplier rows:
string
Actor for audit trail.
object[]
One entry per row:
external_supplier_id, id, action (created, updated, unchanged).object
{ created, updated, unchanged } counts.{
"suppliers": [
{
"external_supplier_id": "SUP-001",
"name": "Best Foods Co.",
"code": "BEST-FOODS",
"email": "orders@bestfoods.com",
"tax_id": "12-3456789"
},
{
"external_supplier_id": "SUP-002",
"name": "Old Supplier",
"archived": true
}
],
"external_user_id": "user_setup_01"
}
{
"results": [
{ "external_supplier_id": "SUP-001", "id": "sup_01...", "action": "created" },
{ "external_supplier_id": "SUP-002", "id": "sup_02...", "action": "updated" }
],
"summary": { "created": 1, "updated": 1, "unchanged": 0 }
}

