Only what differs is written (outcome unchanged when nothing does: nothing written, nothing emitted). items is the whole line set with totals (checked as on create: 422 totals_mismatch); a line with shipped units is never removed or taken below them (409). A line or hold change reconciles the order's fulfillment orders in place (amendment 22); fulfillment.skip leaves them. isCanceled: true runs the cancel rules (POST /:id/cancel) in the same unit. A stale version is 409 version_conflict.
Scope: orders:write, channel:write or admin. A permission group made before the Channel API scopes existed grants it as orders:manage.
Idempotency: send Idempotency-Key; a retry with the same key replays the first answer.
Rate limit: write class, 1,200 requests per minute per tenant by default (read class 6,000). Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; a refusal is 429 rate_limited with Retry-After.
