D2L Brightspace · Agentic Access
D2L Brightspace Agentic Access
x-agentic-access
generated
D2L Brightspace exposes 55 API operations that an AI agent could call, of which 18 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.
By consequence: 37 read and 18 write.
Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.
LMSLearning Management SystemEdTechEducationValenceD2LBrightspace
Operations: 55
Acting: 18
Human-in-the-loop: 0
Method: generated
By consequence
read 37
write 18
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/brightspace-openapi.yml
description: Recommended x-agentic-access execution contracts, classified heuristically from
the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
audience per deployment. See research/curity/agentic-governance/.
summary:
operations: 55
by_action_class:
connected: 37
acting: 18
by_consequence:
read: 37
write: 18
human_in_the_loop_required: 0
operations:
- path: /versions/
method: get
operationId: getAllVersions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /versions/{productCode}
method: get
operationId: getProductVersions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/users/whoami
method: get
operationId: getWhoAmI
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/users/
method: get
operationId: listUsers
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/users/
method: post
operationId: createUser
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /lp/1.53/users/{userId}
method: get
operationId: getUser
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/users/{userId}
method: put
operationId: updateUser
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /lp/1.53/users/{userId}
method: delete
operationId: deleteUser
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /lp/1.53/roles/
method: get
operationId: listRoles
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/enrollments/orgUnits/{orgUnitId}/users/
method: get
operationId: listOrgUnitUsers
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/enrollments/users/{userId}/orgUnits/
method: get
operationId: listUserOrgUnits
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/enrollments/myenrollments/
method: get
operationId: listMyEnrollments
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/enrollments/
method: post
operationId: createEnrollment
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /lp/1.53/enrollments/orgUnits/{orgUnitId}/users/{userId}
method: get
operationId: getEnrollment
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/enrollments/orgUnits/{orgUnitId}/users/{userId}
method: delete
operationId: deleteEnrollment
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /lp/1.53/orgstructure/
method: get
operationId: listOrgStructure
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/orgstructure/{orgUnitId}
method: get
operationId: getOrgUnit
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/orgstructure/{orgUnitId}/children/
method: get
operationId: listOrgUnitChildren
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/courses/{orgUnitId}
method: get
operationId: getCourseOffering
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/organization/info
method: get
operationId: getOrganizationInfo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/content/root/
method: get
operationId: getContentRoot
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/content/modules/{moduleId}
method: get
operationId: getContentModule
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/content/topics/{topicId}
method: get
operationId: getContentTopic
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/grades/
method: get
operationId: listGradeObjects
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/grades/
method: post
operationId: createGradeObject
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/grades/{gradeObjectId}/values/{userId}
method: get
operationId: getGradeValueForUser
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/grades/{gradeObjectId}/values/{userId}
method: put
operationId: setGradeValueForUser
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/grades/final/values/{userId}
method: get
operationId: getFinalGradeForUser
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/dropbox/folders/
method: get
operationId: listDropboxFolders
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/dropbox/folders/
method: post
operationId: createDropboxFolder
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/dropbox/folders/{folderId}/submissions/
method: get
operationId: listDropboxSubmissions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/dropbox/folders/{folderId}/feedback/{entityType}/{entityId}
method: post
operationId: setDropboxFeedback
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/quizzes/
method: get
operationId: listQuizzes
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/quizzes/
method: post
operationId: createQuiz
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/quizzes/{quizId}/attempts/
method: get
operationId: listQuizAttempts
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/discussions/forums/
method: get
operationId: listDiscussionForums
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/discussions/forums/
method: post
operationId: createDiscussionForum
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/discussions/forums/{forumId}/topics/{topicId}/posts/
method: get
operationId: listDiscussionPosts
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/discussions/forums/{forumId}/topics/{topicId}/posts/
method: post
operationId: createDiscussionPost
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/calendar/events/
method: get
operationId: listCalendarEvents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/calendar/event/
method: post
operationId: createCalendarEvent
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/calendar/event/{eventId}
method: get
operationId: getCalendarEvent
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/calendar/event/{eventId}
method: delete
operationId: deleteCalendarEvent
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/news/
method: get
operationId: listNewsItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/news/
method: post
operationId: createNewsItem
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/news/{newsItemId}
method: get
operationId: getNewsItem
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/{orgUnitId}/news/{newsItemId}
method: delete
operationId: deleteNewsItem
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/lo/outcomeSets/
method: get
operationId: listOutcomeSets
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /le/1.92/lo/outcomeSets/
method: post
operationId: createOutcomeSet
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /le/1.92/{orgUnitId}/lo/alignments/
method: get
operationId: listOutcomeAlignments
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/dataExport/list
method: get
operationId: listDataSets
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/dataExport/create
method: post
operationId: createDataExport
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /lp/1.53/dataExport/jobs
method: get
operationId: listDataExportJobs
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/dataExport/download/{exportJobId}
method: get
operationId: downloadDataExport
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /lp/1.53/datasets/bds
method: get
operationId: listBrightspaceDataSets
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none