Workflow
- Create or restore a Preview session pinned to an exact draft revision or published course version.
- Select the module, lesson, or supported item with the normal session
manageoperation. - Call
renderwith the currentexpectedStateRevision. - Inspect the returned PNG, ARIA snapshot, diagnostics, and provenance manifest artifacts.
- Use
steponly when you need to test one supported interaction. - Optionally mint an observe-only link for a signed-in employer organization member, then revoke it when review is complete.
Endpoints
The OpenAPI document also describes the existing session create, restore,
selection, answer, simulated-run, reset, and expiration operations.
Render the current view
POST /sessions/{sessionId}/render requires lms:write, an
Idempotency-Key, and the current state revision:
evidenceClass: "SIMULATED_WORKER_PREVIEW";- the exact state and render revisions;
- private PNG artifact records;
- an ARIA snapshot for semantic inspection;
- renderer diagnostics; and
- a provenance manifest binding every artifact to the session, target, viewport, revision, checksum, and byte size.
Execute a safe step
POST /sessions/{sessionId}/step accepts a closed action vocabulary. It never
accepts CSS selectors, JavaScript, arbitrary URLs, coordinates, or free-form
browser instructions.
open_lesson and complete_content.
The receipt reports the canonical before and after state revisions and an
outcome of APPLIED or ALREADY_SATISFIED.
Share an employer review link
POST /sessions/{sessionId}/links returns the URL exactly once. Treat it as a
short-lived secret. Its fragment token is exchanged once for an HttpOnly
cookie, and every read checks that the viewer is currently signed in as a
member of the Preview session’s employer organization.
Links are observe-only. Opening one never changes the Preview session. Module
and lesson deep links are supported. Exact-question links currently fail with
ITEM_LINK_UNAVAILABLE rather than silently opening a broader view.
Later link reads return only metadata and lifecycle status:
ACTIVE, CONSUMED, REVOKED, or EXPIRED. They cannot recover the URL.
Authorization and retry behavior
- Render, step, link creation, and link revocation require
lms:writeand a stableIdempotency-Key. - Artifact and link reads require
lms:read. - Every operation enforces organization ownership of the Preview session.
- State-changing Preview operations use an expected revision and fail with
409when the session changed. - Renderer unavailability or capacity returns a retryable
503. Reuse the same idempotency key after an uncertain response. - Signed artifact URLs expire. Retrieve the artifact again when an authorized reviewer needs a fresh URL.
SDK methods
@opentrain-ai/sdk 0.15.0 or later exposes the same contract through:
renderLmsPreviewHosted;stepLmsPreviewHosted;createLmsPreviewLink;getLmsPreviewLink;listLmsPreviewLinks; andrevokeLmsPreviewLink.