Update a custom field
Header Parameters
Path Parameters
Company ID. Must be one of the IDs returned by GET /api/v2/companies/.
Row id. A row belonging to another company is 404 on every verb, never 403.
Body Parameters
Position in the form, ascending. Not propagated to existing catalogue-item copies.
Help text per language, e.g. {"en": "...", "de": "..."}. Either a map of language code to string, or null; anything else is a 400.
Default value. Always stored as a string: a PRICE is a decimal string such as "150.00", a DATE an ISO date YYYY-MM-DD, a SELECT one of the option values. A BOOLEAN field returns a real true/false on read and accepts either a boolean or the strings "true"/"false" on write. Omitting it leaves the stored value unchanged.
Label shown to users. Propagated to existing catalogue-item copies.
Placeholder shown in an empty input. Propagated to existing catalogue-item copies.
ISO 4217 code, only for a PRICE field. Must be empty for BOOLEAN, SELECT and DATE.
Whether a value is required. Propagated to existing catalogue-item copies.
Where the field is shown: FREEFORM (free-text items), CATALOGUE (catalogue items), CATALOGUE_USER_INPUT (catalogue items where the user types the value), INTEGRATED_SUPPLIER (punch-out items). An empty list means no restriction. Not propagated to existing catalogue-item copies.
FREEFORMCATALOGUECATALOGUE_USER_INPUTINTEGRATED_SUPPLIER Show child attributes
Replaces the whole option list; options have no ids. Omit the key to leave options untouched. Only accepted on a SELECT field, including an empty list: on any other type it is a 400. Every option needs a non-blank label and value, and value must be unique within the list. Not propagated to existing catalogue-item copies, and stored values are not re-validated against the new list.
Show child attributes
Inactive fields are hidden from users but keep their stored values. Propagated to existing catalogue-item copies.
Response
Updated. The body is the read shape.
Response Attributes
Position in the form, ascending. Not propagated to existing catalogue-item copies.
Internal name, unique per company. Immutable through this API.
Help text per language, e.g. {"en": "...", "de": "..."}. Either a map of language code to string, or null; anything else is a 400.
Show child attributes
Default value. Always stored as a string: a PRICE is a decimal string such as "150.00", a DATE an ISO date YYYY-MM-DD, a SELECT one of the option values. A BOOLEAN field returns a real true/false on read and accepts either a boolean or the strings "true"/"false" on write.
Field type. Immutable through this API.
BOOLEANTEXTPRICESELECTDATELabel shown to users. Propagated to existing catalogue-item copies.
Placeholder shown in an empty input. Propagated to existing catalogue-item copies.
ISO 4217 code, only for a PRICE field. Must be empty for BOOLEAN, SELECT and DATE.
Whether a value is required. Propagated to existing catalogue-item copies.
Where the field is shown: FREEFORM (free-text items), CATALOGUE (catalogue items), CATALOGUE_USER_INPUT (catalogue items where the user types the value), INTEGRATED_SUPPLIER (punch-out items). An empty list means no restriction.
FREEFORMCATALOGUECATALOGUE_USER_INPUTINTEGRATED_SUPPLIER Show child attributes
Options of a SELECT field. Empty for every other type.
Show child attributes
Inactive fields are hidden from users but keep their stored values. Propagated to existing catalogue-item copies.
ITEM: asked per purchase-request item. REQUEST: asked once per purchase request. Immutable through this API.
ITEMREQUESTCategories the field is linked to, with the per-category mandatory flag. Read-only.
Show child attributes
Validation failed. attr names the field, in snake_case. Causes: selectFields on a non-SELECT field (even an empty list), a blank option label or value, duplicate option values, a malformed helpText, an unknown key, or a definition shared from another company.
Response Attributes
validationErrorclientErrorserverError Show child attributes
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
No such row for this company, including a row that belongs to another company, and a soft-deleted row you tried to write to. The API does not confirm whether the id exists elsewhere.
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