/project, and the same paths exist for /deliverable, /stage, /document, and
the rest.
Not every resource offers all of them.
timesheet is read-only, worker refuses
hard deletes, and qc-template is read and delete only. Each
resource page says what it supports, and the
API reference lists the concrete paths.
Four things that trip people up
PUT needs ?update=
Both PUT /{id} and PUT /bulk require an update query parameter naming which
columns to overwrite when a row with a conflicting unique key already exists.
Without it the request is rejected with 400.
Pass it as a repeated parameter. A single comma-separated value is not accepted:
PATCH /bulk needs its filter in the query string
A filter in the request body is ignored. Without a filter in the query string the
request fails with 400 and "No filter provided for updateMany", which is
deliberate: it stops you updating an entire table by accident.
Bulk delete does not exist
On writable factory resources,DELETE /{resource}/bulk returns 403; read-only resources do not register it. To remove many records,
archive them with PATCH /bulk. See
archiving and deleting.
Archived records are hidden by default
Reads filter toisArchived eq false unless you say otherwise:
GET /project/{id} on an archived record returns 404, and there is no query
parameter that changes it on that route. When an id might belong to an archived
record, read it through the list endpoint instead, where the filter is yours to
set:
isArchived matches either value, so that request returns the record
whether it is archived or not. See
archiving and deleting.
Creating one record or many
POST takes either an object or an array. An object comes back as value, an
array as values:
When your filter is too long for a URL
Long filters, big id lists, and wideselect lists hit URL length limits at the
load balancer before they reach us. Every resource has POST twins that take the
same options in the body:
Resource-specific write rules
The standard shape does not mean every resource supports every method. Stock, allocations, teams, shifts, and departments expose reads. Transactions accept a restricted single-object POST. Documents disable generic POST and PUT and restrict PATCH toisArchived. DELETE archives items, BOM lines,
production outputs, units of measure, vendors, locations, trucks, contacts,
custom properties, and delivery lines. Deliveries have
dedicated archive/restore commands while DELETE is destructive. Check each
resource page before generating writes.