Skip to content

LMS personas

Audience: ux, product, qa, backend
Status: specced
Owns: product + UX
Depends on: LMS overview, Lifecycle, RBAC matrix

Unlike CAP, one Orchestrator account may hold multiple LMS personas at once (learn + teach, or staff who also take a course). Each persona has its own onboarding record; that persona’s app surface stays locked until onboarding is completed.

Self-registers (or already has an OL account with lms intent). After learner onboarding:

  1. Browse published catalogue (authenticated).
  2. Enroll; pay if priced (self_pay) or wait for a grant (sponsor / admin_grant / cap_recommendation).
  3. Consume modules in LMS-owned order; take native assessments; SCORM reports via CMI.
  4. On completion policy → LMS certificate + lms.course.completed.

Onboarding v1: first/last name, gender, country, state, LGA (OL Address), plus schemaVersion JSON for later business fields.

Platform-invite only (same idea as CAP awarding-body). After invite + instructor onboarding:

  • Create/edit courses (native items + SCORM 1.2 zip via OL packageAssetId).
  • Configure sequencing and completion policy.
  • Publish their own courses (owner).
  • Add/remove co-instructors (owner only, plus staff).
  • View progress for learners on assigned courses.

Co-instructors may edit; they may not publish. Staff may do everything an instructor can, with broader scope (all courses).

First staff user is bootstrap admin (operational, not a public API). Admin invites other staff with roles:

Role Intent
admin Invites, all courses, entitlements, pricing, staff management
content_manager Author/publish any course
support Read enrollments/progress, grant access; no content edit

Staff still complete staff onboarding before the admin surface unlocks.

Do not check role === instructor on authoring endpoints. Check capability + scope:

  • course.content.edit — instructor scoped to assigned courses; staff (content_manager/admin) all courses
  • course.publish — course owner or staff
  • entitlement.grant — staff (admin / support)

GET /me returns personas, onboarding status, and capabilities[] for the client.