lms:read. Publish and rollout Apply require lms:write, a claimed employer account, organization/course authority, and an Idempotency-Key where shown.
Publish
POST /publish requires an Idempotency-Key header:
version and additive agent guidance:
Preview rollout impact
POST /rollout-preview is read-only and takes no idempotency key:
jobId, a non-empty assignmentIds array, or both. The response reports would-be assignment outcomes and counts. It is live information, not a concurrency fence.
Apply rollout
POST /rollout requires a durable Idempotency-Key and explicit confirmation:
updatedNowqueuedalreadyCurrentskippedTerminalblockedfailed
Read status and receipts
GET /rollout?toCourseVersionId=<id>&jobId=<id> returns the newest matching receipt plus pendingQueued. Both filters are optional.
GET /rollout/{operationKey} returns the durable receipt for one Apply key plus its live queued count. Poll this record while deferred learners finish protected work.
Idempotency and failures
Replaying the same Apply key with the identical request returns the stored receipt. Reusing it with a different request returns409 CONFLICT. One assignment’s contention or failure is isolated and does not roll back successful assignments; inspect its typed reason and retry that selected assignment under a fresh key after remediation.
Rollout never cancels or recreates assignments, resets unrelated progress, or silently regrades submitted attempts.
See Update an assigned LMS course, CLI commands, and MCP tools.