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