OpenAPI Specification
swagger: '2.0'
info:
title: Panopto Public Accessibility Folders 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: Folders
description: Folder API
paths:
/api/v1/folders/{id}:
get:
tags:
- Folders
summary: Get a folder by Id
operationId: Folders_GetFolderById
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/Folder'
'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 folder was not found
schema:
$ref: '#/definitions/APIError'
put:
tags:
- Folders
summary: Update a folder
description: Update the folders's name, description, or parent folder.
operationId: Folders_UpdateFolderMetadata
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: folderUpdate
in: body
schema:
$ref: '#/definitions/FolderUpdate'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/Folder'
'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 folder was not found
schema:
$ref: '#/definitions/APIError'
delete:
tags:
- Folders
summary: Delete a folder
description: Deletes a folder and all of its contents (including sessions and subfolders) according to the retention policy.
operationId: Folders_DeleteFolder
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 folder was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/folders/{id}/children:
get:
tags:
- Folders
summary: Get a list of child folders from the given parent
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: Folders_GetChildFolders
parameters:
- type: string
name: id
in: path
required: true
description: To get a list of all top level folders, use an empty GUID (00000000-0000-0000-0000-000000000000)
format: guid
x-nullable: false
- type: boolean
name: canCreate
in: query
description: Set to true to only return folders where the user has permission to create sessions.
default: false
x-nullable: false
- type: string
name: sortField
in: query
description: '''Relevance'' is not valid for this function.'
x-schema:
$ref: '#/definitions/FolderSortFields'
default: Name
x-nullable: false
enum:
- Name
- 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/ListResponseOfFolder'
'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/folders/{id}/sessions:
get:
tags:
- Folders
summary: Get a list of sessions in the given folder
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) are not returned when listing sessions in a folder. To get these properties, you can get the specific session by Id using the Sessions API.'
operationId: Folders_GetSessions
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- 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/folders/{id}/sessions/search:
get:
tags:
- Folders
summary: Search for sessions within this folder
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) are not returned when listing sessions in a folder. To get these properties, you can get the specific session by Id using the Sessions API.'
operationId: Folders_SearchSessionsInFolder
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: string
name: searchQuery
in: query
required: true
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/folders/{id}/playlists:
get:
tags:
- Folders
summary: Get a list of playlists in the given folder
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 playlist. The Urls property (except the ViewerUrl) is not returned when listing playlists in a folder. To get these properties, you can get the specific playlist by Id using the Playlists API.'
operationId: Folders_GetPlaylists
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/PlaylistSortFields'
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/ListResponseOfPlaylist'
'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/folders/{id}/settings/access:
get:
tags:
- Folders
summary: Get the access settings for the given folder
operationId: Folders_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 folder was not found
schema:
$ref: '#/definitions/APIError'
put:
tags:
- Folders
summary: Update the access settings for the given folder
description: If setting IsInherited to true, the access Level is ignored. Inheritance can not be set on a top-level folder.
operationId: Folders_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 folder was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/folders/{id}/settings:
get:
tags:
- Folders
summary: Get the folder settings for the given folder
operationId: Folders_GetSettings
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/FolderSettings'
'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 folder was not found
schema:
$ref: '#/definitions/APIError'
put:
tags:
- Folders
summary: Update folder settings for a specified folder
description: This endpoint currently only supports updating the caption provider instance
operationId: Folders_UpdateSettings
parameters:
- type: string
name: id
in: path
required: true
format: guid
x-nullable: false
- name: folderSettings
in: body
schema:
$ref: '#/definitions/FolderSettings'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/FolderSettings'
'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 folder was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/folders/{id}/permissions:
get:
tags:
- Folders
summary: Get the user and group permissions for the given folder
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: Folders_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:
- Folders
summary: Create a folder permission by assigning a role to a user or group
description: This operation is only supported when access is not inherited.
operationId: Folders_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:
- Folders
summary: Remove permission from the folder
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: Folders_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 folder or share was not found
schema:
$ref: '#/definitions/APIError'
/api/v1/folders:
post:
tags:
- Folders
summary: Create a new folder
operationId: Folders_CreateFolder
parameters:
- name: folder
in: body
schema:
$ref: '#/definitions/FolderCreate'
x-nullable: true
responses:
'200':
x-nullable: false
description: ''
schema:
$ref: '#/definitions/Folder'
'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/folders/search:
get:
tags:
- Folders
summary: Search for folders 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.
operationId: Folders_SearchForFolders
parameters:
- type: string
name: searchQuery
in: query
required: true
x-nullable: true
- type: boolean
name: canCreate
in: query
description: Set to true to only return folders where the user has permission to create sessions.
default: false
x-nullable: false
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/FolderSortFields'
default: Relevance
x-nullable: false
enum:
- Name
- 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/ListResponseOfFolder'
'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/folders/creator:
get:
tags:
- Folders
summary: Lists all the folders the user is a creator in
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: Folders_GetCreatorFoldersList
parameters:
- type: string
name: sortField
in: query
x-schema:
$ref: '#/definitions/FolderSortFields'
default: Relevance
x-nullable: false
enum:
- Name
- 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/ListResponseOfFolder'
'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.
BuiltInRoleType:
type: string
description: ''
x-enumNames:
- None
- Viewer
- Creator
- Publisher
enum:
- None
- Viewer
- Creator
- Publisher
FolderCreate:
type: object
properties:
Name:
type: string
description: The name of the new folder.
Description:
type: string
description: The description of the new folder.
Parent:
type: string
description: Optional Id of the parent folder to create this under. The folder must already exist, and you must have create permission on the target folder.
format: guid
Session:
type: object
required:
- Folder
properties:
Id:
type: string
format: guid
Name:
type: string
Description:
type: string
StartTime:
type: string
format: date-time
Duration:
type: number
description: The duration of the session (in seconds)
format: double
MostRecentViewPosition:
type: number
format: double
CreatedBy:
$ref: '#/definitions/User'
Urls:
$ref: '#/definitions/SessionUrls'
Folder:
type: string
format: guid
FolderDetails:
$ref: '#/definitions/BasicFolder'
Context:
type: array
items:
$ref: '#/definitions/SearchResultContext'
PercentCompleted:
type: integer
description: The percentage from 0-100 of the session watched by the requested user
format: int32
ModelBaseOfGuid:
type: object
properties:
Id:
type: string
format: guid
Name:
type: string
Role:
type: object
properties:
Id:
type: string
description: The unique id that identifies the role.
format: guid
Name:
type: string
description: The name of this role.
ListResponseOfPermission:
type: object
properties:
Results:
type: array
description: The list of results from the API call
items:
$ref: '#/definitions/Permission'
SessionUrls:
type: object
properties:
ViewerUrl:
type: string
description: The URL to view this session in Panopto
EmbedUrl:
type: string
description: The URL to an embedded version of this session
ShareSettingsUrl:
type: string
DownloadUrl:
type: string
description: The URL to download this session. This URL is intended for one-time download only, and is not appropriate for direct streaming or playback. May be blank if not allowed.
AudioDescriptionDownloadUrl:
type: string
CaptionDownloadUrl:
type: string
description: The URL to download captions for this session, if available.
EditorUrl:
type: string
description: The URL to edit this session in Panopto, if you are a creator.
ThumbnailUrl:
type: string
description: The URL to retrieve the thumbnail for this session
Permission:
type: object
required:
- IsInherited
properties:
IsInherited:
type: boolean
description: Indicates whether or not the permission is inherited.
Principal:
description: The principal, either a user or group, to which the role is assigned.
$ref: '#/definitions/Principal'
Role:
description: The role assigned to the principal.
$ref: '#/definitions/Role'
AccessLevel:
type: string
description: ''
x-enumNames:
- Restricted
- OrganizationUnlisted
- Organization
- PublicUnlisted
- Public
enum:
- Restricted
- OrganizationUnlisted
- Organization
- PublicUnlisted
- Public
Principal:
type: object
required:
- Type
properties:
Id:
type: string
description: The unique id that represents this principal.
format: guid
Type:
description: Type of the principal, either a user or group.
$ref: '#/definitions/PrincipalType'
ListResponseOfSession:
type: object
properties:
Results:
type: array
description: The list of results from the API call
items:
$ref: '#/definitions/Session'
FolderUpdate:
type: object
properties:
Name:
type: string
description: The new name for the folder.
Description:
type: string
description: The new description for the folder.
Parent:
type: string
description: 'The Id of the folder to move this to. The folder must already exist, and you must have create permission on the target folder.
To move to a top level folder, set this to "00000000-0000-0000-0000-000000000000"'
format: guid
PermissionCreate:
type: object
required:
- PrincipalId
- PrincipalType
properties:
RoleId:
type: string
description: Id of the role to assign to the user or group. Required when RoleType is null or None.
format: guid
RoleType:
description: Type of the role to assign to the user or group. Required when RoleId is not set.
$ref: '#/definitions/BuiltInRoleType'
PrincipalId:
type: string
description: Id of the user or group to which the role is being assigned.
format: guid
PrincipalType:
description: Type of principal, either a user or group.
$ref: '#/definitions/PrincipalType'
ListResponseOfPlaylist:
type: object
properties:
Results:
type: array
description: The list of results from the API call
items:
$ref: '#/definitions/Playlist'
FolderSettings:
type: object
required:
- AutomaticCaptionProviderId
properties:
AutomaticCaptionProviderId:
type: string
format: guid
AutomaticCaptionProviderName:
type: string
PlaylistSortFields:
type: string
description: ''
x-enumNames:
- Name
- CreatedDate
- Relevance
enum:
- Name
- CreatedDate
- Relevance
BasicFolder:
type: object
properties:
Id:
type: string
format: guid
Name:
type: string
PrincipalType:
type: string
description: ''
x-enumNames:
- User
- Group
enum:
- User
- Group
SearchResultContext:
type: object
properties:
Text:
type: string
Time:
type: number
format: double
ThumbnailUrl:
type: string
Folder:
type: object
properties:
Id:
type: string
format: guid
Name:
type: string
Description:
type: string
ParentFolder:
$ref: '#/definitions/BasicFolder'
Urls:
$ref: '#/definitions/FolderUrls'
PermissionDelete:
type: object
required:
- PrincipalId
- PrincipalType
properties:
RoleId:
type: string
description: Id of the role to remove from the user or group. Required when RoleType is null or None.
format: guid
RoleType:
description: Type of the role to remove from the user or group. Required when RoleId is null.
$ref: '#/definitions/BuiltInRoleType'
PrincipalId:
type: string
description: Id of the user or group from which the role is being removed.
format: guid
PrincipalType:
description: Type of principal, either a user or group.
$ref: '#/definitions/PrincipalType'
FolderUrls:
type: object
properties:
FolderUrl:
type: string
description: The URL to open this folder in Panopto
EmbedUrl:
type: string
description: The URL to an embedded version of this folder
ShareSettingsUrl:
type: string
description: The URL to change how this folder is shared. May be blank if permission is not granted.
ListResponseOfFolder:
type: object
properties:
Results:
type: array
description: The list of results from the API call
items:
$ref: '#/definitions/Folder'
PlaylistUrls:
type: object
properties:
ViewerUrl:
type: string
description: The URL to view this playlist in Panopto
EmbedUrl:
type: string
description: The URL to an embedded version of this playlist
ThumbnailUrl:
type: string
descr
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/panopto/refs/heads/main/openapi/panopto-folders-api-openapi.yml