Record Supplier Response
POST/api/purchase-orders/:purchase_order/supplier-responses
Record a supplier's response to a sent purchase order revision. Use it to log that the supplier accepted the order, requested changes, or rejected it, optionally capturing the quantities, costs and dates the supplier confirmed for individual lines.
Recording an accepted response stamps the order's last supplier confirmation time. Recording a changes_requested response moves the order into a supplier-change state so the confirmed quantities can be reviewed and applied.
Path params:
purchase_order(required): id of the purchase order.
Body:
response_type(required): one ofaccepted,changes_requested,rejected.source(optional): one ofinternal,supplier_portal,email.responder(nullable string): name of the person on the supplier side.note(nullable string, max 5000).snapshot_id(nullable integer): id of the revision snapshot the response applies to.lines(optional array). For each line:purchase_order_line_id(required withlines, integer).ordered_quantity(nullable numeric).confirmed_quantity(nullable numeric).confirmed_unit_cost(nullable numeric).confirmed_date(nullable date).exception_code(nullable): one ofCAP,MAT,LOG,PRI,UOM,SUB,MIN,DOC.status(required withlines): one ofaccepted,changed,rejected.note(nullable string).
Returns the recorded response and the refreshed purchase order under data.
Authentication: Requires Bearer token.
Requires permission: purchase_orders.update
Request
Responses
- 200
- 401
- 403
- 404
- 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.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
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.