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: (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 description: The URL to retrieve the thumbnail for this playlist APIErrorInternal: type: object required: - Success properties: ErrorCode: type: string description: Internal error code Message: type: string Success: type: boolean description: If true the call succeed and this is a partial failure (or warning). If false the call failed overall ErrorSource: type: string description: Unique identifier of what caused this error SortOrder: type: string description: '' x-enumNames: - Asc - Desc enum: - Asc - Desc Playlist: allOf: - $ref: '#/definitions/ModelBaseOfGuid' - type: object properties: Description: type: string Folder: $ref: '#/definitions/BasicFolder' Urls: $ref: '#/definitions/PlaylistUrls' APIError: type: object properties: Error: description: Error result returned if an error occurs in Panopto, otherwise null or missing $ref: '#/definitions/APIErrorInternal' FolderSortFields: type: string description: '' x-enumNames: - Name - Relevance enum: - Name - Relevance AccessSettings: type: object required: - IsInherited - Level properties: IsInherited: type: boolean description: Indicates whether or not the access settings are inherited. Level: description: Indicates the level of access set for this item. $ref: '#/definitions/AccessLevel' x-generator: NSwag v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v13.0.0.0))