generated: '2026-07-17' method: generated source: openapi/360learning-bulk-api.json, openapi/360learning-core-api.json, openapi/360learning-plugin-api.json, openapi/360learning-user-authorized-api.json, openapi/360learning-webhook-api.json 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: 164 by_action_class: acting: 104 connected: 60 by_consequence: safety-critical: 104 read: 60 human_in_the_loop_required: 104 operations: - path: /api/v2/bulk/groups/catalog method: post operationId: v2.bulk.groups.AddContentsToGroupsCatalogController_addContentsToGroupsCatalog x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/groups/catalog method: delete operationId: v2.bulk.groups.RemoveContentsFromGroupsCatalogController_removeContentsFromGroupsCatalog x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/groups/library method: post operationId: v2.bulk.groups.AddContentsToGroupsLibraryController_addContentsToGroupsLibrary x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/groups/library method: delete operationId: v2.bulk.groups.RemoveContentsFromGroupsLibraryController_removeContentsFromGroupsLibrary x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/groups/memberships method: post operationId: v2.bulk.groups.AddUsersToGroupsController_addUsersToGroups x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/groups/memberships method: delete operationId: v2.bulk.groups.RemoveUsersFromGroupsController_removeUsersFromGroups x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/groups method: delete operationId: v2.bulk.groups.DeleteGroupsController_deleteGroups x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/integrations/{integrationId}/courses method: delete operationId: v2.bulk.integrations.ArchiveExternalCoursesController_archiveExternalCourses x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/integrations/{integrationId}/courses method: put operationId: v2.bulk.integrations.ImportExternalCoursesController_importExternalCourses x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/integrations/{integrationId}/stats method: post operationId: v2.bulk.integrations.ImportExternalStatisticsController_importExternalStatistics x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/operations/{bulkOperationId} method: get operationId: v2.bulk.operations.GetBulkOperationController_getBulkOperation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/bulk/operations/{bulkOperationId}/results method: get operationId: v2.bulk.operations.GetBulkOperationResultsController_getBulkOperationResults x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/bulk/operations method: get operationId: v2.bulk.operations.GetBulkOperationsController_getBulkOperations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/bulk/skills/reviews method: post operationId: v2.bulk.skills.AddSkillReviewsController_addSkillReviews x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills/jobs method: delete operationId: v2.bulk.skills.DeleteJobsController_deleteJobs x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills/jobs method: put operationId: v2.bulk.skills.UpsertJobsController_upsertJobs x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills/libraries method: delete operationId: v2.bulk.skills.DeleteLibrariesController_deleteLibraries x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills/libraries method: put operationId: v2.bulk.skills.UpsertLibrariesController_upsertLibraries x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills method: delete operationId: v2.bulk.skills.DeleteSkillsController_deleteSkills x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills method: put operationId: v2.bulk.skills.UpsertSkillsController_upsertSkills x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills/jobs-skills method: put operationId: v2.bulk.skills.ReplaceJobsSkillsController_replaceJobsSkills x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/skills/users/jobs method: put operationId: v2.bulk.skills.ReplaceUsersJobsController_replaceUsersJobs x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/bulk/notifications/subscriptions method: post operationId: v2.bulk.subscriptions.CreateSubscriptionEventsController_createSubscriptionEvents x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/certificate-outlines method: post operationId: v2.certificateOutlines.CreateCertificateOutlineController_createCertificateOutline x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/certificate-outlines method: get operationId: v2.certificateOutlines.GetCertificateOutlinesController_getCertificateOutlines x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/certificate-outlines/{certificateOutlineId} method: delete operationId: v2.certificateOutlines.DeleteCertificateOutlineController_deleteCertificateOutline x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/certificate-outlines/{certificateOutlineId} method: patch operationId: v2.certificateOutlines.UpdateCertificateOutlineController_updateCertificateOutline x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classrooms method: post operationId: v2.classrooms.CreateClassroomController_createClassroom x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classrooms method: get operationId: v2.classrooms.GetClassroomsController_getClassrooms x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classrooms/{classroomId} method: get operationId: v2.classrooms.GetClassroomController_getClassroom x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classrooms/{classroomId} method: patch operationId: v2.classrooms.UpdateClassroomController_updateClassroom x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classrooms/{classroomId}/registrations method: get operationId: v2.classrooms.GetClassroomRegistrationsController_getClassroomRegistrations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classrooms/{classroomId}/slots method: post operationId: v2.classrooms.CreateClassroomSlotController_createClassroomSlot x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classrooms/{classroomId}/slots method: get operationId: v2.classrooms.GetClassroomSlotsController_getClassroomSlots x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classrooms/{classroomId}/slots/{classroomSlotId} method: delete operationId: v2.classrooms.DeleteClassroomSlotController_deleteClassroomSlot x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classrooms/{classroomId}/slots/{classroomSlotId} method: patch operationId: v2.classrooms.UpdateClassroomSlotController_updateClassroomSlot x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classroom-slots/{classroomSlotId}/attendance-sheets method: post operationId: v2.classrooms.CreateAttendanceSheetController_createAttendanceSheet x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classroom-slots/{classroomSlotId}/attendance-sheets method: get operationId: v2.classrooms.GetAttendanceSheetsController_getAttendanceSheets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classroom-slots/{classroomSlotId}/attendance-sheets/{attendanceSheetId} method: delete operationId: v2.classrooms.DeleteAttendanceSheetController_deleteAttendanceSheet x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classroom-slots/{classroomSlotId}/attendance-sheets/{attendanceSheetId} method: put operationId: v2.classrooms.UpdateAttendanceSheetController_updateAttendanceSheet x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classroom-slots/{classroomSlotId}/attendance-sheets/{attendanceSheetId}/attendances method: get operationId: v2.classrooms.GetAttendancesController_getAttendances x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classroom-slots/{classroomSlotId}/waitlist method: get operationId: v2.classrooms.GetClassroomSlotWaitlistController_getClassroomSlotWaitlist x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classroom-slots/{classroomSlotId}/waitlist/{userId} method: post operationId: v2.classrooms.JoinClassroomSlotWaitlistController_joinClassroomSlotWaitlist x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classroom-slots/{classroomSlotId}/waitlist/{userId} method: delete operationId: v2.classrooms.LeaveClassroomSlotWaitlistController_leaveClassroomSlotWaitlist x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classroom-slots/{classroomSlotId}/registrations/{userId} method: post operationId: v2.classrooms.AddSlotRegistrationController_addSlotRegistration x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/classroom-slots/{classroomSlotId}/registrations method: get operationId: v2.classrooms.GetSlotRegistrationsController_getSlotRegistrations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/classroom-slots/{classroomSlotId}/registrations/{slotRegistrationId} method: patch operationId: v2.classrooms.UpdateSlotRegistrationController_updateSlotRegistration x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/courses/{courseId}/archive method: put operationId: v2.courses.ArchiveOrUnarchiveCourseController_archiveOrUnarchiveCourse x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/courses/elearning-standard method: post operationId: v2.courses.CreateELearningStandardCourseController_createELearningStandardCourse x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/courses/generate-from-prompt method: post operationId: v2.courses.GenerateFromPromptController_generateFromPrompt x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/courses/stats method: get operationId: v2.courses.GetAllCourseStatsController_getAllCourseStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/courses/{courseId} method: get operationId: v2.courses.GetCourseController_getCourse x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/courses/{courseId}/custom-fields/values method: get operationId: v2.courses.GetCourseCustomFieldValuesController_getCourseCustomFieldValues x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/courses/{courseId}/custom-fields/values method: put operationId: v2.courses.UpdateCourseCustomFieldValuesController_updateCourseCustomFieldValues x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/courses method: get operationId: v2.courses.GetCoursesController_getCourses x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/courses/{courseId}/tags method: get operationId: v2.courses.GetCourseTagsController_getTags x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/courses/{courseId}/tags method: put operationId: v2.courses.UpdateTagsController_updateTags x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/courses/elearning-standard/{courseId} method: patch operationId: v2.courses.UpdateELearningStandardCourseController_updateELearningStandardCourse x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/custom-fields method: post operationId: v2.customFields.CreateCustomFieldController_createCustomField x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/custom-fields method: get operationId: v2.customFields.GetCustomFieldsController_getCustomFields x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/custom-fields/{customFieldId} method: delete operationId: v2.customFields.DeleteCustomFieldController_deleteCustomField x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/custom-fields/{customFieldId} method: patch operationId: v2.customFields.UpdateCustomFieldController_updateCustomField x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/custom-fields/{customFieldId}/authorized-values method: get operationId: v2.customFields.GetAuthorizedValuesController_getAuthorizedValues x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/custom-fields/{customFieldId}/authorized-values method: put operationId: v2.customFields.ReplaceAuthorizedValuesController_replaceAuthorizedValues x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/custom-links method: post operationId: v2.customLinks.CreateCustomLinkController_createCustomLink x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/custom-links method: get operationId: v2.customLinks.GetCustomLinksByCompanyController_getCustomLinksByCompany x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/custom-links/{customLinkId} method: delete operationId: v2.customLinks.DeleteCustomLinkController_deleteCustomLink x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/custom-links/{customLinkId} method: put operationId: v2.customLinks.ReplaceCustomLinkController_replaceCustomLink x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/external-ids method: post operationId: v2.externalIds.CreateExternalIdController_createExternalId x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/external-ids method: get operationId: v2.externalIds.GetExternalIdsController_getExternalIds x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/external-ids/{mappingId} method: delete operationId: v2.externalIds.DeleteExternalIdController_deleteExternalId x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/external-ids/{mappingId} method: put operationId: v2.externalIds.UpdateExternalIdController_updateExternalId x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/groups/{groupId}/{role}/{userId} method: post operationId: v2.groups.AddUserRoleToGroupController_addUserRoleToGroup x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/groups/{groupId}/{role}/{userId} method: delete operationId: v2.groups.RemoveUserRoleFromGroupController_removeUserRoleFromGroup x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/groups method: post operationId: v2.groups.CreateGroupController_createGroup x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/groups method: get operationId: v2.groups.GetGroupsController_getGroups x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/groups/{groupId} method: delete operationId: v2.groups.DeleteGroupController_deleteGroup x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/groups/{groupId} method: get operationId: v2.groups.GetGroupController_getGroup x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/groups/{groupId} method: patch operationId: v2.groups.UpdateGroupController_updateGroup x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/groups/{groupId}/roles method: get operationId: v2.groups.GetGroupMembersController_getGroupMembers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/groups/{groupId}/catalog/{contentType}-ids method: get operationId: v2.groups.GetCatalogContentIdsController_getCatalogContentIds x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/groups/{groupId}/library/{contentType}-ids method: get operationId: v2.groups.GetLibraryContentIdsController_getLibraryContentIds x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/groups/{groupId}/media method: post operationId: v2.groups.UploadGroupMediaController_uploadGroupMedia x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/groups/{groupId}/branding method: patch operationId: v2.groups.UpsertGroupCustomizationColorsController_upsertGroupCustomizationColors x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/integrations method: post operationId: v2.integrations.CreateIntegrationController_createIntegration x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/integrations method: get operationId: v2.integrations.GetIntegrationsController_getIntegrations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/integrations/{integrationId} method: delete operationId: v2.integrations.DeleteIntegrationController_deleteIntegration x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/integrations/{integrationId} method: patch operationId: v2.integrations.EditIntegrationController_editIntegration x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/integrations/{integrationId}/courses/{externalId} method: get operationId: v2.integrations.GetExternalCourseController_getExternalCourse x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/learning-needs method: get operationId: v2.learningNeeds.GetLearningNeedsController_getLearningNeeds x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/oauth2/token method: post operationId: v2.authentication.GenerateTokenController_generateToken x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/sessions method: get operationId: v2.paths.GetAllPathSessionsController_getAllPathSessions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/stats method: get operationId: v2.paths.GetPathStatsController_getPathStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/add-tokens method: post operationId: v2.paths.AddTokensController_addTokens x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/archive method: put operationId: v2.paths.ArchiveOrUnarchivePathController_archiveOrUnarchivePath x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths method: post operationId: v2.paths.CreatePathController_createPath x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths method: get operationId: v2.paths.GetPathsController_getPaths x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/sessions method: post operationId: v2.paths.CreatePathSessionController_createPathSession x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/sessions method: get operationId: v2.paths.GetPathSessionsController_getPathSessions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId} method: delete operationId: v2.paths.DeletePathController_deletePath x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId} method: get operationId: v2.paths.GetPathController_getPath x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId} method: patch operationId: v2.paths.UpdatePathController_updatePath x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/sessions/{sessionId} method: delete operationId: v2.paths.DeletePathSessionController_deletePathSession x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/sessions/{sessionId} method: get operationId: v2.paths.GetPathSessionController_getPathSession x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/sessions/{sessionId} method: patch operationId: v2.paths.ModifyPathSessionController_modifyPathSession x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/sessions/{sessionId}/self-enrollments/{userId} method: delete operationId: v2.paths.ArchiveSelfEnrollmentController_archiveSelfEnrollment x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/enrollments method: get operationId: v2.paths.GetEnrollmentsController_getEnrollments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/sessions/{sessionId}/custom-fields/values method: get operationId: v2.paths.GetPathSessionCustomFieldValuesController_getPathSessionCustomFieldValues x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/sessions/{sessionId}/custom-fields/values method: put operationId: v2.paths.v2.paths.UpdatePathSessionCustomFieldValuesController_updatePathSessionCustomFieldValues x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/tags method: get operationId: v2.paths.GetPathTagsController_getTags x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/tags method: put operationId: v2.paths.UpdateTagsController_updateTags x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/sessions/{sessionId}/audiences method: get operationId: v2.paths.GetSessionAudienceController_getSessionAudience x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/sessions/{sessionId}/audiences method: put operationId: v2.paths.UpdateSessionAudienceController_updateSessionAudience x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/sessions/{sessionId}/user-statuses method: get operationId: v2.paths.v2.paths.GetSessionStatsController_getSessionStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/sessions/{sessionId}/user-stats method: get operationId: v2.paths.GetUserStatsController_getUserStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/paths/{pathId}/child-sessions/{childSessionId} method: patch operationId: v2.paths.ModifyChildPathSessionController_modifyChildPathSession x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/translations method: put operationId: v2.paths.ReplacePathTranslationsController_replacePathTranslations x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/paths/{pathId}/steps method: put operationId: v2.paths.UpdateStepsController_updateSteps x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/projects method: get operationId: v2.projects.GetProjectsController_getProjects x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/skills/powers method: get operationId: v2.skills.GetPowersController_getPowers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/skills method: get operationId: v2.skills.GetSkillsController_getSkills x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/skills/users/{userId}/jobs method: put operationId: v2.skills.ReplaceUserJobsController_replaceUserJobs x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/tags method: post operationId: v2.tags.CreateTagController_createTag x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/tags method: get operationId: v2.tags.GetTagsController_getTags x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/tags/{tagId} method: delete operationId: v2.tags.DeleteTagController_deleteTag x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/tags/{tagId} method: get operationId: v2.tags.GetTagController_getTag x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/tags/{tagId} method: put operationId: v2.tags.UpdateTagController_updateTag x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/activate method: put operationId: v2.users.ActivateUserController_activateUser x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/managers/{managerId} method: post operationId: v2.users.AddManagerController_addManager x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/managers/{managerId} method: delete operationId: v2.users.DeleteManagerController_deleteManager x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/custom-links method: post operationId: v2.users.CreateCustomUserLinkController_createCustomUserLink x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/custom-links method: get operationId: v2.users.GetCustomUserLinksController_getCustomUserLinks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users method: post operationId: v2.users.CreateUserController_createUser x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users method: get operationId: v2.users.GetUsersController_getUsers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId}/certificates method: post operationId: v2.users.CreateUserCertificateController_createUserCertificate x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/certificates method: get operationId: v2.users.GetUserCertificatesController_getUserCertificates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId}/custom-links/{customUserLinkId} method: delete operationId: v2.users.DeleteCustomUserLinkController_deleteCustomUserLink x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/custom-links/{customUserLinkId} method: put operationId: v2.users.UpdateCustomUserLinkController_updateCustomUserLink x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId} method: delete operationId: v2.users.DeleteUserController_deleteUser x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId} method: get operationId: v2.users.GetUserController_getUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId} method: patch operationId: v2.users.UpdateUserController_updateUser x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/managers method: get operationId: v2.users.GetManagersController_getManagers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId}/subordinates method: get operationId: v2.users.GetSubordinatesController_getSubordinates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId}/custom-fields/values method: get operationId: v2.users.GetUserCustomFieldValuesController_getUserCustomFieldValues x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId}/custom-fields/values method: put operationId: v2.users.UpdateUserCustomFieldValuesController_updateUserCustomFieldValues x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/certificates/{certificateId}/pdf method: get operationId: v2.users.GetUserCertificateAsPdfController_getUserCertificateAsPdf x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId}/roles method: get operationId: v2.users.GetUserRolesInGroupsController_getUserRolesInGroups x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/users/{userId}/pseudonymize method: put operationId: v2.users.PseudonymizeUserController_pseudonymizeUser x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/password method: put operationId: v2.users.ReplacePasswordController_replacePassword x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/certificates/privacy-level method: patch operationId: v2.users.UpdateUserCertificatesPrivacyLevelController_updateUserCertificatesPrivacyLevel x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/users/{userId}/media method: post operationId: v2.users.UploadUserMediaController_uploadUserMedia x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/plugin/oauth2/backend-token method: post operationId: v2.authentication.GeneratePluginBackendTokenController_generatePluginBackendToken x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/plugin/oauth2/client-token method: post operationId: v2.authentication.GeneratePluginClientTokenController_generatePluginClientToken x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/uaa/users/me method: get operationId: v2.users.GetProfileController_getProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/webhooks/subscriptions method: post operationId: v2.webhook.subscriptions.CreateSubscriptionController_createSubscription x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/webhooks/subscriptions method: get operationId: v2.webhook.subscriptions.GetSubscriptionsController_getSubscriptions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/webhooks/subscriptions/{subscriptionId} method: delete operationId: v2.webhook.subscriptions.DeleteSubscriptionController_deleteSubscription x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/webhooks/subscriptions/{subscriptionId} method: get operationId: v2.webhook.subscriptions.GetSubscriptionController_getSubscription x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/webhooks/subscriptions/{subscriptionId} method: patch operationId: v2.webhook.subscriptions.UpdateSubscriptionController_updateSubscription x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/webhooks/subscriptions/{subscriptionId}/events method: get operationId: v2.webhook.subscriptions.GetEventsController_getEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/webhooks/subscriptions/{subscriptionId}/secrets method: get operationId: v2.webhook.subscriptions.GetSigningSecretController_getSigningSecret x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v2/webhooks/subscriptions/{subscriptionId}/events/retry-failure method: post operationId: v2.webhook.subscriptions.RetryEventFailuresController_retryEventFailures x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/webhooks/subscriptions/{subscriptionId}/events/retry-success method: post operationId: v2.webhook.subscriptions.RetryEventSuccessesController_retryEventSuccesses x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /api/v2/webhooks/subscriptions/{subscriptionId}/secrets/rotate method: post operationId: v2.webhook.subscriptions.RotateSigningSecretController_rotateSigningSecret x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required