generated: '2026-07-15' method: generated source: openapi/panopto-rest-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: 89 by_action_class: connected: 39 acting: 50 by_consequence: read: 39 physical: 13 write: 37 human_in_the_loop_required: 0 operations: - path: /api/v1/auth/legacyLogin method: get operationId: Auth_LegacyLogin x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/remoteRecorderAPI/remoteRecorder method: put operationId: RemoteRecorderAPI_RegisterRemoteRecorder x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/connect method: post operationId: RemoteRecorderAPI_Connect x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/disconnect method: post operationId: RemoteRecorderAPI_Disconnect x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/heartbeat method: post operationId: RemoteRecorderAPI_Heartbeat x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/schedule method: get operationId: RemoteRecorderAPI_GetSchedule x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/schedule method: post operationId: RemoteRecorderAPI_UpdateSchedule x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/error method: post operationId: RemoteRecorderAPI_Error x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/legacyLogin method: get operationId: RemoteRecorderAPI_LegacyLogin x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/remoteRecorderAPI/session/{sessionId}/pause method: post operationId: RemoteRecorderAPI_PauseRecording x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/session/{sessionId}/resume method: post operationId: RemoteRecorderAPI_ResumeRecording x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/urls method: post operationId: RemoteRecorderAPI_ReportRemoteRecorderURLs x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/connect method: post operationId: RemoteRecorderAPI_WebRtcConnect x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/disconnect method: post operationId: RemoteRecorderAPI_WebRtcDisconnect x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/events method: get operationId: RemoteRecorderAPI_WebRtcGetEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/iceCandidates method: post operationId: RemoteRecorderAPI_WebRtcIceCandidates x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/sdpOffer method: post operationId: RemoteRecorderAPI_WebRtcSdpOffer x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api/v1/accessibility/bulk/preview method: post operationId: Accessibility_PreviewBulkAccessibility 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: /api/v1/accessibility/bulk/schedule method: post operationId: Accessibility_ScheduleBulkAccessibility 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: /api/v1/captionproviders method: get operationId: CaptionProviders_GetCaptionProviders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/reports/{id} method: get operationId: Reports_GetReportFromId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/portal/{portalId}/user method: post operationId: XfpUserProfiles_Create 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: /api/v1/portal/{portalId}/user method: get operationId: XfpUserProfiles_List x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/portal/{portalId}/user/{userId} method: delete operationId: XfpUserProfiles_Delete 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: /api/v1/portal/{portalId}/user/{userId} method: put operationId: XfpUserProfiles_Update 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: /api/v1/portal/{portalId}/user/bulk-create method: post operationId: XfpUserProfiles_BulkCreate 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: /api/v1/portal/{portalId}/user/bulk-delete method: post operationId: XfpUserProfiles_BulkDelete 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: /api/v1/folders/{id} method: get operationId: Folders_GetFolderById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id} method: put operationId: Folders_UpdateFolderMetadata 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: /api/v1/folders/{id} method: delete operationId: Folders_DeleteFolder 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: /api/v1/folders/{id}/children method: get operationId: Folders_GetChildFolders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id}/sessions method: get operationId: Folders_GetSessions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id}/sessions/search method: get operationId: Folders_SearchSessionsInFolder x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id}/playlists method: get operationId: Folders_GetPlaylists x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id}/settings/access method: get operationId: Folders_GetAccessSettings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id}/settings/access method: put operationId: Folders_UpdateAccessSettings 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: /api/v1/folders/{id}/settings method: get operationId: Folders_GetSettings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id}/settings method: put operationId: Folders_UpdateSettings 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: /api/v1/folders/{id}/permissions method: get operationId: Folders_GetPermissions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/{id}/permissions method: post operationId: Folders_CreatePermission 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: /api/v1/folders/{id}/permissions method: delete operationId: Folders_DeletePermission 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: /api/v1/folders method: post operationId: Folders_CreateFolder 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: /api/v1/folders/search method: get operationId: Folders_SearchForFolders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/folders/creator method: get operationId: Folders_GetCreatorFoldersList x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/groups/search method: get operationId: Groups_Search x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/playlists/{id} method: get operationId: Playlists_GetPlaylistById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/playlists/{id} method: put operationId: Playlists_UpdatePlaylistMetadata 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: /api/v1/playlists/{id} method: delete operationId: Playlists_DeletePlaylist 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: /api/v1/playlists/{id}/sessions method: get operationId: Playlists_GetSessionsForPlaylist x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/playlists/{id}/sessions method: put operationId: Playlists_AddSessionToPlaylist 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: /api/v1/playlists method: post operationId: Playlists_CreatePlaylist 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: /api/v1/playlists/search method: get operationId: Playlists_SearchForPlaylists x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/playlists/{id}/sessions/{sessionId} method: delete operationId: Playlists_RemoveSessionFromPlaylist 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: /api/v1/remoteRecorders/search method: get operationId: RemoteRecorders_SearchForRemoteRecorders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/scheduledRecordings/{id} method: get operationId: ScheduledRecordings_GetScheduledRecordingById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/scheduledRecordings/{id} method: put operationId: ScheduledRecordings_UpdateScheduledRecording 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: /api/v1/scheduledRecordings/{id} method: delete operationId: ScheduledRecordings_CancelScheduledRecording 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: /api/v1/scheduledRecordings method: post operationId: ScheduledRecordings_CreateScheduledRecording 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: /api/v1/searchIndexSync/updates method: get operationId: SearchIndexSyncUpdates_GetUpdates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/searchIndexSync/content method: get operationId: SearchIndexSyncUpdates_GetContent x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id} method: get operationId: Sessions_GetSessionById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id} method: put operationId: Sessions_UpdateSessionMetadata 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: /api/v1/sessions/{id} method: delete operationId: Sessions_DeleteSession 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: /api/v1/sessions/search method: get operationId: Sessions_SearchForSessions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/inProgress/webcast method: get operationId: Sessions_GetInProgressWebcasts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/inProgress/recording method: get operationId: Sessions_GetInProgressRecordings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id}/viewers method: get operationId: Sessions_GetSessionViewingStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id}/tags method: get operationId: Sessions_GetTagsForSession x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id}/tags method: put operationId: Sessions_UpdateTagsForSession 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: /api/v1/sessions/{id}/captions method: post operationId: Sessions_UploadCaptionsToSession 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: /api/v1/sessions/{id}/captions method: delete operationId: Sessions_DeleteSessionCaptions 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: /api/v1/sessions/{id}/captions/languages/{language} method: delete operationId: Sessions_DeleteSessionCaptionsForLanguage 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: /api/v1/sessions/{id}/settings/access method: get operationId: Sessions_GetAccessSettings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id}/settings/access method: put operationId: Sessions_UpdateAccessSettings 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: /api/v1/sessions/{id}/permissions method: get operationId: Sessions_GetPermissions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id}/permissions method: post operationId: Sessions_CreatePermission 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: /api/v1/sessions/{id}/permissions method: delete operationId: Sessions_DeletePermission 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: /api/v1/sessions/{id}/manage/scorm method: get operationId: Sessions_GetScormManifestById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/sessions/{id}/sessioncopy method: post operationId: Sessions_Copy 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: /api/v1/streams/{id}/captions method: post operationId: Streams_UploadCaptionsToStream 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: /api/v1/tags method: post operationId: Tags_CreateTag 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: /api/v1/tags method: get operationId: Tags_GetTags x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/tags/{id} method: get operationId: Tags_GetTagById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/tags/{id} method: put operationId: Tags_UpdateTag 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: /api/v1/tags/{id} method: delete operationId: Tags_DeleteTag 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: /api/v1/tags/{id}/merge method: post operationId: Tags_MergeTags 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: /api/v1/users/me/sessions/viewed method: get operationId: Users_GetMyViewedSessions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/users/{id}/sessions/viewed method: get operationId: Users_GetUsersViewedSessions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api/v1/users/search method: get operationId: Users_Search x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none