Delete every pre-built item matching a target
Requires the scope prebuiltitems.write.
prebuiltitems.write.Authorizations
Tenant credential. This is sufficient by itself.
Headers
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.
Optional client-generated key for write retries. Reusing it with a different request returns 409; a replay includes Idempotency-Replayed: true.
1 - 200Body
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.
Response
Successful response.
Every 2xx response uses this envelope.
The actual resolver result. It can be false when an operation returns false or null without throwing.
"OK"
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.

