Skip to content

Latest commit

 

History

History
345 lines (325 loc) · 12.8 KB

permissions.md

File metadata and controls

345 lines (325 loc) · 12.8 KB

About Permissions

Concepts

Course API permissions grant an API session the ability to perform an action on some object. Permissions are divided into three sub-types: CoursePermission, OrgPermission, and SitewidePermission. CoursePermissions grant authorization to act on a Course.OrgPermissions grant authorization to act on a VFO Org. SiteWidePermissions, currently in development, will reflect authorization to perform site-wide administrative actions.

Permission sub-types cannot be mixed (e.g., a user cannot be granted the PublishCourse permission within a VFO group). OrgPermissions can implicitly grant CoursePermissions. However, CoursePermissions cannot grant OrgPermissions, OrgPermissions cannot grant other OrgPermissions, and CoursePermissions cannot grant other CoursePermissions.

Org Permissions

Name Granted By Authorizations Notes
AdministerOrg User ID + VFO Org ID (vfo_user_org_permission)
  • Modify VFO Org metadata
  • Manage groups below the VFO Org
  • Delete the VFO Org
  • Modify permissions for users within the VFO Org
  • Share and unshare courses with the VFO Org
  • Invite learners to courses shared with the VFO Org
  • Learn, edit, publish, and view analytics for courses shared with the VFO Org
  • Add and remove contributors to courses shared with the VFO Org
TeachCourses User ID + VFO Org ID (vfo_user_org_permission)
  • Learn and view analytics for courses shared with the VFO Org
  • Invite learners to courses shared with the VFO Org
  • Share and unshare courses with the VFO Org, if you are a course editor
LearnCourses User ID + VFO Org ID (vfo_user_org_permission)
  • Learn courses shared with the VFO Org
  • Share and unshare courses with the VFO Org, if you are a course editor

Course Permissions

Name Granted By Authorizations Notes
ArchiveCourse
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg permission in a VFO Org the course is shared with
Mark the course as deleted
EnrollInAPublishedCourse
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg or `TeachCourses` permission in a VFO Org the course is shared with
  • Implicitly if the course is public
Learn the published instance of the course
InsertConfigureDeleteYourOwnGadgetInstances Modify course content
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg permission in a VFO Org the course is shared with
InstructCourse Implicitly by having AdministerOrg or `TeachCourses` permission in a VFO Org the course is shared with None The InstructCourse permission replaces the use of `TeachCourses` in the `Course.permissions[]` view model property. This permission is used to indicate that the calling session has the Instructor role with request to the course. The InstructCourse permission is virtualized (never granted directly in `user_access` or `authenticator_access`).
ManageAllAuthoringInvitationsAndPermissions
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg permission in a VFO Org the course is shared with
Add and remove course editors and publishers
PublishCourses
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg permission in a VFO Org the course is shared with
Journal a new course revision and mark the revision as published. If the caller is a VFO session or has an active Versal Pro subscription, having the PublishCourses permission implicitly grants the SetProgramVisibility, `TrackLearners`, and `ViewCourseAnalytics` permissions.
SetProgramVisibility
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg permission in a VFO Org the course is shared with
  • Implicitly by having the PublishCourses permission together with a Versal Pro subscription or VFO session
Toggle course public/private setting
TrackLearners
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg or `TeachCourses` permission in a VFO Org the course is shared with
  • Implicitly by having the PublishCourses permission together with a Versal Pro subscription or VFO session
None
ViewCourseAnalytics
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg or `TeachCourses` permission in a VFO Org the course is shared with
  • Implicitly by having the PublishCourses permission together with a Versal Pro subscription or VFO session
  • View learner progress data for the course
  • View learner grades for the course
  • Toggle learner as tracked/untracked for the course
  • View learner activity reports from LAAPI
  • View learner user state for the course
ViewUnpublishedCourseAsLearner
  • User ID + Program ID (user_access)
  • Authenticator ID + Program ID (authenticator_access)
  • Implicitly by having AdministerOrg permission in a VFO Org the course is shared with
Learn the unpublished instance of the course

Site Wide Permissions

Name Granted By Authorizations Notes
VersalAdmin User (user_permission) None In development

Summary of Implicit Permission Grants

Explicit Org Permission Implicit Course Permissions
AdministerOrg ArchiveCourse
EnrollInAPublishedCourse
InsertConfigureDeleteYourOwnGadgetInstances
InstructCourse
ManageAllAuthoringInvitationsAndPermissions
PublishCourses
SetProgramVisibility
TrackLearners
ViewCourseAnalytics
ViewUnpublishedCourseAsLearner
TeachCourses EnrollInAPublishedCourse
InstructCourse
TrackLearners
ViewCourseAnalytics
LearnCourses EnrollInAPublishedCourse
Explicit Account Subscription Implicit Course Permissions
Versal Pro or VFO If caller has the PublishCourses permission:
SetProgramVisibility
TrackLearners
ViewCourseAnalytics

Permissions endpoints

Get permissions

List the calling session's permissions on an object

Request property Spec
Action GET /permissions
SID header Any authenticated caller
modelType parameter Indicates whether to return legacy model or new map-style model
searchType parameter Indicates what object type's permissions are being requested. Valid types: Course,VFOContainer
id parameter Identifier key for the object
Body model no body
Scala object GetPermissions

Use this endpoint to get the permissions of the calling session on the specified entity, as search type and id. For searchType=Course the modelType can be new or legacy , case insensitive. If not specified it defaults to legacy For searchType=VFOContainer the modelType can be new, case insensitive.

Status Response body spec
200 For Course search: If modelType is legacy Course Permission Legacy View Model else Course Permission New View Model. For VFOContainer search: Org Permission View Model
400 searchType is required
400 id is required
400 Invalid searchType
400 Unknown modelType 'modelType'
403 Insufficient permissions