Skip to main content
POST
Tenant credential
Required scopes: purchaseorders.write.

Authorizations

X-API-Key
string
header
required

Tenant credential. This is sufficient by itself.

Headers

X-PrintTools-Organization-Id
string<uuid>

Tenant credential: optional and, when sent, must equal the shop bound to the key. Partner credential: required; it selects an organisation the user previously authorised.

Idempotency-Key
string

Optional client-generated key for write retries. Reusing it with a different request returns 409; a replay includes Idempotency-Replayed: true.

Required string length: 1 - 200

Body

application/json
target
object
required

A bulk selection, as it travels to a bulk mutation. Exactly ONE branch is populated: ids for hand-picked rows (the common case), or the filter branch (filters / search / excludeIds) for "select all matching". Supplying both is a validation error rather than a silent reconciliation.

The filter branch reuses the SAME ListFilterInput the list query was issued with, so bulk never grows a second filter language, and excludeIds carries the rows the operator un-ticked while select-all-matching was on.

The filter branch is RE-EVALUATED AT EXECUTION TIME: a row created between the operator ticking select-all-matching and confirming IS included. That is the honest meaning of "everything matching this filter", and it is why a confirm dialog must show bulkTargetCount's answer rather than a client-side tally.

Shared across list services.

archived
boolean
required

Response

Successful response.

Every 2xx response uses this envelope.

status
boolean
required

The actual resolver result. It can be false when an operation returns false or null without throwing.

message
string
required
Example:

"OK"

data
object
required

The one shape every bulk mutation answers in, so the client renders one summary. requested is what the target RESOLVED to on the server, not what the client guessed. refused and failed are counted separately on purpose: a rule declining a row (an AS Colour garment, a draft purchase order) is not a failure, and collapsing the two makes correct behaviour read as breakage.

Shared across list services.