OpenAPI Specification
swagger: '2.0'
info:
title: Panopto Public Accessibility Sessions API
description: The public API for Panopto. OpenID & OAuth information can be found at Panopto/oauth2/.well-known/openid-configuration
version: '1'
host: <PanoptoServerURL>(i.e. example.hosted.panopto.com)
basePath: /Panopto
schemes:
- https
consumes:
- application/json
produces:
- application/json
tags:
- name: Sessions
description: Session API
paths:
/api/v1/sessions/{id}:
get:
tags:
- Sessions
summary: Get a session by Id
operationId: Sessions_GetSessionById
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/Session'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
put:
tags:
- Sessions
summary: Update a session
description: Update the session's name, description, or parent folder.
operationId: Sessions_UpdateSessionMetadata
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: sessionUpdate
in: body
schema:
$ref: '#/definitions/SessionUpdate'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/Session'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
delete:
tags:
- Sessions
summary: Delete a session
description: Deletes a session based on the retention policies
operationId: Sessions_DeleteSession
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
type: string
format: guid
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/search:
get:
tags:
- Sessions
summary: Search for sessions based on a keyword
description: 'To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
**Note:** The Session Search API does not return all available properties for a session. The CreatedBy and Urls properties (except the ViewerUrl and ThumbnailUrl) are not returned when searching for a session. To get these properties, you can get the specific session by Id.'
operationId: Sessions_SearchForSessions
parameters:
- type: string
name: searchQuery
in: query
required: true
x-nullable: true
- type: string
name: includeFields
in: query
description: Comma delimited list of optional fields to include in search results. Currently this is limited to 'Context'
default: ''
x-nullable: true
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/SessionSortFields'
default: Name
x-nullable: false
enum:
- Name
- CreatedDate
- Relevance
- type: string
name: sortOrder
in: query
x-schema:
$ref: '#/definitions/SortOrder'
default: Asc
x-nullable: false
enum:
- Asc
- Desc
- type: integer
name: pageNumber
in: query
description: Page numbering starts at 0
format: int32
default: 0
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/ListResponseOfSession'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
/api/v1/sessions/inProgress/webcast:
get:
tags:
- Sessions
summary: Get a list of webcasts (live sessions) that are currently in progress.
description: 'To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
**Note:** This endpoint does not return all available properties for a session. The CreatedBy and Urls properties (except the ViewerUrl and ThumbnailUrl) are not returned when searching for a session. To get these properties, you can get the specific session by Id.'
operationId: Sessions_GetInProgressWebcasts
parameters:
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/SessionSortFields'
default: Name
x-nullable: false
enum:
- Name
- CreatedDate
- Relevance
- type: string
name: sortOrder
in: query
x-schema:
$ref: '#/definitions/SortOrder'
default: Asc
x-nullable: false
enum:
- Asc
- Desc
- type: integer
name: pageNumber
in: query
description: Page numbering starts at 0
format: int32
default: 0
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/ListResponseOfSession'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
/api/v1/sessions/inProgress/recording:
get:
tags:
- Sessions
summary: Get a list of recordings that are currently in progress.
description: 'To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
**Note:** This endpoint does not return all available properties for a session. The CreatedBy and Urls properties (except the ViewerUrl and ThumbnailUrl) are not returned when searching for a session. To get these properties, you can get the specific session by Id.'
operationId: Sessions_GetInProgressRecordings
parameters:
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/SessionSortFields'
default: Name
x-nullable: false
enum:
- Name
- CreatedDate
- Relevance
- type: string
name: sortOrder
in: query
x-schema:
$ref: '#/definitions/SortOrder'
default: Asc
x-nullable: false
enum:
- Asc
- Desc
- type: integer
name: pageNumber
in: query
description: Page numbering starts at 0
format: int32
default: 0
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/ListResponseOfSession'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
/api/v1/sessions/{id}/viewers:
get:
tags:
- Sessions
summary: Get a list of users who have viewed this session
description: Gets a list of all users who have viewed this session, and how much of the session they have viewed
operationId: Sessions_GetSessionViewingStats
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/SessionViewerStatsSortFields'
default: UserName
x-nullable: false
enum:
- UserName
- LastViewedDateTime
- type: string
name: sortOrder
in: query
x-schema:
$ref: '#/definitions/SortOrder'
default: Asc
x-nullable: false
enum:
- Asc
- Desc
- type: integer
name: pageNumber
in: query
description: Page numbering starts at 0
format: int32
default: 0
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/ListResponseOfSessionViewerStats'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/{id}/tags:
get:
tags:
- Sessions
summary: Get a list of tags associated with the given session
operationId: Sessions_GetTagsForSession
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/TagSortFields'
default: CreateDate
x-nullable: false
enum:
- CreateDate
- UsageCount
- Content
- Creator
- MostRecentUseDate
- type: string
name: sortOrder
in: query
x-schema:
$ref: '#/definitions/SortOrder'
default: Asc
x-nullable: false
enum:
- Asc
- Desc
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/ListResponseOfTag'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
put:
tags:
- Sessions
summary: Update the tags associated with the given session
description: Replaces the tags currently associated with the session with the provided tags.
operationId: Sessions_UpdateTagsForSession
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: tags
in: body
schema:
$ref: '#/definitions/SessionTagUpdate'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/ListResponseOfTag'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/{id}/captions:
post:
tags:
- Sessions
summary: Upload a caption file (in SRT or VTT format) to this session
description: Content should be sent as 'multipart/form-data', with the caption file attached as part of the multi-part data. This endpoint is used to upload captions for an entire session, based off of the edited times. Please verify that the timestamps in your caption file are correlated to the session times, and not an individual stream.
operationId: Sessions_UploadCaptionsToSession
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: language
in: formData
schema:
title: ContentLanguage
type: string
description: Language of content such as sessions, streams, or captions.
x-enumNames:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
responses:
'200':
description: ''
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
delete:
tags:
- Sessions
summary: Deletes all captions for this session
description: This operation is not reversible. Please be very careful before deleting captions. They cannot be recovered once deleted.
operationId: Sessions_DeleteSessionCaptions
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
responses:
'200':
description: ''
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/{id}/captions/languages/{language}:
delete:
tags:
- Sessions
summary: Deletes all captions for this session in the specified language.
description: This operation is not reversible. Please be very careful before deleting captions. They cannot be recovered once deleted. To delete "Default" captions, set "null" for the language parameter in the URL.
operationId: Sessions_DeleteSessionCaptionsForLanguage
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: string
name: language
in: path
required: true
x-schema:
$ref: '#/definitions/ContentLanguage'
x-nullable: false
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
- name: language
in: query
schema:
title: ContentLanguage
type: string
description: Language of content such as sessions, streams, or captions.
x-enumNames:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
responses:
'200':
description: ''
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/{id}/settings/access:
get:
tags:
- Sessions
summary: Get the access settings for the given session
operationId: Sessions_GetAccessSettings
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/AccessSettings'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
put:
tags:
- Sessions
summary: Update the access settings for the given session
description: IsInherited is readonly and indicates whether or not access is being inherited from a parent folder. If AccessLevel is set to a more restrictive value than that inherited, the inherited value will take precedence.
operationId: Sessions_UpdateAccessSettings
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: accessSettings
in: body
schema:
$ref: '#/definitions/AccessSettings'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/AccessSettings'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/{id}/permissions:
get:
tags:
- Sessions
summary: Get the user and group permissions for the given session
description: To fetch all elements, this endpoint can be called multiple times, starting at pageNumber = 0 and incrementing the page number until no results are returned.
operationId: Sessions_GetPermissions
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: integer
name: pageNumber
in: query
description: Page numbering starts at 0
format: int32
default: 0
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/ListResponseOfPermission'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
post:
tags:
- Sessions
summary: Create a session permission by assigning a role to a user or group
operationId: Sessions_CreatePermission
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: permissionCreate
in: body
schema:
$ref: '#/definitions/PermissionCreate'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/Permission'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
delete:
tags:
- Sessions
summary: Remove permission from the session
description: This operation is only valid for non-inherited permissions. If role type and role id are omitted, all non-inherited permissions for the principal will be removed.
operationId: Sessions_DeletePermission
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: string
name: RoleId
in: query
description: Id of the role to remove from the user or group. Required when RoleType is null or None.
format: guid
x-nullable: true
- type: string
name: RoleType
in: query
description: Type of the role to remove from the user or group. Required when RoleId is null.
x-schema:
$ref: '#/definitions/BuiltInRoleType'
x-nullable: true
enum:
- None
- Viewer
- Creator
- Publisher
- type: string
name: PrincipalId
in: query
description: Id of the user or group from which the role is being removed.
format: guid
x-nullable: false
- type: string
name: PrincipalType
in: query
description: Type of principal, either a user or group.
x-schema:
$ref: '#/definitions/PrincipalType'
x-nullable: false
enum:
- User
- Group
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/PermissionDelete'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested session or permission was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/{id}/manage/scorm:
get:
tags:
- Sessions
summary: Download a SCORM manifest by session ID
description: This endpoint fetches the SCORM manifest for the specified session ID and returns it as a ZIP file attachment.
operationId: Sessions_GetScormManifestById
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: string
name: type
in: query
required: true
x-schema:
$ref: '#/definitions/SessionScormManifestType'
x-nullable: false
enum:
- Interactive
- Embed
responses:
'200':
x-nullable: false
description: The SCORM manifest ZIP file in the response body
schema:
type: string
format: byte
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
'404':
x-nullable: false
description: The requested SCORM manifest was not found or cannot be fetched
schema:
$ref: '#/definitions/APIError'
/api/v1/sessions/{id}/sessioncopy:
post:
tags:
- Sessions
summary: Perform a session copy
operationId: Sessions_Copy
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: sessionCopyCreate
in: body
schema:
$ref: '#/definitions/SessionCopyCreate'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/SessionCopyResponse'
'400':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/APIError'
'403':
description: User does not have permission to access this function
'401':
description: The user is not authorized to perform the requested action
definitions:
SessionSortFields:
type: string
description: ''
x-enumNames:
- Name
- CreatedDate
- Relevance
enum:
- Name
- CreatedDate
- Relevance
User:
type: object
required:
- Id
properties:
Id:
type: string
description: The id of the user.
format: guid
Username:
type: string
description: The username for this user.
ContentLanguage:
type: string
description: Language of content such as sessions, streams, or captions.
x-enumNames:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
enum:
- English_USA
- English_GBR
- Spanish_MEX
- Spanish_ESP
- German
- French
- Dutch
- Thai
- Chinese_Simplified
- Chinese_Traditional
- Korean
- Japanese
- Russian
- Portuguese
- Polish
- English_AUS
- Danish
- Finnish
- Hungarian
- Norwegian
- Swedish
- Italian
- Welsh
- Catalan
- Galician
- Basque
- Arabic
- Hindi
- French_CAN
- Hebrew
- Vietnamese
ListResponseOfSessionViewerStats:
type: object
properties:
Results:
type: array
description: The list of results from the API call
items:
$ref: '#/definitions/SessionViewerStats'
BuiltInRoleType:
type: string
description: ''
x-enumNames:
- None
- Viewer
- Creator
- Publisher
enum:
- None
- Viewer
- Creator
- Publisher
SessionScormManifestType:
type: string
descr
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/panopto/refs/heads/main/openapi/panopto-sessions-api-openapi.yml