Bulk upsert suppliers
Header Parameters
Path Parameters
Company ID. Must be one of the IDs returned by GET /api/v2/companies/.
Body Parameters
Optional, for matching only: the supplier's id. An id that matches nothing in this company falls through to the next lookup field, and a new record is created with a fresh id.
Name shown to requesters, if it should differ from name.
Hidden from the catalogue in the UI. Unlike the in-app list, this API returns unlisted suppliers.
Your supplier number. Sortable via ?ordering=supplierNumber.
Supplier number in a third system, e.g. your ERP.
Your customer number with this supplier.
Language used for orders and emails to this supplier.
ENDEESFRFITRHUITISO 4217 code. null or "" when the supplier has none set, in which case the company currency applies.
EURUSDGBPSEKPLNCHFCZKHUFDKKRON... 3 other enums
Where orders are sent when orderViaEmail is true.
Text appended to every order.
Postal code.
Incoterm for deliveries from this supplier. null or "" when none is agreed.
EXWFCACPTCIPDAPDPUDDPFASFOBCFR... 2 other enums
Expected delivery time in days.
Decimal string, e.g. "1250.00".
Order value above which the responsible user is notified.
Percentage as a decimal string, e.g. "2.50".
Contract id. Must belong to this company; a company-less contract is rejected.
Category id. Must belong to this company.
Category ids. Must belong to this company. Unlike the other assigned* lists, this one is writable, categories are not a visibility gate.
Show child attributes
Inverts the category gate: true means the listed categories are allowed, false means they are excluded.
Tag ids. Must belong to this company; a company-less tag is rejected.
Show child attributes
User id. Must be an active member of this company.
Per-legal-entity overrides.
Show child attributes
Response
Always 200, even when rows failed: per-row results in upserted and errors, in row order.
Response Attributes
One entry per stored row, in row order: the row as you sent it, plus the record's id and the action taken.
Show child attributes
One entry per failed row. A failed row never fails the batch.
The whole request was refused: the body is not a JSON array, or it has more than 50 rows. Plain {"error": …} body, this one predates the error envelope and existing clients parse it.
Response Attributes
Only on the over-limit refusal.
Only on the over-limit refusal.
Missing, invalid, or expired API key, or a session credential was used instead of an API key.
Response Attributes
validationErrorclientErrorserverError Show child attributes
Authenticated but not entitled: the key's user is not an active member of this company, the External API feature (or the resource's own feature) is not enabled for it, the key lacks the scope this verb needs, or a browser session was used.
Response Attributes
validationErrorclientErrorserverError Show child attributes
Rate limit exceeded (60 requests per minute per API key). Retry after the number of seconds given in the message.
Response Attributes
validationErrorclientErrorserverError