LMS personas
LMS personas
Section titled “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.
Learner
Section titled “Learner”Self-registers (or already has an OL account with lms intent). After learner onboarding:
- Browse published catalogue (authenticated).
- Enroll; pay if priced (
self_pay) or wait for a grant (sponsor/admin_grant/cap_recommendation). - Consume modules in LMS-owned order; take native assessments; SCORM reports via CMI.
- 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.
Instructor
Section titled “Instructor”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 (
owneronly, 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).
Platform staff
Section titled “Platform staff”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.
Capability inheritance
Section titled “Capability inheritance”Do not check role === instructor on authoring endpoints. Check capability + scope:
course.content.edit— instructor scoped to assigned courses; staff (content_manager/admin) all coursescourse.publish— course owner or staffentitlement.grant— staff (admin/support)
GET /me returns personas, onboarding status, and capabilities[] for the client.