Release Planned Orders
POST/api/manufacturing/mrp/planned-orders/release
Carry planned orders out into real supply documents: a manufacturing order for make, one purchase order per supplier for buy, and a warehouse transfer for transfer.
Authorization: requires the mrp.release permission and a token carrying the mrp:release scope (manufacturing:write also satisfies it). This is the one action that creates financially significant documents, so it is deliberately grantable separately from the rest of the plan.
Selection payload — either an explicit list of ids, or every planned order matching a set of filters:
- scope:
selected(default) acts onids;filteredacts on every row matchingfilter/filter_groupswithinmrp_run_id. - ids[]: planned-order ids. Required unless
scope=filtered. At most 1000 — usescope=filteredbeyond that. Ids that no longer exist come back as a 422 naming them (a planned order is replaced on every run, so a stale selection means the plan was re-run). - mrp_run_id: required when
scope=filtered— the run the filters are resolved against. - exclude_ids[]: rows to leave out after selecting everything matching the filters (max 1000).
- filter / filter_groups / sort: the same filters and sort GET /api/manufacturing/mrp/runs/{mrpRun}/planned-orders accepts, replayed to resolve the filtered set.
One unusable row no longer aborts the batch: the response counts what was released and, per reason, what was skipped (
skipped_warehouse,skipped_no_supplier,skipped_no_bom,skipped_no_source_warehouse,skipped_failed).
mrp:release|manufacturing:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Request
Responses
- 200
- 401
- 403
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.