{ "x-generator": "NSwag v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v13.0.0.0))", "swagger": "2.0", "info": { "title": "Panopto Public 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" ], "paths": { "/api/v1/auth/legacyLogin": { "get": { "tags": [ "Auth" ], "summary": "Get a legacy authentication cookie", "description": "Gets an authentication cookie from a valid Oauth2 token for use with legacy APIs.", "operationId": "Auth_LegacyLogin", "responses": { "200": { "x-nullable": false, "description": "The authentication cookie should be set", "schema": { "type": "string" } }, "401": { "description": "No valid authorization. The token may be invalid, or the user was not authenticated or found." } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder": { "put": { "tags": [ "RemoteRecorderAPI" ], "summary": "Register a new remote recorder", "description": "Retrieves the remote recorder public ID and credentials to access the RR API.\r\n Uses BasicAuth requiring a remote recorder registration key from an admin", "operationId": "RemoteRecorderAPI_RegisterRemoteRecorder", "parameters": [ { "name": "registrationRequest", "in": "body", "schema": { "$ref": "#/definitions/RemoteRecorderRegistrationRequest" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "The provided client credentials should be used with an oauth2 client flow for the rest of the API, using the 'api' and 'remoteRecorderApi' scopes", "schema": { "$ref": "#/definitions/RemoteRecorderRegistrationResponse" } }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/connect": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Connect as the provided remote recorder", "description": "Remote recorder is identified via the GUID public id\r\n recorderVersion is a version identifier in the form of \"....\"\r\n buildVersion is the vendor specific build string", "operationId": "RemoteRecorderAPI_Connect", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "type": "string", "name": "recorderVersion", "in": "query", "required": true, "x-nullable": true }, { "type": "string", "name": "recorderBuild", "in": "query", "required": true, "x-nullable": true } ], "responses": { "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/disconnect": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Disconnect as the provided remote recorder, identified via the GUID public id", "operationId": "RemoteRecorderAPI_Disconnect", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/heartbeat": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Heartbeat and preview as the provided remote recorder", "description": "Remote recorder is identified via the GUID public id\r\n Include options: defaults (provides default quality settings and folder), extendedConfigurations (provides extended configurations)", "operationId": "RemoteRecorderAPI_Heartbeat", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "updateData", "in": "body", "schema": { "$ref": "#/definitions/RemoteRecorderHeartbeatData" }, "x-nullable": true }, { "type": "array", "name": "include", "in": "query", "collectionFormat": "multi", "x-nullable": true, "items": { "type": "string" } } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/RemoteRecorderHeartbeatResponse" } }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/schedule": { "get": { "tags": [ "RemoteRecorderAPI" ], "summary": "Retrieve a schedule for the next 7 days for the provided remote recorder.As a best practice a new scheduled should be fetched every day even if the schedule version in the heartbeat hasn't changed", "operationId": "RemoteRecorderAPI_GetSchedule", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "type": "array", "name": "include", "in": "query", "collectionFormat": "multi", "x-nullable": true, "items": { "type": "string" } } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/RemoteRecorderSchedule" } }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } }, "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Update or add a set of scheduled recordings for the provided remote recorder. To add a scheduled recording, the recording should have all relevant fields filled in but an empty (all zeros) guid", "operationId": "RemoteRecorderAPI_UpdateSchedule", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "recordingsToUpdate", "in": "body", "schema": { "type": "array", "items": { "$ref": "#/definitions/RemoteRecorderScheduledRecording" } }, "x-nullable": true } ], "responses": { "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/error": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Register an error with the provided remote recorder on the server", "operationId": "RemoteRecorderAPI_Error", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "remoteRecorderError", "in": "body", "schema": { "$ref": "#/definitions/RemoteRecorderError" }, "x-nullable": true } ], "responses": { "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/legacyLogin": { "get": { "tags": [ "RemoteRecorderAPI" ], "summary": "Retrieve a legacy ASPXAUTH cookie", "operationId": "RemoteRecorderAPI_LegacyLogin", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "401": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/session/{sessionId}/pause": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Pause the recording of the specified session on the server", "operationId": "RemoteRecorderAPI_PauseRecording", "parameters": [ { "type": "string", "name": "sessionId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "pauseRecordingRequest", "in": "body", "schema": { "$ref": "#/definitions/RemoteRecorderPauseRecordingRequest" }, "x-nullable": true } ], "responses": { "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/session/{sessionId}/resume": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Resume the recording of the specified session on the server", "operationId": "RemoteRecorderAPI_ResumeRecording", "parameters": [ { "type": "string", "name": "sessionId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "resumeRecordingRequest", "in": "body", "schema": { "$ref": "#/definitions/RemoteRecorderResumeRecordingRequest" }, "x-nullable": true } ], "responses": { "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/urls": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Provides a list of URLs and URL types to present to administrators to help them manage this remote recorder.Calling this replaces all previously reported URLs. URLs are preserved until replaced, so this only needs to be called when they have changed", "operationId": "RemoteRecorderAPI_ReportRemoteRecorderURLs", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "urlUpdateRequest", "in": "body", "schema": { "$ref": "#/definitions/RemoteRecorderURLsUpdateRequest" }, "x-nullable": true } ], "responses": { "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/connect": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Establishes a new connection which enables the WebRTC-based media preview feature. After this, the client should commence WebRTC session negotiation by sending us an SDP offer.", "operationId": "RemoteRecorderAPI_WebRtcConnect", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "postData", "in": "body", "schema": { "$ref": "#/definitions/WebRtcConnectPostData" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": {} }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "401": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "503": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/disconnect": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Destroys the connection which enables the WebRTC-based media preview feature.", "operationId": "RemoteRecorderAPI_WebRtcDisconnect", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "postData", "in": "body", "schema": { "$ref": "#/definitions/WebRtcDisconnectPostData" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": {} }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "401": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/events": { "get": { "tags": [ "RemoteRecorderAPI" ], "summary": "After the client has sent us an SDP offer, they should poll this endpoint periodically to receive messages.", "description": "After sending the SDP offer, the client should check here for events periodically. This is not a long-polling call,\r\nso it will return quickly.\r\n\r\nPrior to receiving the SDP answer, the client should wait `PingFastInterval` seconds between requests. Five seconds\r\nafter receiving the SDP answer, the client should wait `PingSlowInterval` seconds between requests.\r\n\r\n# Event Types\r\nThere are several types of events, each of which has a distinct payload.\r\n\r\n## IceCandidate\r\nThis event describes a single ICE candidate related to the SDP answer document. Each ICE candidate\r\ndescribes a possible endpoint where the client can send SRTP (and SRTCP) payloads.\r\n\r\n The payload is a **JSON serialized** object containing 2 fields.\r\n 1. `Index`: This is a non-negative integer. This is a zero-based index, corresponding to a specific\r\n section within an SDP answer, where each section begins with an 'm=' line.\r\n 2. `Candidate`: A single line of text representing the ICE candidate, the format of which is consistent\r\n with the standard definition for ICE Candidates as defined by SDP standard.\r\n\r\n## SdpAnswer\r\nThis event notifies of a the SDP answer. It is the final description of the session provided by the WebRTC\r\nsignaling service.\r\n\r\n The payload is a Session Description document, as defined by the SDP protocol.\r\n\r\n## TemporaryFailure\r\nThis event notifies of a warning or error, but recovery may still be possible. This is only\r\ninformational and the remote recorder is expected to take no action.\r\n\r\n The payload is human readable additional information about the situation.\r\n\r\n## PermanentFailure\r\nThis event notifies that the WebRTC session is in unrecoverable state. The remote recorder should\r\nrelease any resource associated with this WebRTC session. It does not need to call the REST endpoint to explicitly\r\ndisconnect because the server is already aware that WebRTC session is in a bad state, and the standard method for\r\ngraceful cleanup is no longer possible.\r\n\r\n The payload is human readable additional information about the situation.", "operationId": "RemoteRecorderAPI_WebRtcGetEvents", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/WebRtcEventsResponse" } }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "401": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/iceCandidates": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "Sends a batch of ICE candidates from client to signaling server.", "description": "Sends a batch of ICE candidates from client (the RTP sender) to signaling server. ICE Candidates are used for the\r\ntransmission of RTP and RTCP payloads.\r\n\r\nThis is a JSON array of ICE candidates, where each ICE candidate is an object containing 2 fields.\r\n\r\n1. `Index`: This is a non-negative integer. This is a zero-based index, corresponding to a specific section within an\r\n SDP offer, where each section begins with an `m=` line.\r\n2. `Candidate`: A single line of text representing the ICE candidate, the format of which is consistent with the\r\n standard definition for ICE Candidates as defined by SDP standard. For example:\r\n `candidate:8 1 TCP 1015022335 fe80::52d3:1968:14ec:8246 9 typ host tcptype active`", "operationId": "RemoteRecorderAPI_WebRtcIceCandidates", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "postData", "in": "body", "schema": { "$ref": "#/definitions/WebRtcIceCandidates" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": {} }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "401": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/remoteRecorderAPI/remoteRecorder/{remoteRecorderPublicId}/liveMonitoring/webRtc/sdpOffer": { "post": { "tags": [ "RemoteRecorderAPI" ], "summary": "The client begins WebRTC session negotiation by submitting an SDP offer.", "description": "This is the next step after starting a new WebRTC connection. The client submits an SDP offer to describe the session\r\nit hopes to create. After this is sent, the client should begin 2 other activities:\r\n1. The client should send ICE candidates as soon as they are known (using another REST endpoint).\r\n2. The client should begin polling for events (using another REST endpoint).\r\n\r\n## SessionDescription\r\nThe SDP offer is sent as the `SessionDescription` string which is a multi-line string, as defined\r\nby the SDP standard. An example of a `SessionDescription` string is as follows:\r\n\r\n```\r\nv=0\r\no=- 2954795159668969744 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=ice-options:trickle\r\nm=audio 9 UDP/TLS/RTP/SAVPF 97\r\nc=IN IP4 0.0.0.0\r\na=setup:actpass\r\na=ice-ufrag:JAXcdSTGPa8I57dqpu8zggosj53FsI1P\r\na=ice-pwd:2bC1EVxNEIqNYm+Id1s7sw7RBmyAbNS2\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=sendrecv\r\na=rtpmap:97 OPUS/48000/2\r\na=rtcp-fb:97 nack pli\r\na=fmtp:97 sprop-maxcapturerate=48000;sprop-stereo=0\r\na=ssrc:2876771208 msid:user3992408561@host-b8077b5 webrtctransceiver0\r\na=ssrc:2876771208 cname:user3992408561@host-b8077b5\r\na=mid:audio0\r\na=fingerprint:sha-256 66:CD:30:01:9B:76:7E:4D:CA:F2:EF:BC:7C:61:BA:AC:AF:01:E8:72:37:92:9B:28:15:04:D8:D6:6B:0C:78:8B\r\n```", "operationId": "RemoteRecorderAPI_WebRtcSdpOffer", "parameters": [ { "type": "string", "name": "remoteRecorderPublicId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "postData", "in": "body", "schema": { "$ref": "#/definitions/WebRtcSdpOfferPostData" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": {} }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "401": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/accessibility/bulk/preview": { "post": { "tags": [ "Accessibility" ], "summary": "Preview bulk accessibility request eligibility", "description": "Returns providers, per-session eligibility, and pricing metadata for AudioDescription, Transcription, or Translation. Admin-only.", "operationId": "Accessibility_PreviewBulkAccessibility", "parameters": [ { "name": "request", "in": "body", "schema": { "$ref": "#/definitions/AccessibilityBulkPreviewRequest" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/AccessibilityBulkPreviewResponse" } }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "401": { "description": "The user is not authorized to perform the requested action" } } } }, "/api/v1/accessibility/bulk/schedule": { "post": { "tags": [ "Accessibility" ], "summary": "Schedule bulk accessibility requests", "description": "Creates transcription, translation, or audio description requests for the specified sessions. Admin-only.", "operationId": "Accessibility_ScheduleBulkAccessibility", "parameters": [ { "name": "request", "in": "body", "schema": { "$ref": "#/definitions/AccessibilityBulkScheduleRequest" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/AccessibilityBulkScheduleResponse" } }, "400": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/APIError" } }, "401": { "description": "The user is not authorized to perform the requested action" } } } }, "/api/v1/captionproviders": { "get": { "tags": [ "CaptionProviders" ], "summary": "Get caption providers", "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": "CaptionProviders_GetCaptionProviders", "parameters": [ { "type": "string", "name": "sortField", "in": "query", "x-schema": { "$ref": "#/definitions/TranscriptionProviderInstanceSortFields" }, "default": "Name", "x-nullable": false, "enum": [ "Name" ] }, { "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", "format": "int32", "default": 0, "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/ListResponseOfTranscriptionProviderInstance" } }, "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/reports/{id}": { "get": { "tags": [ "Reports" ], "summary": "Get a report by Id", "description": "This method does not return a standard JSON response, and will instead return the contents of the report as an attachment in the body of the response.", "operationId": "Reports_GetReportFromId", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "The report data in the body of the response", "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 report was not found or is still being processed", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/portal/{portalId}/user": { "post": { "tags": [ "XfpUserProfiles" ], "summary": "Create XFP user profile", "operationId": "XfpUserProfiles_Create", "parameters": [ { "type": "string", "name": "portalId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "xfpUserToCreate", "in": "body", "schema": { "$ref": "#/definitions/XfpUserProfileCreate" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "Created user profile", "schema": { "$ref": "#/definitions/XfpUserProfile" } }, "400": { "description": "Invalid request parameters" }, "401": { "description": "Unauthorized access" }, "412": { "description": "Precondition failed" } } }, "get": { "tags": [ "XfpUserProfiles" ], "summary": "Get XFP user profiles according to the filter", "operationId": "XfpUserProfiles_List", "parameters": [ { "type": "string", "name": "portalId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "type": "string", "name": "XfpRole", "in": "query", "x-nullable": true }, { "type": "string", "name": "EmailAddress", "in": "query", "x-nullable": true }, { "type": "integer", "name": "Page", "in": "query", "format": "int32", "x-nullable": false }, { "type": "integer", "name": "PageSize", "in": "query", "format": "int32", "x-nullable": true }, { "type": "string", "name": "Sort", "in": "query", "x-nullable": true }, { "type": "string", "name": "SecondarySort", "in": "query", "x-nullable": true }, { "type": "boolean", "name": "SortDescending", "in": "query", "x-nullable": false }, { "type": "boolean", "name": "SecondarySortDescending", "in": "query", "x-nullable": false }, { "type": "boolean", "name": "ComputeTotalCount", "in": "query", "x-nullable": false }, { "type": "boolean", "name": "ComputeHasMorePages", "in": "query", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "User profile", "schema": { "$ref": "#/definitions/XfpUserProfile" } }, "400": { "description": "Invalid request parameters" }, "401": { "description": "Unauthorized access" } } } }, "/api/v1/portal/{portalId}/user/{userId}": { "delete": { "tags": [ "XfpUserProfiles" ], "summary": "Delete an XFP user profile", "operationId": "XfpUserProfiles_Delete", "parameters": [ { "type": "string", "name": "portalId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "type": "string", "name": "userId", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "If xfp user was deleted successfully", "schema": { "type": "boolean" } }, "400": { "description": "Invalid request parameters" }, "401": { "description": "Unauthorized access" }, "412": { "description": "Precondition failed" }, "404": { "description": "XFP user profile not found" } } }, "put": { "tags": [ "XfpUserProfiles" ], "summary": "Update an XFP user profile", "operationId": "XfpUserProfiles_Update", "parameters": [ { "type": "string", "name": "portalId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "type": "string", "name": "userId", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "xfpUserToUpdate", "in": "body", "schema": { "$ref": "#/definitions/XfpUserProfileUpdate" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "Updated user profile", "schema": { "$ref": "#/definitions/XfpUserProfile" } }, "400": { "description": "Invalid request parameters" }, "401": { "description": "Unauthorized access" }, "412": { "description": "Precondition failed" }, "404": { "description": "XFP user profile not found" } } } }, "/api/v1/portal/{portalId}/user/bulk-create": { "post": { "tags": [ "XfpUserProfiles" ], "summary": "Bulk Create XFP users", "operationId": "XfpUserProfiles_BulkCreate", "parameters": [ { "type": "string", "name": "portalId", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "User profile", "schema": { "$ref": "#/definitions/XfpUserProfile" } }, "400": { "description": "Invalid request parameters" }, "401": { "description": "Unauthorized access" } } } }, "/api/v1/portal/{portalId}/user/bulk-delete": { "post": { "tags": [ "XfpUserProfiles" ], "summary": "Bulk Delete XFP users", "operationId": "XfpUserProfiles_BulkDelete", "parameters": [ { "type": "string", "name": "portalId", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "User profile", "schema": { "$ref": "#/definitions/XfpUserProfile" } }, "400": { "description": "Invalid request parameters" }, "401": { "description": "Unauthorized access" } } } }, "/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.\n\n**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.\n\n**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.\n\n**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" } } } }, "/api/v1/groups/search": { "get": { "tags": [ "Groups" ], "summary": "Search for groups based on a keyword", "operationId": "Groups_Search", "parameters": [ { "type": "string", "name": "searchQuery", "in": "query", "required": true, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/ListResponseOfGroup" } }, "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/playlists/{id}": { "get": { "tags": [ "Playlists" ], "summary": "Get a playlist by Id", "operationId": "Playlists_GetPlaylistById", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/Playlist" } }, "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 playlist was not found", "schema": { "$ref": "#/definitions/APIError" } } } }, "put": { "tags": [ "Playlists" ], "summary": "Update a playlist", "description": "Update the playlist's name, description, or folder.", "operationId": "Playlists_UpdatePlaylistMetadata", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "playlistUpdate", "in": "body", "schema": { "$ref": "#/definitions/PlaylistUpdate" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/Playlist" } }, "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 playlist was not found", "schema": { "$ref": "#/definitions/APIError" } } } }, "delete": { "tags": [ "Playlists" ], "summary": "Delete a playlist", "description": "Deletes a playlist based on the retention policies", "operationId": "Playlists_DeletePlaylist", "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 playlist was not found", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/playlists/{id}/sessions": { "get": { "tags": [ "Playlists" ], "summary": "Get a list of sessions in the given playlist", "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.\n\n**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": "Playlists_GetSessionsForPlaylist", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "type": "string", "name": "sortField", "in": "query", "x-schema": { "$ref": "#/definitions/PlaylistSessionSortFields" }, "default": "Order", "x-nullable": false, "enum": [ "Name", "CreatedDate", "Relevance", "Order" ] }, { "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" } } }, "put": { "tags": [ "Playlists" ], "summary": "Add a session to a playlist", "description": "Adds the given session to a playlist. You can optionally specify an index to insert the session at a specific position in the playlist. Otherwise, it will be added to the end of the playlist.", "operationId": "Playlists_AddSessionToPlaylist", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "session", "in": "body", "schema": { "$ref": "#/definitions/PlaylistAddSession" }, "x-nullable": true } ], "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/playlists": { "post": { "tags": [ "Playlists" ], "summary": "Create a new playlist", "operationId": "Playlists_CreatePlaylist", "parameters": [ { "name": "playlist", "in": "body", "schema": { "$ref": "#/definitions/PlaylistCreate" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/Playlist" } }, "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/playlists/search": { "get": { "tags": [ "Playlists" ], "summary": "Search for playlists 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.\n\n**Note:** The Playlist Search API 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": "Playlists_SearchForPlaylists", "parameters": [ { "type": "string", "name": "searchQuery", "in": "query", "required": true, "x-nullable": true }, { "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/playlists/{id}/sessions/{sessionId}": { "delete": { "tags": [ "Playlists" ], "summary": "Remove a session from a playlist", "description": "Removes the given session from a playlist.", "operationId": "Playlists_RemoveSessionFromPlaylist", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "type": "string", "name": "sessionId", "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" } } } }, "/api/v1/remoteRecorders/search": { "get": { "tags": [ "RemoteRecorders" ], "summary": "Search for remote recorders 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": "RemoteRecorders_SearchForRemoteRecorders", "parameters": [ { "type": "string", "name": "searchQuery", "in": "query", "required": true, "x-nullable": true }, { "type": "string", "name": "sortField", "in": "query", "x-schema": { "$ref": "#/definitions/RemoteRecorderSortFields" }, "default": "Name", "x-nullable": false, "enum": [ "Name" ] }, { "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/ListResponseOfRemoteRecorder" } }, "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/scheduledRecordings/{id}": { "get": { "tags": [ "ScheduledRecordings" ], "summary": "Get the scheduled recording information for a session", "operationId": "ScheduledRecordings_GetScheduledRecordingById", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/ScheduledRecording" } }, "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 scheduled entry was not found", "schema": { "$ref": "#/definitions/APIError" } } } }, "put": { "tags": [ "ScheduledRecordings" ], "summary": "Update the start or end time of a scheduled recording.", "operationId": "ScheduledRecordings_UpdateScheduledRecording", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "scheduledRecording", "in": "body", "schema": { "$ref": "#/definitions/ScheduledRecordingUpdate" }, "x-nullable": true }, { "type": "boolean", "name": "resolveConflicts", "in": "query", "default": false, "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/ScheduledRecording" } }, "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 scheduled entry was not found", "schema": { "$ref": "#/definitions/APIError" } } } }, "delete": { "tags": [ "ScheduledRecordings" ], "summary": "Cancel a scheduled recording", "operationId": "ScheduledRecordings_CancelScheduledRecording", "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 scheduled entry was not found", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/scheduledRecordings": { "post": { "tags": [ "ScheduledRecordings" ], "summary": "Create a new scheduled recording", "operationId": "ScheduledRecordings_CreateScheduledRecording", "parameters": [ { "name": "scheduledRecording", "in": "body", "schema": { "$ref": "#/definitions/ScheduledRecordingCreate" }, "x-nullable": true }, { "type": "boolean", "name": "resolveConflicts", "in": "query", "required": true, "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/ScheduledRecording" } }, "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 scheduled entry was not found", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/searchIndexSync/updates": { "get": { "tags": [ "SearchIndexSyncUpdates" ], "summary": "Get IDs for videos and playlists updated after a specified UTC date time", "operationId": "SearchIndexSyncUpdates_GetUpdates", "parameters": [ { "type": "string", "name": "fromDate", "in": "query", "required": true, "format": "date-time", "x-nullable": false }, { "type": "string", "name": "nextToken", "in": "query", "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/SearchIndexSyncUpdateResponse" } } } } }, "/api/v1/searchIndexSync/content": { "get": { "tags": [ "SearchIndexSyncUpdates" ], "summary": "Get the content for Search Index Integration for a video or playlist by ID", "operationId": "SearchIndexSyncUpdates_GetContent", "parameters": [ { "type": "string", "name": "id", "in": "query", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/SearchIndexSyncContentResponse" } } } } }, "/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.\n\n**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.\n\n**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.\n\n**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" } } } }, "/api/v1/streams/{id}/captions": { "post": { "tags": [ "Streams" ], "summary": "Upload a caption file (in SRT or VTT format) to this stream", "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 a single stream, and timestamps should be based on the un-edited stream. Please verify that the timestamps in your caption file are correlated to the unedited time for this stream.", "operationId": "Streams_UploadCaptionsToStream", "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 stream was not found", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/tags": { "post": { "tags": [ "Tags" ], "summary": "Create a new tag.", "description": "Create a new tag with the provided content.", "operationId": "Tags_CreateTag", "parameters": [ { "name": "tag", "in": "body", "schema": { "$ref": "#/definitions/TagCreate" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/Tag" } }, "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." } } }, "get": { "tags": [ "Tags" ], "summary": "Get a paged list of tags.", "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": "Tags_GetTags", "parameters": [ { "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" ] }, { "type": "integer", "name": "pageNumber", "in": "query", "format": "int32", "default": 0, "x-nullable": false } ], "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." } } } }, "/api/v1/tags/{id}": { "get": { "tags": [ "Tags" ], "summary": "Get a tag by ID.", "operationId": "Tags_GetTagById", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/Tag" } }, "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 tag was not found.", "schema": { "$ref": "#/definitions/APIError" } } } }, "put": { "tags": [ "Tags" ], "summary": "Update a tag.", "description": "Update the tag's content.", "operationId": "Tags_UpdateTag", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "tagUpdate", "in": "body", "schema": { "$ref": "#/definitions/TagUpdate" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/Tag" } }, "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 tag was not found.", "schema": { "$ref": "#/definitions/APIError" } } } }, "delete": { "tags": [ "Tags" ], "summary": "Delete a tag.", "description": "Delete the tag with the given ID.", "operationId": "Tags_DeleteTag", "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" } } } }, "/api/v1/tags/{id}/merge": { "post": { "tags": [ "Tags" ], "summary": "Merge one or more tags into the tag represented by {id}.", "description": "This will delete the merged tags and update videos to reference the tag represented by {id}.", "operationId": "Tags_MergeTags", "parameters": [ { "type": "string", "name": "id", "in": "path", "required": true, "format": "guid", "x-nullable": false }, { "name": "tagMerge", "in": "body", "schema": { "$ref": "#/definitions/TagMerge" }, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/Tag" } }, "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 tag was not found", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/users/me/sessions/viewed": { "get": { "tags": [ "Users" ], "summary": "Get a list of partially viewed sessions for the current user", "operationId": "Users_GetMyViewedSessions", "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 }, { "type": "boolean", "name": "includeCompleted", "in": "query", "default": false, "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" }, "404": { "x-nullable": false, "description": "The requested user was not found", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/users/{id}/sessions/viewed": { "get": { "tags": [ "Users" ], "summary": "Get a list of partially viewed sessions for the specified user", "description": "This endpoint can only be called by an admin", "operationId": "Users_GetUsersViewedSessions", "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 }, { "type": "boolean", "name": "includeCompleted", "in": "query", "default": false, "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" }, "404": { "x-nullable": false, "description": "The requested user was not found", "schema": { "$ref": "#/definitions/APIError" } } } } }, "/api/v1/users/search": { "get": { "tags": [ "Users" ], "summary": "Search for users based on a keyword", "operationId": "Users_Search", "parameters": [ { "type": "string", "name": "searchQuery", "in": "query", "required": true, "x-nullable": true } ], "responses": { "200": { "x-nullable": false, "description": "", "schema": { "$ref": "#/definitions/ListResponseOfUser" } }, "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": { "RemoteRecorderRegistrationResponse": { "allOf": [ { "$ref": "#/definitions/APIError" }, { "type": "object", "required": [ "RemoteRecorderPublicId", "ClientKey" ], "properties": { "RemoteRecorderPublicId": { "type": "string", "format": "guid" }, "ClientKey": { "type": "string", "format": "guid" }, "ClientSecret": { "type": "string" } } } ] }, "APIError": { "type": "object", "properties": { "Error": { "description": "Error result returned if an error occurs in Panopto, otherwise null or missing", "$ref": "#/definitions/APIErrorInternal" } } }, "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" } } }, "RemoteRecorderRegistrationRequest": { "type": "object", "properties": { "MachineUniqueIdentifier": { "type": "string", "description": "Static, non-changing value uniquely identifing this remote recorder" }, "RecorderVersion": { "type": "string", "description": "Must be in the format of \"Vendor.Product.Major.Minor.Servicing\"" }, "RecorderBuild": { "type": "string", "description": "Vendor specfic build version. Format is up to the vendor but must be less than 255 characters" }, "Capabilities": { "type": "array", "description": "Capabilities of this recorder. Options include: screencapture, slidecapture, highlightmousecursor, capturesystemaudio, 1080p, devicetemplates", "items": { "type": "string" } }, "Description": { "type": "string", "description": "Description of this remote recorder - the name presented to users" } } }, "RemoteRecorderHeartbeatResponse": { "allOf": [ { "$ref": "#/definitions/APIError" }, { "type": "object", "required": [ "ScheduleVersion", "SettingsVersion", "PingInterval" ], "properties": { "ScheduleVersion": { "type": "string", "format": "guid" }, "SettingsVersion": { "type": "string", "format": "guid" }, "PingInterval": { "type": "integer", "format": "int32" }, "Configuration": { "$ref": "#/definitions/RemoteRecorderConfiguration" }, "RecordingSessionIsPaused": { "type": "boolean", "description": "Indicates whether the current recording (as per CurrentRecordingSessionId) is in a paused state. This parameter will not be emitted if no CurrentRecordingSessionId is provided." }, "LiveMonitoring": { "description": "This is an object that tells the Remote Recorder how to perform live monitoring. If null then the Remote Recorder\r\nshould NOT perform live monitoring. This object has 2 fields:\r\n \r\n'Mode': The type of live monitoring to perform.\r\n\r\n'Id': This is a string id. If this string changes, then the Remote Recorder needs to shut down\r\n its existing WebRTC session (if there is one) and negotiate a new one.", "$ref": "#/definitions/LiveMonitoringHeartbeatResponseData" }, "DefaultFolder": { "type": "string", "format": "guid" }, "DefaultPrimaryQualitySettings": { "$ref": "#/definitions/QualitySettings" }, "DefaultSecondaryQualitySettings": { "$ref": "#/definitions/QualitySettings" }, "ExtendedConfiguration": { "description": "Extended configuration for the client. The configuration is only returned if the client specified 'extendedConfigurations' in the request's included options.", "$ref": "#/definitions/RemoteRecorderExtendedConfiguration" } } } ] }, "RemoteRecorderConfiguration": { "type": "object", "required": [ "CaptureScreen", "CaptureSlides", "CaptureSystemAudio", "HighlightMouseCursor" ], "properties": { "PrimaryVideoDevice": { "type": "string" }, "PrimaryAudioDevice": { "type": "string" }, "DevicesToIgnore": { "type": "array", "items": { "type": "string" } }, "DevicesToCapture": { "type": "array", "items": { "type": "string" } }, "CaptureScreen": { "type": "boolean" }, "CaptureSlides": { "type": "boolean" }, "CaptureSystemAudio": { "type": "boolean" }, "HighlightMouseCursor": { "type": "boolean" } } }, "LiveMonitoringHeartbeatResponseData": { "type": "object", "required": [ "Mode" ], "properties": { "Mode": { "$ref": "#/definitions/LiveMonitoringMode" }, "Id": { "type": "string" } } }, "LiveMonitoringMode": { "type": "string", "description": "", "x-enumNames": [ "Disabled", "WebRtcPrimaryAudio" ], "enum": [ "Disabled", "WebRtcPrimaryAudio" ] }, "QualitySettings": { "type": "object", "required": [ "AudioBitrate", "Framerate", "MultipleBitrateCount", "PixelCount", "VideoBitrate" ], "properties": { "AudioBitrate": { "type": "integer", "format": "int32" }, "Framerate": { "type": "integer", "format": "int32" }, "MultipleBitrateCount": { "type": "integer", "format": "int32" }, "PixelCount": { "type": "integer", "format": "int32" }, "VideoBitrate": { "type": "integer", "format": "int32" } } }, "RemoteRecorderExtendedConfiguration": { "type": "object", "required": [ "AudioHistogramModeType" ], "properties": { "SecondsToUseNextRecordingTemplate": { "type": "number", "description": "The number of seconds prior to the start of the next scheduled recording to apply the recording's template configurations.", "format": "double" }, "SecondsToDeleteRecordingAfterUpload": { "type": "number", "description": "The number of seconds to retain the recording on the client after successful upload of the recording", "format": "double" }, "ServerTime": { "type": "number", "description": "The server time in UTC file seconds", "format": "double" }, "AudioHistogramModeType": { "description": "Preferred audio histogram type", "$ref": "#/definitions/RemoteRecorderAudioHistogramType" } } }, "RemoteRecorderAudioHistogramType": { "type": "string", "description": "", "x-enumNames": [ "Automatic", "AlwaysStereoHistograms", "AlwaysMonoHistograms" ], "enum": [ "Automatic", "AlwaysStereoHistograms", "AlwaysMonoHistograms" ] }, "RemoteRecorderHeartbeatData": { "type": "object", "required": [ "State", "DiskSpaceFreeMegabytes", "LiveMonitoringBlocked" ], "properties": { "State": { "$ref": "#/definitions/RemoteRecorderState" }, "DiskSpaceFreeMegabytes": { "type": "integer", "format": "int32" }, "CurrentRecordingSessionId": { "type": "string", "format": "guid" }, "ConnectedDevicesWithPreviews": { "type": "array", "description": "List of connected devices and available previews. If excluded or null, the list of connected devices will not be updated.", "items": { "$ref": "#/definitions/DeviceDescriptionWithPreview" } }, "LiveMonitoringBlocked": { "type": "boolean", "description": "If supported, whether or not live audio monitoring is currently blocked." } } }, "RemoteRecorderState": { "type": "string", "description": "", "x-enumNames": [ "Stopped", "Previewing", "Recording", "Paused", "Faulted", "Disconnected", "RecorderRunning" ], "enum": [ "Stopped", "Previewing", "Recording", "Paused", "Faulted", "Disconnected", "RecorderRunning" ] }, "DeviceDescriptionWithPreview": { "type": "object", "properties": { "Device": { "$ref": "#/definitions/Device" }, "Preview": { "$ref": "#/definitions/RemoteRecorderDevicePreview" } } }, "Device": { "type": "object", "required": [ "Type" ], "properties": { "DeviceId": { "type": "string" }, "Name": { "type": "string" }, "Type": { "$ref": "#/definitions/DeviceType" } } }, "DeviceType": { "type": "string", "description": "", "x-enumNames": [ "Unknown", "Audio", "Video", "AudioVideo" ], "enum": [ "Unknown", "Audio", "Video", "AudioVideo" ] }, "RemoteRecorderDevicePreview": { "type": "object", "required": [ "AudioFormat", "VideoFormat" ], "properties": { "AudioFormat": { "$ref": "#/definitions/DeviceThumbnailFormat" }, "AudioPreviewData": { "type": "string" }, "VideoFormat": { "$ref": "#/definitions/DeviceThumbnailFormat" }, "VideoPreviewData": { "type": "string" }, "StreamID": { "type": "string", "format": "guid" } } }, "DeviceThumbnailFormat": { "type": "string", "description": "", "x-enumNames": [ "None", "AudioHist", "VideoJpeg", "AudioHist2Channel" ], "enum": [ "None", "AudioHist", "VideoJpeg", "AudioHist2Channel" ] }, "RemoteRecorderSchedule": { "allOf": [ { "$ref": "#/definitions/APIError" }, { "type": "object", "required": [ "ScheduleId", "ServerTime" ], "properties": { "ScheduleId": { "type": "string", "format": "guid" }, "ServerTime": { "type": "number", "format": "double" }, "Recordings": { "type": "array", "items": { "$ref": "#/definitions/RemoteRecorderScheduledRecording" } } } } ] }, "RemoteRecorderScheduledRecording": { "type": "object", "required": [ "SessionId", "FolderId", "StartTime", "EndTime", "IsBroadcast", "SuppressPrimaryDevices", "SuppressSecondaryDevices" ], "properties": { "Id": { "type": "string", "format": "guid" }, "SessionId": { "type": "string", "format": "guid" }, "SessionName": { "type": "string" }, "FolderId": { "type": "string", "format": "guid" }, "FolderName": { "type": "string" }, "UserId": { "type": "string", "format": "guid" }, "StartTime": { "type": "number", "format": "double" }, "EndTime": { "type": "number", "format": "double" }, "IsBroadcast": { "type": "boolean" }, "SuppressPrimaryDevices": { "type": "boolean" }, "SuppressSecondaryDevices": { "type": "boolean" }, "PrimaryQualitySettings": { "$ref": "#/definitions/QualitySettings" }, "SecondaryQualitySettings": { "$ref": "#/definitions/QualitySettings" }, "Configuration": { "$ref": "#/definitions/RemoteRecorderConfiguration" } } }, "RemoteRecorderError": { "type": "object", "required": [ "Severity", "ErrorType", "ErrorCode" ], "properties": { "Severity": { "description": "Error severity, must be a value other than Invalid", "$ref": "#/definitions/RemoteRecorderErrorSeverity" }, "ErrorType": { "description": "Error category, must be a value other than Invalid", "$ref": "#/definitions/RemoteRecorderErrorType" }, "ErrorCode": { "type": "integer", "description": "Vendor-specific error code", "format": "int32" }, "Message": { "type": "string", "description": "Error message with a maximum length of 250 characters" }, "AssociatedSessionId": { "type": "string", "description": "If this error is associated with a session, which session", "format": "guid" } } }, "RemoteRecorderErrorSeverity": { "type": "string", "description": "", "x-enumNames": [ "Invalid", "Critical", "Error", "Warning" ], "enum": [ "Invalid", "Critical", "Error", "Warning" ] }, "RemoteRecorderErrorType": { "type": "string", "description": "", "x-enumNames": [ "Invalid", "General", "Device", "Network", "Storage" ], "enum": [ "Invalid", "General", "Device", "Network", "Storage" ] }, "RemoteRecorderPauseRecordingRequest": { "type": "object", "required": [ "PauseRecordingTime" ], "properties": { "PauseRecordingTime": { "type": "number", "description": "Pause recording time in UTC file time seconds", "format": "double" } } }, "RemoteRecorderResumeRecordingRequest": { "type": "object", "required": [ "ResumeRecordingTime" ], "properties": { "ResumeRecordingTime": { "type": "number", "description": "Resume recording time in UTC file time seconds", "format": "double" } } }, "RemoteRecorderURLsUpdateRequest": { "type": "object", "properties": { "URLs": { "type": "array", "items": { "$ref": "#/definitions/RemoteRecorderURL" } } } }, "RemoteRecorderURL": { "type": "object", "required": [ "URLType" ], "properties": { "URLType": { "$ref": "#/definitions/RemoteRecorderURLType" }, "URL": { "type": "string", "description": "Must be a well formed URL" } } }, "RemoteRecorderURLType": { "type": "string", "description": "", "x-enumNames": [ "Management", "PrimaryPreview", "SecondaryPreview", "Support", "SecondaryPreview2", "SecondaryPreview3", "SecondaryPreview4" ], "enum": [ "Management", "PrimaryPreview", "SecondaryPreview", "Support", "SecondaryPreview2", "SecondaryPreview3", "SecondaryPreview4" ] }, "WebRtcConnectPostData": { "type": "object", "required": [ "OperationType" ], "properties": { "OperationType": { "$ref": "#/definitions/WebRtcConnectOperationType" } } }, "WebRtcConnectOperationType": { "type": "string", "description": "", "x-enumNames": [ "Unknown", "Initialize" ], "enum": [ "Unknown", "Initialize" ] }, "WebRtcDisconnectPostData": { "type": "object", "required": [ "OperationType" ], "properties": { "OperationType": { "description": "The type of operation.", "$ref": "#/definitions/WebRtcDisconnectOperationType" } } }, "WebRtcDisconnectOperationType": { "type": "string", "description": "", "x-enumNames": [ "Unknown", "Destroy" ], "enum": [ "Unknown", "Destroy" ] }, "WebRtcEventsResponse": { "allOf": [ { "$ref": "#/definitions/APIError" }, { "type": "object", "required": [ "PingFastInterval", "PingSlowInterval" ], "properties": { "Events": { "type": "array", "items": { "$ref": "#/definitions/WebRtcEvent" } }, "PingFastInterval": { "type": "integer", "format": "int32" }, "PingSlowInterval": { "type": "integer", "format": "int32" } } } ] }, "WebRtcEvent": { "type": "object", "required": [ "EventType" ], "properties": { "EventType": { "$ref": "#/definitions/WebRtcEventType" }, "Payload": { "type": "string" } } }, "WebRtcEventType": { "type": "string", "description": "", "x-enumNames": [ "Unknown", "IceCandidate", "SdpAnswer", "TemporaryFailure", "PermanentFailure" ], "enum": [ "Unknown", "IceCandidate", "SdpAnswer", "TemporaryFailure", "PermanentFailure" ] }, "WebRtcIceCandidates": { "type": "object", "properties": { "Candidates": { "type": "array", "items": { "$ref": "#/definitions/WebRtcIceCandidate" } } } }, "WebRtcIceCandidate": { "type": "object", "required": [ "Index" ], "properties": { "Candidate": { "type": "string" }, "Index": { "type": "integer" } } }, "WebRtcSdpOfferPostData": { "type": "object", "properties": { "SessionDescription": { "type": "string", "description": "The session description document, as defined by the Session Description Protocol (SDP) standard." } } }, "AccessibilityBulkPreviewResponse": { "type": "object", "required": [ "Type", "SiteOverwriteBehavior" ], "properties": { "Type": { "description": "The normalized accessibility type: AudioDescription, Transcription, or Translation.", "$ref": "#/definitions/AccessibilityRequestType" }, "SiteOverwriteBehavior": { "description": "The site-level overwrite behavior. For AudioDescription: DoNotOverwrite or Overwrite. For Transcription/Translation: DoNotOverwrite, OverwriteASR, or OverwriteAny.", "$ref": "#/definitions/AccessibilityOverwriteBehavior" }, "AvailableCaptionCredits": { "type": "number", "description": "Remaining caption credits for the active transcription contract. Null when no finite credit pool applies (no active contract, or unlimited credits). Zero means the contract's finite pool has been fully consumed.", "format": "double" }, "Providers": { "type": "array", "description": "Available providers for the requested type, with display names and pricing metadata.", "items": { "$ref": "#/definitions/AccessibilityProviderPreview" } }, "SessionEvaluations": { "type": "array", "description": "Per-session eligibility evaluation results.", "items": { "$ref": "#/definitions/AccessibilitySessionPreview" } }, "Summary": { "description": "Aggregate counts of eligible, conditionally eligible, and excluded sessions with total duration.", "$ref": "#/definitions/AccessibilityPreviewSummary" } } }, "AccessibilityRequestType": { "type": "string", "description": "", "x-enumNames": [ "AudioDescription", "Transcription", "Translation" ], "enum": [ "AudioDescription", "Transcription", "Translation" ] }, "AccessibilityOverwriteBehavior": { "type": "string", "description": "", "x-enumNames": [ "DoNotOverwrite", "OverwriteAD", "OverwriteASR", "OverwriteAnyCaptions" ], "enum": [ "DoNotOverwrite", "OverwriteAD", "OverwriteASR", "OverwriteAnyCaptions" ] }, "AccessibilityProviderPreview": { "type": "object", "required": [ "ProviderInstanceId", "PriceKnown" ], "properties": { "ProviderInstanceId": { "type": "integer", "description": "Provider instance identifier, used when scheduling an accessibility request.", "format": "int32" }, "DisplayName": { "type": "string", "description": "Display name of the provider (e.g. \"Captions Service\")." }, "PricePerMinute": { "type": "number", "description": "Price per minute in caption credits. Null when pricing is not applicable.", "format": "double" }, "PriceKnown": { "type": "boolean", "description": "Whether the price is known." } } }, "AccessibilitySessionPreview": { "type": "object", "required": [ "SessionId", "DurationSeconds", "EligibilityState", "ReasonCode" ], "properties": { "SessionId": { "type": "string", "description": "The public ID of the evaluated session.", "format": "guid" }, "SessionName": { "type": "string", "description": "The display name of the session. Null if the session was not found." }, "DurationSeconds": { "type": "number", "description": "Total duration in seconds of the session's streams. Zero if the session was not found or has no primary streams.", "format": "double" }, "EligibilityState": { "description": "The eligibility classification: Eligible, ConditionallyEligible, or Excluded.", "$ref": "#/definitions/EligibilityState" }, "ReasonCode": { "description": "The reason the session is not fully eligible. None when EligibilityState is Eligible.", "$ref": "#/definitions/ExclusionReason" }, "Details": { "description": "Translation-specific details (source languages, existing captions, pending translations). Null for AudioDescription and Transcription types.", "$ref": "#/definitions/TranslationDetails" } } }, "EligibilityState": { "type": "string", "description": "", "x-enumNames": [ "Eligible", "ConditionallyEligible", "Excluded" ], "enum": [ "Eligible", "ConditionallyEligible", "Excluded" ] }, "ExclusionReason": { "type": "string", "description": "", "x-enumNames": [ "None", "NotFound", "InsufficientPermissions", "InvalidTranscriptionRequestType", "NoActiveDelivery", "NoPrimaryStream", "PendingEdits", "PendingRequest", "UnsupportedLanguage", "AlreadyHasAudioDescription", "AlreadyHasCaptions", "AlreadyHasAsrCaptions", "NoSourceCaptions", "SchedulingFailed" ], "enum": [ "None", "NotFound", "InsufficientPermissions", "InvalidTranscriptionRequestType", "NoActiveDelivery", "NoPrimaryStream", "PendingEdits", "PendingRequest", "UnsupportedLanguage", "AlreadyHasAudioDescription", "AlreadyHasCaptions", "AlreadyHasAsrCaptions", "NoSourceCaptions", "SchedulingFailed" ] }, "TranslationDetails": { "type": "object", "properties": { "AvailableSourceLanguages": { "type": "array", "description": "Caption languages available as a translation source. Only non-translated captions are included.", "items": { "$ref": "#/definitions/ContentLanguage" } }, "ExistingCaptionLanguages": { "type": "array", "description": "All caption languages that already exist on the delivery, useful for identifying redundant translation targets.", "items": { "$ref": "#/definitions/ContentLanguage" } }, "PendingTranslationTargets": { "type": "array", "description": "Target languages with in-flight translation requests, useful for preventing duplicate requests.", "items": { "$ref": "#/definitions/ContentLanguage" } } } }, "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" ] }, "AccessibilityPreviewSummary": { "type": "object", "required": [ "TotalSessions", "EligibleCount", "ConditionallyEligibleCount", "ExcludedCount", "TotalDurationSeconds" ], "properties": { "TotalSessions": { "type": "integer", "description": "Total number of sessions evaluated (after de-duplication).", "format": "int32" }, "EligibleCount": { "type": "integer", "description": "Number of sessions that are fully eligible and included by default.", "format": "int32" }, "ConditionallyEligibleCount": { "type": "integer", "description": "Number of sessions excluded by default but eligible if the user opts in (e.g. overwrite existing content).", "format": "int32" }, "ExcludedCount": { "type": "integer", "description": "Number of sessions that cannot be included in the request.", "format": "int32" }, "TotalDurationSeconds": { "type": "number", "description": "Total duration of all evaluated sessions in seconds.", "format": "double" } } }, "AccessibilityBulkPreviewRequest": { "type": "object", "required": [ "Type" ], "properties": { "Type": { "description": "The accessibility request type: AudioDescription, Transcription, or Translation.", "$ref": "#/definitions/AccessibilityRequestType" }, "SessionIds": { "type": "array", "description": "List of session or delivery public IDs (GUIDs) to evaluate. Duplicates are de-duplicated. Maximum 100 IDs.", "items": { "type": "string", "format": "guid" } } } }, "AccessibilityBulkScheduleResponse": { "type": "object", "required": [ "Type", "ScheduledCount", "SkippedCount" ], "properties": { "Type": { "description": "The accessibility request type that was scheduled.", "$ref": "#/definitions/AccessibilityRequestType" }, "Results": { "type": "array", "description": "Per-session scheduling outcomes.", "items": { "$ref": "#/definitions/AccessibilityScheduleResult" } }, "ScheduledCount": { "type": "integer", "description": "Number of sessions that were successfully scheduled.", "format": "int32" }, "SkippedCount": { "type": "integer", "description": "Number of sessions that were skipped.", "format": "int32" } } }, "AccessibilityScheduleResult": { "type": "object", "required": [ "SessionId", "Scheduled", "ReasonCode", "RequestCount" ], "properties": { "SessionId": { "type": "string", "description": "The public ID of the session.", "format": "guid" }, "SessionName": { "type": "string", "description": "The display name of the session. Null if the session was not found." }, "Scheduled": { "type": "boolean", "description": "Whether accessibility requests were created for this session." }, "ReasonCode": { "description": "The reason the session was skipped. None when Scheduled is true.", "$ref": "#/definitions/ExclusionReason" }, "RequestCount": { "type": "integer", "description": "Number of transcription requests created for this session.", "format": "int32" } } }, "AccessibilityBulkScheduleRequest": { "type": "object", "required": [ "Type", "ProviderInstanceId" ], "properties": { "Type": { "description": "The accessibility request type: AudioDescription, Transcription, or Translation.", "$ref": "#/definitions/AccessibilityRequestType" }, "SessionIds": { "type": "array", "description": "List of session or delivery public IDs (GUIDs) to schedule. Duplicates are de-duplicated. Maximum 100 IDs.", "items": { "type": "string", "format": "guid" } }, "ProviderInstanceId": { "type": "integer", "description": "The provider instance ID to use, from the preview response's Providers list.", "format": "int32" }, "SourceLanguage": { "description": "Translation only: the source caption language to translate from.", "$ref": "#/definitions/ContentLanguage" }, "TargetLanguages": { "type": "array", "description": "Translation only: the target languages to translate to.", "items": { "$ref": "#/definitions/ContentLanguage" } } } }, "ListResponseOfTranscriptionProviderInstance": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/TranscriptionProviderInstance" } } } }, "TranscriptionProviderInstance": { "allOf": [ { "$ref": "#/definitions/ModelBaseOfGuid" }, { "type": "object", "required": [ "Enabled" ], "properties": { "Enabled": { "type": "boolean" }, "DisplayName": { "type": "string" } } } ] }, "ModelBaseOfGuid": { "type": "object", "properties": { "Id": { "type": "string", "format": "guid" }, "Name": { "type": "string" } } }, "TranscriptionProviderInstanceSortFields": { "type": "string", "description": "", "x-enumNames": [ "Name" ], "enum": [ "Name" ] }, "SortOrder": { "type": "string", "description": "", "x-enumNames": [ "Asc", "Desc" ], "enum": [ "Asc", "Desc" ] }, "XfpUserProfile": { "allOf": [ { "$ref": "#/definitions/ModelBaseOfGuid" }, { "type": "object", "required": [ "UserId", "PortalPublicId", "CreatedDate" ], "properties": { "UserId": { "type": "string", "format": "guid" }, "FirstName": { "type": "string" }, "LastName": { "type": "string" }, "EmailAddress": { "type": "string" }, "PortalPublicId": { "type": "string", "format": "guid" }, "XfpRole": { "type": "string" }, "CreatedDate": { "type": "string", "format": "date-time" } } } ] }, "XfpUserProfileCreate": { "type": "object", "required": [ "XfpRole" ], "properties": { "FirstName": { "type": "string" }, "LastName": { "type": "string" }, "EmailAddress": { "type": "string" }, "XfpRole": { "$ref": "#/definitions/XfpUserRole" }, "TemporaryPassword": { "type": "string" } } }, "XfpUserRole": { "type": "string", "description": "", "x-enumNames": [ "Viewer", "PortalManager" ], "enum": [ "Viewer", "PortalManager" ] }, "XfpUserProfileUpdate": { "type": "object", "properties": { "XfpRole": { "type": "string" }, "FirstName": { "type": "string" }, "LastName": { "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" } } }, "BasicFolder": { "type": "object", "properties": { "Id": { "type": "string", "format": "guid" }, "Name": { "type": "string" } } }, "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" } } } }, "FolderSortFields": { "type": "string", "description": "", "x-enumNames": [ "Name", "Relevance" ], "enum": [ "Name", "Relevance" ] }, "ListResponseOfSession": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/Session" } } } }, "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" } } }, "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." } } }, "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" } } }, "SearchResultContext": { "type": "object", "properties": { "Text": { "type": "string" }, "Time": { "type": "number", "format": "double" }, "ThumbnailUrl": { "type": "string" } } }, "SessionSortFields": { "type": "string", "description": "", "x-enumNames": [ "Name", "CreatedDate", "Relevance" ], "enum": [ "Name", "CreatedDate", "Relevance" ] }, "ListResponseOfPlaylist": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/Playlist" } } } }, "Playlist": { "allOf": [ { "$ref": "#/definitions/ModelBaseOfGuid" }, { "type": "object", "properties": { "Description": { "type": "string" }, "Folder": { "$ref": "#/definitions/BasicFolder" }, "Urls": { "$ref": "#/definitions/PlaylistUrls" } } } ] }, "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" } } }, "PlaylistSortFields": { "type": "string", "description": "", "x-enumNames": [ "Name", "CreatedDate", "Relevance" ], "enum": [ "Name", "CreatedDate", "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" } } }, "AccessLevel": { "type": "string", "description": "", "x-enumNames": [ "Restricted", "OrganizationUnlisted", "Organization", "PublicUnlisted", "Public" ], "enum": [ "Restricted", "OrganizationUnlisted", "Organization", "PublicUnlisted", "Public" ] }, "FolderSettings": { "type": "object", "required": [ "AutomaticCaptionProviderId" ], "properties": { "AutomaticCaptionProviderId": { "type": "string", "format": "guid" }, "AutomaticCaptionProviderName": { "type": "string" } } }, "ListResponseOfPermission": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/Permission" } } } }, "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" } } }, "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" } } }, "PrincipalType": { "type": "string", "description": "", "x-enumNames": [ "User", "Group" ], "enum": [ "User", "Group" ] }, "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." } } }, "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" } } }, "BuiltInRoleType": { "type": "string", "description": "", "x-enumNames": [ "None", "Viewer", "Creator", "Publisher" ], "enum": [ "None", "Viewer", "Creator", "Publisher" ] }, "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" } } }, "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" } } }, "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.\nTo move to a top level folder, set this to \"00000000-0000-0000-0000-000000000000\"", "format": "guid" } } }, "ListResponseOfGroup": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/Group" } } } }, "Group": { "allOf": [ { "$ref": "#/definitions/ModelBaseOfGuid" }, { "type": "object" } ] }, "PlaylistUpdate": { "type": "object", "properties": { "Name": { "type": "string", "description": "The new name for the playlist." }, "Description": { "type": "string", "description": "The new description for the playlist." }, "Folder": { "type": "string", "description": "The id of the folder to move this playlist to.", "format": "guid" } } }, "PlaylistSessionSortFields": { "type": "string", "description": "", "x-enumNames": [ "Name", "CreatedDate", "Relevance", "Order" ], "enum": [ "Name", "CreatedDate", "Relevance", "Order" ] }, "PlaylistCreate": { "type": "object", "required": [ "FolderId" ], "properties": { "Name": { "type": "string", "description": "The name of the playlist." }, "Description": { "type": "string", "description": "An optional description for the playlist." }, "FolderId": { "type": "string", "description": "The folder to add this playlist to.", "format": "guid" }, "Sessions": { "type": "array", "description": "A list of session IDs to add to this playlist. They will be added in order.", "items": { "type": "string", "format": "guid" } } } }, "PlaylistAddSession": { "type": "object", "required": [ "SessionId" ], "properties": { "SessionId": { "type": "string", "description": "The id of the session to add to this playlist.", "format": "guid" }, "Index": { "type": "integer", "description": "The index to insert the item at (starting with 0 as the beginning of the list). If this is not specified, the session will be added to the end.", "format": "int32" } } }, "ListResponseOfRemoteRecorder": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/RemoteRecorder" } } } }, "RemoteRecorder": { "type": "object", "required": [ "State" ], "properties": { "Id": { "type": "string", "format": "guid" }, "Name": { "type": "string" }, "State": { "$ref": "#/definitions/RemoteRecorderState" }, "DefaultRecordingFolder": { "$ref": "#/definitions/BasicFolder" } } }, "RemoteRecorderSortFields": { "type": "string", "description": "", "x-enumNames": [ "Name" ], "enum": [ "Name" ] }, "ScheduledRecording": { "type": "object", "properties": { "Id": { "type": "string", "format": "guid" }, "Name": { "type": "string" }, "RecorderScheduleEntries": { "type": "array", "description": "A list of recorders and their associated properties", "items": { "$ref": "#/definitions/RecorderScheduleEntry" } }, "StartTime": { "type": "string", "description": "The start time for the recording", "format": "date-time" }, "EndTime": { "type": "string", "description": "The end time for the recording", "format": "date-time" } } }, "RecorderScheduleEntry": { "type": "object", "required": [ "RecorderId", "SuppressPrimaryCapture", "SuppressSecondaryCapture" ], "properties": { "Id": { "type": "string", "format": "guid" }, "Name": { "type": "string" }, "RecorderId": { "type": "string", "format": "guid" }, "SuppressPrimaryCapture": { "type": "boolean" }, "SuppressSecondaryCapture": { "type": "boolean" }, "RecorderDescription": { "type": "string" } } }, "ScheduledRecordingUpdate": { "type": "object", "properties": { "StartTime": { "type": "string", "description": "The new start time. Times should be UTC. Must be later than the current time", "format": "date-time" }, "EndTime": { "type": "string", "description": "The new end time. Times should be UTC. Must be later than the current time", "format": "date-time" } } }, "ScheduledRecordingCreate": { "type": "object", "required": [ "StartTime", "EndTime", "FolderId", "IsBroadcast" ], "properties": { "Name": { "type": "string", "description": "The name of the scheduled recording." }, "Description": { "type": "string", "description": "An optional description for the scheduled recording." }, "StartTime": { "type": "string", "description": "The date and time the scheduled recording should start.", "format": "date-time" }, "EndTime": { "type": "string", "description": "The date and time the scheduled recording should end.", "format": "date-time" }, "FolderId": { "type": "string", "description": "The folder to add this scheduled recording to.", "format": "guid" }, "Recorders": { "type": "array", "description": "A list of recorders that will be used for this recording", "items": { "$ref": "#/definitions/ScheduledRecordingRemoteRecorder" } }, "IsBroadcast": { "type": "boolean", "description": "Set to true if this recording should be broadcast live when it starts." } } }, "ScheduledRecordingRemoteRecorder": { "type": "object", "required": [ "RemoteRecorderId", "SuppressPrimary", "SuppressSecondary" ], "properties": { "RemoteRecorderId": { "type": "string", "description": "The id of the remote recorder to use for this recording. Only one can be specified at this time.", "format": "guid" }, "SuppressPrimary": { "type": "boolean", "description": "True if the primary stream should be suppressed from this recorder. At least one recorder in a scheduled recording must not suppress the primary stream." }, "SuppressSecondary": { "type": "boolean", "description": "True if the secondary stream should be suppressed from this recorder." } } }, "SearchIndexSyncUpdateResponse": { "allOf": [ { "$ref": "#/definitions/ModelBase" }, { "type": "object" } ] }, "ModelBase": { "type": "object", "properties": { "Id": { "type": "string", "description": "The unique identifier for this item.", "format": "guid" }, "Name": { "type": "string", "description": "The name of this item." } } }, "SearchIndexSyncContentResponse": { "allOf": [ { "$ref": "#/definitions/ModelBase" }, { "type": "object" } ] }, "SessionUpdate": { "type": "object", "properties": { "Name": { "type": "string", "description": "The new name for the session." }, "Description": { "type": "string", "description": "The new description for the session." }, "Folder": { "type": "string", "description": "The id of the folder to move this session to.", "format": "guid" } } }, "ListResponseOfSessionViewerStats": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/SessionViewerStats" } } } }, "SessionViewerStats": { "type": "object", "required": [ "LastViewedDateTime" ], "properties": { "User": { "$ref": "#/definitions/User" }, "PercentCompleted": { "type": "number", "format": "double" }, "LastViewedDateTime": { "type": "string", "format": "date-time" }, "MostRecentViewPositionInSeconds": { "type": "number", "description": "The most recent timestamp (in seconds) that was viewed by the user in this session", "format": "float" } } }, "SessionViewerStatsSortFields": { "type": "string", "description": "", "x-enumNames": [ "UserName", "LastViewedDateTime" ], "enum": [ "UserName", "LastViewedDateTime" ] }, "ListResponseOfTag": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/Tag" } } } }, "Tag": { "type": "object", "required": [ "UsageCount", "CreateDate" ], "properties": { "Id": { "type": "string", "format": "guid" }, "Content": { "type": "string" }, "UsageCount": { "type": "integer", "format": "int64" }, "CreateDate": { "type": "string", "format": "date-time" }, "MostRecentUseDate": { "type": "string", "format": "date-time" }, "CreatedBy": { "$ref": "#/definitions/User" } } }, "TagSortFields": { "type": "string", "description": "", "x-enumNames": [ "CreateDate", "UsageCount", "Content", "Creator", "MostRecentUseDate" ], "enum": [ "CreateDate", "UsageCount", "Content", "Creator", "MostRecentUseDate" ] }, "SessionTagUpdate": { "type": "object", "properties": { "Tags": { "type": "array", "description": "The tags for the session.", "items": { "type": "string" } } } }, "SessionScormManifestType": { "type": "string", "description": "", "x-enumNames": [ "Interactive", "Embed" ], "enum": [ "Interactive", "Embed" ] }, "SessionCopyResponse": { "type": "object", "properties": { "NewDeliveryId": { "type": "string", "format": "guid" }, "NewSessionId": { "type": "string", "format": "guid" } } }, "SessionCopyCreate": { "type": "object", "required": [ "CopyType", "FolderId", "Name" ], "properties": { "CopyType": { "description": "Specifies how the session is copied. Allowed values are Full and Reference", "$ref": "#/definitions/SessionCopyType" }, "FolderId": { "type": "string", "description": "The ID of the folder into which the new session will go.", "format": "guid" }, "Name": { "type": "string", "description": "The name of the new session." } } }, "SessionCopyType": { "type": "string", "description": "", "x-enumNames": [ "Reference", "Full", "Destructive" ], "enum": [ "Reference", "Full", "Destructive" ] }, "SessionInteractivityUploadResponse": { "allOf": [ { "$ref": "#/definitions/UploadAPIResponse" }, { "type": "object", "required": [ "FileId" ], "properties": { "Id": { "type": "string", "description": "A unique identifier for the interactivity asset. This ID is used to match the interactivity element with its corresponding upload target." }, "FileId": { "type": "string", "description": "The unique identifier for the uploaded file.", "format": "guid" }, "UploadTarget": { "description": "The signed URL where the interactivity asset should be uploaded. This URL is temporary and should be used immediately to upload the asset.", "$ref": "#/definitions/SignedUrl" } } } ] }, "SignedUrl": { "type": "object", "required": [ "Expiration" ], "properties": { "Url": { "type": "string", "description": "The complete URL for uploading content." }, "HttpMethod": { "description": "The HTTP method (PUT, POST) required for the upload.", "$ref": "#/definitions/HttpMethod" }, "Expiration": { "type": "string", "description": "The timestamp when the signed URL expires.", "format": "date-time" } } }, "HttpMethod": { "type": "object" }, "UploadAPIResponse": { "allOf": [ { "$ref": "#/definitions/APIError" }, { "type": "object" } ] }, "SessionInteractivityCreate": { "type": "object", "required": [ "FileSize" ], "properties": { "Id": { "type": "string", "description": "A unique identifier string that matches to a specific interactivity element. This ID is used to track and reference the interactivity element throughout the upload process." }, "FileSize": { "type": "integer", "description": "The size of the file being uploaded for this specific interactivity element. ", "format": "int32" } } }, "TagCreate": { "type": "object", "properties": { "Content": { "type": "string", "description": "The content of the tag." } } }, "TagUpdate": { "allOf": [ { "$ref": "#/definitions/TagCreate" }, { "type": "object" } ] }, "TagMerge": { "type": "object", "properties": { "TagIdsToMerge": { "type": "array", "description": "The IDs of the tags that should be merged and then deleted.", "items": { "type": "string", "format": "guid" } } } }, "ListResponseOfUser": { "type": "object", "properties": { "Results": { "type": "array", "description": "The list of results from the API call", "items": { "$ref": "#/definitions/User" } } } }, "HttpRequestMessage": { "type": "object" }, "ExternalProviderType": { "type": "string", "description": "", "x-enumNames": [ "Zoom", "Hive", "Kollective", "Webex", "TeamsTenant", "Kombo" ], "enum": [ "Zoom", "Hive", "Kollective", "Webex", "TeamsTenant", "Kombo" ] }, "FindImportEligibilityAndProvisionMeetingFolderForUserDto": { "type": "object" }, "CreateSessionForSessionGroupIdAndUserIdDto": { "type": "object" }, "ProvisionExternalContextForSessionByExternalProviderWithPublicIdDto": { "type": "object" }, "CreateMeetingImportStreamDto": { "type": "object" }, "CreateZoomImportEditsByProviderDto": { "type": "object" }, "GetMappedUserIdsByEmailDto": { "type": "object" }, "AddMeetingParticipantsForSessionDto": { "type": "object" }, "CreateIntegrationMediaImportJobDto": { "type": "object" }, "CreateCustomThumbnailFromUploadDto": { "type": "object" }, "BatchAddCommentThreadsToSessionDto": { "type": "object" }, "LtiSpecLogin": { "type": "object" }, "LtiAgsScore": { "type": "object" } }, "tags": [ { "name": "Auth", "description": "Authentication API" }, { "name": "RemoteRecorderAPI", "description": "Remote Recorder Device API. Warning: this endpoint is for Panopto's hardware partners only and cannot be used without a partner API key." }, { "name": "Accessibility", "description": "Accessibility API" }, { "name": "CaptionProviders", "description": "Caption Providers API" }, { "name": "Reports", "description": "Reports API" }, { "name": "XfpUserProfiles", "description": "Portals API" }, { "name": "Folders", "description": "Folder API" }, { "name": "Groups", "description": "Group API" }, { "name": "Playlists", "description": "Playlist API" }, { "name": "RemoteRecorders", "description": "Remote Recorder Management API" }, { "name": "ScheduledRecordings", "description": "Scheduled Recording API" }, { "name": "SearchIndexSyncUpdates", "description": "Search Index Integration API" }, { "name": "Sessions", "description": "Session API" }, { "name": "Streams", "description": "Stream API" }, { "name": "Tags", "description": "Tag API" }, { "name": "Users", "description": "User API" } ] }