Skip to Content
Platform conceptsRoles and permissions

Roles and permissions

MTP’s roles are the 1EdTech (IMS) LIS v2 vocabulary — the same role URIs LTI 1.3 carries in its roles claim — so LTI launches, NRPS rosters, and MTP’s own RBAC speak one language with no translation layer. Every role stores its canonical URI alongside the enum for wire fidelity.

Roles exist at three tiers.

Tier 1 — System roles

Platform-wide roles, held outside any tenant:

EnumLIS system role
APPLICATION_OWNERhttp://purl.imsglobal.org/vocab/lis/v2/system/person#Administrator
USERhttp://purl.imsglobal.org/vocab/lis/v2/system/person#User

Tier 2 — Institution roles

Held on an organization membership. Accounts belong to exactly one organization:

EnumLIS institution roleTypical holder
ADMINISTRATORhttp://purl.imsglobal.org/vocab/lis/v2/institution/person#AdministratorOrg owner, program administrator
FACULTYhttp://purl.imsglobal.org/vocab/lis/v2/institution/person#FacultyInstructional staff
STAFFhttp://purl.imsglobal.org/vocab/lis/v2/institution/person#StaffAuthors, reviewers, ops staff
MENTORhttp://purl.imsglobal.org/vocab/lis/v2/institution/person#MentorSupervisors, coaches
LEARNERhttp://purl.imsglobal.org/vocab/lis/v2/institution/person#Learner (paired with #Student)Trainees
OBSERVERhttp://purl.imsglobal.org/vocab/lis/v2/institution/person#ObserverExecutives, auditors, read-only stakeholders
GUESThttp://purl.imsglobal.org/vocab/lis/v2/institution/person#GuestExternal or temporary access

Tier 3 — Context roles

Scoped to a course or cohort. The five core LIS context roles ship as the base set, with standard sub-roles stored as a subRoles[] list:

EnumLIS context roleStandard sub-roles used at launch
ADMINISTRATORhttp://purl.imsglobal.org/vocab/lis/v2/membership#Administrator#Support, #Developer
CONTENT_DEVELOPERhttp://purl.imsglobal.org/vocab/lis/v2/membership#ContentDeveloper#ContentExpert, #Librarian
INSTRUCTORhttp://purl.imsglobal.org/vocab/lis/v2/membership#Instructor#TeachingAssistant, #Grader, #PrimaryInstructor
LEARNERhttp://purl.imsglobal.org/vocab/lis/v2/membership#Learner#GuestLearner
MENTORhttp://purl.imsglobal.org/vocab/lis/v2/membership#Mentor#Reviewer, #Auditor, #Advisor, #Tutor

Extending the vocabulary

Where the standard vocabulary lacks a needed distinction, MTP extends with custom sub-roles under an MTP namespace URI (https://vocab.train.hopemtp.app/lis#<SubRole>). The LIS specification explicitly permits custom URIs, and third-party LMSes ignore unknown ones gracefully. A new base role is never invented — an extension is always a sub-role of one of the five core context roles.

Permissions are separate from roles

Roles are standard labels; capabilities are a separable permissions[] list. The LMS-side catalog:

MANAGE_USERS, MANAGE_CONTENT, AUTHOR_CONTENT, APPROVE_CONTENT, REVIEW_PROVENANCE, MANAGE_FLOWS, MANAGE_RUBRICS, MANAGE_COHORTS, MANAGE_ASSIGNMENTS, VIEW_ANALYTICS, MANAGE_INTEGRATIONS, MANAGE_HOPE_CONNECTION, MANAGE_SSO

plus the Metahuman Studio set mirrored 1:1 from HOPE’s own catalog:

MANAGE_METAHUMANS, MANAGE_GUARDRAILS, MANAGE_WORKFLOWS, MANAGE_DATASETS, MANAGE_TOOLS, MANAGE_VOICES

plus an isFullAdmin flag.

Role-to-permission bundles are tenant-configurable data. Defaults ship per role; tenants adjust them without code changes or migrations.

Vertical personas are mappings, not roles

Vertical-specific personas — officer, trainer, author, approver, supervisor, program administrator — are mappings onto the standard roles plus a permission bundle, never first-class roles. For example, a “CBP Trainer” is institution FACULTY with context INSTRUCTOR; an “Approver” is STAFF with context CONTENT_DEVELOPER#ContentExpert and the AUTHOR_CONTENT and APPROVE_CONTENT permissions; a “Field Supervisor” is MENTOR with context MENTOR#Advisor and unit-scoped VIEW_ANALYTICS.

Because MTP’s internal roles are the LIS vocabulary, LTI 1.3 launch roles claims and NRPS memberships map onto MTP memberships 1:1.

Last updated on