x-generator: NSwag v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0)) openapi: 3.0.0 info: title: Millicast API description: '# Introduction Controlling publishing for your Millicast account.' version: 1.0.0 servers: - url: https://api.millicast.com paths: /api/v3/account/media/expiration: put: tags: - Account summary: Update Account Media Assets Expiration Rules description: Update account level expiration rule for various media asset types. operationId: Account_UpdateExpirationRules requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateMediaAssetExpirationModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaAssetExpirationResponseModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] get: tags: - Account summary: Get Account Media Assets Expiration Rule description: Get account level expiration rule for various media asset types. operationId: Account_GetExpirationRules responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaAssetExpirationResponseModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/account/media/storage: get: tags: - Account summary: List Storage Profiles description: List all storage profiles created on your account. operationId: Account_ListStorageProfiles parameters: - name: sort in: query schema: default: name nullable: true oneOf: - $ref: '#/components/schemas/ListStorageProfilesSortBy' x-position: 1 - name: default in: query description: Set to true to get the default storage profile on your account schema: type: boolean nullable: true x-position: 2 - name: page in: query schema: type: integer default: 1 maximum: 2147483647.0 minimum: 1.0 x-position: 3 - name: limit in: query schema: type: integer default: 25 maximum: 100.0 minimum: 1.0 x-position: 4 - name: desc in: query schema: type: boolean default: false x-position: 5 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfListOfStorageProfileResponseModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] post: tags: - Account summary: Create Storage Profile description: Create a storage profile identifying the configuration for a cloud storage provider that can receive media assets when they are finished processing. Only one storage profile will be set as a default for the entire account, otherwise you may specify a storage location using the `storageProfileId` on any individual media clip request. operationId: Account_CreateStorageProfile requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/CreateStorageProfileModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfStorageProfileResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/account/media/storage/{id}: delete: tags: - Account summary: Delete Storage Profile description: Specify the id of a storage profile you wish to delete. operationId: Account_DeleteStorageProfile parameters: - name: id in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfBoolean' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] get: tags: - Account summary: Get Storage Profile description: Get details of a saved storage profile operationId: Account_GetStorageProfile parameters: - name: id in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfStorageProfileResponseModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] put: tags: - Account summary: Update Storage Profile description: Change the details of a storage profile. operationId: Account_UpdateStorageProfile parameters: - name: id in: path required: true schema: type: string x-position: 1 requestBody: x-name: updateModel content: application/json: schema: $ref: '#/components/schemas/UpdateStorageProfileModel' required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfStorageProfileResponseModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/account/media/storage/validate: post: tags: - Account summary: Validate Third Party Storage Setup description: "Validates third party storage is configured with permissions for Dolby.io to upload media assets.\n\n\ \ To track the validation result, keep note of the the `id` returned in the response body. If correctly configured,\ \ when calling [Read Media Asset](#tag/MediaAssets/operation/MediaAssets_ReadMediaAsset), the response should return\ \ a successful entry with `id` matching the `id`.\n\n Run once to validate write permissions. If successful, optionally\ \ run a second time to confirm that overwriting is allowed.\n\n Note that validation results are only available for\ \ 1 hour." operationId: Account_ValidateThirdPartyStorage requestBody: x-name: storageModel content: application/json: schema: $ref: '#/components/schemas/MediaAssetStorageModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfSuccessValidateRecordStorageResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/account/distribution: get: tags: - Account summary: Read Account Distribution Settings description: "Gets account wide distribution settings. Whenever publish tokens are created, these will be the default\ \ settings used for features that impact how streams are distributed.\n * geoCascade: controls if and which geographic\ \ clusters are included for regional content delivery" operationId: Account_GetAccountDistribution responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfAccountDistributionModel' examples: success: summary: success value: status: success data: geoCascade: isEnabled: true clusters: - phx-1 - ams-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] put: tags: - Account summary: Update Account Distribution Settings description: 'Update account wide distribution settings to enable/disable the feature or update the account default cluster list. Whenever publish tokens are created, these will be the default settings used for features that impact how streams are distributed. ''["all"]'' could be used in place of cluster list to cascade stream to all existing and any future clusters available to the account. Empty cluster list is not allowed when enabling account wide distribution settings. Cluster list is translated to ''["all"]'' clusters if not specified or set to null. Cluster list is ignored when geo cascade is disabled.' operationId: Account_UpdateAccountDistribution requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/AccountDistributionModel' examples: update: summary: update value: geoCascade: isenabled: true clusters: - phx-1 - ams-1 - lon-1 required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfAccountDistributionModel' examples: success: summary: success value: status: success data: geoCascade: isEnabled: true clusters: - phx-1 - ams-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: failure: summary: failure value: status: fail data: message: Geo cascade Clusters list cannot be empty default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/account/security: get: tags: - Account summary: Read Account Security Settings description: Gets account wide security settings. If a Token (either Publish or Subscribe) does not define any security settings, the account wide rules are used. operationId: Account_GetAccountSecurity responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoRestrictions' examples: allowed: summary: allowed value: status: success data: allowedCountries: - US deniedCountries: [] denied: summary: denied value: status: success data: allowedCountries: [] deniedCountries: - UK '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] put: tags: - Account summary: Update Account Security Settings description: Update account wide security settings. Updated to an empty array `[]` removes all rules of that type. operationId: Account_UpdateAccountSecurity requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateAccountGeoModel' examples: allowed: summary: allowed value: allowedCountries: - US deniedCountries: [] denied: summary: denied value: allowedCountries: [] deniedCountries: - UK required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoRestrictions' examples: allowed: summary: allowed value: status: success data: allowedCountries: - US deniedCountries: [] denied: summary: denied value: status: success data: allowedCountries: [] deniedCountries: - UK '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/account/info: get: tags: - Account summary: Read Account Info description: Returns basic information about the authenticated account, including its `accountId` (the public account identifier used in stream IDs, e.g. `/`). operationId: Account_GetAccountInfo responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfAccountInfoResponseModel' examples: success: summary: success value: status: success data: accountId: abc123 default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/media/assets: post: tags: - MediaAssets summary: Create Media Asset description: "Create a live clip from an ongoing live stream. You must provide the stream name and start time, and once\ \ processing is complete the media asset of the type clip will be available for retrieval.\n\nIf a stop time is not\ \ specified, the time the request was received will be used. The clip duration must be a minimum of ten (10) seconds\ \ and cannot exceed eight (8) hours.\n\n There are a few cases where more than one clip will be generated from a single\ \ request.\n\n 1. A stream went offline during the time range will generate separate clips for the period before and\ \ after the restart.\n2. A stream that is configured for multi-source when a simulcastId is not given in the request\ \ to select a single layer.\n 3. A stream that is configured for multi-bitrate contribution or redundant fallback\ \ ingest and a sourceId is not given in the request to specify which to use. In that scenario, sources will be ranked\ \ based on the following criteria and the highest ranked source is selected for clipping:\n * priority\n* quality\n\ * start time\n\n\n By using an `Idempotency-Key` header in your requests, you can avoid generating more than one identical\ \ clip should the same request be received more than once. To avoid unnecessary charges, it is recommended you use\ \ a common identifier for live clip requests based on a common source stream and time range. For background on the\ \ usage of this header, please refer to the [IETF Draft](https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/)" operationId: MediaAssets_CreateMediaAsset requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/CreateMediaAssetModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfListOfMediaAssetResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] get: tags: - MediaAssets summary: List Media Assets description: "List media assets, excluding those that have been deleted.\nA media asset can be:\n* A `\"recording\"\ ` that is from the full duration of the stream\n* A `\"clip\"` which is generated from [Create Media Asset](#tag/MediaAssets/operation/MediaAssets_CreateMediaAsset)\n\ * A `\"timeline\"` which is a series of segments that is buffered in a cache and available for clipping. A `\"timeline\"\ ` is capped at a 12 hour duration or whenever the stream is re-started.\n * Of type `storageValidation`, which is\ \ a record reflecting the outcome of triggering [Validate Third Party Storage Setup](#tag/Account/operation/Account_ValidateThirdPartyStorage)" operationId: MediaAssets_ListMediaAssets parameters: - name: sort in: query schema: default: startTime nullable: true oneOf: - $ref: '#/components/schemas/ListMediaAssetSortBy' x-position: 1 - name: status in: query style: form explode: true description: 'Defaults to "Processing" and "Complete" unless specified. ' schema: type: array nullable: true items: $ref: '#/components/schemas/MediaAssetStatus' x-position: 2 - name: type in: query style: form explode: true description: Optional. Defaults to "Clip" and "Recording" unless specified. schema: type: array nullable: true items: $ref: '#/components/schemas/MediaAssetType' x-position: 3 - name: name in: query description: 'Optional. Filter by media asset name. ' schema: type: string nullable: true x-position: 4 - name: streamName in: query description: Optional. schema: type: string nullable: true x-position: 5 - name: tokenId in: query description: Optional. schema: type: integer nullable: true x-position: 6 - name: sourceId in: query description: Optional. schema: type: string nullable: true x-position: 7 - name: simulcastId in: query description: 'Optional. If the query parameter is provided without specifying a value, i.e. `?simulcastId&...`, response will return entries where the simulcastId is an empty string. There is no filter for unset or `null` simulcastIds. ' schema: type: string nullable: true x-position: 8 - name: priority in: query description: Optional. schema: type: integer format: int32 nullable: true x-position: 9 - name: page in: query schema: type: integer default: 1 maximum: 2147483647.0 minimum: 1.0 x-position: 10 - name: limit in: query schema: type: integer default: 25 maximum: 100.0 minimum: 1.0 x-position: 11 - name: desc in: query schema: type: boolean default: false x-position: 12 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfListOfDownloadMediaAssetModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] delete: tags: - MediaAssets summary: Delete Media Assets description: Deletes multiple media assets from storage. Only media assets with status Complete or Error can be deleted. operationId: MediaAssets_DeleteMediaAssets parameters: - name: id in: query style: form explode: true required: true description: A list of media asset identifiers to delete. schema: type: array maxItems: 100 minItems: 1 nullable: true items: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfDeleteMediaAssetsResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/media/assets/upload: post: tags: - MediaAssets summary: Generate Upload Credentials description: Generate AWS access credentials for uploading media to a specified S3 location within the Dolby system. operationId: MediaAssets_GetUploadCredentials responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfUploadCredentialsResponseModel' examples: simple: summary: simple value: status: success data: - path: s3://optiview-bucket/account-id/session-name/ buckeName: optiview-bucket objectPrefix: account-id/session-name accessKeyId: '[redacted]' secretAccessKey: '[redacted]' sessionToken: '[redacted]' expiration: '2025-09-16T13:24:23Z' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/media/assets/register: post: tags: - MediaAssets summary: Register Media Asset description: Register media asset upon completion of content upload. Call this after generating credentials to upload and then uploading your media. This will cause our service to scan the upload location for completed uploads. operationId: MediaAssets_RegisterMediaAsset requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/RegisterMediaAssetModel' examples: mp4: summary: mp4 value: objectPrefix: optiview-bucket/account-id/session-name/custom-prefix/my-asset.mp4 hls: summary: hls value: objectPrefix: optiview-bucket/account-id/session-name/custom-prefix entrypoint: main.m3u8 required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaAssetResponseModel' examples: mp4: summary: mp4 value: status: success data: - id: 39f12579a0b7440b8497e7b20595a9ae hls: summary: hls value: status: success data: - id: 126m0pta0b754nb84y7e94he2546vbn3 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/media/assets/{mediaAssetId}: get: tags: - MediaAssets summary: Read Media Asset description: Gets media asset specified by id. Includes temporary download link and a CDN served link if the media asset is complete. operationId: MediaAssets_ReadMediaAsset parameters: - name: mediaAssetId in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfDownloadMediaAssetModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] patch: tags: - MediaAssets summary: Update Media Asset description: 'Update media asset settings. Note: This will not make any updates related to the media itself such as adding or updating the media files.' operationId: MediaAssets_UpdateMediaAsset parameters: - name: mediaAssetId in: path required: true schema: type: string x-position: 1 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateMediaAssetModel' required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfDownloadMediaAssetModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/media/assets/all/{type}: delete: tags: - MediaAssets summary: Delete All Media Assets description: Deletes all media assets of a specified type from storage. operationId: MediaAssets_DeleteMediaAssets2 parameters: - name: type in: path required: true schema: $ref: '#/components/schemas/MediaAssetType' x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfDeleteMediaAssetsResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v2/record_files/list: get: tags: - Beta summary: List Media Assets description: '**Please refer to [List Media Assets](#operation/MediaAssets_ListMediaAssets)** List media assets, excluding those that have been deleted. A media asset can be: * A `"FullRecording"` that is from the full duration of the stream * A `"Clip"` which is generated from a clip request' operationId: RecordFilesV2_ListMediaAssets parameters: - name: sortBy in: query schema: default: RecordedOn nullable: true oneOf: - $ref: '#/components/schemas/ListMediaAssetSortBy2' x-position: 1 - name: status in: query style: form explode: true schema: type: array nullable: true items: $ref: '#/components/schemas/FilterByMediaAssetStatus' x-position: 2 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 3 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 4 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 5 requestBody: x-name: filterModel content: application/json: schema: $ref: '#/components/schemas/ListMediaAssetFilterParameters' required: true x-position: 6 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListMediaAssetModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/v2/record_files/{mediaAssetId}: get: tags: - Beta summary: Read Media Asset description: '**Please refer to [Read Media Asset](#operation/MediaAssets_ReadMediaAsset)** Gets media asset specified by id. Includes temporary download link and a CDN served link if the media asset is complete.' operationId: RecordFilesV2_ReadMediaAsset parameters: - name: mediaAssetId in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfDownloadMediaAssetModel2' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/v2/record_files/delete: post: tags: - Beta summary: Delete Media Assets description: '**Please refer to [Delete Media Assets](#operation/MediaAssets_DeleteMediaAssets)** Deletes multiple media assets from storage. Only media assets with status Complete or Error can be deleted.' operationId: RecordFilesV2_DeleteMediaAssets requestBody: x-name: deleteModel content: application/json: schema: $ref: '#/components/schemas/RemoveMediaAssetsModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfDeleteMediaAssetsResponse2' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/v2/publish_token/{tokenId}: put: tags: - PublishTokenV2 summary: Update Token description: Update token stream information as well as updates token itself. operationId: PublishTokenV2_UpdateToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 requestBody: x-name: request content: application/json: schema: $ref: '#/components/schemas/UpdatePublishTokenV2' examples: simple: summary: simple value: label: new_label_name refreshToken: true complex: summary: complex value: label: new_regex_token_name subscribeRequiresAuth: true addTokenStreams: - streamName: newStream1 - streamName: special_regex_stream[0-9]+ isRegex: true removeTokenStreams: - container1/.+ required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponsePublishTokenV2' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: true lowLatencyRtmp: false integrationId: None displaySrtPassphrase: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 label: label_no_44 drm: false id: 59048 label: label_no_956 token: my-magic-token-35 addedOn: '2024-12-11T05:10:11Z' isActive: true streams: - streamName: stream1 isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: phx-1 allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 regex: summary: regex value: status: success data: allowedCountries: [] deniedCountries: [] subscribeRequiresAuth: true record: false clip: false multisource: true enableThumbnails: true lowLatencyRtmp: false integrationId: None displaySrtPassphrase: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 label: label_no_340 drm: false id: 68642 label: label_no_573 token: my-magic-token-30 addedOn: '2024-12-11T05:10:11Z' isActive: true streams: - streamName: stream1 isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: phx-1 allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: token: No properties specified to update. default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/v2/publish_token/100 \\\n -X PUT -d '{\"label\": \"new_label_name\", \"refreshToken\"\ : true}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/v2/publish_token/100\";\n\ \nvar data = new { label = \"new_label_name\", refreshToken = true };\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n\ \ Encoding.UTF8,\n \"application/json\");\nvar response = await client.PutAsync(url, httpContent);\nvar responseContent\ \ = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/v2/publish_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ PUT\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\\\"label\\\": \\\"new_label_name\\\", \\\"refreshToken\\\": true}\");\nwr.close();\n\nInputStreamReader sr = new\ \ InputStreamReader(conn.getInputStream());\nBufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer\ \ response = new StringBuffer();\nwhile ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\n\ System.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/v2/publish_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'PUT';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\"label\": \"new_label_name\"\ , \"refreshToken\": true};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/v2/publish_token/100';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret',\n 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\n\ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = array(\"\ label\" => \"new_label_name\", \"refreshToken\" => TRUE );\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');\ncurl_setopt($ch,\ \ CURLOPT_POSTFIELDS, json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/v2/publish_token/100'\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'PUT'\ndata = {\"label\": \"new_label_name\", \"refreshToken\": True}\nreq.data\ \ = json.dumps(data).encode('utf8')\nwith urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/v2/publish_token/100')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\"label\": \"new_label_name\", \"refreshToken\": true}\nres = http.put(uri,\ \ data.to_json, headers)\nputs res.body" /api/v2/subscribe_token/{tokenId}: put: tags: - SubscribeTokenV2 summary: Update Token description: Update token stream information as well as updates token itself. operationId: SubscribeTokenV2_UpdateToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateSubscribeTokenV2' examples: simple: summary: simple value: label: new_label_name refreshToken: true complex: summary: complex value: label: new_regex_token_name addTokenStreams: - streamName: newStream1 - streamName: special_regex_stream[0-9]+ isRegex: true removeTokenStreams: - container1/.+ required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseSubscribeTokenV2' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] id: 467 label: label_no_367 token: my-magic-token-80 addedOn: '2024-12-11T04:05:35Z' isActive: true streams: - streamName: stream1 isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: phx-1 allowedCountries: [] deniedCountries: [] regex: summary: regex value: status: success data: allowedCountries: [] deniedCountries: [] id: 67899 label: label_no_240 token: my-magic-token-84 addedOn: '2024-12-11T04:05:35Z' isActive: true streams: - streamName: stream1 isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: phx-1 allowedCountries: [] deniedCountries: [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: token: No properties specified to update. default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/v2/subscribe_token/100 \\\n -X PUT -d '{\"label\": \"new_label_name\", \"refreshToken\"\ : true}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/v2/subscribe_token/100\"\ ;\n\nvar data = new { label = \"new_label_name\", refreshToken = true };\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n\ \ Encoding.UTF8,\n \"application/json\");\nvar response = await client.PutAsync(url, httpContent);\nvar responseContent\ \ = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/v2/subscribe_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ PUT\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\\\"label\\\": \\\"new_label_name\\\", \\\"refreshToken\\\": true}\");\nwr.close();\n\nInputStreamReader sr = new\ \ InputStreamReader(conn.getInputStream());\nBufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer\ \ response = new StringBuffer();\nwhile ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\n\ System.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/v2/subscribe_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'PUT';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\"label\": \"new_label_name\"\ , \"refreshToken\": true};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/v2/subscribe_token/100';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret',\n 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\n\ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = array(\"\ label\" => \"new_label_name\", \"refreshToken\" => TRUE );\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');\ncurl_setopt($ch,\ \ CURLOPT_POSTFIELDS, json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/v2/subscribe_token/100'\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'PUT'\ndata = {\"label\": \"new_label_name\", \"refreshToken\": True}\nreq.data\ \ = json.dumps(data).encode('utf8')\nwith urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/v2/subscribe_token/100')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\"label\": \"new_label_name\", \"refreshToken\": true}\nres = http.put(uri,\ \ data.to_json, headers)\nputs res.body" /api/analytics/account/total: get: tags: - Analytics summary: Account Total description: Get total usage on account over a date range. operationId: Analytics_AccountTotal parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountBandwidthTotalAnalyticModel' examples: simple: summary: simple value: status: success data: bytesOut: 250000 bytesIn: 500000000 standardStream: bytesOut: 100000 bytesIn: 500000000 restream: secondsUsed: 10 bytesOut: 50000 bytesIn: 0 geoCascade: bytesOut: 100000 bytesIn: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/account/total \\\n -G -d \"startDate=2020-01-01&stopDate=2020-04-01\"" /api/analytics/account/series: get: tags: - Analytics summary: Account Series description: 'Get usage as a time series on account over a date range. Response keys are ISO 8601 dates from requested resolution.' operationId: Analytics_AccountSeries parameters: - name: resolution in: query required: true schema: $ref: '#/components/schemas/AnalyticsResolution' x-position: 1 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 2 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountBandwidthSeriesAnalyticModel' examples: month: summary: month value: status: success data: bandwidth: '2020-01-01T00:00:00Z': bytesOut: 20150 bytesIn: 5000 '2020-02-01T00:00:00Z': bytesOut: 400 bytesIn: 50 standardStream: '2020-01-01T00:00:00Z': bytesOut: 10000 bytesIn: 5000 '2020-02-01T00:00:00Z': bytesOut: 100 bytesIn: 50 restream: '2020-01-01T00:00:00Z': secondsUsed: 10 bytesOut: 150 bytesIn: 0 '2020-02-01T00:00:00Z': secondsUsed: 12 bytesOut: 200 bytesIn: 0 geoCascade: '2020-01-01T00:00:00Z': bytesOut: 10000 bytesIn: 0 '2020-02-01T00:00:00Z': bytesOut: 100 bytesIn: 0 day: summary: day value: status: success data: bandwidth: '2020-03-01T00:00:00Z': bytesOut: 20150 bytesIn: 5000 '2020-03-02T00:00:00Z': bytesOut: 400 bytesIn: 50 standardStream: '2020-03-01T00:00:00Z': bytesOut: 10000 bytesIn: 5000 '2020-03-02T00:00:00Z': bytesOut: 100 bytesIn: 50 restream: '2020-03-01T00:00:00Z': secondsUsed: 10 bytesOut: 150 bytesIn: 0 '2020-03-02T00:00:00Z': secondsUsed: 12 bytesOut: 200 bytesIn: 0 geoCascade: '2020-03-01T00:00:00Z': bytesOut: 10000 bytesIn: 0 '2020-03-02T00:00:00Z': bytesOut: 100 bytesIn: 0 hour: summary: hour value: status: success data: bandwidth: '2020-03-01T00:00:00Z': bytesOut: 20150 bytesIn: 5000 '2020-03-01T01:00:00Z': bytesOut: 400 bytesIn: 50 standardStream: '2020-03-01T00:00:00Z': bytesOut: 10000 bytesIn: 5000 '2020-03-01T01:00:00Z': bytesOut: 100 bytesIn: 50 restream: '2020-03-01T00:00:00Z': secondsUsed: 10 bytesOut: 150 bytesIn: 0 '2020-03-01T01:00:00Z': secondsUsed: 12 bytesOut: 200 bytesIn: 0 geoCascade: '2020-03-01T00:00:00Z': bytesOut: 10000 bytesIn: 0 '2020-03-01T01:00:00Z': bytesOut: 100 bytesIn: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/account/series \\\n -G -d \"startDate=2020-01-01&stopDate=2020-04-01&resolution=Month\"" /api/analytics/account/geo_total: get: tags: - Analytics summary: Account Geo Total description: 'Get bandwidth and duration per country code on account over a date range. Response keys are ISO 3166-1 alpha-2 country codes.' operationId: Analytics_AccountGeoTotal parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoTotalAnalyticModel' examples: simple: summary: simple value: status: success data: geo: US: bytesOut: 100000000 bytesIn: 50000000 duration: 135 MX: bytesOut: 50000000 bytesIn: 2500000 duration: 112 CA: bytesOut: 200000000 bytesIn: 10000000 duration: 50 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/account/geo_total \\\n -G -d \"startDate=2020-01-01&stopDate=2020-04-01\"" /api/analytics/account/geo_series: get: tags: - Analytics summary: Account Geo Series description: 'Get bandwidth, duration, publishes, and views as a time series per country code on account over a date range. Response keys are ISO 8601 dates from requested resolution, followed by keys for ISO 3166-1 alpha-2 country codes.' operationId: Analytics_AccountGeoSeries parameters: - name: resolution in: query required: true schema: $ref: '#/components/schemas/StreamsAnalyticsResolution' x-position: 1 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 2 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoSeriesAnalyticModel' examples: simple: summary: simple value: status: success data: geo: '2020-03-01T00:00:00Z': US: bytesOut: 500000000 bytesIn: 40000000 duration: 135 publishes: 1 views: 5 MX: bytesOut: 400000000 bytesIn: 0 duration: 185 publishes: 0 views: 4 CA: bytesOut: 100000000 bytesIn: 0 duration: 59 publishes: 0 views: 1 '2020-03-01T01:00:00Z': US: bytesOut: 200000000 bytesIn: 30000000 duration: 135 publishes: 1 views: 2 MX: bytesOut: 300000000 bytesIn: 0 duration: 135 publishes: 0 views: 3 CA: bytesOut: 100000000 bytesIn: 0 duration: 39 publishes: 0 views: 1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/account/geo_series \\\n -G -d \"startDate=2020-01-01&stopDate=2020-04-01&resolution=Hour\"" /api/analytics/streams/total: get: tags: - Analytics summary: Streams Total description: 'Get total usage on specified streamnames over a date range. Response keys are requested streamnames.' operationId: Analytics_StreamsTotal parameters: - name: streamNames in: query style: form explode: true required: true description: Each string must be <= 128 characters schema: type: array maxItems: 10 items: type: string x-position: 1 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 2 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStreamsBandwidthTotalAnalyticModel' examples: single: summary: single value: status: success data: stream1: bytesOut: 250000 bytesIn: 500000000 standardStream: bytesOut: 100000 bytesIn: 500000000 restream: secondsUsed: 50 bytesOut: 500000 bytesIn: 0 geoCascade: bytesOut: 100000 bytesIn: 0 multi: summary: multi value: status: success data: mystream: bytesOut: 250000 bytesIn: 500000000 standardStream: bytesOut: 100000 bytesIn: 500000000 restream: secondsUsed: 50 bytesOut: 500000 bytesIn: 0 geoCascade: bytesOut: 100000 bytesIn: 0 otherstream: bytesOut: 350000 bytesIn: 600000000 standardStream: bytesOut: 200000 bytesIn: 600000000 restream: secondsUsed: 50 bytesOut: 500000 bytesIn: 0 geoCascade: bytesOut: 100000 bytesIn: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/streams/total \\\n -G -d \"startDate=2020-01-01&stopDate=2020-04-01&streamNames=mystream&streamNames=otherstream\"" /api/analytics/streams/series: get: tags: - Analytics summary: Streams Series description: 'Get usage as a time series on specified streamnames over a date range. Response keys are requested streamnames, followed by keys for ISO 8601 dates from requested resolution.' operationId: Analytics_StreamsSeries parameters: - name: resolution in: query required: true schema: $ref: '#/components/schemas/StreamsAnalyticsResolution' x-position: 1 - name: streamNames in: query style: form explode: true required: true description: Each string must be <= 128 characters schema: type: array maxItems: 10 items: type: string x-position: 2 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 3 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 4 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStreamsBandwidthSeriesAnalyticModel' examples: day: summary: day value: status: success data: mystream: bandwidth: '2020-03-01T00:00:00Z': bytesOut: 300 bytesIn: 50 '2020-03-02T00:00:00Z': bytesOut: 1300 bytesIn: 300 standardStream: '2020-03-01T00:00:00Z': bytesOut: 100 bytesIn: 50 '2020-03-02T00:00:00Z': bytesOut: 400 bytesIn: 300 restream: '2020-03-01T00:00:00Z': secondsUsed: 8 bytesOut: 100 bytesIn: 0 '2020-03-02T00:00:00Z': secondsUsed: 30 bytesOut: 500 bytesIn: 0 geoCascade: '2020-03-01T00:00:00Z': bytesOut: 100 bytesIn: 0 '2020-03-02T00:00:00Z': bytesOut: 400 bytesIn: 0 hour: summary: hour value: status: success data: mystream: bandwidth: '2020-03-01T00:00:00Z': bytesOut: 300 bytesIn: 50 '2020-03-01T01:00:00Z': bytesOut: 1300 bytesIn: 300 standardStream: '2020-03-01T00:00:00Z': bytesOut: 100 bytesIn: 50 '2020-03-01T01:00:00Z': bytesOut: 400 bytesIn: 300 restream: '2020-03-01T00:00:00Z': secondsUsed: 8 bytesOut: 100 bytesIn: 0 '2020-03-01T01:00:00Z': secondsUsed: 30 bytesOut: 500 bytesIn: 0 geoCascade: '2020-03-01T00:00:00Z': bytesOut: 100 bytesIn: 0 '2020-03-01T01:00:00Z': bytesOut: 400 bytesIn: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/streams/series \\\n -G -d \"startDate=2020-03-01T00:00:00Z&stopDate=2020-03-01T05:00:00Z&streamNames=mystream&resolution=Hour\"" /api/analytics/streams/geo_total: get: tags: - Analytics summary: Streams Geo Total description: 'Get bandwidth and duration per country code on specified streamnames over a date range. Response keys are requested streamnames, followed by keys for ISO 3166-1 alpha-2 country codes.' operationId: Analytics_StreamsGeoTotal parameters: - name: streamNames in: query style: form explode: true required: true description: Each string must be <= 128 characters schema: type: array maxItems: 10 items: type: string x-position: 1 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 2 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStreamsGeoTotalAnalyticModel' examples: simple: summary: simple value: status: success data: geo: mystream: US: bytesOut: 500000000 bytesIn: 300000000 duration: 188 MX: bytesOut: 100000000 bytesIn: 0 duration: 66 CA: bytesOut: 300000000 bytesIn: 100000000 duration: 96 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/streams/geo_total \\\n -G -d \"startDate=2020-01-01&stopDate=2020-04-01&streamNames=mystream\"" /api/analytics/streams/geo_series: get: tags: - Analytics summary: Streams Geo Series description: 'Get bandwidth, duration, publishes, and views as a time series per country code on specified streamnames over a date range. Response keys are requested streamnames, followed by keys for ISO 8601 dates from requested resolution, followed by keys for ISO 3166-1 alpha-2 country codes.' operationId: Analytics_StreamsGeoSeries parameters: - name: resolution in: query required: true schema: $ref: '#/components/schemas/StreamsAnalyticsResolution' x-position: 1 - name: streamNames in: query style: form explode: true required: true description: Each string must be <= 128 characters schema: type: array maxItems: 10 items: type: string x-position: 2 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 3 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 4 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStreamsGeoSeriesAnalyticModel' examples: simple: summary: simple value: status: success data: geo: mystream: '2020-03-01T00:00:00Z': US: bytesOut: 500000000 bytesIn: 60000000 duration: 135 publishes: 1 views: 5 MX: bytesOut: 40000000 bytesIn: 0 duration: 55 publishes: 0 views: 1 CA: bytesOut: 75000000 bytesIn: 0 duration: 62 publishes: 0 views: 2 '2020-03-01T01:00:00Z': US: bytesOut: 500000000 bytesIn: 60000000 duration: 135 publishes: 1 views: 5 MX: bytesOut: 40000000 bytesIn: 0 duration: 55 publishes: 0 views: 1 CA: bytesOut: 75000000 bytesIn: 0 duration: 62 publishes: 0 views: 2 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/analytics/streams/geo_series \\\n -G -d \"startDate=2020-01-01&stopDate=2020-04-01&resolution=Hour&streamNames=mystream\"" /api/analytics/account/geo: get: tags: - Analytics summary: Account Geo description: 'Get bandwidth and views per country code on account over a date range. Response keys are ISO 3166-1 alpha-2 country codes.' operationId: Analytics_AccountGeo parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoCountryAnalyticModel' examples: simple: summary: simple value: status: success data: geo: US: bytes: 100000000 views: 30 MX: bytes: 50000000 views: 15 CA: bytes: 200000000 views: 60 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/analytics/streams/geo: get: tags: - Analytics summary: Streams Geo description: 'Get bandwidth and views per country code on specified streamnames over a date range. Response keys are requested streamnames, followed by keys for ISO 3166-1 alpha-2 country codes.' operationId: Analytics_StreamsGeo parameters: - name: streamNames in: query style: form explode: true required: true description: Each string must be <= 128 characters schema: type: array maxItems: 10 items: type: string x-position: 1 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 2 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStreamsGeoCountryAnalyticModel' examples: simple: summary: simple value: status: success data: mystream: geo: US: bytes: 100000000 views: 30 MX: bytes: 50000000 views: 15 CA: bytes: 200000000 views: 60 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/analytics/tracking/streams/total: get: tags: - Analytics summary: Total bandwidth per TrackingID per stream description: Get total bandwidth for each TrackingID associated with specified streamNames over a date range. Response keys are requested streamnames. operationId: Analytics_GetTrackingTotalForStreams parameters: - name: streamNames in: query style: form explode: true required: true description: Each string must be <= 128 characters schema: type: array maxItems: 10 items: type: string x-position: 1 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 2 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessTrackingTotalForStreams' examples: simple: summary: simple value: status: success data: lday0h9i: - bytesOut: 3836187144 bytesIn: 82409106 - trackingId: customTrackingId bytesOut: 0 bytesIn: 323288624 - trackingId: test-e2e bytesOut: 0 bytesIn: 453184689 - trackingId: trackingId1 bytesOut: 0 bytesIn: 193646639 - trackingId: trackingId2 bytesOut: 0 bytesIn: 25702807 teststream2: [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/tracking/streams/series: get: tags: - Analytics summary: Series bandwidth per TrackingID per stream description: Get bandwidth used as a time series on specified streamnames over a date range. Response keys are requested streamnames, followed by keys for ISO 8601 dates from requested operationId: Analytics_GetTrackingSeriesForStreams parameters: - name: resolution in: query required: true schema: $ref: '#/components/schemas/StreamsAnalyticsResolution' x-position: 1 - name: streamNames in: query style: form explode: true required: true description: Each string must be <= 128 characters schema: type: array maxItems: 10 items: type: string x-position: 2 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 3 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 4 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessTrackingSeriesForStreams' examples: simple: summary: simple value: status: success data: lday0h9i: '2023-01-26T00:00:00Z': - trackingId: '' bytesOut: 82409106 bytesIn: 3836187144 - trackingId: customTrackingId bytesOut: 323288624 bytesIn: 0 - trackingId: test-e2e bytesOut: 453184689 bytesIn: 0 - trackingId: trackingId1 bytesOut: 193646639 bytesIn: 0 - trackingId: trackingId2 bytesOut: 25702807 bytesIn: 0 '2023-01-27T00:00:00Z': [] '2023-01-28T00:00:00Z': [] '2023-01-29T00:00:00Z': [] '2023-01-30T00:00:00Z': [] '2023-01-31T00:00:00Z': [] '2023-02-01T00:00:00Z': [] '2023-02-02T00:00:00Z': [] '2023-02-03T00:00:00Z': [] '2023-02-04T00:00:00Z': [] '2023-02-05T00:00:00Z': [] '2023-02-06T00:00:00Z': [] '2023-02-07T00:00:00Z': [] teststream2: '2023-01-26T00:00:00Z': [] '2023-01-27T00:00:00Z': [] '2023-01-28T00:00:00Z': [] '2023-01-29T00:00:00Z': [] '2023-01-30T00:00:00Z': [] '2023-01-31T00:00:00Z': [] '2023-02-01T00:00:00Z': [] '2023-02-02T00:00:00Z': [] '2023-02-03T00:00:00Z': [] '2023-02-04T00:00:00Z': [] '2023-02-05T00:00:00Z': [] '2023-02-06T00:00:00Z': [] '2023-02-07T00:00:00Z': [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/tracking/total: get: tags: - Analytics summary: Total bandwidth for streams specified by TrackingID description: Get total bandwidth for TrackingIDs specified on a stream-by-stream basis. Response keys are requested TrackingIDs. operationId: Analytics_GetTotalBandwidthForTrackingId parameters: - name: trackingIds in: query style: form explode: true required: true schema: type: array maxItems: 10 items: type: string x-position: 1 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 2 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessTotalBandwidthPerStreamForTrackingIds' examples: simple: summary: simple value: status: success data: test-e2e: - streamName: lday0h9i bytesOut: 453184689 bytesIn: 0 trackingId1: - streamName: lday0h9i bytesOut: 193646639 bytesIn: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/tracking/series: get: tags: - Analytics summary: Series bandwidth for streams specified by TrackingID description: Get bandwidth information used as a time series on specified TrackingIDs over a date range on a stream-by-stream basis. Response keys are requested TrackingIDs, followed by keys for ISO 8601 dates from requested operationId: Analytics_GetSeriesBandwidthForTrackingId parameters: - name: resolution in: query required: true schema: $ref: '#/components/schemas/StreamsAnalyticsResolution' x-position: 1 - name: trackingIds in: query style: form explode: true required: true schema: type: array maxItems: 10 items: type: string x-position: 2 - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 3 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 4 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessSeriesBandwidthPerStreamForTrackingIds' examples: simple: summary: simple value: status: success data: trackingId1: '2023-01-26T00:00:00Z': - streamName: lday0h9i bytesOut: 453184689 bytesIn: 0 '2023-01-27T00:00:00Z': [] '2023-01-28T00:00:00Z': [] '2023-01-29T00:00:00Z': [] '2023-01-30T00:00:00Z': [] '2023-01-31T00:00:00Z': [] '2023-02-01T00:00:00Z': [] '2023-02-02T00:00:00Z': [] '2023-02-03T00:00:00Z': [] '2023-02-04T00:00:00Z': [] '2023-02-05T00:00:00Z': [] '2023-02-06T00:00:00Z': [] '2023-02-07T00:00:00Z': [] trackingId2: '2023-01-26T00:00:00Z': - streamName: lday0h9i bytesOut: 193646639 bytesIn: 0 '2023-01-27T00:00:00Z': [] '2023-01-28T00:00:00Z': [] '2023-01-29T00:00:00Z': [] '2023-01-30T00:00:00Z': [] '2023-01-31T00:00:00Z': [] '2023-02-01T00:00:00Z': [] '2023-02-02T00:00:00Z': [] '2023-02-03T00:00:00Z': [] '2023-02-04T00:00:00Z': [] '2023-02-05T00:00:00Z': [] '2023-02-06T00:00:00Z': [] '2023-02-07T00:00:00Z': [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/transcoder/total: get: tags: - Analytics summary: Get Total Transcoder Minutes description: "Lists total transcoder uptime in minutes calculated between two date ranges for an account.\n\n Note:\ \ Transcoding billing is calculated once per day for the previous day, so you may not see an entry for today yet." operationId: Analytics_GetTotalTranscoderMinutesForAccount parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessTranscoderTotalMinutes' examples: simple: summary: simple value: status: success data: streamAccountId: PbyMpY startDate: '2024-03-03T00:00:00Z' endDate: '2024-03-04T00:00:00Z' transcoderMinutesUsed: 250000000 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/transcoder/series: get: tags: - Analytics summary: Get Transcoder Minutes Series description: "List Transcoder uptime in minutes calculated between two date ranges for an account. The data will show\ \ a list of dates each with corresponding transcoder minutes for that specific day.\n\n Note: the current day's data\ \ may not be available yet." operationId: Analytics_GetSeriesTranscoderMinutesForAccount parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessTranscoderSeriesMinutes' examples: simple: summary: simple value: status: success data: streamAccountId: PbyMpY transcoder: '2024-03-01T00:00:00Z': - transcoderId: 100000000 minutesUsed: 50000000 '2024-03-02T00:00:00Z': - transcoderId: 100000000 minutesUsed: 50000000 '2024-03-03T00:00:00Z': - transcoderId: 100000000 minutesUsed: 50000000 20240-03-04T00:00:00Z: - transcoderId: 100000000 minutesUsed: 50000000 '2024-03-05T00:00:00Z': - transcoderId: 100000000 minutesUsed: 50000000 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/clip/series: get: tags: - Analytics summary: Get Clip Minutes Series description: 'Lists daily clip usage in minutes between two dates for an account. The data is a map of dates to clip minutes for that day. This series is sparse: days with no clip activity are omitted from the response.' operationId: Analytics_GetClipSeries parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessClipSeriesResponse' examples: simple: summary: simple value: status: success data: series: '2024-03-01': 12 '2024-03-03': 47 '2024-03-04': 5 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/storage/series: get: tags: - Analytics summary: Get Storage GB-hours Series description: 'Lists daily stored-media usage in GB-hours between two dates for an account. The data is a map of dates to GB-hours (byte-hours / 1,000,000,000) for that day. This series is sparse: days with no storage data are omitted.' operationId: Analytics_GetStorageSeries parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStorageSeriesResponse' examples: simple: summary: simple value: status: success data: series: '2024-03-01': 1024.5 '2024-03-02': 1050.25 '2024-03-03': 1100.0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/media/storage/usage: get: tags: - Analytics summary: Usage description: Returns the total number of bytes used to store all media assets. The total is inclusive of all contributing media types including recordings, clips, and timelines. operationId: Analytics_MediaAssetUsage responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaAssetUsage' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/media/storage/usage/billing: get: tags: - Analytics summary: Usage Billable description: Returns the number of gigabyte hours of storage used for a given date range. The total is inclusive of all contributing media types including recordings, clips, and timelines. operationId: Analytics_MediaAssetUsageBillable parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaAssetBillableUsage' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/drm/series: get: tags: - Analytics summary: DRM Daily Usage description: Get DRM daily license requests and their status over a date range. operationId: Analytics_GetDrmDailyUsage parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DrmDetailedUsageResponse' examples: simple: summary: simple value: status: success data: license: totals: ok: 1021 fail: 4 denied: 20 details: '2024-07-31T00:00:00Z': playReady: ok: 4 fail: 0 denied: 0 widevine: ok: 1005 fail: 0 denied: 20 fairPlay: ok: 1 fail: 0 denied: 0 '2024-07-27T00:00:00Z': playReady: ok: 0 fail: 0 denied: 0 widevine: ok: 11 fail: 4 denied: 0 fairPlay: ok: 0 fail: 0 denied: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/analytics/drm/total: get: tags: - Analytics summary: DRM Total Usage description: Get DRM total license requests and their status over a date range. operationId: Analytics_GetDrmTotalUsage parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/DrmTotalUsageResponse' examples: simple: summary: simple value: status: success data: license: totals: ok: 1017 fail: 0 denied: 0 details: playReady: ok: 0 fail: 0 denied: 0 widevine: ok: 1016 fail: 0 denied: 0 fairPlay: ok: 1 fail: 0 denied: 0 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/encoders/profiles: get: tags: - EncoderProfile summary: Get Account Encoder Profiles description: Get encoder profiles associated with an account operationId: EncoderProfile_GetAccountEncoderProfiles responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/EncoderProfileModel' security: - API_Secret: [] /api/v3/media/distributions: post: tags: - MediaDistributions summary: Create Media Distribution description: Creates a new media distribution for viewing HLS media assets. operationId: MediaDistributions_CreateMediaDistribution requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/CreateMediaDistributionModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaDistributionResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] get: tags: - MediaDistributions summary: List Media Distributions description: List all media distributions with specific sorting and pagination. operationId: MediaDistributions_ListMediaDistribution parameters: - name: sort in: query schema: default: createdAt nullable: true oneOf: - $ref: '#/components/schemas/ListMediaDistributionsSortBy' x-position: 1 - name: name in: query description: Optional. Case insensitive. schema: type: string nullable: true x-position: 2 - name: default in: query schema: type: boolean nullable: true x-position: 3 - name: cursor in: query description: Used for pagination. Do not include on the first request. For subsequent requests use the pagination.cursor field from the previous response. You must use the same sort option when requesting each page schema: type: string default: '' nullable: true x-position: 4 - name: limit in: query description: The maximum number of objects returned schema: type: integer default: 25 maximum: 100.0 minimum: 1.0 x-position: 5 - name: desc in: query schema: type: boolean default: false x-position: 6 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfPaginationResponseOfMediaDistributionResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] /api/v3/media/distributions/{id}: get: tags: - MediaDistributions summary: Read Media Distribution description: Gets media distribution specified by mediaDistributionId. operationId: MediaDistributions_ReadMediaDistribution parameters: - name: id in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaDistributionResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] patch: tags: - MediaDistributions summary: Update Media Distribution description: Update media distribution settings. operationId: MediaDistributions_UpdateMediaDistribution parameters: - name: id in: path required: true schema: type: string x-position: 1 requestBody: x-name: request content: application/json: schema: $ref: '#/components/schemas/UpdateMediaDistribution' required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfMediaDistributionResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] delete: tags: - MediaDistributions summary: Delete Media Distribution description: Deletes media distribution specified by a mediaDistributionId. operationId: MediaDistributions_DeleteMediaDistribution parameters: - name: id in: path required: true schema: type: string x-position: 1 responses: '204': description: Empty Response default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/v3/media/distributions/{id}/security/keys: get: tags: - MediaDistributions summary: Get all security keys of a media distribution by ID description: Get all security keys of a media distribution by ID operationId: MediaDistributions_GetSecurityKeys parameters: - name: id in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfListOfSecurityKeyResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] post: tags: - MediaDistributions summary: Create a new security key for a media distribution description: Create a new security key for a media distribution. Each media distribution may have up to 2 security keys. operationId: MediaDistributions_CreateSecurityKey parameters: - name: id in: path required: true schema: type: string x-position: 1 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/SecurityKeyRequestModel' required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfSecurityKeyResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] /api/v3/media/distributions/{id}/security/keys/{keyId}: delete: tags: - MediaDistributions summary: Delete a media distribution security key description: Delete a media distribution security key operationId: MediaDistributions_DeleteSecurityKey parameters: - name: id in: path required: true schema: type: string x-position: 1 - name: keyId in: path required: true schema: type: string x-position: 2 responses: '204': description: Empty Response '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] /api/monitoring/streams: get: tags: - Monitoring summary: List Streams description: "List all currently active streams and streams that ended within the last hour, with specific sorting and\ \ pagination. If the transcoderId is provided, all streams associated with the current or last active instance will\ \ be returned, regardless of the stream end time. If response array is empty, you have reached the end of the list\ \ ordering. \nNote: This endpoint requires the LiveMonitoring feature. \nFeed-level stats (frameRate, packetLoss,\ \ trackDetails, feedStats) are only available from [Stream Details](#tag/Monitoring/operation/Monitoring_GetStream)\ \ (the single-stream endpoint) and are not returned here." operationId: Monitoring_ListRecentStreams parameters: - name: page in: query schema: type: integer format: int32 default: 1 maximum: 2147483647.0 minimum: 1.0 x-position: 1 - name: itemsOnPage in: query schema: type: integer format: int32 default: 10 maximum: 100.0 minimum: 1.0 x-position: 2 - name: sortBy in: query schema: default: Live oneOf: - $ref: '#/components/schemas/ListSortBy' x-position: 3 - name: isDescending in: query schema: type: boolean default: true x-position: 4 - name: isActive in: query schema: type: boolean nullable: true x-position: 5 - name: cluster x-originalName: clusters in: query style: form explode: true schema: type: array nullable: true items: type: string x-position: 6 - name: isSecure in: query schema: type: boolean nullable: true x-position: 7 - name: isMultisource in: query schema: type: boolean nullable: true x-position: 8 - name: hasRedundant in: query schema: type: boolean nullable: true x-position: 9 - name: searchSubstring in: query schema: type: string nullable: true x-position: 10 - name: isRecordingAllowed in: query schema: type: boolean nullable: true x-position: 11 - name: isRestreaming in: query schema: type: boolean nullable: true x-position: 12 - name: transcoderId in: query schema: type: string nullable: true x-position: 13 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListStreams' examples: list: summary: list value: status: success data: pagination: totalItems: 2 totalPages: 1 itemsOnPage: 2 data: - streamId: Abcde0/restream_feed_1 streamName: restream_feed_1 clusterId: phx-1 clusters: - phx-1 secureStream: false isRecordingAllowed: false multisource: true live: true startTime: '2024-06-25T00:42:02.466Z' viewerCount: 0 hasRedundant: false restreaming: false feeds: - streamId: Abcde0/restream_feed_1 feedId: 9d614662-153f-4904-9a86-859e198d8755 clusterId: phx-1 serverId: phx-1-dev active: true startTime: '2024-06-25T00:42:02.466Z' isRecordingAllowed: false isRedundant: false tokenId: 1143052 client: country: SG city: Singapore continent: AS coordinates: - 1.5078 - 103.9918 - 20 ip: 100.200.100.200 - streamId: Abcde0/main_stream streamName: main_stream clusterId: sgp-1 clusters: - sgp-1 secureStream: false isRecordingAllowed: false multisource: true live: true startTime: '2024-06-25T00:42:01.222Z' viewerCount: 0 hasRedundant: false restreaming: true feeds: - streamId: Abcde0/main_stream feedId: 9b8dcce4-cbd9-45fe-a58c-8775f1c6d0d2 clusterId: sgp-1 serverId: sgp-1-dev active: true startTime: '2024-06-25T00:42:01.222Z' isRecordingAllowed: false isRedundant: false tokenId: 1129104 client: country: AU city: Melbourne continent: OC coordinates: - -39.8889 - 154.9221 - 50 sub: - VIC ip: 127.100.100.100 restreams: - label: Webcam 1 url: rtmp://test.dolby.io/v2/pub active: true started: '2024-06-25T00:42:01.218Z' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: errors: page: page must be greater than 0 itemsOnPage: ItemsOnPage must be greater than 0 and less 20 default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/monitoring/streams/{streamName}: get: tags: - Monitoring summary: Stream Details description: "Get stream details by stream name. \nNote: This endpoint requires the LiveMonitoring feature." operationId: Monitoring_GetStream parameters: - name: streamName in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStreamDetails' examples: details: summary: details value: status: success data: streamId: Abcde0/main_stream streamName: main_stream clusterId: sgp-1 clusters: - sgp-1 secureStream: false isRecordingAllowed: false multisource: false live: false startTime: '2024-06-25T00:42:01.222Z' endTime: '2024-06-25T00:51:33.985Z' viewerCount: 0 hasRedundant: false restreaming: false feeds: - streamId: Abcde0/main_stream feedId: 9b8dcce4-cbd9-45fe-a58c-8775f1c6d0d2 clusterId: sgp-1 serverId: sgp-1-dev active: false startTime: '2024-06-25T00:42:01.222Z' endTime: '2024-06-25T00:51:33.985Z' isRecordingAllowed: false packetLoss: 0 isRedundant: false tokenId: 1129104 client: country: AU city: Melbourne continent: OC coordinates: - -30.9969 - 154.5581 - 50 sub: - VIC ip: 100.145.200.168 restreams: - label: Webcam 1 url: rtmp://test.dolby.io:1800/v2/pub active: false started: '2024-06-25T00:42:01.218Z' ended: '2024-06-25T00:51:33.985Z' feedStats: - timestamp: '2024-06-25T00:50:30Z' packetLoss: 0 trackDetails: [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: not found: summary: not found value: status: fail data: message: Stream name DoNotExist not found default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/monitoring/summary: get: tags: - Monitoring summary: List Stream Summary description: List a summary of all currently active streams and streams that ended within the last hour, with specific sorting and pagination. If the transcoderId is provided, all streams associated with the current or last active instance will be returned, regardless of the stream end time. If response array is empty, you have reached the end of the list ordering. This is a lite version of [List Streams](#tag/Monitoring/operation/Monitoring_ListRecentStreams) which does not include feed details. operationId: Monitoring_ListStreamSummary parameters: - name: page in: query schema: type: integer format: int32 default: 1 maximum: 2147483647.0 minimum: 1.0 x-position: 1 - name: itemsOnPage in: query schema: type: integer format: int32 default: 10 maximum: 100.0 minimum: 1.0 x-position: 2 - name: sortBy in: query schema: default: Live oneOf: - $ref: '#/components/schemas/ListSortBy' x-position: 3 - name: isDescending in: query schema: type: boolean default: true x-position: 4 - name: isActive in: query schema: type: boolean nullable: true x-position: 5 - name: cluster x-originalName: clusters in: query style: form explode: true schema: type: array nullable: true items: type: string x-position: 6 - name: isSecure in: query schema: type: boolean nullable: true x-position: 7 - name: isMultisource in: query schema: type: boolean nullable: true x-position: 8 - name: searchSubstring in: query schema: type: string nullable: true x-position: 9 - name: isRecordingAllowed in: query schema: type: boolean nullable: true x-position: 10 - name: transcoderId in: query schema: type: string nullable: true x-position: 11 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListStreamSummary' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] /api/monitoring/summary/{streamName}: get: tags: - Monitoring summary: Stream Summary description: Get stream summary by stream name. This is a lite version of [Stream Details](#tag/Monitoring/operation/Monitoring_GetStream) which does not include feed details. operationId: Monitoring_GetStreamSummary parameters: - name: streamName in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStreamSummary' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - API_Secret: [] /api/transcoders/{transcoderId}: get: tags: - Transcoder summary: Get Transcoder description: Returns the configuration of a Transcoder and any individual host instances for the given transcoderId. operationId: Transcoder_GetTranscoder parameters: - name: transcoderId in: path required: true description: The unique identifier for the transcoder. schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseTranscoderRecord' examples: simple: summary: simple value: status: success data: transcoderId: abcd-efgh name: simple_transcoder cluster: phx-1 dnsName: abcd-efgh-ijkl.transcoder.millicast.com profile: profileId: simple_profile name: simple profile description: simple profile height: 240 frameRate: 60 passThrough: true layers: - height: 240 fps: 24 codec: h264 bitrate: 350 intraPeriod: 24 createdOn: '2024-02-08T04:55:48.449Z' instance: id: mnop-qrst publicIp: 123.45.67.89 dnsName: abcd-efgh-ijkl.transcoder.millicast.com createdOn: '2024-02-08T04:55:48.449Z' status: Active status: Active publishUrls: rtmp: rtmp://abcd-efgh-ijkl.transcoder.millicast.com:1935/v2/pub rtmps: rtmps://abcd-efgh-ijkl.transcoder.millicast.com:443/v2/pub srt: srt://abcd-efgh-ijkl.transcoder.millicast.com:10000 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] put: tags: - Transcoder summary: Update Transcoder description: "Make changes to the configuration of an existing Transcoder. Changes should take effect without requiring\ \ a server restart except for DNS prefix and cluster, which can only be updated when the transcoder is in a shutdown\ \ state.\n\n Changing the profile will require either a profile id or the height, frameRate, and passThrough. If you\ \ specify both, only the profile will be used. See the 'List Transcoder Profiles' endpoint to find available Transcoder\ \ profiles." operationId: Transcoder_UpdateTranscoder parameters: - name: transcoderId in: path required: true schema: type: string x-position: 2 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateTranscoder' examples: simple: summary: simple value: name: simple_transcoder dnsPrefix: abcd-efgh cluster: phx-1 height: 240 frameRate: 60 passThrough: true required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseTranscoderRecord' examples: simple: summary: simple value: status: success data: transcoderId: abcd-efgh name: simple_transcoder cluster: phx-1 dnsName: abcd-efgh-ijkl.transcoder.millicast.com profile: profileId: simple_profile name: simple profile description: simple profile height: 240 frameRate: 60 passThrough: true layers: - height: 240 fps: 24 codec: h264 bitrate: 350 intraPeriod: 24 createdOn: '2024-02-08T04:55:48.449Z' instance: id: mnop-qrst publicIp: 123.45.67.89 dnsName: abcd-efgh-ijkl.transcoder.millicast.com createdOn: '2024-02-08T04:55:48.449Z' status: Active status: Active publishUrls: rtmp: rtmp://abcd-efgh-ijkl.transcoder.millicast.com:1935/v2/pub rtmps: rtmps://abcd-efgh-ijkl.transcoder.millicast.com:443/v2/pub srt: srt://abcd-efgh-ijkl.transcoder.millicast.com:10000 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] delete: tags: - Transcoder summary: Delete Transcoder description: Delete the configuration of a Transcoder and any instances for it for the given transcoderId. If the Transcoder is still running it will be shutdown immediately. operationId: Transcoder_DeleteTranscoder parameters: - name: transcoderId in: path required: true description: The unique identifier for the transcoder. schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders: post: tags: - Transcoder summary: Create Transcoder description: "Create a Cloud Transcoder to enable Adaptive Bitrate (ABR) Simulcast streams without requiring multiple\ \ broadcast contribution sources.\n\n A Transcoder represents the configuration of your bitrate ladder from a pre-defined\ \ profile or by setting the maximum height and frameRate you'd like to target. See the 'List Transcoder Profiles'\ \ endpoint to find available Transcoder profiles. If you specify both a profile id and height/frameRate settings only\ \ the profile will be used.\n\n You should update any broadcast encoders to use this new origin server as configured\ \ by the DNS of the Transcoder which can be found in the response data.\n\n There are additional charges for a Transcoder\ \ so you should use the Stop Transcoder and Start Transcoder endpoints to enable cloud transcoding only when you\ \ need to broadcast." operationId: Transcoder_CreateTranscoder requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/CreateTranscoderRecord' examples: simple: summary: simple value: name: simple_transcoder dnsPrefix: testing-transcoder cluster: phx-1 height: 240 frameRate: 60 startNow: false passThrough: true required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseTranscoderRecord' examples: simple: summary: simple value: status: success data: transcoderId: abcd-efgh name: simple_transcoder cluster: phx-1 dnsName: abcd-efgh-ijkl.transcoder.millicast.com profile: profileId: simple_profile name: simple profile description: simple profile height: 240 frameRate: 60 passThrough: true layers: - height: 240 fps: 24 codec: h264 bitrate: 350 intraPeriod: 24 createdOn: '2024-02-08T04:55:48.449Z' endedOn: '2024-02-08T04:55:48.449Z' instance: id: mnop-qrst dnsName: abcd-efgh-ijkl.transcoder.millicast.com createdOn: '2024-02-08T04:55:48.449Z' status: Provisioning publishUrls: rtmp: rtmp://abcd-efgh-ijkl.transcoder.millicast.com:1935/v2/pub rtmps: rtmps://abcd-efgh-ijkl.transcoder.millicast.com:443/v2/pub srt: srt://abcd-efgh-ijkl.transcoder.millicast.com:10000 status: Provisioning '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] get: tags: - Transcoder summary: List Transcoders description: Return the Transcoders that have been configured for your account. You can use query parameters to filter, sort, or paginate the results returned. operationId: Transcoder_ListTranscoders parameters: - name: sortBy in: query description: Order in which to return the list of Transcoders. The default is by CreatedDate. schema: default: CreatedDate nullable: true oneOf: - $ref: '#/components/schemas/ListTranscoderRecordsSortBy' x-position: 1 - name: status in: query style: form explode: true description: Returns only Transcoders that match the given status. If empty, will return all but Deleted. schema: type: array nullable: true items: $ref: '#/components/schemas/TranscoderDisplayStatus' x-position: 2 - name: cluster in: query style: form explode: true description: Returns only Transcoders for the given cluster(s). schema: type: array nullable: true items: type: string x-position: 3 - name: transcoderName in: query description: Returns only Transcoders that match the given string. Will include partial sub-string matches. schema: type: string nullable: true x-position: 4 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 5 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 6 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 7 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListTranscoderRecords' examples: simple: summary: simple value: status: success data: - transcoderId: abcd-efgh name: simple_transcoder cluster: phx-1 dnsName: abcd-efgh-ijkl.transcoder.millicast.com profile: profileId: simple_profile name: simple profile description: simple profile height: 240 frameRate: 60 passThrough: true layers: - height: 240 fps: 24 codec: h264 bitrate: 350 intraPeriod: 24 createdOn: '2024-02-08T04:55:48.449Z' instance: id: mnop-qrst publicIp: 123.45.67.89 dnsName: abcd-efgh-ijkl.transcoder.millicast.com createdOn: '2024-02-08T04:55:48.449Z' status: Active status: Active publishUrls: rtmp: rtmp://abcd-efgh-ijkl.transcoder.millicast.com:1935/v2/pub rtmps: rtmps://abcd-efgh-ijkl.transcoder.millicast.com:443/v2/pub srt: srt://abcd-efgh-ijkl.transcoder.millicast.com:10000 - transcoderId: abcd-efgh name: simple_transcoder cluster: phx-1 dnsName: abcd-efgh-ijkl.transcoder.millicast.com profile: profileId: simple_profile name: simple profile description: simple profile height: 240 frameRate: 60 passThrough: true layers: - height: 240 fps: 24 codec: h264 bitrate: 350 intraPeriod: 24 createdOn: '2024-02-08T04:55:48.449Z' endedOn: '2024-02-08T04:55:48.449Z' instance: id: mnop-qrst dnsName: abcd-efgh-ijkl.transcoder.millicast.com createdOn: '2024-02-08T04:55:48.449Z' status: Provisioning publishUrls: rtmp: rtmp://abcd-efgh-ijkl.transcoder.millicast.com:1935/v2/pub rtmps: rtmps://abcd-efgh-ijkl.transcoder.millicast.com:443/v2/pub srt: srt://abcd-efgh-ijkl.transcoder.millicast.com:10000 status: Provisioning '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/start/{transcoderId}: put: tags: - Transcoder summary: Start Transcoder description: Enable a Transcoder by ID to accept incoming broadcast sources. operationId: Transcoder_StartTranscoder parameters: - name: transcoderId in: path required: true description: The unique identifier for the transcoder. schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/stop/{transcoderId}: put: tags: - Transcoder summary: Stop Transcoder description: Disable a Transcoder by ID so that it will shutdown and no longer accept incoming broadcast sources. operationId: Transcoder_StopTranscoder parameters: - name: transcoderId in: path required: true description: The unique identifier for the transcoder. schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/instances/{instanceId}: get: tags: - Transcoder summary: Get Transcoder Instance description: Get transcoder instance information by Transcoder Instance ID. Instances can be listed and filtered using the List Transcoder Instances endpoint. operationId: Transcoder_GetTranscoderInstance parameters: - name: instanceId in: path required: true description: The unique identifier for the instance. schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseTranscoderInstance' examples: simple: summary: simple value: status: success data: id: mnop-qrst transcoderId: abcd-efgh dnsName: abcd-efgh-ijkl.transcoder.millcast.com createdOn: '2024-02-08T04:55:48.449Z' endedOn: '2024-02-08T04:55:48.449Z' status: Deleted '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/instances: get: tags: - Transcoder summary: List Transcoder Instances description: A Transcoder Instance is an individual host within a cluster that has been configured based on the Transcoder settings. By default, Deleted instances are returned unless specified with Status parameter. This can be used to get historical instance information. operationId: Transcoder_ListTranscoderInstances parameters: - name: transcoderId in: query description: Returns only Instances for a given Transcoder ID. schema: type: string nullable: true x-position: 1 - name: startDate in: query description: Returns Instances that were created after the given date. The date is of the format is `YYYY-MM-DD`. schema: type: string nullable: true x-position: 2 - name: endDate in: query description: Returns Instances that were shutdown prior to the given date. The data is of the format is `YYYY-MM-DD`. schema: type: string nullable: true x-position: 3 - name: sortBy in: query description: Order in which to return the list of Transcoder Instances. The default is by Creation Date. schema: default: CreatedDate nullable: true oneOf: - $ref: '#/components/schemas/ListTranscoderInstancesSortBy' x-position: 4 - name: status in: query style: form explode: true description: Returns only Transcoder Instances that match the given status. If empty, all the instances including Deleted are return. schema: type: array nullable: true items: $ref: '#/components/schemas/TranscoderStatus' x-position: 5 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 6 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 7 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 8 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListTranscoderInstances' examples: simple: summary: simple value: status: success data: - id: mnop-qrst transcoderId: abcd-efgh dnsName: abcd-efgh-ijkl.transcoder.millcast.com createdOn: '2024-02-08T04:55:48.449Z' endedOn: '2024-02-08T04:55:48.449Z' status: Deleted - id: uvwx-yzab publicIp: 123.45.67.89 transcoderId: cdef-ghij dnsName: cdef-ghij-klmn.transcoder.millcast.com createdOn: '2024-02-08T04:55:48.449Z' status: Active '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/profiles: get: tags: - Transcoder summary: List Transcoder Profiles description: A Transcoder Profile is a pre-defined configuration for how to direct the bitrate ladder in distributing individual layers. operationId: Transcoder_ListTranscoderProfiles parameters: - name: sortBy in: query description: Order in which to return the list of Profiles. The default is by Name. schema: default: Name nullable: true oneOf: - $ref: '#/components/schemas/ListProfileSortBy' x-position: 1 - name: height in: query style: form explode: true description: The height to filter the profiles by. schema: type: array nullable: true items: type: integer x-position: 2 - name: frameRate in: query style: form explode: true description: The framerate to filter the profiles by. schema: type: array nullable: true items: type: number format: decimal x-position: 3 - name: passthrough in: query description: The passthrough value to filter by. schema: type: boolean nullable: true x-position: 4 - name: isDefault in: query description: Used to filter for profiles that are either custom or provided by default. schema: type: boolean nullable: true x-position: 5 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 6 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 7 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 8 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListTranscoderProfiles' examples: simple: summary: simple value: status: success data: - profileId: millicast_240p60_h264 name: 240p 60fps h264 description: Profile for 240p 60fps h264 height: 240 frameRate: 60 passThrough: true layers: - height: 240 fps: 24 codec: h264 bitrate: 350 intraPeriod: 24 - profileId: millicast_240p60_h264_np name: 240p 60fps h264 no passthrough description: Profile for 240p 60fps h264 with no passthrough height: 240 frameRate: 60 passThrough: false layers: - height: 240 fps: 24 codec: h264 bitrate: 350 intraPeriod: 24 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/schedule: post: tags: - TranscoderScheduler summary: Create Transcoder Schedule description: Creates a Schedule for Transcoders specified. operationId: TranscoderScheduler_CreateSchedule requestBody: x-name: request content: application/json: schema: $ref: '#/components/schemas/TranscoderCreateScheduleRequest' examples: simple: summary: simple value: status: success data: start: '2024-08-15T09:00:00Z' stop: '2024-08-17T09:00:00Z' clientId: random_string transcoderIds: - 9dc8129e-499d-4989-bb32-a5ae459277c5 name: start-transcoder-once description: first schedular ive created recurring: frequency: interval: weekly required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseCreateTranscoderSchedule' examples: simple: summary: simple value: status: success data: start: '2024-08-15T09:00:00Z' stop: '2024-08-17T09:00:00Z' clientId: random_string scheduleId: b4d1f1ea-c8ae-49ca-815e-8460587207cb status: active transcoderIds: - 9dc8129e-499d-4989-bb32-a5ae459277c5 name: start-transcoder-once description: first schedular ive created recurring: enabled: true frequency: interval: weekly metadata: createdOn: '2024-08-14T09:23:12Z' executions: - executionTime: '2024-08-15T09:00:00Z' scheduleType: Start executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 - executionTime: '2024-08-17T09:00:00Z' scheduleType: Stop executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/schedule/{scheduleId}: delete: tags: - TranscoderScheduler summary: Delete Transcoder Schedule description: Deletes a Transcoder schedule by its Schedule ID. Schedule ID can be found from Create/Get Transcoder Schedule response. operationId: TranscoderScheduler_DeleteSchedule parameters: - name: scheduleId in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseDeleteTranscoderSchedule' examples: simple: summary: simple value: status: success data: scheduleId: f76566d6-f1e1-4a6b-a299-de1b67990d7d status: Deleted '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] put: tags: - TranscoderScheduler summary: Update Transcoder Schedule description: Updates a Transcoder Schedule by its Schedule ID. operationId: TranscoderScheduler_UpdateSchedule parameters: - name: scheduleId in: path required: true schema: type: string x-position: 1 requestBody: x-name: updateRequest content: application/json: schema: $ref: '#/components/schemas/UpdateTranscoderScheduleRequest' examples: simple: summary: simple value: status: success data: start: '2024-08-15T09:00:00Z' stop: '2024-08-17T09:00:00Z' recurring: frequency: interval: weekly required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseUpdateTranscoderSchedule' examples: simple: summary: simple value: status: success data: start: '2024-08-15T09:00:00Z' stop: '2024-08-17T09:00:00Z' clientId: random_string scheduleId: b4d1f1ea-c8ae-49ca-815e-8460587207cb status: active transcoderIds: - 9dc8129e-499d-4989-bb32-a5ae459277c5 - eb1f2499-8ef6-4c5b-bac0-9136261c4b6b name: start-transcoder-once description: first schedular ive created recurring: enabled: true frequency: interval: weekly metadata: createdOn: '2024-08-14T09:23:12Z' executions: - executionTime: '2024-08-15T09:00:00Z' scheduleType: Start executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 - executionTime: '2024-08-15T09:00:00Z' scheduleType: Start executionStatus: Pending transcoderId: eb1f2499-8ef6-4c5b-bac0-9136261c4b6b - executionTime: '2024-08-17T09:00:00Z' scheduleType: Stop executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 - executionTime: '2024-08-17T09:00:00Z' scheduleType: Stop executionStatus: Pending transcoderId: eb1f2499-8ef6-4c5b-bac0-9136261c4b6b '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] get: tags: - TranscoderScheduler summary: Get Transcoder Schedule description: Gets schedule summary by Schedule ID. operationId: TranscoderScheduler_GetScheduleByScheduleId parameters: - name: scheduleId in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessGetScheduleByScheduleId' examples: simple: summary: simple value: status: success data: start: '2024-08-15T09:00:00Z' stop: '2024-08-17T09:00:00Z' clientId: random_string scheduleId: b4d1f1ea-c8ae-49ca-815e-8460587207cb status: active transcoderIds: - 9dc8129e-499d-4989-bb32-a5ae459277c5 name: start-transcoder-once description: first schedular ive created recurring: enabled: true frequency: interval: weekly metadata: createdOn: '2024-08-14T09:23:12Z' executions: - executionTime: '2024-08-15T09:00:00Z' scheduleType: Start executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 - executionTime: '2024-08-17T09:00:00Z' scheduleType: Stop executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/schedule/list: get: tags: - TranscoderScheduler summary: List Transcoder Schedules description: Lists all Transcoder Schedules. Sort by Created Date by default. Able to be filtered by Schedule Status. operationId: TranscoderScheduler_ListAllSchedules parameters: - name: sortBy in: query description: Order in which to return the list of Transcoder schedules. The default is by CreatedDate. schema: default: CreatedDate nullable: true oneOf: - $ref: '#/components/schemas/ListTranscoderSchedulesSortBy' x-position: 1 - name: status in: query style: form explode: true description: Returns only Transcoder schedules that have a specified status. schema: type: array nullable: true items: $ref: '#/components/schemas/ScheduleStatus' x-position: 2 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 3 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 4 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 5 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListTranscoderSchedules' examples: simple: summary: simple value: status: success data: - start: '2024-08-15T09:00:00Z' stop: '2024-08-17T09:00:00Z' clientId: random_string scheduleId: b4d1f1ea-c8ae-49ca-815e-8460587207cb status: active transcoderIds: - 9dc8129e-499d-4989-bb32-a5ae459277c5 name: start-transcoder-once description: first schedular ive created recurring: enabled: true frequency: interval: weekly metadata: createdOn: '2024-08-14T09:23:12Z' executions: - executionTime: '2024-08-15T09:00:00Z' scheduleType: Start executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 - executionTime: '2024-08-17T09:00:00Z' scheduleType: Stop executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/transcoders/{transcoderId}/schedule/list: get: tags: - TranscoderScheduler summary: Get Schedules By Transcoder description: Get all Schedules for a single transcoder. operationId: TranscoderScheduler_GetSchedulesForTranscoder parameters: - name: transcoderId in: path required: true schema: type: string x-position: 1 - name: sortBy in: query description: Order in which to return the list of Transcoder schedules. The default is by CreatedDate. schema: default: CreatedDate nullable: true oneOf: - $ref: '#/components/schemas/ListTranscoderSchedulesSortBy' x-position: 2 - name: status in: query style: form explode: true description: Returns only Transcoder schedules that have a specified status. schema: type: array nullable: true items: $ref: '#/components/schemas/ScheduleStatus' x-position: 3 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 4 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 5 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 6 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessGetSchedulesForSpecificTranscoder' examples: simple: summary: simple value: status: success data: - start: '2024-08-15T09:00:00Z' stop: '2024-08-17T09:00:00Z' clientId: random_string scheduleId: b4d1f1ea-c8ae-49ca-815e-8460587207cb status: active transcoderIds: - 9dc8129e-499d-4989-bb32-a5ae459277c5 name: start-transcoder-once description: first schedular ive created recurring: enabled: true frequency: interval: weekly metadata: createdOn: '2024-08-14T09:23:12Z' executions: - executionTime: '2024-08-15T09:00:00Z' scheduleType: Start executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 - executionTime: '2024-08-17T09:00:00Z' scheduleType: Stop executionStatus: Pending transcoderId: 9dc8129e-499d-4989-bb32-a5ae459277c5 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/account/geo_cascade: get: tags: - Account summary: Read Account Geo Cascade Settings description: '**Please refer to [Get Account Distribution Settings](#tag/Account/operation/Account_GetAccountDistribution)** Gets account wide geo cascade settings. If a Publish Token does not define any geo cascade settings, the account wide settings are used.' operationId: Account_GetGeoCascade responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoCascade' examples: success: summary: success value: status: success data: isEnabled: true clusters: - phx-1 - ams-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] put: tags: - Account summary: Update Account Geo Cascade Settings description: '**Please refer to [Update Account Distribution Settings](#tag/Account/operation/Account_UpdateAccountDistribution)** Update account wide geo cascade settings to enable/disable the feature or update the account default cluster list. ''["all"]'' could be used in place of cluster list to cascade stream to all existing and any future clusters available to the account. Empty cluster list is not allowed when enabling geo cascade feature. Cluster list is translated to ''["all"]'' clusters if not specified or set to null. Cluster list is ignored when geo cascade is disabled.' operationId: Account_UpdateGeoCascade requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/GeoCascadeModel' examples: update: summary: update value: isenabled: true clusters: - phx-1 - ams-1 - lon-1 required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoCascade' examples: success: summary: success value: status: success data: isEnabled: true clusters: - phx-1 - ams-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: failure: summary: failure value: status: fail data: message: Geo cascade Clusters list cannot be empty default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/cluster: get: tags: - Cluster summary: Read Clusters description: Default cluster and list of available clusters. operationId: Cluster_GetClustersInfo responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessClusterInfoModel' examples: standard: summary: standard value: status: success data: defaultCluster: ams-1 availableClusters: - id: ams-1 name: Amsterdam rtmp: rtmp-ams-1.millicast.com srt: srt-ams-1.millicast.com location: city: Amsterdam region: North Holland country: Netherlands features: transcoding: false - id: phx-1 name: Phoenix rtmp: rtmp-phx-1.millicast.com srt: srt-phx-1.millicast.com location: city: Phoenix region: Arizona country: United States of America features: transcoding: true default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] put: tags: - Cluster summary: Update Cluster description: Update default cluster on account. operationId: Cluster_UpdateClusterInfo requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateClusterInfoModel' examples: standard: summary: standard value: defaultCluster: ams-1 required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessClusterInfoModel' examples: standard: summary: standard value: status: success data: defaultCluster: ams-1 availableClusters: - id: ams-1 name: Amsterdam rtmp: rtmp-ams-1.millicast.com srt: srt-ams-1.millicast.com location: city: Amsterdam region: North Holland country: Netherlands features: transcoding: false - id: phx-1 name: Phoenix rtmp: rtmp-phx-1.millicast.com srt: srt-phx-1.millicast.com location: city: Phoenix region: Arizona country: United States of America features: transcoding: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/geo/account: get: tags: - Account summary: Read Account Geo Restrictions description: '**Please refer to [Get Account Security Settings](#tag/Account/operation/Account_GetAccountSecurity)** Gets account wide geo restrictions. If a Token (either Publish or Subscribe) does not define any geo restrictions, the account wide rules are used.' operationId: Geo_Geo responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoRestrictions' examples: allowed: summary: allowed value: status: success data: allowedCountries: - US deniedCountries: [] denied: summary: denied value: status: success data: allowedCountries: [] deniedCountries: - UK '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] post: tags: - Account summary: Update Account Geo Restrictions description: '**Please refer to [Update Account Security Settings](#tag/Account/operation/Account_UpdateAccountSecurity)** Update account wide geo restrictions. Updated to an empty array `[]` removes all rules of that type.' operationId: Geo_UpdateGeo requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateAccountGeoModel' examples: allowed: summary: allowed value: allowedCountries: - US deniedCountries: [] denied: summary: denied value: allowedCountries: [] deniedCountries: - UK required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessAccountGeoRestrictions' examples: allowed: summary: allowed value: status: success data: allowedCountries: - US deniedCountries: [] denied: summary: denied value: status: success data: allowedCountries: [] deniedCountries: - UK '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/publish_token/{tokenId}: get: tags: - PublishTokenV1 summary: Read Token description: Gets token specified by token id. operationId: PublishTokenV1_ReadToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponsePublishTokenV1' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] name: My Cool Token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 61864 label: label_no_348 token: my-magic-token-93 addedOn: '2024-12-02T23:51:39Z' isActive: true streams: - streamName: cooked isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 regex: summary: regex value: status: success data: allowedCountries: [] deniedCountries: [] name: regex_token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: true lowLatencyRtmp: false integrationId: None displaySrtPassphrase: false drm: false geoCascade: isEnabled: true clusters: - syd-1 - sgp-1 id: 97942 label: label_no_35 token: my-magic-token-69 addedOn: '2024-12-03T00:37:48Z' isActive: false streams: - streamName: container1/.+ isRegex: true - streamName: master_stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - syd-1 - sgp-1 expiring: summary: expiring value: status: success data: allowedCountries: [] deniedCountries: [] name: Token 03/Dec/2024 13:57:32 subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 18719 label: label_no_705 token: my-magic-token-28 addedOn: '2024-12-03T02:57:58Z' expiresOn: '2025-01-03T02:57:56Z' isActive: true streams: - streamName: myStreamName isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: does not exist: summary: does not exist value: status: fail data: tokenId: 'No publish token with id: 99' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/100" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/100\";\n\n\ var response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/100';\n$headers = array(\n 'Authorization: Bearer your_api_secret'\n\ );\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\n\ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/100'\nheaders = {\n 'Authorization':\ \ 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\nwith urllib.request.urlopen(req)\ \ as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/100')\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl =\ \ true\n\nres = http.get(uri, headers)\nputs res.body" delete: tags: - PublishTokenV1 summary: Delete Token description: Deletes token specified by the token's ID. The Token ID can be found using the List Tokens API or in the API response of Create Token API. operationId: PublishTokenV1_DeleteToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/100\ \ \\\n -X DELETE" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/100\";\n\n\ var response = await client.DeleteAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"DELETE\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'DELETE';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/100';\n$headers = array(\n 'Authorization: Bearer your_api_secret'\n\ );\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\n\ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');\n$result = curl_exec($ch);\n\ echo($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/100'\nheaders = {\n 'Authorization':\ \ 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\nreq.method = 'DELETE'\nwith urllib.request.urlopen(req)\ \ as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/100')\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl =\ \ true\n\nres = http.delete(uri, headers)\nputs res.body" put: tags: - PublishTokenV1 summary: Update Token description: Update token stream information as well as updates token itself. operationId: PublishTokenV1_UpdateToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdatePublishTokenV1' examples: simple: summary: simple value: label: new_label_name refreshToken: true complex: summary: complex value: label: new_regex_token_name subscribeRequiresAuth: true addTokenStreams: - streamName: newStream1 - streamName: special_regex_stream[0-9]+ isRegex: true removeTokenStreams: - container1/.+ required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponsePublishTokenV1' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] name: new_label_name subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 38083 label: label_no_574 token: my-magic-token-36 addedOn: '2024-12-03T02:57:58Z' expiresOn: '2025-01-03T02:57:56Z' isActive: true streams: - streamName: myStreamName isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 complex: summary: complex value: status: success data: allowedCountries: [] deniedCountries: [] name: new_regex_token_name subscribeRequiresAuth: true record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 15951 label: label_no_328 token: my-magic-token-48 addedOn: '2024-12-03T02:57:58Z' expiresOn: '2025-01-03T02:57:56Z' isActive: true streams: - streamName: myStreamName isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: token: No properties specified to update. default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/publish_token/100 \\\n -X PUT -d '{\"label\": \"new_label_name\", \"refreshToken\"\ : true}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/100\";\n\n\ var data = new { label = \"new_label_name\", refreshToken = true };\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n\ \ Encoding.UTF8,\n \"application/json\");\nvar response = await client.PutAsync(url, httpContent);\nvar responseContent\ \ = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ PUT\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\\\"label\\\": \\\"new_label_name\\\", \\\"refreshToken\\\": true}\");\nwr.close();\n\nInputStreamReader sr = new\ \ InputStreamReader(conn.getInputStream());\nBufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer\ \ response = new StringBuffer();\nwhile ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\n\ System.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'PUT';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\"label\": \"new_label_name\"\ , \"refreshToken\": true};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/100';\n$headers = array(\n 'Authorization: Bearer your_api_secret',\n\ \ 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch,\ \ CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = array(\"label\" => \"\ new_label_name\", \"refreshToken\" => TRUE );\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');\ncurl_setopt($ch,\ \ CURLOPT_POSTFIELDS, json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/publish_token/100'\nheaders =\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'PUT'\ndata = {\"label\": \"new_label_name\", \"refreshToken\": True}\nreq.data\ \ = json.dumps(data).encode('utf8')\nwith urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/publish_token/100')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\"label\": \"new_label_name\", \"refreshToken\": true}\nres = http.put(uri,\ \ data.to_json, headers)\nputs res.body" /api/publish_token/list: get: tags: - PublishTokenV1 summary: List Tokens description: List all tokens with specific sorting and pagination. If response array is empty, you have reached the end of the list ordering. operationId: PublishTokenV1_ListTokens parameters: - name: sortBy in: query schema: default: Name nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy2' x-position: 1 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 2 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 3 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 4 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListPublishTokenV1' examples: list: summary: list value: status: success data: - allowedCountries: [] deniedCountries: [] name: My 2nd Cool Token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 82232 label: label_no_701 token: my-magic-token-95 addedOn: '2024-12-03T00:01:16Z' isActive: true streams: - streamName: Cooked or Cooking?? isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 - allowedCountries: [] deniedCountries: [] name: new_regex_token_name subscribeRequiresAuth: true record: false clip: false multisource: true enableThumbnails: true lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 4068 label: label_no_127 token: my-magic-token-36 addedOn: '2024-12-02T00:36:08Z' isActive: true streams: - streamName: myStreamName isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 - allowedCountries: [] deniedCountries: [] name: new_regex_token_name subscribeRequiresAuth: true record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 77344 label: label_no_406 token: my-magic-token-20 addedOn: '2024-12-03T02:57:58Z' expiresOn: '2025-01-03T02:57:56Z' isActive: true streams: - streamName: myStreamName isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: errors: page: - A value for the 'page' parameter or property was not provided. itemsOnPage: - A value for the 'itemsOnPage' parameter or property was not provided. message: Validation errors default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/list\ \ \\\n -G -d \"page=1&itemsOnPage=10\"" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/list?page=1&itemsOnPage=10\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/list?page=1&itemsOnPage=10\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/list?page=1&itemsOnPage=10');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/list?page=1&itemsOnPage=10';\n$headers = array(\n 'Authorization:\ \ Bearer your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER,\ \ $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/list?page=1&itemsOnPage=10'\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/list?page=1&itemsOnPage=10')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/publish_token/list_by_name: get: tags: - PublishTokenV1 summary: List Tokens By Name description: List all tokens with specific sorting and pagination that matches given token name or stream name. Tokens with wildcard stream names are excluded from the responses. If response array is empty, you have reached the end of the list ordering. operationId: PublishTokenV1_ListTokensByName parameters: - name: name in: query required: true schema: type: string nullable: true x-position: 1 - name: filterBy in: query schema: default: TokenOrStreamName nullable: true oneOf: - $ref: '#/components/schemas/ListFilterBy' x-position: 2 - name: sortBy in: query schema: default: Name nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy2' x-position: 3 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 4 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 5 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 6 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListPublishTokenV1' examples: list_by_name: summary: list_by_name value: status: success data: - id: 101 label: temp_token token: abcdefghijklmnopqrstuvwxyz0123456789 addedOn: '2018-01-01T00:00:00Z' expiresOn: null isActive: true subscribeRequiresAuth: false streams: - streamName: container1/.+ isRegex: true - streamName: master_stream isRegex: false integrationId: None displaySrtPassphrase: true srtPassphrase: abcdefghijk allowedCountries: [] deniedCountries: [] record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - label: restream feed 1 url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 name: temp_token allowedOrigins: [] allowedIpAddresses: [] bindIpsOnUsage: null originCluster: auto effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 - id: 100 label: simple_token token: abcdefghijklmnopqrstuvwxyz0123456789 addedOn: '2018-01-01T00:00:00Z' expiresOn: null isActive: true subscribeRequiresAuth: false streams: - streamName: stream_name_temp_1 isRegex: false integrationId: None displaySrtPassphrase: true srtPassphrase: abcdefghijk allowedCountries: [] deniedCountries: [] record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true geoCascade: null restream: - label: restream my webcam url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 name: simple_token allowedOrigins: [] allowedIpAddresses: [] bindIpsOnUsage: null originCluster: auto effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - ams-1 - blr-1 - iad-1 - phx-1 - sgp-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: errors: name: - The Name field is required. page: - The field Page must be between 1 and 2147483647. filterBy: - The value ''Unknown'' is not valid for FilterBy. itemsOnPage: - The field ItemsOnPage must be between 1 and 100. message: Validation errors default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/list_by_name\ \ \\\n -G -d \"page=1&itemsOnPage=10&name=temp\"" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/list_by_name?page=1&itemsOnPage=10&name=temp\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/list_by_name?page=1&itemsOnPage=10&name=temp\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/list_by_name?page=1&itemsOnPage=10&name=temp');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/list_by_name?page=1&itemsOnPage=10&name=temp';\n$headers\ \ = array(\n 'Authorization: Bearer your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\n\ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\n\ echo($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/list_by_name?page=1&itemsOnPage=10&name=temp'\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/list_by_name?page=1&itemsOnPage=10&name=temp')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/publish_token/list_by_cluster: get: tags: - PublishTokenV1 summary: List Tokens By Cluster description: List all tokens with specific sorting and pagination that matches given cluster region. If response array is empty, you have reached the end of the list ordering. operationId: PublishTokenV1_ListTokensByCluster parameters: - name: cluster in: query required: true schema: type: string nullable: true x-position: 1 - name: sortBy in: query schema: default: Name nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy2' x-position: 2 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 3 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 4 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 5 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListPublishTokenV1' examples: list_by_cluster: summary: list_by_cluster value: status: success data: - allowedCountries: [] deniedCountries: [] name: My Second Ams subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false restream: [] id: 33849 label: label_no_431 token: my-magic-token-33 addedOn: '2024-12-03T22:51:05Z' isActive: true streams: - streamName: myStreamName isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: ams-1 effectiveSettings: originCluster: ams-1 allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 - ams-1 - allowedCountries: [] deniedCountries: [] name: AMS Cluster Region Test subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false restream: [] id: 1011 label: label_no_177 token: my-magic-token-0 addedOn: '2024-12-03T22:49:26Z' isActive: true streams: - streamName: My stream in AMS isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: ams-1 effectiveSettings: originCluster: ams-1 allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 - ams-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: page: The field Page must be between 1 and 2147483647. itemsOnPage: The field ItemsOnPage must be between 1 and 100. cluster: The Cluster field is required. default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/list_by_cluster\ \ \\\n -G -d \"page=1&itemsOnPage=10&cluster=ams-1\"" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/list_by_cluster?page=1&itemsOnPage=10&cluster=ams-1\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/list_by_cluster?page=1&itemsOnPage=10&cluster=ams-1\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/list_by_cluster?page=1&itemsOnPage=10&cluster=ams-1');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/list_by_cluster?page=1&itemsOnPage=10&cluster=ams-1';\n\ $headers = array(\n 'Authorization: Bearer your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL,\ \ $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result\ \ = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/list_by_cluster?page=1&itemsOnPage=10&cluster=ams-1'\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/list_by_cluster?page=1&itemsOnPage=10&cluster=ams-1')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/publish_token: post: tags: - PublishTokenV1 summary: Create Token description: Creates new token given a label and associated stream name(s). Stream names are limited to 128 characters. operationId: PublishTokenV1_CreateToken requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/CreatePublishTokenV1' examples: simple: summary: simple value: label: simple_token streams: - streamName: stream1 isRegex: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - label: rtmp restream config url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 regex: summary: regex value: label: regex_token streams: - streamName: container1/.+ isRegex: true - streamName: master_stream isRegex: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - label: rtmp restream config url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 expiring: summary: expiring value: label: temp_token expires: 3600 streams: - streamName: temp_stream isRegex: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - label: rtmp restream config url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponsePublishTokenV1' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] name: simple_token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: true lowLatencyRtmp: false integrationId: None displaySrtPassphrase: false drm: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - label: label_no_60 url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 id: 67646 label: label_no_555 token: my-magic-token-8 addedOn: '2024-12-03T06:02:58.052266Z' isActive: true streams: - streamName: stream1 isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 regex: summary: regex value: status: success data: allowedCountries: [] deniedCountries: [] name: regex_token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: true lowLatencyRtmp: false integrationId: None displaySrtPassphrase: false drm: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - label: label_no_449 url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 id: 80063 label: label_no_388 token: my-magic-token-47 addedOn: '2024-12-03T06:05:53.927019Z' isActive: true streams: - streamName: container1/.+ isRegex: true - streamName: master_stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 expiring: summary: expiring value: status: success data: allowedCountries: [] deniedCountries: [] name: temp_token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: true lowLatencyRtmp: false integrationId: None displaySrtPassphrase: false drm: false geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 restream: - label: label_no_937 url: rtmp://testrtmp.com key: 5ce4d599cfd4a44131e422eaeede2929 id: 33682 label: label_no_428 token: my-magic-token-0 addedOn: '2024-12-03T06:06:50.137196Z' expiresOn: '2024-12-03T07:06:50.137196Z' isActive: true streams: - streamName: temp_stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - phx-1 - sgp-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/publish_token \\\n -d '{\"label\": \"simple_token\", \"streams\": [{\"streamName\"\ : \"stream1\"}]}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token\";\n\nvar data\ \ = new { label = \"simple_token\", streams = new [] { new { streamName = \"stream1\" } }};\nvar httpContent = new\ \ StringContent(JsonConvert.SerializeObject(data),\n Encoding.UTF8,\n \"application/json\");\nvar response = await\ \ client.PostAsync(url, httpContent);\nvar responseContent = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ POST\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\\\"label\\\": \\\"simple_token\\\", \\\"streams\\\": [{\\\"streamName\\\": \\\"stream1\\\"}]}\");\nwr.close();\n\ \nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\nBufferedReader br = new BufferedReader(sr);\n\ String inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = br.readLine()) != null)\n response.append(inputLine);\n\ br.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'POST';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\"label\": \"simple_token\"\ , \"streams\": [{\"streamName\": \"stream1\"}]};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token';\n$headers = array(\n 'Authorization: Bearer your_api_secret',\n\ \ 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch,\ \ CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = array(\"label\" => \"\ simple_token\", \"streams\" => array( array(\"streamName\" => \"stream1\") ));\ncurl_setopt($ch, CURLOPT_POST, TRUE);\n\ curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/publish_token'\nheaders = {\n\ \ 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'POST'\ndata = {\"label\": \"simple_token\", \"streams\": [{\"streamName\": \"\ stream1\"}]}\nreq.data = json.dumps(data).encode('utf8')\nwith urllib.request.urlopen(req) as resp:\n result\ \ = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/publish_token')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\"label\": \"simple_token\", \"streams\": [{\"streamName\": \"stream1\"\ }]}\nres = http.post(uri, data.to_json, headers)\nputs res.body" /api/publish_token/active: get: tags: - PublishTokenV1 summary: Get active Publish Token ID description: Gets the Publish Token ID of an active stream by its Stream ID. Publish Tokens for long running streams published before 1st October 2022 will not be returned. If you need to stop a long running stream, use the Dashboard or try republishing the stream. operationId: PublishTokenV1_GetActiveTokenByStreamId parameters: - name: streamId in: query required: true schema: type: string nullable: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseGetActiveTokenV1' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/active?streamId=ppheyp/lb0ubvK\ \ \\\n -G -d \"streamId=ppheyp/lb0ubvK\"" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/active?streamId=ppheyp/lb0ubvK\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/active?streamId=ppheyp/lb0ubvK\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/active?streamId=ppheyp/lb0ubvK');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/active?streamId=ppheyp/lb0ubvK';\n$headers = array(\n\ \ 'Authorization: Bearer your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch,\ \ CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/active?streamId=ppheyp/lb0ubvK'\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/active?streamId=ppheyp/lb0ubvK')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/publish_token/active/all: get: tags: - PublishTokenV1 summary: Get all active Publish Token IDs description: Get all Publish Token IDs for active streams on the account. Publish Tokens for long running streams published before 1st October 2022 will not be returned. If you need to stop a long running stream, use the Dashboard or try republishing the stream. operationId: PublishTokenV1_GetAllActiveTokensByAccount responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseGetActiveTokenV1' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/active/all" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/active/all\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/active/all\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/active/all');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/active/all';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER,\ \ $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/active/all'\nheaders = {\n \ \ 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\nwith urllib.request.urlopen(req)\ \ as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/active/all')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/publish_token/disable: patch: tags: - PublishTokenV1 summary: Disable Publish Token(s) description: Disables Publish Token(s) by their Token ID. An array of Token IDs can be used for bulk disable. operationId: PublishTokenV1_DisableTokens requestBody: x-name: tokenIds content: application/json: schema: $ref: '#/components/schemas/DisableActiveTokenModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseDisableTokensV1' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/publish_token/disable \\\n -X PATCH -d '{\n \"tokenIds\" : [\n 100\n]\n\ }'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/disable\";\n\ \nvar data = {\n \"tokenIds\" : [\n 100\n]\n};\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n\ \ Encoding.UTF8,\n \"application/json\");\nvar response = await client.PatchAsync(url, httpContent);\nvar responseContent\ \ = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/disable\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ PATCH\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\n \"tokenIds\" : [\n 100\n]\n}\");\nwr.close();\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/disable');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'PATCH';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\n \"tokenIds\" : [\n\ \ 100\n]\n};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/disable';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret',\n 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\n\ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = {\n \ \ \"tokenIds\" : [\n 100\n]\n};\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\ \ json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/publish_token/disable'\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'PUT'\ndata = {\n \"tokenIds\" : [\n 100\n]\n}\nreq.data = json.dumps(data).encode('utf8')\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/publish_token/disable')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\n \"tokenIds\" : [\n 100\n]\n}\nres = http.patch(uri, data.to_json,\ \ headers)\nputs res.body" /api/publish_token/{tokenId}/restream/sync: post: tags: - PublishTokenV1 summary: Sync restreams description: Apply any re-stream configuration changes for running streams immediately. operationId: PublishTokenV1_SyncRestream parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: does not exist: summary: does not exist value: status: fail data: tokenId: Invalid TokenId (100) for AccountId (200) default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/publish_token/100/restream/sync" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/publish_token/100/restream/sync\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/publish_token/100/restream/sync\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/publish_token/100/restream/sync');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/publish_token/100/restream/sync';\n$headers = array(\n 'Authorization:\ \ Bearer your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER,\ \ $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/publish_token/100/restream/sync'\nheaders =\ \ {\n 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\nwith\ \ urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/publish_token/100/restream/sync')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/record_files/{recordFileId}: get: tags: - RecordFiles summary: Read File description: '**Please refer to [Read Media Assets](#operation/MediaAssets_ReadMediaAsset)** Gets file specified by record file id. Includes temporary download link.' operationId: RecordFiles_GetRecordFile parameters: - name: recordFileId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessRecordFileModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] delete: tags: - RecordFiles summary: Delete File description: '**Please refer to [Delete Media Assets](#operation/MediaAssets_DeleteMediaAssets)** Deletes recorded file from storage.' operationId: RecordFiles_DeleteRecordFile parameters: - name: recordFileId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/delete: post: tags: - RecordFiles summary: Delete Files description: '**Please refer to [Delete Media Assets](#operation/MediaAssets_DeleteMediaAssets)** Deletes multiple recorded file from storage.' operationId: RecordFiles_DeleteRecordFiles requestBody: x-name: recordFiles content: application/json: schema: $ref: '#/components/schemas/RemoveRecordFilesModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/delete/all: post: tags: - RecordFiles summary: Delete All Files description: '**Please refer to [Delete All Media Assets](#operation/MediaAssets_DeleteMediaAssets2)** Deletes all recorded files from storage.' operationId: RecordFiles_DeleteAllRecordFiles responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/list: get: tags: - RecordFiles summary: List Files description: '**Please refer to [List Media Assets](#operation/MediaAssets_ListMediaAssets)** List files for account with specific sorting and pagination. If response array is empty, you have reached the end of the list ordering.' operationId: RecordFiles_ListRecordFiles parameters: - name: sortBy in: query schema: default: RecordedOn nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy3' x-position: 1 - name: status in: query style: form explode: true schema: type: array nullable: true items: $ref: '#/components/schemas/FilterByRecordFileStatus' x-position: 2 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 3 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 4 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 5 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListRecordFileModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/list_by_token: get: tags: - RecordFiles summary: List Files By Token description: '**Please refer to [List Media Assets](#operation/MediaAssets_ListMediaAssets) and query using the `tokenId` parameter** List files using a token with specific sorting and pagination. If response array is empty, you have reached the end of the list ordering.' operationId: RecordFiles_ListRecordFilesByToken parameters: - name: token in: query required: true description: Either token or tokenId must be specified. schema: type: string nullable: true x-position: 1 - name: tokenId in: query description: Either token or tokenId must be specified. Legacy name token_id. schema: type: integer nullable: true x-position: 2 - name: sortBy in: query schema: default: RecordedOn nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy3' x-position: 3 - name: status in: query style: form explode: true schema: type: array nullable: true items: $ref: '#/components/schemas/FilterByRecordFileStatus' x-position: 4 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 5 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 6 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 7 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListRecordFileModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/list_by_stream: get: tags: - RecordFiles summary: List Files By Stream description: '**Please refer to [List Media Assets](#operation/MediaAssets_ListMediaAssets) and query using the `streamName`parameter** List files using a streamname with specific sorting and pagination. If response array is empty, you have reached the end of the list ordering.' operationId: RecordFiles_ListRecordFilesByStream parameters: - name: streamname in: query required: true schema: type: string maxLength: 128 nullable: true x-position: 1 - name: sortBy in: query schema: default: RecordedOn nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy3' x-position: 2 - name: status in: query style: form explode: true schema: type: array nullable: true items: $ref: '#/components/schemas/FilterByRecordFileStatus' x-position: 3 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 4 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 5 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 6 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListRecordFileModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/usage: get: tags: - RecordFiles summary: Usage description: '**Please refer to [Usage](#operation/Analytics_MediaAssetUsage)** Get current total bytes of recorded files in storage.' operationId: RecordFiles_RecordFileUsage responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessRecordFileUsageModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/usage_billing: get: tags: - RecordFiles summary: Usage Billable description: '**Please refer to [Usage Billable](#operation/Analytics_MediaAssetUsageBillable)** Get total number of gigabyte hours of storage used within date range.' operationId: RecordFiles_RecordFileUsageBillable parameters: - name: startDate in: query required: true description: The start date of the query. In the format of `YYYY-MM-DD`. schema: type: string format: date x-position: 1 - name: stopDate in: query required: true description: The exclusive end of the date range for the query. Data is returned up to, but not including, this date. In the format of `YYYY-MM-DD`. ISO 8601 format is also supported (e.g., 2021-02-01T00:00:00Z). schema: type: string format: date x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessRecordFileBillableUsageModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/clip: post: tags: - Beta summary: Create Clip description: '**Please refer to [Create Media Asset](#operation/MediaAssets_CreateMediaAsset)** Create clip of recording with specified start and stop times. Start and stop times must be at least 10 seconds apart. Use the mediaAssetIds in the response to retrieve the record files.' operationId: RecordFiles_CreateRecordClip requestBody: x-name: requestModel content: application/json: schema: $ref: '#/components/schemas/CreateClipRequestModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfClipRequestResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/clip/{clipRequestId}: get: tags: - Beta summary: Get Clip Request description: '**There is no direct replacement for this endpoint. Media assets can be retrieved using [Get Media Asset](#operation/MediaAssets_ReadMediaAsset).** Get clip request' operationId: RecordFiles_GetClipRequest parameters: - name: clipRequestId in: path required: true description: Id obtained from start clip request schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfClipRequestResponseModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] delete: tags: - Beta summary: Delete Clip Request description: '**There is no direct replacement for this endpoint. Media assets can be deleted using [Delete Media Assets](#operation/MediaAssets_DeleteMediaAssets).** Delete a clip request and all associated media assets. Clip requests that are InProgress may not be deleted.' operationId: RecordFiles_DeleteClipRequestLive parameters: - name: clipRequestId in: path required: true schema: type: string x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfDeleteMediaAssetsResponse3' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/clip/list: get: tags: - Beta summary: List Clip Requests description: '**There is no direct replacement for this endpoint. Media assets can be retrieved using [List Media Assets](#operation/MediaAssets_ListMediaAssets).** List clip requests. Captures the requests made for live clips. Entries are removed after expiry time. Use the Get Clip Request endpoint to view the media assets associated with each clip request.' operationId: RecordFiles_ListClipRequests parameters: - name: sortBy in: query schema: default: RecordedOn nullable: true oneOf: - $ref: '#/components/schemas/ListClipRequestsSortBy' x-position: 1 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 2 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 3 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 4 requestBody: x-name: filterModel content: application/json: schema: $ref: '#/components/schemas/ListClipRequestsFilterParameters' required: true x-position: 5 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListClipRequestsModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/clip/sources: get: tags: - Beta summary: List Available Clip Sources description: '**Please refer to [List Media Assets](#operation/MediaAssets_ListMediaAssets) and query with `type=timeline`** Indicates which streams and time frames are available for clipping.' operationId: RecordFiles_ListAvailableClipSources parameters: - name: sortBy in: query schema: default: RecordedOn nullable: true oneOf: - $ref: '#/components/schemas/ListRecordBlocksSortBy' x-position: 1 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 2 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 3 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 4 requestBody: x-name: filterModel content: application/json: schema: $ref: '#/components/schemas/ListAvailableClipSourcesFilterParameters' required: true x-position: 5 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListClipSourcesModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/storage_profiles/validate: post: tags: - Beta summary: Validate Third Party Storage Setup description: "**Please refer to [Validate Third Party Storage Setup](#operation/Account_ValidateThirdPartyStorage)**\n\ \nValidates third party storage is configured with permissions for Dolby.io to upload media assets.\n\n To track the\ \ validation result, keep note of the the `validationId` returned in the response body. If correctly configured, when\ \ calling [Read Media Asset](#tag/Beta/operation/RecordFilesV2_ReadMediaAsset), the response should return a successful\ \ entry with `id` matching the `validationId`.\n\n Run once to validate write permissions. If successful, optionally\ \ run a second time to confirm that overwriting is allowed.\n\n Note that validation results are only available for\ \ 1 hour.\n\nIf you provide an empty body or no body your default storage profile will be validated." operationId: RecordFiles_ValidateStorageProfile requestBody: x-name: storageProfile content: application/json: schema: $ref: '#/components/schemas/ValidateRecordStorageProfileModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfSuccessValidateRecordStorageResponse2' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/clip/sources/expiry: post: tags: - Beta summary: Update Clip Source Expiry Rule description: '**Please refer to [Update Account Media Assets Expiration Rules](#operation/Account_UpdateExpirationRules)** Update account level expiry rule for clip creation. Streams that were published outside this expiry period will not be available for creating clips.' operationId: RecordFiles_UpdateExpiryRule requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateRecordBlocksExpiryRuleModel' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfRecordBlocksExpiryRuleModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] get: tags: - Beta summary: Get Clip Source Expiry Rule description: '**Please refer to [Get Account Media Assets Expiration Rules](#operation/Account_GetExpirationRules)** Get account level expiry rule for clip creation. Streams that were published outside this expiry period will not be available for creating clips.' operationId: RecordFiles_GetExpiryRule responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfRecordBlocksExpiryRuleModel' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] delete: tags: - Beta summary: Delete Clip Source Expiry Rule description: "**Please refer to [Update Account Media Assets Expiration Rules](#operation/Account_UpdateExpirationRules)**\n\ \nDelete account level expiry rule for clip creation and use system default.\n\n This may immediately trigger removal\ \ of existing stream data outside of the system default expiry period, thus preventing clips from being created on\ \ those expired streams. Use with caution." operationId: RecordFiles_DeleteExpiryRule responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/record_files/clip/sources/delete: post: tags: - Beta summary: Delete Clip Sources description: '**Please refer to [Delete Media Assets](#operation/MediaAssets_DeleteMediaAssets)** Indicates to delete via `clipSourceId`.' operationId: RecordFiles_DeleteClipSources requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/RemoveClipSourcesModel' required: true x-position: 1 responses: '204': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListClipSourcesModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] /api/stream/stop: post: tags: - Stream summary: Stop an active stream description: Stop an active stream by its Stream ID operationId: Stream_StopStream requestBody: x-name: stopStreamRequest content: application/json: schema: $ref: '#/components/schemas/StopStreamRequest' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStopStreamResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/stream/stop \\\n -X POST -d '{\n \"streamId\":\"pBMpcY/lk80jny\"\n}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/stream/stop\";\n\nvar data\ \ = {\n \"streamId\":\"pBMpcY/lk80jny\"\n};\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n\ \ Encoding.UTF8,\n \"application/json\");\nvar response = await client.PostAsync(url, httpContent);\nvar responseContent\ \ = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/stream/stop\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ POST\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\n \"streamId\":\"pBMpcY/lk80jny\"\n}\");\nwr.close();\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/stream/stop');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'POST';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\n \"streamId\":\"pBMpcY/lk80jny\"\ \n};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/stream/stop';\n$headers = array(\n 'Authorization: Bearer your_api_secret',\n\ \ 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch,\ \ CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = {\n \"streamId\":\"\ pBMpcY/lk80jny\"\n};\ncurl_setopt($ch, CURLOPT_POST, TRUE);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\n\ $result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/stream/stop'\nheaders = {\n \ \ 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'POST'\ndata = {\n \"streamId\":\"pBMpcY/lk80jny\"\n}\nreq.data = json.dumps(data).encode('utf8')\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/stream/stop')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\n \"streamId\":\"pBMpcY/lk80jny\"\n}\nres = http.post(uri, data.to_json,\ \ headers)\nputs res.body" /api/stream/stop/all: post: tags: - Stream summary: Stop all active streams description: Stop all currently active streams associated with your account operationId: Stream_StopByAccount responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessStopStreamResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/stream/stop/all \\\n -X POST -d '__REQUEST_BODY__'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/stream/stop/all\";\n\nvar\ \ data = __REQUEST_BODY__;\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n Encoding.UTF8,\n\ \ \"application/json\");\nvar response = await client.PostAsync(url, httpContent);\nvar responseContent = await\ \ response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/stream/stop/all\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ POST\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ __REQUEST_BODY__\");\nwr.close();\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\nBufferedReader\ \ br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine\ \ = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/stream/stop/all');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'POST';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = __REQUEST_BODY__;\nreq.write(JSON.stringify(data));\n\ req.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/stream/stop/all';\n$headers = array(\n 'Authorization: Bearer your_api_secret',\n\ \ 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch,\ \ CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = __REQUEST_BODY__;\ncurl_setopt($ch,\ \ CURLOPT_POST, TRUE);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/stream/stop/all'\nheaders = {\n\ \ 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'POST'\ndata = __REQUEST_BODY__\nreq.data = json.dumps(data).encode('utf8')\nwith\ \ urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/stream/stop/all')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = __REQUEST_BODY__\nres = http.post(uri, data.to_json, headers)\nputs res.body" /api/stream/reprioritize: post: tags: - Stream summary: Reprioritize an active stream description: "Update stream priority specified in token and restart stream to re-assign priority.\n\n Use [List Tokens\ \ By Name](#operation/PublishTokenV1_ListTokensByName) and filter by `StreamName` to identify the tokenId associated\ \ with the target stream." operationId: Stream_ReprioritizeStream requestBody: x-name: request content: application/json: schema: $ref: '#/components/schemas/ReprioritizeStreamRequest' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseOfReprioritizeStreamResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/stream/reprioritize \\\n -X POST -d '{\n \"tokenId\":0\n \"updatePriority\"\ :100\n}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/stream/reprioritize\";\n\n\ var data = {\n \"tokenId\":0\n \"updatePriority\":100\n};\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n\ \ Encoding.UTF8,\n \"application/json\");\nvar response = await client.PostAsync(url, httpContent);\nvar responseContent\ \ = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/stream/reprioritize\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ POST\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\n \"tokenId\":0\n \"updatePriority\":100\n}\");\nwr.close();\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/stream/reprioritize');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'POST';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\n \"tokenId\":0\n \ \ \"updatePriority\":100\n};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/stream/reprioritize';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret',\n 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\n\ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = {\n \ \ \"tokenId\":0\n \"updatePriority\":100\n};\ncurl_setopt($ch, CURLOPT_POST, TRUE);\ncurl_setopt($ch, CURLOPT_POSTFIELDS,\ \ json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/stream/reprioritize'\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'POST'\ndata = {\n \"tokenId\":0\n \"updatePriority\":100\n}\nreq.data =\ \ json.dumps(data).encode('utf8')\nwith urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/stream/reprioritize')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\n \"tokenId\":0\n \"updatePriority\":100\n}\nres = http.post(uri,\ \ data.to_json, headers)\nputs res.body" /api/subscribe_token/{tokenId}: get: tags: - SubscribeTokenV1 summary: Read Token description: Gets token specified by token id. operationId: SubscribeTokenV1_ReadToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseSubscribeTokenV1' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] name: new_label_name id: 75248 label: label_no_586 token: my-magic-token-82 addedOn: '2024-12-03T02:43:50Z' isActive: true streams: - streamName: master_stream isRegex: false - streamName: stream1 isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] regex: summary: regex value: status: success data: allowedCountries: [] deniedCountries: [] name: new_regex_token_name id: 69050 label: label_no_254 token: my-magic-token-57 addedOn: '2024-12-03T00:53:13Z' isActive: true streams: - streamName: Cooked or Cooking?? isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] expiring: summary: expiring value: status: success data: allowedCountries: [] deniedCountries: [] name: token that expires id: 74061 label: label_no_649 token: my-magic-token-17 addedOn: '2024-12-03T05:14:33Z' expiresOn: '2024-12-10T05:14:21Z' isActive: true streams: - streamName: temp stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: does not exist: summary: does not exist value: status: fail data: tokenId: 'No publish token with id: 99' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/subscribe_token/100" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/subscribe_token/100\";\n\n\ var response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/subscribe_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/subscribe_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/subscribe_token/100';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER,\ \ $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/subscribe_token/100'\nheaders = {\n 'Authorization':\ \ 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\nwith urllib.request.urlopen(req)\ \ as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/subscribe_token/100')\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl =\ \ true\n\nres = http.get(uri, headers)\nputs res.body" delete: tags: - SubscribeTokenV1 summary: Delete Token description: Deletes token specified by the token's ID. The Token ID can be found using the List Tokens API or in the API response of Create Token API. operationId: SubscribeTokenV1_DeleteToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/subscribe_token/100\ \ \\\n -X DELETE" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/subscribe_token/100\";\n\n\ var response = await client.DeleteAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/subscribe_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"DELETE\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/subscribe_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'DELETE';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/subscribe_token/100';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_HTTPHEADER,\ \ $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');\n\ $result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/subscribe_token/100'\nheaders = {\n 'Authorization':\ \ 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\nreq.method = 'DELETE'\nwith urllib.request.urlopen(req)\ \ as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/subscribe_token/100')\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl =\ \ true\n\nres = http.delete(uri, headers)\nputs res.body" put: tags: - SubscribeTokenV1 summary: Update Token description: Update token stream information as well as updates token itself. operationId: SubscribeTokenV1_UpdateToken parameters: - name: tokenId in: path required: true schema: type: integer x-position: 1 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateSubscribeTokenV1' examples: simple: summary: simple value: label: new_label_name refreshToken: true complex: summary: complex value: label: new_regex_token_name addTokenStreams: - streamName: newStream1 - streamName: special_regex_stream[0-9]+ isRegex: true removeTokenStreams: - container1/.+ required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseSubscribeTokenV1' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] name: new_label_name id: 2299 label: label_no_877 token: my-magic-token-19 addedOn: '2024-12-03T05:14:33Z' expiresOn: '2024-12-10T05:14:21Z' isActive: true streams: - streamName: temp stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] complex: summary: complex value: status: success data: allowedCountries: [] deniedCountries: [] name: new_regex_token_name id: 49580 label: label_no_889 token: my-magic-token-24 addedOn: '2024-12-03T05:14:33Z' expiresOn: '2024-12-10T05:14:21Z' isActive: true streams: - streamName: temp stream isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: token: No properties specified to update. default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) deprecated: true security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/subscribe_token/100 \\\n -X PUT -d '{\"label\": \"new_label_name\", \"refreshToken\"\ : true}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/subscribe_token/100\";\n\n\ var data = new { label = \"new_label_name\", refreshToken = true };\nvar httpContent = new StringContent(JsonConvert.SerializeObject(data),\n\ \ Encoding.UTF8,\n \"application/json\");\nvar response = await client.PutAsync(url, httpContent);\nvar responseContent\ \ = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/subscribe_token/100\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ PUT\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\\\"label\\\": \\\"new_label_name\\\", \\\"refreshToken\\\": true}\");\nwr.close();\n\nInputStreamReader sr = new\ \ InputStreamReader(conn.getInputStream());\nBufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer\ \ response = new StringBuffer();\nwhile ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\n\ System.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/subscribe_token/100');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'PUT';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\"label\": \"new_label_name\"\ , \"refreshToken\": true};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/subscribe_token/100';\n$headers = array(\n 'Authorization: Bearer\ \ your_api_secret',\n 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\n\ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = array(\"\ label\" => \"new_label_name\", \"refreshToken\" => TRUE );\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');\ncurl_setopt($ch,\ \ CURLOPT_POSTFIELDS, json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/subscribe_token/100'\nheaders\ \ = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'PUT'\ndata = {\"label\": \"new_label_name\", \"refreshToken\": True}\nreq.data\ \ = json.dumps(data).encode('utf8')\nwith urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/subscribe_token/100')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\"label\": \"new_label_name\", \"refreshToken\": true}\nres = http.put(uri,\ \ data.to_json, headers)\nputs res.body" /api/subscribe_token/list: get: tags: - SubscribeTokenV1 summary: List Tokens description: List all tokens with specific sorting and pagination. If response array is empty, you have reached the end of the list ordering. operationId: SubscribeTokenV1_ListTokens parameters: - name: sortBy in: query schema: default: Name nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy2' x-position: 1 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 2 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 3 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 4 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListSubscribeTokenV1' examples: list: summary: list value: status: success data: - allowedCountries: [] deniedCountries: [] name: cooler temp id: 52466 label: label_no_164 token: my-magic-token-93 addedOn: '2024-12-03T02:40:13Z' isActive: true streams: - streamName: cooked isRegex: false - streamName: newStream1 isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] - allowedCountries: [] deniedCountries: [] name: new_label_name id: 55019 label: label_no_361 token: my-magic-token-61 addedOn: '2024-12-03T02:43:50Z' isActive: true streams: - streamName: master_stream isRegex: false - streamName: stream1 isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] - allowedCountries: [] deniedCountries: [] name: new_regex_token_name id: 70660 label: label_no_553 token: my-magic-token-99 addedOn: '2024-12-03T00:53:13Z' isActive: true streams: - streamName: Cooked or Cooking?? isRegex: false - streamName: newStream1 isRegex: false - streamName: special_regex_stream[0-9]+ isRegex: true allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: errors: page: - A value for the 'page' parameter or property was not provided. itemsOnPage: - A value for the 'itemsOnPage' parameter or property was not provided. message: Validation errors default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/subscribe_token/list\ \ \\\n -G -d \"page=1&itemsOnPage=10\"" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/subscribe_token/list?page=1&itemsOnPage=10\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/subscribe_token/list?page=1&itemsOnPage=10\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/subscribe_token/list?page=1&itemsOnPage=10');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/subscribe_token/list?page=1&itemsOnPage=10';\n$headers = array(\n \ \ 'Authorization: Bearer your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch,\ \ CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/subscribe_token/list?page=1&itemsOnPage=10'\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/subscribe_token/list?page=1&itemsOnPage=10')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/subscribe_token/list_by_name: get: tags: - SubscribeTokenV1 summary: List Tokens By Name description: List all tokens with specific sorting and pagination that matches given token name or stream name. Tokens with wildcard stream names are excluded from the responses. If response array is empty, you have reached the end of the list ordering. operationId: SubscribeTokenV1_ListTokensByName parameters: - name: name in: query required: true schema: type: string nullable: true x-position: 1 - name: filterBy in: query schema: default: TokenOrStreamName nullable: true oneOf: - $ref: '#/components/schemas/ListFilterBy' x-position: 2 - name: sortBy in: query schema: default: Name nullable: true oneOf: - $ref: '#/components/schemas/ListSortBy2' x-position: 3 - name: page in: query required: true description: The index to start when paginating results. schema: type: integer format: int32 maximum: 2147483647.0 minimum: 1.0 x-position: 4 - name: itemsOnPage in: query required: true description: The number of results to include when paginating a large result set. schema: type: integer format: int32 maximum: 100.0 minimum: 1.0 x-position: 5 - name: isDescending in: query description: Change the direction of the default sort ordering. schema: type: boolean default: false x-position: 6 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseListSubscribeTokenV1' examples: list_by_name: summary: list_by_name value: status: success data: - allowedCountries: [] deniedCountries: [] name: another temp token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 43416 label: label_no_740 token: my-magic-token-85 addedOn: '2024-12-03T04:31:20Z' expiresOn: '2025-01-03T04:31:19Z' isActive: true streams: - streamName: temp stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 - allowedCountries: [] deniedCountries: [] name: temp token subscribeRequiresAuth: false record: false clip: false multisource: true enableThumbnails: false lowLatencyRtmp: true integrationId: None displaySrtPassphrase: false drm: false id: 92747 label: label_no_377 token: my-magic-token-89 addedOn: '2024-12-03T04:30:59Z' expiresOn: '2024-12-10T04:30:57Z' isActive: true streams: - streamName: myStreamName isRegex: false allowedOrigins: [] allowedIpAddresses: [] originCluster: '' effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] geoCascade: isEnabled: true clusters: - blr-1 - iad-1 - lon-1 - phx-1 - sgp-1 - syd-1 '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' examples: validation: summary: validation value: status: fail data: errors: name: - The Name field is required. page: - The field Page must be between 1 and 2147483647. filterBy: - The value ''Unknown'' is not valid for FilterBy. itemsOnPage: - The field ItemsOnPage must be between 1 and 100. message: Validation errors default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n https://api.millicast.com/api/subscribe_token/list_by_name\ \ \\\n -G -d \"page=1&itemsOnPage=10&name=temp\"" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ \nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/subscribe_token/list_by_name?page=1&itemsOnPage=10&name=temp\"\ ;\n\nvar response = await client.GetAsync(url);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/subscribe_token/list_by_name?page=1&itemsOnPage=10&name=temp\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestMethod(\"GET\");\n\nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\n\ BufferedReader br = new BufferedReader(sr);\nString inputLine;\nStringBuffer response = new StringBuffer();\nwhile\ \ ((inputLine = br.readLine()) != null)\n response.append(inputLine);\nbr.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/subscribe_token/list_by_name?page=1&itemsOnPage=10&name=temp');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret'\n }\n};\nopts['method'] = 'GET';let req = https.request(opts,\ \ (resp) => {\n let result = '';\n resp.on('data', (chunk) => result += chunk);\n resp.on('end', () => {\n \ \ console.log(result);\n });\n});\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/subscribe_token/list_by_name?page=1&itemsOnPage=10&name=temp';\n$headers\ \ = array(\n 'Authorization: Bearer your_api_secret'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\n\ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\n\ echo($result);" - lang: Python source: "import urllib.request\n\nurl = 'https://api.millicast.com/api/subscribe_token/list_by_name?page=1&itemsOnPage=10&name=temp'\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nreq = urllib.request.Request(url, headers=headers)\n\ with urllib.request.urlopen(req) as resp:\n result = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.millicast.com/api/subscribe_token/list_by_name?page=1&itemsOnPage=10&name=temp')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret'\n}\nhttp = Net::HTTP.new(uri.host, uri.port)\nhttp.use_ssl\ \ = true\n\nres = http.get(uri, headers)\nputs res.body" /api/subscribe_token: post: tags: - SubscribeTokenV1 summary: Create Token description: Creates new token given a label and associated stream name(s). Stream names are limited to 128 characters. operationId: SubscribeTokenV1_CreateToken requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/CreateSubscribeTokenV1' examples: simple: summary: simple value: label: simple_token streams: - streamName: stream1 isRegex: false regex: summary: regex value: label: regex_token streams: - streamName: container1/.+ isRegex: true - streamName: master_stream isRegex: false expiring: summary: expiring value: label: temp_token expires: 3600 streams: - streamName: temp_stream isRegex: false required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseSubscribeTokenV1' examples: simple: summary: simple value: status: success data: allowedCountries: [] deniedCountries: [] name: simple_token id: 3578 label: label_no_654 token: my-magic-token-23 addedOn: '2024-12-03T05:41:39.376369Z' isActive: true streams: - streamName: stream1 isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] regex: summary: regex value: status: success data: allowedCountries: [] deniedCountries: [] name: regex_token id: 75467 label: label_no_297 token: my-magic-token-81 addedOn: '2024-12-03T05:42:21.694342Z' isActive: true streams: - streamName: container1/.+ isRegex: true - streamName: master_stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] expiring: summary: expiring value: status: success data: allowedCountries: [] deniedCountries: [] name: temp_token id: 20925 label: label_no_210 token: my-magic-token-54 addedOn: '2024-12-03T05:43:29.173408Z' expiresOn: '2024-12-03T06:43:29.173408Z' isActive: true streams: - streamName: temp_stream isRegex: false allowedOrigins: [] allowedIpAddresses: [] effectiveSettings: originCluster: auto allowedCountries: [] deniedCountries: [] '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] x-codeSamples: - lang: curl source: "curl -H \"Authorization: Bearer your_api_secret\" \\\n -H \"Content-Type: application/json\" \\\n \ \ https://api.millicast.com/api/subscribe_token \\\n -d '{\"label\": \"simple_token\", \"streams\": [{\"streamName\"\ : \"stream1\"}]}'" - lang: .NET source: "// required namespaces\nusing System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\ using Newtonsoft.Json;\n\nvar client = new HttpClient();\nclient.DefaultRequestHeaders.Authorization = \n new AuthenticationHeaderValue(\n\ \ \"Bearer\",\n \"your_api_secret\");\nvar url = \"https://api.millicast.com/api/subscribe_token\";\n\nvar\ \ data = new { label = \"simple_token\", streams = new [] { new { streamName = \"stream1\" } }};\nvar httpContent\ \ = new StringContent(JsonConvert.SerializeObject(data),\n Encoding.UTF8,\n \"application/json\");\nvar response\ \ = await client.PostAsync(url, httpContent);\nvar responseContent = await response.Content.ReadAsStringAsync();\n\ Console.WriteLine(responseContent);" - lang: Java source: "// required imports\nimport java.io.BufferedReader;\nimport java.io.DataOutputStream;\nimport java.io.InputStreamReader;\n\ import java.net.HttpURLConnection;\nimport java.net.URL;\n\nURL url = new URL(\"https://api.millicast.com/api/subscribe_token\"\ );\nHttpURLConnection conn = (HttpURLConnection)url.openConnection();\nconn.setRequestProperty(\"Authorization\"\ , \"Bearer your_api_secret\");\nconn.setRequestProperty(\"Content-Type\", \"application/json\");\nconn.setRequestMethod(\"\ POST\");\n\nconn.setDoOutput(true);\nDataOutputStream wr = new DataOutputStream(conn.getOutputStream());\nwr.writeBytes(\"\ {\\\"label\\\": \\\"simple_token\\\", \\\"streams\\\": [{\\\"streamName\\\": \\\"stream1\\\"}]}\");\nwr.close();\n\ \nInputStreamReader sr = new InputStreamReader(conn.getInputStream());\nBufferedReader br = new BufferedReader(sr);\n\ String inputLine;\nStringBuffer response = new StringBuffer();\nwhile ((inputLine = br.readLine()) != null)\n response.append(inputLine);\n\ br.close();\nSystem.out.println(response);" - lang: Node source: "const https = require('https');\nconst URL = require('url');\n\nconst url = URL.parse('https://api.millicast.com/api/subscribe_token');\n\ const opts = {\n 'protocol': url.protocol,\n 'host': url.host,\n 'port': url.port,\n 'path': url.path,\n 'headers':\ \ {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n }\n};\nopts['method']\ \ = 'POST';let req = https.request(opts, (resp) => {\n let result = '';\n resp.on('data', (chunk) => result +=\ \ chunk);\n resp.on('end', () => {\n console.log(result);\n });\n});\nvar data = {\"label\": \"simple_token\"\ , \"streams\": [{\"streamName\": \"stream1\"}]};\nreq.write(JSON.stringify(data));\nreq.end();" - lang: PHP source: "$url = 'https://api.millicast.com/api/subscribe_token';\n$headers = array(\n 'Authorization: Bearer your_api_secret',\n\ \ 'Content-Type: application/json'\n);\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch,\ \ CURLOPT_HTTPHEADER, $headers);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$data = array(\"label\" => \"\ simple_token\", \"streams\" => array( array(\"streamName\" => \"stream1\") ));\ncurl_setopt($ch, CURLOPT_POST, TRUE);\n\ curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\n$result = curl_exec($ch);\necho($result);" - lang: Python source: "import urllib.request\nimport json\n\nurl = 'https://api.millicast.com/api/subscribe_token'\nheaders = {\n\ \ 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nreq = urllib.request.Request(url,\ \ headers=headers)\nreq.method = 'POST'\ndata = {\"label\": \"simple_token\", \"streams\": [{\"streamName\": \"\ stream1\"}]}\nreq.data = json.dumps(data).encode('utf8')\nwith urllib.request.urlopen(req) as resp:\n result\ \ = resp.read()\nprint(result.decode('utf-8'))" - lang: Ruby source: "require 'net/http'\nrequire 'uri'\nrequire 'json'\n\nuri = URI('https://api.millicast.com/api/subscribe_token')\n\ headers = {\n 'Authorization': 'Bearer your_api_secret',\n 'Content-Type': 'application/json'\n}\nhttp = Net::HTTP.new(uri.host,\ \ uri.port)\nhttp.use_ssl = true\n\ndata = {\"label\": \"simple_token\", \"streams\": [{\"streamName\": \"stream1\"\ }]}\nres = http.post(uri, data.to_json, headers)\nputs res.body" /api/thumbnails: post: tags: - Thumbnails summary: Trigger Thumbnail description: Immediately generate a thumbnail for active streams. Requests are limited to 6 per minute per stream. operationId: Thumbnails_TriggerThumbnail requestBody: x-name: request content: application/json: schema: $ref: '#/components/schemas/TriggerThumbnailRequest' required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessResponseBoolean' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/webhooks/{webhookId}: get: tags: - Webhooks summary: Read Webhook description: Webhook url and details used on account. operationId: Webhooks_Get parameters: - name: webhookId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessWebhookModel' examples: standard: summary: standard value: status: success data: id: 100 url: https://example-webhook.domain.com/path/route secret: base64string isFeedHooks: true isMediaHooks: true isThumbnailHooks: true isTranscoderHooks: true isViewerConnectionHooks: true default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] put: tags: - Webhooks summary: Update Webhook description: Update webhook url, events to signal, or refresh signing secret. operationId: Webhooks_UpdateWebhook parameters: - name: webhookId in: path required: true schema: type: integer x-position: 1 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/UpdateWebhookModel' examples: standard: summary: standard value: url: https://new-domain.com/other isFeedHooks: true isMediaHooks: false isThumbnailHooks: true isTranscoderHooks: true isViewerConnectionHooks: true required: true x-position: 2 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessWebhookModel' examples: standard: summary: standard value: status: success data: id: 100 url: https://new-domain.com/other secret: base64string isFeedHooks: true isMediaHooks: false isThumbnailHooks: true isTranscoderHooks: false isViewerConnectionHooks: false '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] delete: tags: - Webhooks summary: Remove Webhook description: Removes all webhook data for account. operationId: Webhooks_RemoveWebhook parameters: - name: webhookId in: path required: true schema: type: integer x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessWebhookModel' examples: standard: summary: standard value: status: success data: true default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/webhooks/list: get: tags: - Webhooks summary: List Webhooks description: Iterative call to list webhooks on account. operationId: Webhooks_ListWebhooks parameters: - name: startingId in: query description: If null starts at beginning of list schema: type: integer nullable: true x-position: 1 - name: itemCount in: query description: How many items to return in current query schema: type: integer default: 10 nullable: true x-position: 2 - name: isDescending in: query description: Default order is ascending by order added schema: type: boolean default: false x-position: 3 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessListWebhooksModel' examples: standard: summary: standard value: status: success data: - id: 100 url: https://example-webhook.domain.com/path/route secret: base64string isFeedHooks: true isMediaHooks: false isThumbnailHooks: true isTranscoderHooks: true isViewerConnectionHooks: true - id: 101 url: https://example-webhook.otherdomain.com/ secret: base64string isFeedHooks: false isMediaHooks: true isThumbnailHooks: false isTranscoderHooks: true isViewerConnectionHooks: false default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/webhooks: post: tags: - Webhooks summary: Add Webhook description: Add new webhook on account. operationId: Webhooks_AddWebhook requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/AddWebhookModel' examples: standard: summary: standard value: url: https://example-webhook.domain.com/path/route isFeedHooks: true isMediaHooks: true isThumbnailHooks: true isTranscoderHooks: true isViewerConnectionHooks: true required: true x-position: 1 responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/SuccessWebhookModel' examples: standard: summary: standard value: status: success data: id: 100 url: https://example-webhook.domain.com/path/route secret: base64string isFeedHooks: true isMediaHooks: true isThumbnailHooks: true isTranscoderHooks: true isViewerConnectionHooks: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] /api/webhooks/test/{webhookType}: post: tags: - Webhooks summary: Test Webhook description: Sends a test event for the specified webhook type. operationId: Webhooks_TestWebhook parameters: - name: webhookType in: path required: true schema: $ref: '#/components/schemas/WebhookType' x-position: 1 requestBody: x-name: model content: application/json: schema: $ref: '#/components/schemas/TestWebhookModel' examples: standard: summary: standard value: streamName: myStreamName transcoderName: transcoderName required: true x-position: 2 responses: '200': description: Success content: application/json: schema: type: boolean examples: standard: summary: standard value: status: success data: true '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailResponse' default: description: Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: general: summary: general value: status: error message: simple error reason code: 500 data: additional: other data here (not actual key) security: - API_Secret: [] components: schemas: SuccessResponseOfMediaAssetExpirationResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/MediaAssetExpirationResponseModel' MediaAssetExpirationResponseModel: type: object additionalProperties: false properties: timelines: description: 'Account level expiration rule for timelines. If custom rule is not set, by default, timelines expire after 1 day. ' nullable: true oneOf: - $ref: '#/components/schemas/TimeSpanModel' recordings: description: "Account level expiration rule for recordings.Expiration countdown begin upon recording creation (i.e.\ \ when [Create Media Asset](#operation/MediaAssets_CreateMediaAsset) the recording is stopped).\n\n If custom\ \ rule is not set, recordings never expire and this field will be empty. " nullable: true oneOf: - $ref: '#/components/schemas/TimeSpanModel' clips: description: "Account level expiration rule for clips. Expiration countdown begin upon clip creation (i.e. when\ \ [Create Media Asset](#operation/MediaAssets_CreateMediaAsset) is invoke).\n\n If custom rule is not set, clips\ \ never expire by default and this field will be empty. Setting the `expiration` value on in the request body\ \ of [Create Media Asset](#operation/MediaAssets_CreateMediaAsset) overrides the rule configured here." nullable: true oneOf: - $ref: '#/components/schemas/TimeSpanModel' TimeSpanModel: type: object additionalProperties: false properties: days: type: integer format: int32 maximum: 365.0 minimum: 1.0 nullable: true ErrorResponse: type: object additionalProperties: false required: - status - message properties: status: type: string default: error minLength: 1 message: type: string minLength: 1 code: type: integer format: int32 nullable: true data: nullable: true UpdateMediaAssetExpirationModel: type: object additionalProperties: false properties: timelines: description: "Update account level expiration rule for timelines. Specified timespans must be non-zero.\n\n This\ \ limits the earliest permissible startTime when creating clips. Expiration rule updates take effect immediately,\ \ with then system cleaning up any timelines created prior to the expiration rule.\n\n By default, timelines expire\ \ after 1 day.\n\n Provide an empty json to clear settings." nullable: true oneOf: - $ref: '#/components/schemas/TimeSpanModel' recordings: description: "Update account level expiration rule for recordings. Specified timespans must be non-zero.\n\n Updates\ \ to the expiration rule are applied only to new recordings.\n\n By default, recordings do not expire unless this\ \ value is updated.\n\n Provide an empty json to clear settings." nullable: true oneOf: - $ref: '#/components/schemas/TimeSpanModel' clips: description: "Update account level expiration rule for clips. Specified timespans must be non-zero.\n\n Updates\ \ to the expiration rule are applied only to new clips. This account level default can be overridden for individual\ \ clips upon clip creation.\n\n By default, clip do not expire unless this value is updated or expiration is specified\ \ on creation.\n\n Provide an empty json to clear settings. " nullable: true oneOf: - $ref: '#/components/schemas/TimeSpanModel' SuccessResponseOfListOfStorageProfileResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/StorageProfileResponseModel' StorageProfileResponseModel: type: object additionalProperties: false properties: id: type: string description: The unique identifier of the storage profile. nullable: true name: type: string description: The name of the storage profile. nullable: true default: type: boolean description: Flag indicating whether this is the default storage profile. nullable: true type: description: The type of this storage profile. oneOf: - $ref: '#/components/schemas/MediaAssetStorageType' options: description: The options of this storage profile. nullable: true oneOf: - $ref: '#/components/schemas/StorageOptionsModel' MediaAssetStorageType: type: string description: '' x-enumNames: - Gcs - AwsS3 - DolbyStorage enum: - gcs - awsS3 - dolbyStorage StorageOptionsModel: type: object additionalProperties: false required: - bucketName properties: objectPrefix: type: string description: Optional. Prefix to object when stored in bucket i.e. `protocol`://`bucketName`/`objectPrefix`/`objectName.ext`. `objectName` is either defined by a system assigned GUID or the user-specified `clipName`. maxLength: 1000 minLength: 0 nullable: true bucketName: type: string description: Name of bucket to upload clips to. Please ensure Dolby.io's service account is granted access. minLength: 1 bucketRegion: type: string description: 'Region of the specified bucket. Required when using storageType AwsS3 ' maxLength: 32 minLength: 1 nullable: true ListStorageProfilesSortBy: type: string description: '' x-enumNames: - Name enum: - name SuccessResponseOfStorageProfileResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/StorageProfileResponseModel' FailResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: fail minLength: 1 data: {} CreateStorageProfileModel: type: object additionalProperties: false required: - type - options properties: name: type: string description: Provide a label for your storage profile maxLength: 256 minLength: 1 nullable: true default: type: boolean description: Set this as the default storage profile for your account. If set to true this will replace the previous default profile. default: false nullable: true type: description: 'Storage provider type. One of the following: * AwsS3 - Amazon S3 * Gcs - Google Cloud Storage' oneOf: - $ref: '#/components/schemas/MediaAssetStorageType' options: description: The storage options. oneOf: - $ref: '#/components/schemas/StorageOptionsModel' SuccessResponseOfBoolean: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: boolean UpdateStorageProfileModel: type: object additionalProperties: false properties: name: type: string description: Update the label for your storage profile maxLength: 256 minLength: 0 nullable: true default: type: boolean description: Set this as the default storage profile for your account. If set to true this will replace the previous default profile. nullable: true type: description: 'Storage provider type. One of the following: * AwsS3 - Amazon S3 * Gcs - Google Cloud Storage' nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetStorageType' options: description: The storage options. nullable: true oneOf: - $ref: '#/components/schemas/UpdateStorageOptionsModel' UpdateStorageOptionsModel: type: object additionalProperties: false properties: objectPrefix: type: string description: Optional. Prefix to object when stored in bucket i.e. `protocol`://`bucketName`/`objectPrefix`/`objectName.ext`. Ignored when using Dolby.io's storage buckets. `objectName` is either defined by a system assigned GUID or the user-specified `clipName`. maxLength: 1000 minLength: 0 nullable: true bucketName: type: string description: Name of bucket to upload clips to. Please ensure Dolby.io's service account is granted access. nullable: true bucketRegion: type: string description: Region of the specified bucket if using storage provider awsS3 maxLength: 32 minLength: 1 nullable: true SuccessResponseOfSuccessValidateRecordStorageResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/SuccessValidateRecordStorageResponse' SuccessValidateRecordStorageResponse: type: object additionalProperties: false properties: id: type: string nullable: true storage: nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetStorageResponseModel' MediaAssetStorageResponseModel: type: object additionalProperties: false properties: type: description: Storage provider type oneOf: - $ref: '#/components/schemas/MediaAssetStorageType' path: type: string description: 'Path to clip storage location. Available only for external storage configurations. ' nullable: true MediaAssetStorageModel: type: object additionalProperties: false properties: profileId: type: string description: Optional. Provide the id of a storage profile. Mutually exclusive with Type. nullable: true type: description: 'Optional. Use to indicate the storage provider type for a one-off storage configuration. Mutually exclusive with ProfileId. Storage provider type. One of the following: * AwsS3 - Amazon S3 * Gcs - Google Cloud Storage * DolbyStorage - Dolby.io''s storage buckets. Call Read Media Asset to retrieve the clip file.' nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetStorageType' options: description: 'May be used in the following ways:
1. Optional. Override parameters of a storage profile specified via ProfileId
2. Required. Set parameters for a one-off storage configuration when Type is provided
3. Optional. Override parameters of the default storage profile if neither ProfileId or Type are provided' nullable: true oneOf: - $ref: '#/components/schemas/UpdateStorageOptionsModel' SuccessResponseOfAccountDistributionModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/AccountDistributionModel' AccountDistributionModel: type: object additionalProperties: false required: - geoCascade properties: geoCascade: description: Controls if and which geographic clusters are included for regional content delivery oneOf: - $ref: '#/components/schemas/GeoCascadeModel' GeoCascadeModel: type: object additionalProperties: false required: - isEnabled properties: isEnabled: type: boolean description: Enable or Disable geo cascade. clusters: type: array description: List of cluster IDs to geo cascade publish stream. List cannot be empty when IsEnabled is true. List is ignored when IsEnabled is set to false. Defaults to '["all"]' if unset. nullable: true items: type: string SuccessAccountGeoRestrictions: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/AccountGeoModel' AccountGeoModel: type: object additionalProperties: false properties: allowedCountries: type: array items: type: string deniedCountries: type: array items: type: string UpdateAccountGeoModel: type: object additionalProperties: false properties: updateAllowedCountries: type: array description: Set the list of permitted countries as the account default when creating new tokens. List must be less than 768 characters. nullable: true items: type: string updateDeniedCountries: type: array description: Set the list of excluded countries as the account default when creating new tokens. List must be less than 768 characters. nullable: true items: type: string SuccessResponseOfAccountInfoResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/AccountInfoResponseModel' AccountInfoResponseModel: type: object additionalProperties: false properties: accountId: type: string nullable: true SuccessResponseOfListOfMediaAssetResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/MediaAssetResponseModel' MediaAssetResponseModel: type: object additionalProperties: false properties: id: type: string description: Media Asset Id nullable: true type: description: The type of the media asset. oneOf: - $ref: '#/components/schemas/MediaAssetType' feed: description: Information about the feed this media asset was generated from. nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetFeedSelectionModel' startTime: type: string description: The time when the media asset started. format: date stopTime: type: string description: The time when the media asset ended. format: date nullable: true name: type: string description: The name of the media asset. nullable: true storage: description: The storage information. nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetStorageResponseModel' status: description: The current status of the media asset. oneOf: - $ref: '#/components/schemas/MediaAssetStatus' error: type: string description: The eventual error message. nullable: true created: type: string description: The creation time of this media asset. format: date nullable: true expiration: type: string description: The expiration time of this media asset. format: date nullable: true removed: type: string description: The time this media asset was removed. format: date nullable: true metadata: description: The media asset metadata. nullable: true oneOf: - $ref: '#/components/schemas/RecordMetadata' mediaDistributionId: type: string description: The identifier of the media distribution. nullable: true customPath: type: string description: The eventual custom path. nullable: true MediaAssetType: type: string description: '' x-enumNames: - Recording - Clip - StorageValidation - Timeline - Vod enum: - recording - clip - storageValidation - timeline - vod MediaAssetFeedSelectionModel: type: object additionalProperties: false properties: tokenId: type: integer description: The identifier of the token. nullable: true streamName: type: string description: The stream name. nullable: true sourceId: type: string description: The source ID. nullable: true simulcastId: type: string description: The simulcast Id. nullable: true priority: type: integer description: The feed priority. format: int32 nullable: true channelId: type: string description: The identifier of the channel. nullable: true MediaAssetStatus: type: string description: '' x-enumNames: - Processing - Complete - Error - Deleting - Deleted enum: - processing - complete - error - deleting - deleted RecordMetadata: type: object additionalProperties: false required: - tracks - thumbnails properties: format: type: string sizes: type: object nullable: true additionalProperties: type: integer format: uint64 duration: type: integer description: Duration of this asset, in seconds. tracks: type: array items: $ref: '#/components/schemas/RecordMediaTrack' thumbnails: type: array description: The list of thumbnails. items: type: string fileCount: type: integer description: The number of files. nullable: true RecordMediaTrack: type: object additionalProperties: false properties: type: type: string codec: type: string bitrate: type: integer width: type: integer format: int32 nullable: true height: type: integer format: int32 nullable: true framerate: type: integer format: int32 nullable: true channels: type: integer format: int32 nullable: true samplerate: type: integer format: int64 nullable: true CreateMediaAssetModel: type: object additionalProperties: false required: - startTime properties: streamName: type: string description: Name of stream to create live clip. nullable: true tokenId: type: integer description: Publish token of stream. nullable: true sourceId: type: string description: 'Optional. ' nullable: true simulcastId: type: string description: Optional.

If this field is omitted, a media asset will be created per available simulcastId

Otherwise, set the field to `null` to select a source published without a specified simulcastId.

Provide an empty string to select a source published using RTMP/SRT paths where the simulcastId parameter was specified without a defined value as shown in [Multi-source RTMP](https://optiview.dolby.com/docs/millicast/broadcast/multi-source-broadcasting/#multi-source-rtmp), i.e. `?simulcastId&...`.

This field can also be set to any standard string. nullable: true priority: type: integer description: Optional. Priority level of stream(s) to clip. By default the stream with highest priority for a given sourceId will be chosen to clip. format: int32 nullable: true startTime: type: string description: Start time of live recording clip. Must be provided to disambiguate between discontinuous streams. Media assets returned will start on or after specified time, depending on the availability of the content requested. Time must be set in the past.

ISO 8601 format should be used (eg 2020-01-01T00:00:00Z), all times are expected to be UTC. format: date minLength: 1 stopTime: type: string description: Optional. Stop time of live recording clip. If not provided, defaults to the current time. Time must be set in the past.

ISO 8601 format should be used (eg 2020-01-01T00:00:00Z), all times are expected to be UTC. format: date nullable: true name: type: string description: 'Optional. Provide a label for the live recording clip. If not specified, this value will be assigned.

`name` must meet the naming requirements recommended by [Google Cloud Storage](https://cloud.google.com/storage/docs/objects#naming) and [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines).

If a media asset is uploaded to third party storage, the `name` will be used as the name of the uploaded object. To avoid failed uploads the name should be either unique to avoid conflict with existing objects in the upload location or if overwriting existing objects is desired, appropriate permissions must be granted: [DELETE permissions must be granted to us](https://optiview.dolby.com/docs/millicast/distribution/stream-recordings/how-to-setup-media-storage/#how-to-grant-authorization-to-a-bucket).

`name` may not contain carriage return or line feed characters, or any of the characters #, [, ], *, ?, :, ", “, ”, <, >, |, /, {, }, ^, %, `, ~.' maxLength: 256 minLength: 1 nullable: true storage: description: 'Optional. Provide storage configurations for clip. If unspecified your default storage profile will be used, or our storage buckets if the former does not exist.

If specifying user-defined storage, please refer to setup instructions to grant us upload access to buckets and ensure that configurations have been tested using [Test Storage Configuration](#tag/RecordFileTasks/operation/Account_ValidateStorageProfile). ' nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetStorageModel' expiration: type: string description: 'Optional. Provide expiry time for live recording clip.

If not specified, file will be retained until removed via [Delete Files](#operation/RecordFilesV2_DeleteRecordFileItems).

Has no effect when files are uploaded to user-specified storage locations. ' format: date nullable: true channelId: type: string description: Optional. Id of the channel to create live clip. nullable: true targetFormat: description: Optional. The target format. default: Mp4 nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetTargetFormat' mediaDistributionId: type: string description: ID of the media distribution used to authenticate viewing of this media asset. nullable: true customPath: type: string description: Customize the download url path. Typically the download url has format `https://///`. The customPath replaces the mediaAssetId so that the url looks like `https://///`. The customPath must be unique maxLength: 512 minLength: 1 nullable: true MediaAssetTargetFormat: type: string description: '' x-enumNames: - Mp4 - Hls enum: - mp4 - hls SuccessResponseOfUploadCredentialsResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/UploadCredentialsResponseModel' UploadCredentialsResponseModel: type: object additionalProperties: false properties: accessKeyId: type: string description: The AWS Access Key Id. nullable: true secretAccessKey: type: string description: The AWS Access Key Secret. nullable: true sessionToken: type: string description: The AWS session token. nullable: true expiration: type: string description: Credentials expire within 1 hr by default. Please upload and register media assets before expiry. nullable: true path: type: string description: Path to upload media asset contents. Path is in the form of `s3:////` nullable: true bucketName: type: string description: S3 bucket to which content can be uploaded to nullable: true objectPrefix: type: string description: Prefix of S3 locaton to which content can be uploaded to nullable: true SuccessResponseOfMediaAssetResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/MediaAssetResponseModel' RegisterMediaAssetModel: type: object additionalProperties: false required: - objectPrefix properties: objectPrefix: type: string description: 'Provide the prefix to the location where files have been uploaded. We will inspect our internal storage for this `objectPrefix` and if we find:
* An exact match - we will obtain and serve a copy of the single file and ignore any prefix matches, useful for progressive download files
* A prefix match - we will obtain and serve a copy of all the content under the specified prefix (i.e. files under `s3:////`), useful for multi-asset files such as HLS' minLength: 1 entrypoint: type: string description: Optional. Specify the entry point to the media using its filename relative to the `objectPrefix` e.g. main.m3u8, which is helpful for multi-asset files such as HLS. This ensures that the url

returned by our service returns a direct link to this file within the multi-file asset.
If an object with key `s3:////` is not found, then the registration process will fail. nullable: true expiration: type: string description: Optional. If not specified, media asset never expires.

ISO 8601 format should be used (eg 2020-01-01T00:00:00Z), all times are expected to be UTC. format: date nullable: true name: type: string description: Optional. Provide a label for the media asset. maxLength: 256 minLength: 1 nullable: true tags: type: array description: Optional. Assign a list of tags to media asset for filtering. maxItems: 10 nullable: true items: type: string mediaDistributionId: type: string description: 'ID of the media distribution used to authenticate viewing of this media asset.
Media distributions are the mechanism for controlling whether a media asset is publicly viewable
or if they are protected behind a token.

Note: once a distribution is assigned, it can only be updated on an asset by asset basis and not in a
bulk operation.
' nullable: true customPath: type: string description: Customize a portion of the download url path.
As an example assets are returned in a url such as `https://cdn.optiview.dolby.com/vod///`.
`customPath` will replace `mediaAssetId` in order for a more predictable path. maxLength: 512 minLength: 1 nullable: true SuccessResponseOfListOfDownloadMediaAssetModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/DownloadMediaAssetModel' DownloadMediaAssetModel: type: object additionalProperties: false properties: id: type: string description: Media Asset Id nullable: true type: description: The type of the media asset. oneOf: - $ref: '#/components/schemas/MediaAssetType' feed: description: Information about the feed this media asset was generated from. nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetFeedSelectionModel' startTime: type: string description: The time when the media asset started. format: date stopTime: type: string description: The time when the media asset ended. format: date nullable: true name: type: string description: The name of the media asset. nullable: true storage: description: The storage information. nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetStorageResponseModel' status: description: The current status of the media asset. oneOf: - $ref: '#/components/schemas/MediaAssetStatus' error: type: string description: The eventual error message. nullable: true created: type: string description: The creation time of this media asset. format: date nullable: true expiration: type: string description: The expiration time of this media asset. format: date nullable: true removed: type: string description: The time this media asset was removed. format: date nullable: true metadata: description: The media asset metadata. nullable: true oneOf: - $ref: '#/components/schemas/RecordMetadata' mediaDistributionId: type: string description: The identifier of the media distribution. nullable: true customPath: type: string description: The eventual custom path. nullable: true download: nullable: true oneOf: - $ref: '#/components/schemas/RecordDownloadUrl' RecordDownloadUrl: type: object additionalProperties: false properties: downloadUrl: type: string nullable: true url: type: string nullable: true downloadExpiresOn: type: string format: date-time nullable: true ListMediaAssetSortBy: type: string description: '' x-enumNames: - StartTime - StopTime - StreamName - TokenId - Created enum: - startTime - stopTime - streamName - tokenId - created SuccessResponseOfDownloadMediaAssetModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/DownloadMediaAssetModel' SuccessResponseOfDeleteMediaAssetsResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/DeleteMediaAssetsResponse' DeleteMediaAssetsResponse: type: object additionalProperties: false properties: itemsDeleted: type: integer description: The number of items deleted. format: int32 errors: type: array description: A list of errors. nullable: true items: $ref: '#/components/schemas/MediaAssetDeletionError' MediaAssetDeletionError: type: object additionalProperties: false properties: id: type: string description: The identifier of the media asset. nullable: true error: type: string description: The error message. nullable: true UpdateMediaAssetModel: type: object additionalProperties: false properties: mediaDistributionId: type: string description: ID of the media distribution used to authenticate viewing of this media asset. Updates may take up to an hour to take effect nullable: true customPath: type: string description: Customize a portion of the download url path.
As an example assets are returned in a url such as `https://cdn.optiview.dolby.com/vod///`.
`customPath` will replace `mediaAssetId` in order for a more predictable path. maxLength: 512 minLength: 1 nullable: true SuccessListMediaAssetModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/MediaAssetResponseModel2' MediaAssetResponseModel2: type: object additionalProperties: false properties: id: type: string nullable: true status: $ref: '#/components/schemas/MediaAssetStatus2' sourceId: type: string nullable: true simulcastId: type: string nullable: true priority: type: integer format: int32 nullable: true itemType: $ref: '#/components/schemas/MediaAssetType2' clipMetadata: description: Metadata if recording is a clip nullable: true oneOf: - $ref: '#/components/schemas/ClipRequestResponseMinimalModel' tokenId: type: integer nullable: true streamName: type: string recordedOn: type: string format: date-time nullable: true stoppedOn: type: string format: date-time nullable: true removedOn: type: string format: date-time nullable: true metadata: nullable: true oneOf: - $ref: '#/components/schemas/RecordMetadata' error: type: string nullable: true storage: nullable: true oneOf: - $ref: '#/components/schemas/RecordFileStorageResponseModel' MediaAssetStatus2: type: string description: '' x-enumNames: - Started - Transcode - InProgress - Deleted - Invalid - Expiring - Complete - Deleting - Error enum: - Started - Transcode - InProgress - Deleted - Invalid - Expiring - Complete - Deleting - Error MediaAssetType2: type: string description: '' x-enumNames: - FullRecording - Clip - StorageValidation - Timeline - Vod enum: - FullRecording - Clip - StorageValidation - Timeline - Vod ClipRequestResponseMinimalModel: type: object additionalProperties: false properties: clipName: type: string description: Clip label if assigned by user nullable: true clipRequestId: type: string description: Id associated with clipping request startTime: type: string format: date nullable: true stopTime: type: string format: date nullable: true expiresOn: type: string format: date nullable: true RecordFileStorageResponseModel: type: object additionalProperties: false properties: storageType: description: Storage provider type oneOf: - $ref: '#/components/schemas/RecordFileUploadStorageType' storagePath: type: string description: 'Path to clip storage location. Available only for external storage configurations. ' nullable: true RecordFileUploadStorageType: type: string description: '' x-enumNames: - Default - Gcs - AwsS3 - DolbyStorage enum: - Default - Gcs - AwsS3 - DolbyStorage ListMediaAssetSortBy2: type: string description: '' x-enumNames: - RecordedOn - StoppedOn - StreamName - TokenId - Token enum: - RecordedOn - StoppedOn - StreamName - TokenId - Token FilterByMediaAssetStatus: type: string description: '' x-enumFlags: true x-enumNames: - Started - Transcode - InProgress - RawError - Invalid - Complete - Deleting - Error enum: - Started - Transcode - InProgress - RawError - Invalid - Complete - Deleting - Error ListMediaAssetFilterParameters: type: object additionalProperties: false properties: tokenId: type: integer description: Optional. Filter by tokenId. nullable: true streamName: type: string description: Optional. Filter by streamName. nullable: true clipRequestId: type: string description: 'Optional. Filter by clipRequestId. ' nullable: true itemType: description: Optional. Specify full recording or clip. nullable: true oneOf: - $ref: '#/components/schemas/MediaAssetType2' clipName: type: string description: 'Optional. Filter by clipName. ' nullable: true SuccessResponseOfDownloadMediaAssetModel2: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/DownloadMediaAssetModel2' DownloadMediaAssetModel2: type: object additionalProperties: false properties: sourceId: type: string nullable: true simulcastId: type: string nullable: true priority: type: integer format: int32 nullable: true itemType: $ref: '#/components/schemas/MediaAssetType2' clipMetadata: description: Metadata if recording is a clip nullable: true oneOf: - $ref: '#/components/schemas/ClipRequestResponseMinimalModel' tokenId: type: integer nullable: true streamName: type: string recordedOn: type: string format: date-time nullable: true stoppedOn: type: string format: date-time nullable: true removedOn: type: string format: date-time nullable: true metadata: nullable: true oneOf: - $ref: '#/components/schemas/RecordMetadata' error: type: string nullable: true storage: nullable: true oneOf: - $ref: '#/components/schemas/RecordFileStorageResponseModel' id: type: string nullable: true status: $ref: '#/components/schemas/MediaAssetStatus2' download: nullable: true oneOf: - $ref: '#/components/schemas/RecordDownloadUrl2' RecordDownloadUrl2: type: object additionalProperties: false properties: downloadUrl: type: string downloadExpiresOn: type: string format: date-time nullable: true SuccessResponseOfDeleteMediaAssetsResponse2: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/DeleteMediaAssetsResponse2' DeleteMediaAssetsResponse2: type: object additionalProperties: false properties: errors: type: array nullable: true items: $ref: '#/components/schemas/MediaAssetDeletionError2' MediaAssetDeletionError2: type: object additionalProperties: false properties: mediaAssetId: type: string nullable: true error: type: string nullable: true RemoveMediaAssetsModel: type: object additionalProperties: false required: - mediaAssetIds properties: mediaAssetIds: type: array maxItems: 1000 minItems: 1 items: type: string SuccessResponsePublishTokenV2: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/PublishTokenResponseV2' PublishTokenResponseV2: type: object additionalProperties: false properties: subscribeRequiresAuth: type: boolean record: type: boolean clip: type: boolean multisource: type: boolean enableThumbnails: type: boolean lowLatencyRtmp: type: boolean enableUTCInsertion: type: boolean nullable: true integrationId: $ref: '#/components/schemas/IntegrationIds' displaySrtPassphrase: type: boolean srtPassphrase: type: string nullable: true geoCascade: nullable: true oneOf: - $ref: '#/components/schemas/GeoCascadeModel2' restream: type: array nullable: true items: $ref: '#/components/schemas/RestreamModel' drm: type: boolean priority: type: integer format: int32 nullable: true encoderProfileId: type: string nullable: true id: type: integer label: type: string description: Friendly name of token nullable: true token: type: string description: Actual token nullable: true addedOn: type: string format: date-time expiresOn: type: string format: date-time nullable: true isActive: type: boolean streams: type: array nullable: true items: $ref: '#/components/schemas/TokenStreamNameViewModel' allowedOrigins: type: array nullable: true items: type: string allowedIpAddresses: type: array nullable: true items: type: string bindIpsOnUsage: type: integer nullable: true originCluster: type: string nullable: true effectiveSettings: description: Token effective settings for properties that use account default settings. Value for each property will either be token or account level settings. nullable: true oneOf: - $ref: '#/components/schemas/TokenEffectiveSettings' allowedCountries: type: array description: Specify the ISO 3166-1 two letter country codes to explicitly *allow* end-users to view from. If the end-user's location *does not* match any of the specified countries they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of AllowedCountries or DeniedCountries should be specified. items: type: string deniedCountries: type: array description: Specify the ISO 3166-1 two letter country codes to explicitly *deny* end-users to view from. If the end-user's location *does* match any of the specified countries they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of AllowedCountries or DeniedCountries should be specified. items: type: string IntegrationIds: type: string description: '' x-enumNames: - None - Maestro - Passthru - Internal enum: - None - Maestro - Passthru - Internal GeoCascadeModel2: type: object additionalProperties: false properties: isEnabled: type: boolean description: Enable or Disable geo cascade. Defaults to Account settings if unset. nullable: true clusters: type: array description: List of cluster IDs to geo cascade publish stream. List cannot be empty when IsEnabled is true. List is ignored when IsEnabled is set to false. Defaults to '["all"]' if unset. nullable: true items: type: string RestreamModel: type: object additionalProperties: false required: - key properties: url: type: string description: The endpoint to restream media maxLength: 2048 minLength: 1 nullable: true key: type: string description: Secret key for restreaming endpoint maxLength: 512 minLength: 5 label: type: string description: Restream config label maxLength: 2048 minLength: 0 nullable: true enabled: type: boolean description: Enable or disable restream endpoint nullable: true TokenStreamNameViewModel: type: object additionalProperties: false required: - streamName properties: streamName: type: string description: Name of the stream this token can access. maxLength: 128 minLength: 1 isRegex: type: boolean description: Set to true if the name of the stream is a regular expression. default: false TokenEffectiveSettings: type: object additionalProperties: false properties: originCluster: type: string nullable: true allowedCountries: type: array nullable: true items: type: string deniedCountries: type: array nullable: true items: type: string geoCascade: nullable: true oneOf: - $ref: '#/components/schemas/GeoCascadeModel2' enableUTCInsertion: type: boolean nullable: true UpdatePublishTokenV2: type: object additionalProperties: false properties: subscribeRequiresAuth: type: boolean nullable: true record: type: boolean nullable: true clip: type: boolean nullable: true multisource: type: boolean nullable: true lowLatencyRtmp: type: boolean nullable: true enableUTCInsertion: type: boolean description: Optional. Set to true to insert UTC timestamps into the published stream. Set to null to clear value and use the account related setting. nullable: true enableThumbnails: type: boolean nullable: true displaySrtPassphrase: type: boolean nullable: true geoCascade: nullable: true oneOf: - $ref: '#/components/schemas/GeoCascadeModel2' restream: type: array description: List of endpoints to restream media. maxItems: 10 nullable: true items: $ref: '#/components/schemas/RestreamModel' drm: type: boolean description: Optional. Set to true to mark as a DRM stream. nullable: true priority: type: integer description: Optional. Set default priority value for streams. Set to null to clear value. format: int32 nullable: true encoderProfileId: type: string description: Optional. Encoder profile ID to be used for the stream. Set to null to clear value. nullable: true label: type: string maxLength: 128 nullable: true isActive: type: boolean nullable: true addTokenStreams: type: array nullable: true items: $ref: '#/components/schemas/TokenStreamNameViewModel' removeTokenStreams: type: array nullable: true items: type: string allowedOrigins: type: array nullable: true items: type: string allowedIpAddresses: type: array nullable: true items: type: string bindIpsOnUsage: type: integer maximum: 4294967295.0 minimum: 0.0 nullable: true originCluster: type: string nullable: true refreshToken: type: boolean description: Generate new unique token, invalidating previous token. nullable: true allowedCountries: type: array description: Optional. Specify the ISO 3166-1 two letter country codes to explicitly *allow* end-users to view from. If the end-user's location *does not* match any of the specified countries they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of AllowedCountries or DeniedCountries should be specified. nullable: true items: type: string deniedCountries: type: array description: Optional. Specify the ISO 3166-1 two letter country codes to explicitly *deny* end-users to view from. If the end-user's location *does* match any of the specified countries they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of AllowedCountries or DeniedCountries should be specified. nullable: true items: type: string SuccessResponseSubscribeTokenV2: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/SubscribeTokenResponseV2' SubscribeTokenResponseV2: type: object additionalProperties: false properties: tracking: description: Tracking information nullable: true oneOf: - $ref: '#/components/schemas/TrackingInformation' id: type: integer label: type: string description: Friendly name of token nullable: true token: type: string description: Actual token nullable: true addedOn: type: string format: date-time expiresOn: type: string format: date-time nullable: true isActive: type: boolean streams: type: array nullable: true items: $ref: '#/components/schemas/TokenStreamNameViewModel' allowedOrigins: type: array nullable: true items: type: string allowedIpAddresses: type: array nullable: true items: type: string bindIpsOnUsage: type: integer nullable: true originCluster: type: string nullable: true effectiveSettings: description: Token effective settings for properties that use account default settings. Value for each property will either be token or account level settings. nullable: true oneOf: - $ref: '#/components/schemas/TokenEffectiveSettings' allowedCountries: type: array description: The list of allowed countries. items: type: string deniedCountries: type: array description: The list of denied countries. items: type: string TrackingInformation: type: object additionalProperties: false properties: trackingId: type: string description: Optional. Tracking identifier for Stream Syndication. maxLength: 128 nullable: true UpdateSubscribeTokenV2: type: object additionalProperties: false properties: label: type: string maxLength: 128 nullable: true isActive: type: boolean nullable: true addTokenStreams: type: array nullable: true items: $ref: '#/components/schemas/TokenStreamNameViewModel' removeTokenStreams: type: array nullable: true items: type: string allowedOrigins: type: array nullable: true items: type: string allowedIpAddresses: type: array nullable: true items: type: string bindIpsOnUsage: type: integer maximum: 4294967295.0 minimum: 0.0 nullable: true originCluster: type: string nullable: true refreshToken: type: boolean description: Generate new unique token, invalidating previous token. nullable: true allowedCountries: type: array description: The list of allowed countries. nullable: true items: type: string deniedCountries: type: array description: The list of denied countries. nullable: true items: type: string SuccessAccountBandwidthTotalAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/BandwidthTotalAnalyticModel' BandwidthTotalAnalyticModel: type: object additionalProperties: false properties: bytesOut: type: integer description: Total bandwidth (in bytes) egress for all traffic types. format: int64 bytesIn: type: integer description: Total bandwidth (in bytes) ingress for all traffic types. format: int64 standardStream: description: Traffic attributed to standard streaming broadcasts and playback. nullable: true oneOf: - $ref: '#/components/schemas/BaseBandwidthModel' restream: description: Traffic attributed to use of re-streaming across multiple platforms. nullable: true oneOf: - $ref: '#/components/schemas/UsageWithDurationModel' geoCascade: description: Traffic attributed to use of geo-cascading across multiple regions. nullable: true oneOf: - $ref: '#/components/schemas/BaseBandwidthModel' BaseBandwidthModel: type: object additionalProperties: false properties: bytesOut: type: integer description: Output bytes. format: int64 bytesIn: type: integer description: Input bytes. format: int64 UsageWithDurationModel: type: object additionalProperties: false properties: bytesOut: type: integer description: Output bytes. format: int64 bytesIn: type: integer description: Input bytes. format: int64 secondsUsed: type: integer description: Usage duration in seconds. format: int64 SuccessAccountBandwidthSeriesAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/BandwidthSeriesAnalyticModel' BandwidthSeriesAnalyticModel: type: object additionalProperties: false properties: bandwidth: type: object description: Total bandwidth (in bytes) egress and ingress for all traffic types. additionalProperties: $ref: '#/components/schemas/BaseBandwidthModel' x-additionalPropertiesName: Time standardStream: type: object description: 'Traffic attributed to standard streaming broadcasts and playback. ' additionalProperties: $ref: '#/components/schemas/BaseBandwidthModel' x-additionalPropertiesName: Time restream: type: object description: Traffic attributed to use of re-streaming across multiple platforms. nullable: true additionalProperties: $ref: '#/components/schemas/UsageWithDurationModel' x-additionalPropertiesName: Time geoCascade: type: object description: Traffic attributed to use of geo-cascading across multiple regions. nullable: true additionalProperties: $ref: '#/components/schemas/BaseBandwidthModel' x-additionalPropertiesName: Time AnalyticsResolution: type: string description: '' x-enumNames: - Hour - Day - Month enum: - Hour - Day - Month SuccessAccountGeoTotalAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/GeoTotalAnalyticModel' GeoTotalAnalyticModel: type: object additionalProperties: false properties: geo: type: object additionalProperties: $ref: '#/components/schemas/BaseStreamDataModel' x-additionalPropertiesName: CountryCode BaseStreamDataModel: type: object additionalProperties: false properties: bytesOut: type: integer description: Output bytes. format: int64 bytesIn: type: integer description: Input bytes. format: int64 publishDuration: type: integer format: int64 viewDuration: type: integer format: int64 SuccessAccountGeoSeriesAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/AccountGeoSeriesAnalyticModel' AccountGeoSeriesAnalyticModel: type: object additionalProperties: false properties: geo: type: object additionalProperties: type: object additionalProperties: $ref: '#/components/schemas/BaseStreamDataWithViewsModel' x-additionalPropertiesName: CountryCode x-additionalPropertiesName: Time BaseStreamDataWithViewsModel: type: object additionalProperties: false properties: publishDuration: type: integer format: int64 viewDuration: type: integer format: int64 bytesOut: type: integer description: Output bytes. format: int64 bytesIn: type: integer description: Input bytes. format: int64 publishes: type: integer format: int64 views: type: integer format: int64 StreamsAnalyticsResolution: type: string description: '' x-enumNames: - Hour - Day enum: - Hour - Day SuccessStreamsBandwidthTotalAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: object additionalProperties: $ref: '#/components/schemas/BandwidthTotalAnalyticModel' x-additionalPropertiesName: StreamName SuccessStreamsBandwidthSeriesAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: object additionalProperties: $ref: '#/components/schemas/BandwidthSeriesAnalyticModel' x-additionalPropertiesName: StreamName SuccessStreamsGeoTotalAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/StreamGeoTotalAnalyticModel' StreamGeoTotalAnalyticModel: type: object additionalProperties: false properties: geo: type: object additionalProperties: type: object additionalProperties: $ref: '#/components/schemas/BaseStreamDataModel' x-additionalPropertiesName: CountryCode x-additionalPropertiesName: StreamName SuccessStreamsGeoSeriesAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/StreamGeoSeriesAnalyticModel' StreamGeoSeriesAnalyticModel: type: object additionalProperties: false properties: geo: type: object additionalProperties: type: object additionalProperties: type: object additionalProperties: $ref: '#/components/schemas/BaseStreamDataWithViewsModel' x-additionalPropertiesName: CountryCode x-additionalPropertiesName: Time x-additionalPropertiesName: StreamName SuccessAccountGeoCountryAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/GeoCountryAnalyticModel' GeoCountryAnalyticModel: type: object additionalProperties: false properties: geo: type: object additionalProperties: $ref: '#/components/schemas/BaseGeoDataModel' x-additionalPropertiesName: CountryCode BaseGeoDataModel: type: object additionalProperties: false properties: bytes: type: integer format: uint64 views: type: integer format: uint64 SuccessStreamsGeoCountryAnalyticModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: object additionalProperties: $ref: '#/components/schemas/GeoCountryAnalyticModel' x-additionalPropertiesName: StreamName SuccessTrackingTotalForStreams: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: object additionalProperties: type: array items: $ref: '#/components/schemas/StreamTrackingTotalAnalyticModel' StreamTrackingTotalAnalyticModel: type: object additionalProperties: false properties: bytesOut: type: integer format: int64 bytesIn: type: integer format: int64 standardStream: description: Traffic attributed to standard streaming broadcasts and playback. nullable: true oneOf: - $ref: '#/components/schemas/BaseBandwidthModel2' restream: description: Traffic attributed to use of re-streaming across multiple platforms. nullable: true oneOf: - $ref: '#/components/schemas/UsageWithDurationModel2' geoCascade: description: Traffic attributed to use of geo-cascading across multiple regions. nullable: true oneOf: - $ref: '#/components/schemas/BaseBandwidthModel2' trackingId: type: string nullable: true BaseBandwidthModel2: type: object additionalProperties: false properties: bytesOut: type: integer format: int64 bytesIn: type: integer format: int64 UsageWithDurationModel2: type: object additionalProperties: false properties: bytesOut: type: integer format: int64 bytesIn: type: integer format: int64 duration: type: integer format: int64 SuccessTrackingSeriesForStreams: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: object additionalProperties: type: object additionalProperties: type: array items: $ref: '#/components/schemas/StreamTrackingTotalAnalyticModel' SuccessTotalBandwidthPerStreamForTrackingIds: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: object additionalProperties: type: array items: $ref: '#/components/schemas/TrackingIdTotalAnalyticModel' TrackingIdTotalAnalyticModel: type: object additionalProperties: false properties: bytesOut: type: integer format: int64 bytesIn: type: integer format: int64 standardStream: description: Traffic attributed to standard streaming broadcasts and playback. nullable: true oneOf: - $ref: '#/components/schemas/BaseBandwidthModel2' restream: description: Traffic attributed to use of re-streaming across multiple platforms. nullable: true oneOf: - $ref: '#/components/schemas/UsageWithDurationModel2' geoCascade: description: Traffic attributed to use of geo-cascading across multiple regions. nullable: true oneOf: - $ref: '#/components/schemas/BaseBandwidthModel2' streamName: type: string nullable: true SuccessSeriesBandwidthPerStreamForTrackingIds: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: object additionalProperties: type: object additionalProperties: type: array items: $ref: '#/components/schemas/TrackingIdTotalAnalyticModel' SuccessTranscoderTotalMinutes: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/TranscoderTotalAnalyticsResponse' TranscoderTotalAnalyticsResponse: type: object additionalProperties: false properties: streamAccountId: type: string description: The account we have queried for. nullable: true startDate: type: string description: The start date of the query. format: date-time endDate: type: string description: The end date of the query. format: date-time transcoderMinutesUsed: type: integer description: The total transcoder minutes used between the two dates. format: int64 SuccessTranscoderSeriesMinutes: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/TranscoderSeriesAnalyticsResponse' TranscoderSeriesAnalyticsResponse: type: object additionalProperties: false properties: streamAccountId: type: string description: The account that was queried. nullable: true transcoder: type: object description: Date associated transcoder analytics. nullable: true additionalProperties: type: array items: $ref: '#/components/schemas/TranscoderAnalyticsDetail' TranscoderAnalyticsDetail: type: object additionalProperties: false properties: transcoderId: type: string nullable: true minutesUsed: type: integer format: int64 SuccessClipSeriesResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/ClipSeriesResult' ClipSeriesResult: type: object additionalProperties: false properties: series: type: object description: Sparse dictionary of UTC date (yyyy-MM-dd) to clip minutes. Days with no clip activity are omitted. nullable: true additionalProperties: type: integer format: int64 SuccessStorageSeriesResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/StorageSeriesResult' StorageSeriesResult: type: object additionalProperties: false properties: series: type: object description: Sparse dictionary of UTC date (yyyy-MM-dd) to storage GB-hours (byte-hours / 1,000,000,000). Days with no storage data are omitted. nullable: true additionalProperties: type: number format: double SuccessResponseOfMediaAssetUsage: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/MediaAssetUsage' MediaAssetUsage: type: object additionalProperties: false properties: totalBytes: type: integer description: Total storage usage reported in bytes format: uint64 recordings: type: integer description: Storage usage of recordings reported in bytes format: uint64 clips: type: integer description: Storage usage of clips reported in bytes format: uint64 timelines: type: integer description: Storage usage of timelines reported in bytes format: uint64 vod: type: integer description: Storage usage of VOD assets reported in bytes format: uint64 SuccessResponseOfMediaAssetBillableUsage: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/MediaAssetBillableUsage' MediaAssetBillableUsage: type: object additionalProperties: false properties: gigabyteHours: type: integer description: Measured as binary gigabytes (1024^3) per hour format: uint64 recordings: type: integer description: Billable storage usage of recordings measured as binary gigabytes (1024^3) per hour format: uint64 clips: type: integer description: Billable storage usage of clips measured as binary gigabytes (1024^3) per hour format: uint64 timelines: type: integer description: Billable storage usage of timelines measured as binary gigabytes (1024^3) per hour format: uint64 vod: type: integer description: Billable storage usage of VOD assets measured as binary gigabytes (1024^3) per hour format: uint64 DrmDetailedUsageResponse: type: object additionalProperties: false properties: license: description: DRM license usage nullable: true oneOf: - $ref: '#/components/schemas/LicenseUsageSeries' LicenseUsageSeries: type: object additionalProperties: false properties: totals: description: Total license requests nullable: true oneOf: - $ref: '#/components/schemas/UsagePerStatus' details: type: object description: Daily license requests per DRM system nullable: true additionalProperties: $ref: '#/components/schemas/DrmSchemaUsage' UsagePerStatus: type: object additionalProperties: false properties: ok: type: integer description: Successful license delivery fail: type: integer description: Failed license delivery due to an error denied: type: integer description: Denied license delivery (Not authorized) DrmSchemaUsage: type: object additionalProperties: false properties: playReady: description: License request status for PlayReady nullable: true oneOf: - $ref: '#/components/schemas/UsagePerStatus' widevine: description: License request status for Widevine nullable: true oneOf: - $ref: '#/components/schemas/UsagePerStatus' fairPlay: description: License request status for FairPlay nullable: true oneOf: - $ref: '#/components/schemas/UsagePerStatus' DrmTotalUsageResponse: type: object additionalProperties: false properties: license: description: DRM license usage nullable: true oneOf: - $ref: '#/components/schemas/LicenseUsageTotal' LicenseUsageTotal: type: object additionalProperties: false properties: totals: description: Total license requests nullable: true oneOf: - $ref: '#/components/schemas/UsagePerStatus' details: description: License requests per DRM system nullable: true oneOf: - $ref: '#/components/schemas/DrmSchemaUsage' EncoderProfileModel: type: object additionalProperties: false properties: id: type: string description: Identifier of the encoder profile. nullable: true name: type: string description: Name of the encoder profile. nullable: true isGlobal: type: boolean description: Flag to indicate if this is a global encoder profile. configuration: description: The encoder profile configuration. nullable: true oneOf: - $ref: '#/components/schemas/MultiTrackVideoConfiguration' MultiTrackVideoConfiguration: type: object additionalProperties: false properties: encoderConfigurations: type: array description: List of encoder configurations. nullable: true items: $ref: '#/components/schemas/EncoderConfiguration' audioConfigurations: description: Audio configurations. nullable: true oneOf: - $ref: '#/components/schemas/AudioConfigurations' EncoderConfiguration: type: object additionalProperties: false properties: bitrateInterpolationPoints: type: array nullable: true items: type: integer format: int32 width: type: integer description: Width of the video feed. format: int32 nullable: true height: type: integer description: Height of the video feed. format: int32 nullable: true settings: description: Video settings. nullable: true oneOf: - $ref: '#/components/schemas/EncoderConfigurationSettings' EncoderConfigurationSettings: type: object additionalProperties: false properties: bitrate: type: integer description: Video bitrate. format: int32 nullable: true AudioConfigurations: type: object additionalProperties: false properties: live: type: array description: List of live audio configurations. nullable: true items: $ref: '#/components/schemas/AudioConfiguration' AudioConfiguration: type: object additionalProperties: false properties: codec: type: string description: Audio codec. nullable: true settings: description: Audio configuration settings. nullable: true oneOf: - $ref: '#/components/schemas/AudioConfigurationSettings' AudioConfigurationSettings: type: object additionalProperties: false properties: bitrate: type: integer description: Audio bitrate. format: int32 nullable: true SuccessResponseOfMediaDistributionResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/MediaDistributionResponseModel' MediaDistributionResponseModel: type: object additionalProperties: false required: - name properties: name: type: string description: User-friendly name for the media distribution. The '*' character is not allowed maxLength: 128 minLength: 1 default: type: boolean description: Set this as the default media distribution that will be associated with all future media assets created without an explicit MediaDistributionId set. id: type: string nullable: true createdAt: type: string format: date-time security: description: Security settings for your media distribution. nullable: true oneOf: - $ref: '#/components/schemas/MediaDistributionSecurityResponse' MediaDistributionSecurityResponse: type: object additionalProperties: false properties: keys: type: array nullable: true items: $ref: '#/components/schemas/SecurityKeyResponseModel' SecurityKeyResponseModel: type: object additionalProperties: false properties: id: type: string nullable: true name: type: string nullable: true CreateMediaDistributionModel: type: object additionalProperties: false required: - name properties: name: type: string description: User-friendly name for the media distribution. The '*' character is not allowed maxLength: 128 minLength: 1 default: type: boolean description: Set this as the default media distribution that will be associated with all future media assets created without an explicit MediaDistributionId set. security: description: Optional. Specify security settings for your media distribution. nullable: true oneOf: - $ref: '#/components/schemas/MediaDistributionSecurityRequest' MediaDistributionSecurityRequest: type: object additionalProperties: false properties: keys: type: array description: Security keys that can be used to sign a JWT to authenticate media asset views. If no keys are provided the media distribution will be unsecured. This means any associated assets can be viewed without a token, and if a token is provided the signing key will not be validated. If a key is specified the media distribution will be secured and a valid token signed with one of the provided keys will be required to view associated media assets. maxItems: 2 nullable: true items: $ref: '#/components/schemas/SecurityKeyRequestModel' SecurityKeyRequestModel: type: object additionalProperties: false required: - key properties: name: type: string description: Name for the security key. maxLength: 128 minLength: 1 nullable: true key: type: string maxLength: 4096 minLength: 32 SuccessResponseOfPaginationResponseOfMediaDistributionResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/PaginationResponseOfMediaDistributionResponseModel' PaginationResponseOfMediaDistributionResponseModel: type: object additionalProperties: false properties: data: type: array nullable: true items: $ref: '#/components/schemas/MediaDistributionResponseModel' pagination: nullable: true oneOf: - $ref: '#/components/schemas/Pagination' Pagination: type: object additionalProperties: false properties: hasMore: type: boolean cursor: type: string nullable: true ListMediaDistributionsSortBy: type: string description: '' x-enumNames: - CreatedAt - Name enum: - createdAt - name UpdateMediaDistribution: type: object additionalProperties: false properties: name: type: string description: User-friendly name for the media distribution. maxLength: 128 minLength: 1 nullable: true default: type: boolean description: Set this as the default media distribution that will be associated with all future media assets created without an explicit mediaDistributionId set. nullable: true SuccessResponseOfListOfSecurityKeyResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/SecurityKeyResponseModel' SuccessResponseOfSecurityKeyResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/SecurityKeyResponseModel' SuccessListStreams: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/PaginatedResponseOfStreamSummary' PaginatedResponseOfStreamSummary: type: object additionalProperties: false properties: pagination: nullable: true oneOf: - $ref: '#/components/schemas/PaginationData' data: type: array nullable: true items: $ref: '#/components/schemas/StreamSummary' PaginationData: type: object additionalProperties: false properties: totalItems: type: integer format: int32 totalPages: type: integer format: int32 itemsOnPage: type: integer format: int32 StreamSummary: type: object additionalProperties: false properties: streamId: type: string streamName: type: string clusterId: type: string clusters: type: array items: type: string secureStream: type: boolean isRecordingAllowed: type: boolean multisource: type: boolean live: type: boolean startTime: type: string format: date-time endTime: type: string format: date-time nullable: true viewerCount: type: integer format: int64 hasRedundant: type: boolean nullable: true restreaming: type: boolean nullable: true feeds: type: array nullable: true items: $ref: '#/components/schemas/FeedSummary' FeedSummary: type: object additionalProperties: false properties: streamId: type: string feedId: type: string clusterId: type: string sourceId: type: string simulcastId: type: string serverId: type: string active: type: boolean startTime: type: string format: date-time endTime: type: string format: date-time nullable: true isRecordingAllowed: type: boolean isRedundant: type: boolean nullable: true priority: type: integer format: int32 nullable: true tokenId: type: integer format: int32 client: $ref: '#/components/schemas/GeoClient' restreams: type: array items: $ref: '#/components/schemas/RestreamDetails' GeoClient: type: object additionalProperties: false properties: country: type: string city: type: string continent: type: string coordinates: type: array items: type: number format: decimal sub: type: array items: type: string ip: type: string RestreamDetails: type: object additionalProperties: false properties: label: type: string index: type: integer format: int32 url: type: string active: type: boolean events: type: array items: $ref: '#/components/schemas/RestreamEvent' RestreamEvent: type: object additionalProperties: false properties: started: type: string format: date-time ended: type: string format: date-time nullable: true error: type: string ListSortBy: type: string description: '' x-enumNames: - StreamId - Cluster - StartTime - Duration - Live - ViewerCount - Restream enum: - StreamId - Cluster - StartTime - Duration - Live - ViewerCount - Restream SuccessStreamDetails: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/StreamDetails' StreamDetails: type: object additionalProperties: false properties: streamId: type: string streamName: type: string clusterId: type: string clusters: type: array items: type: string secureStream: type: boolean isRecordingAllowed: type: boolean multisource: type: boolean live: type: boolean startTime: type: string format: date-time endTime: type: string format: date-time nullable: true viewerCount: type: integer format: int64 hasRedundant: type: boolean nullable: true restreaming: type: boolean nullable: true feeds: type: array nullable: true items: $ref: '#/components/schemas/FeedDetails' FeedDetails: type: object additionalProperties: false properties: streamId: type: string feedId: type: string clusterId: type: string sourceId: type: string simulcastId: type: string serverId: type: string active: type: boolean startTime: type: string format: date-time endTime: type: string format: date-time nullable: true isRecordingAllowed: type: boolean packetLoss: type: number description: Packet loss percentage over last five minutes format: double isRedundant: type: boolean nullable: true priority: type: integer format: int32 nullable: true frameRate: type: number format: decimal type: type: string tokenId: type: integer format: int32 client: $ref: '#/components/schemas/GeoClient' restreams: type: array items: $ref: '#/components/schemas/RestreamDetails' feedStats: type: array items: $ref: '#/components/schemas/FeedStats' trackDetails: type: array items: $ref: '#/components/schemas/TrackDetails' FeedStats: type: object additionalProperties: false properties: timestamp: type: string format: date-time packetLoss: type: number description: Packet loss percentage over last five seconds format: double TrackDetails: type: object additionalProperties: false properties: trackId: type: string encodingDetails: type: array items: $ref: '#/components/schemas/EncodingDetails' EncodingDetails: type: object additionalProperties: false properties: encodingId: type: string iFrameRate: type: number format: double nullable: true bFrameRate: type: number format: double nullable: true pFrameRate: type: number format: double nullable: true encodingStats: type: array items: $ref: '#/components/schemas/EncodingStats' EncodingStats: type: object additionalProperties: false properties: timestamp: type: string format: date-time resolution: nullable: true oneOf: - $ref: '#/components/schemas/Resolution' bitRate: $ref: '#/components/schemas/Bitrate' videoCodec: type: string audioCodec: type: string frames: type: number format: decimal nullable: true rtt: type: number format: double nullable: true bufferTime: type: number format: double nullable: true bFrames: type: number format: double nullable: true Resolution: type: object additionalProperties: false properties: height: type: number format: double width: type: number format: double Bitrate: type: object additionalProperties: false properties: audioBitrate: type: number format: double videoBitrate: type: number format: double SuccessListStreamSummary: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/PaginatedResponseOfStreamBaseSummary' PaginatedResponseOfStreamBaseSummary: type: object additionalProperties: false properties: pagination: nullable: true oneOf: - $ref: '#/components/schemas/PaginationData' data: type: array nullable: true items: $ref: '#/components/schemas/StreamBaseSummary' StreamBaseSummary: type: object additionalProperties: false properties: streamId: type: string description: The identifier of the stream. nullable: true streamName: type: string description: The name of the stream. nullable: true clusterId: type: string description: The identifier of the cluster where the stream was first connected to. nullable: true clusters: type: array description: The list of clusters where the stream is published to. nullable: true items: type: string secureStream: type: boolean description: Flag indicating whether the stream is secured. isRecordingAllowed: type: boolean description: Flag indicating whether recording is allowed for the stream. multisource: type: boolean description: Flag indicating whether the stream allows multiple sources. live: type: boolean description: Flag indicating whether the stream is live. startTime: type: string description: The time when the stream has started. format: date-time endTime: type: string description: The time when the stream has ended. format: date-time nullable: true viewerCount: type: integer description: The number of viewers watching the stream. format: int64 SuccessStreamSummary: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/StreamBaseSummary' SuccessResponseTranscoderRecord: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/RecordResponse' RecordResponse: type: object additionalProperties: false properties: transcoderId: type: string description: A unique identifier for a transcoder. name: type: string description: A label to help distinguish between multiple transcoders. cluster: type: string description: The cluster region used as the origin for ingesting the source stream. dnsName: type: string description: 'A DNS record for routing to the transcode server. It follows the pattern: `dnsPrefix`-`accountId`.transcoder.millicast.com.' profile: description: Configuration for the output stream from the Transcoder. This may be a pre-defined profile or derived from custom resolution and frame rate settings. oneOf: - $ref: '#/components/schemas/ProfileResponse' createdOn: type: string description: A timestamp for when this Transcoder was created. format: date-time endedOn: type: string description: A timestamp for when this Transcoder was shutdown. format: date-time nullable: true instance: description: Information on the most recent transcoder instance. The transcoder may run multiple instances to support the scale of the broadcast streams. nullable: true oneOf: - $ref: '#/components/schemas/InstanceResponse' status: description: The status for this Transcoder. oneOf: - $ref: '#/components/schemas/TranscoderDisplayStatus' publishUrls: description: The discrete ingest URLs for each broadcast protocol (RTMP, RTMPS, SRT). oneOf: - $ref: '#/components/schemas/PublishUrlsResponse' ProfileResponse: type: object additionalProperties: false properties: profileId: type: string description: A unique identifier for the profile configuration. name: type: string description: Name of the profile. description: type: string description: Description to identify the purpose of the profile. height: type: integer description: The maximum height to use for the frame resolution. frameRate: type: number description: The targeted frames per second. format: decimal passThrough: type: boolean description: Indicates that the top layer is used as is and bypasses transcoding without additional processing. layers: type: array description: The layers the Transcoder will produce for distribution. These values are pre-determined following the Millicast bitrate ladder as step-down layers from the overall Transcoder configuration. items: $ref: '#/components/schemas/TranscoderProfileLayer' TranscoderProfileLayer: type: object additionalProperties: false properties: height: type: integer description: The height for this layer. format: int32 nullable: true width: type: integer description: The width for this layer. format: int32 nullable: true fps: type: number description: The target frames-per-second for this layer. format: decimal nullable: true codec: type: string description: The codec used for this layer. bitrate: type: integer description: The target bitrate for this layer. format: int32 nullable: true intraPeriod: type: integer description: The I-Frame interval for this layer. format: int32 nullable: true allowTransrating: type: boolean description: Allow transrating of layer nullable: true InstanceResponse: type: object additionalProperties: false properties: transcoderId: type: string description: The unique identifier of the Transcoder. id: type: string description: The unique identifier for this instance of the Transcoder. publicIp: type: string description: The public IP address for the host that is processing the stream. dnsName: type: string description: 'A DNS record for routing to the transcoder instance server(s). It follows the pattern: `dnsPrefix`-`accountId`.transcoder.millicast.com.' createdOn: type: string description: A timestamp for when this Transcoder instance was created. format: date-time endedOn: type: string description: A timestamp for when this Transcoder instance was shutdown. format: date-time nullable: true status: description: The status for this Transcoder instance. oneOf: - $ref: '#/components/schemas/InstanceStatus' InstanceStatus: type: string description: '' x-enumNames: - Provisioning - Active - Error - Shutdown - Deleted - ShuttingDown - Deleting - Queued - ActiveError - ShutdownError - DeletingError enum: - Provisioning - Active - Error - Shutdown - Deleted - ShuttingDown - Deleting - Queued - ActiveError - ShutdownError - DeletingError TranscoderDisplayStatus: type: string description: '' x-enumNames: - Provisioning - Active - Error - Shutdown - Deleted - ShuttingDown - Deleting - Queued enum: - Provisioning - Active - Error - Shutdown - Deleted - ShuttingDown - Deleting - Queued PublishUrlsResponse: type: object additionalProperties: false properties: rtmp: type: string rtmps: type: string srt: type: string CreateTranscoderRecord: type: object additionalProperties: false required: - name - cluster properties: name: type: string description: Use a label to help with identifying this Transcoder. minLength: 1 dnsPrefix: type: string description: Choose a string that will be used to prefix the DNS entry for the Transcoder origin endpoint. You can only use alphabetic (A-Z), numeric (0-9), and a dash in your dns prefix. Used to construct the DNS name which follows the format of `dnsPrefix`-`accountId`.transcoder.millicast.com. Note that underscores (_) are invalid characters. nullable: true cluster: type: string description: Set the cluster region that will be used for the Transcoder to be deployed to. You should choose a cluster that is closest to the broadcast sources. minLength: 1 height: type: integer description: Set the resolution for the maximum height to be used in the stream. If a pre-configured profile is chosen the height value will be used from the profile. nullable: true frameRate: type: number description: 'Update the maximum frames per second to be used in transcoding. If a pre-configured profile is chosen the frame rate value will be used from the profile. Must be one of: [24, 25, 29.97, 30, 50, 59.94, 60].' format: decimal nullable: true profile: type: string description: Update to use a pre-configured profile by id. The ’List Transcoder Profiles’ endpoint can be used to find available profiles. nullable: true startNow: type: boolean description: Indicates whether instances should be provisioned and started immediately once the Transcoder is created. default: false passThrough: type: boolean description: Set whether or not the top layer of the contribution source should bypass transcoding and be distributed without processing. nullable: true UpdateTranscoder: type: object additionalProperties: false properties: name: type: string description: Update display name for transcoder. nullable: true dnsPrefix: type: string description: Update DNS prefix for the transcoder publisher. Used to construct the DNS name which follows the format of `dnsPrefix`-`accountId`.transcoder.millicast.com. nullable: true cluster: type: string description: Update cluster that transcoder will be deployed to. nullable: true height: type: integer description: Update resolution of input stream specified in video height. New default profile will be selected unless specified. nullable: true frameRate: type: number description: Update frame rate of input stream. New default profile will be selected unless specified. format: decimal nullable: true profile: type: string description: Specify a profile id to select the corresponding transcoder profile. You can retrieve all system pre-defined profile ids by calling the ’List Transcoder Profiles’ endpoint. nullable: true passThrough: type: boolean description: Update whether the top layer is passed through or transcoded. nullable: true SuccessResponseBoolean: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: boolean SuccessResponseListTranscoderRecords: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/RecordResponse' ListTranscoderRecordsSortBy: type: string description: '' x-enumNames: - CreatedDate - TranscoderName enum: - CreatedDate - TranscoderName SuccessResponseTranscoderInstance: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/InstanceResponse' SuccessResponseListTranscoderInstances: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/InstanceResponse' ListTranscoderInstancesSortBy: type: string description: '' x-enumNames: - CreatedDate enum: - CreatedDate TranscoderStatus: type: string description: '' x-enumNames: - Provisioning - Active - Error - Shutdown - Deleted - ShuttingDown - Deleting - Queued enum: - Provisioning - Active - Error - Shutdown - Deleted - ShuttingDown - Deleting - Queued SuccessResponseListTranscoderProfiles: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/ProfileResponse' ListProfileSortBy: type: string description: '' x-enumNames: - Name - Height - FrameRate enum: - Name - Height - FrameRate SuccessResponseCreateTranscoderSchedule: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/TranscoderScheduleInfoResponse' TranscoderScheduleInfoResponse: type: object additionalProperties: false properties: metadata: nullable: true oneOf: - $ref: '#/components/schemas/ScheduleMetadata' status: $ref: '#/components/schemas/ScheduleStatus' scheduleId: type: string nullable: true start: type: string format: date-time nullable: true stop: type: string format: date-time nullable: true clientId: type: string nullable: true name: type: string nullable: true description: type: string nullable: true recurring: nullable: true oneOf: - $ref: '#/components/schemas/RecurringInfo' transcoderIds: type: array nullable: true items: type: string executions: type: array nullable: true items: $ref: '#/components/schemas/TranscoderScheduleExecutionResponse' ScheduleMetadata: type: object additionalProperties: false properties: createdOn: type: string format: date-time lastModifiedOn: type: string format: date-time nullable: true ScheduleStatus: type: string description: '' x-enumNames: - Active - Inactive - Deleted enum: - Active - Inactive - Deleted RecurringInfo: type: object additionalProperties: false properties: frequency: $ref: '#/components/schemas/RecurringFrequency' endDate: type: string format: date-time nullable: true RecurringFrequency: type: object additionalProperties: false properties: interval: $ref: '#/components/schemas/RecurringInterval' daysOfWeek: type: array nullable: true items: $ref: '#/components/schemas/DayOfWeek' RecurringInterval: type: string description: '' x-enumNames: - Daily - Weekly enum: - Daily - Weekly DayOfWeek: type: string description: '' x-enumNames: - Sunday - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday enum: - Sunday - Monday - Tuesday - Wednesday - Thursday - Friday - Saturday TranscoderScheduleExecutionResponse: type: object additionalProperties: false properties: executionTime: type: string format: date-time scheduleType: $ref: '#/components/schemas/TranscoderScheduleType' executionStatus: $ref: '#/components/schemas/ScheduleExecutionStatus' transcoderId: type: string nullable: true TranscoderScheduleType: type: string description: '' x-enumNames: - Start - Stop enum: - Start - Stop ScheduleExecutionStatus: type: string description: '' x-enumNames: - Pending - Running - Completed - NoAction - UnexpectedError - Deleted - RemovedByScheduleUpdate enum: - Pending - Running - Completed - NoAction - UnexpectedError - Deleted - RemovedByScheduleUpdate TranscoderCreateScheduleRequest: type: object additionalProperties: false required: - name properties: start: type: string description: The start date and time of the schedule in the format of `YYYY-MM-DDTHH:MM:SSZ`. format: date-time nullable: true stop: type: string description: The stop date and time of the schedule in the format of `YYYY-MM-DDTHH:MM:SSZ`. format: date-time nullable: true clientId: type: string description: A field that can be used to associate particular schedules. nullable: true name: type: string description: The name of the schedule. minLength: 1 description: type: string description: A description of the schedule. nullable: true recurring: description: Recurring information about the schedule. This field is optional. nullable: true oneOf: - $ref: '#/components/schemas/RecurringInfo' transcoderIds: type: array description: The Transcoder Ids to schedule for. nullable: true items: type: string SuccessResponseDeleteTranscoderSchedule: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/DeleteTranscoderScheduleResponse' DeleteTranscoderScheduleResponse: type: object additionalProperties: false properties: scheduleId: type: string status: $ref: '#/components/schemas/ScheduleStatus' SuccessResponseListTranscoderSchedules: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/TranscoderScheduleInfoResponse' ListTranscoderSchedulesSortBy: type: string description: '' x-enumNames: - CreatedDate enum: - CreatedDate SuccessResponseUpdateTranscoderSchedule: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/TranscoderScheduleInfoResponse' UpdateTranscoderScheduleRequest: type: object additionalProperties: false properties: name: type: string description: Update display name for schedule. nullable: true start: type: string description: Update the time to start the schedule. If it's weekly, then we use the time from this as well and the first day to anchor the schedule. format: date-time nullable: true stop: type: string description: Update the stop time of the schedule. format: date-time nullable: true description: type: string description: Update the schedule description. nullable: true clientId: type: string description: Update the customers reference field. nullable: true recurring: description: Update recurring schedule. nullable: true oneOf: - $ref: '#/components/schemas/RecurringInfo' transcoderIds: type: array description: Update all transcoder Ids for the schedule. This replaces all existing transcoder Ids for the schedule. nullable: true items: type: string SuccessGetSchedulesForSpecificTranscoder: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/TranscoderScheduleInfoResponse' SuccessGetScheduleByScheduleId: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/TranscoderScheduleInfoResponse' SuccessAccountGeoCascade: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/GeoCascadeModel2' SuccessClusterInfoModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/ClustersInfoModel' ClustersInfoModel: type: object additionalProperties: false properties: defaultCluster: type: string description: Used as cluster when not explicitly specified during Token creation. availableClusters: type: array description: List of available clusters. items: $ref: '#/components/schemas/ClusterModel' ClusterModel: type: object additionalProperties: false properties: id: type: string description: Unique identifier of cluster. name: type: string description: Display name. rtmp: type: string description: RTMP publish domain for cluster. srt: type: string description: Srt publish domain for cluster. location: description: Physical location of the cluster. nullable: true oneOf: - $ref: '#/components/schemas/LocationModel' features: description: The features supported in this cluster. nullable: true oneOf: - $ref: '#/components/schemas/ClustersFeaturesModel' LocationModel: type: object additionalProperties: false properties: city: type: string description: City for cluster nullable: true region: type: string description: Region for cluster nullable: true country: type: string description: Country for cluster nullable: true ClustersFeaturesModel: type: object additionalProperties: false properties: transcoding: type: boolean description: Indicates whether the Transcoder feature is supported in the corresponding cluster. UpdateClusterInfoModel: type: object additionalProperties: false required: - defaultCluster properties: defaultCluster: type: string description: Used as cluster when not explicitly specified during Token creation. minLength: 1 SuccessResponsePublishTokenV1: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/PublishTokenResponseV1' PublishTokenResponseV1: type: object additionalProperties: false properties: name: type: string deprecated: true x-deprecatedMessage: use Label nullable: true subscribeRequiresAuth: type: boolean description: Flag to require authentication to subscribe to the specified streams. Default is false. record: type: boolean description: Flag to allow this publish token to be allowed to record the specified streams. Default is false. clip: type: boolean description: 'Flag to allow this publish token to enable live clipping on specified streams. Default is false. This flag cannot be set to true when the `record` flag is enabled.' multisource: type: boolean description: Flag to indicate if the multi source capability is enabled for this publish token. Default is true. enableThumbnails: type: boolean description: Flag to receive webhook notifications for thumbnails for the specified streams. Default is false. See documentation https://optiview.dolby.com/docs/millicast/webhooks/thumbnail/. This flag only controls automated time-triggered thumbnails on loop, not on-demand thumbnails. lowLatencyRtmp: type: boolean description: Flag to indicate if low latency RTMP is enabled for this publish token. Default is true. enableUTCInsertion: type: boolean description: Flag to indicate if UTC timestamp insertion is enabled for this publish token. Null means the account default is used. nullable: true integrationId: description: The identifier of the integration. oneOf: - $ref: '#/components/schemas/IntegrationIds' displaySrtPassphrase: type: boolean description: Flag to display passphrase encryption settings in the dashboard as well as returning the SRT passphrase in response to this API call. Default is false. srtPassphrase: type: string description: The SRT passphrase. nullable: true drm: type: boolean geoCascade: description: The geo cascading settings. nullable: true oneOf: - $ref: '#/components/schemas/GeoCascadeModel2' restream: type: array description: A list of endpoints where to restream the stream to. nullable: true items: $ref: '#/components/schemas/RestreamModel2' priority: type: integer description: Default priority of this publish token. format: int32 nullable: true encoderProfileId: type: string description: The identifier of the encoder profile. nullable: true id: type: integer description: Identifier of the token. label: type: string description: Friendly name of token. token: type: string description: Actual token. addedOn: type: string description: Date when the token was created. format: date-time expiresOn: type: string description: The token expiration date. format: date-time nullable: true isActive: type: boolean description: Flag to indicate if the token is active or not. streams: type: array description: A list of stream names associated with the token. items: $ref: '#/components/schemas/TokenStreamNameModel' allowedOrigins: type: array description: A list of allowed origins for the token. items: type: string allowedIpAddresses: type: array description: A list of allowed IP addresses for the token. items: type: string bindIpsOnUsage: type: integer description: The number of IPs to bind on usage. nullable: true originCluster: type: string description: Default cluster for the token. effectiveSettings: description: Token effective settings for properties that use account default settings. Value for each property will either be token or account level settings. oneOf: - $ref: '#/components/schemas/TokenEffectiveSettings' allowedCountries: type: array description: Specify the ISO 3166-1 two letter country codes to explicitly allow viewer to watch the stream from. If the viewer's location does not match any of the specified countries, they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of allowedCountries or deniedCountries should be specified. If the specified streams require authentication, the list of allowed countries can be overridden by the subscribe token. items: type: string deniedCountries: type: array description: Specify the ISO 3166-1 two letter country codes to explicitly deny viewer to watch the stream from. If the viewer's location does match any of the specified countries, they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of allowedCountries or deniedCountries should be specified. If the specified streams require authentication, the list of denied countries can be overridden by the subscribe token. items: type: string RestreamModel2: type: object additionalProperties: false required: - url - key properties: label: type: string description: Restream config label maxLength: 2048 minLength: 0 nullable: true url: type: string description: The endpoint to restream media maxLength: 2048 minLength: 1 key: type: string description: Secret key for restreaming endpoint maxLength: 512 minLength: 5 enabled: type: boolean description: Enable or disable restreaming to this endpoint default: true nullable: true TokenStreamNameModel: type: object additionalProperties: false properties: streamName: type: string description: The name of the stream. isRegex: type: boolean description: Flag indicating whether the provided name is a regular expression. SuccessResponseListPublishTokenV1: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/PublishTokenResponseV1' ListSortBy2: type: string description: '' x-enumNames: - Name - AddedOn enum: - Name - AddedOn ListFilterBy: type: string description: '' x-enumNames: - None - TokenName - StreamName - TokenOrStreamName enum: - None - TokenName - StreamName - TokenOrStreamName CreatePublishTokenV1: type: object additionalProperties: false required: - label - streams properties: subscribeRequiresAuth: type: boolean description: Optional. Set to true to require authentication to subscribe to the specified streams. Default is false. default: false nullable: true drm: type: boolean description: Optional. Set to true to mark as a DRM stream. Default is false. default: false nullable: true record: type: boolean description: Optional. Set to true to allow this publish token to be allowed to record the specified streams. Default is false. default: false nullable: true clip: type: boolean description: 'Optional. Set to true to allow this publish token to enable live clipping on specified streams. Default is false. This flag cannot be set to true when the `record` flag is enabled. Note: Live clipping is currently in Beta phase.' default: false nullable: true multisource: type: boolean description: Optional. Set to false to disable the multi source capability for this publish token. Default is true. default: true nullable: true enableThumbnails: type: boolean description: Optional. Set to true to receive webhook notifications for thumbnails for the specified streams. Default is false. See documentation https://optiview.dolby.com/docs/millicast/webhooks/thumbnail/. This flag only controls automated time-triggered thumbnails on loop, not on-demand thumbnails. default: false nullable: true displaySrtPassphrase: type: boolean description: Optional. Set to true to display passphrase encryption settings in the dashboard as well as returning the SRT passphrase in response to this API call. Default is false. default: false nullable: true lowLatencyRtmp: type: boolean description: Optional. Set to true to enable low latency RTMP. default: true nullable: true enableUTCInsertion: type: boolean description: Optional. Set to true to insert UTC timestamps into the published stream. Defaults to account related setting if unset. nullable: true geoCascade: description: Geo cascade settings for cascading stream to other clusters. Defaults to account related setting if unset. nullable: true oneOf: - $ref: '#/components/schemas/GeoCascadeModel3' restream: type: array description: List of endpoints to restream media. maxItems: 10 nullable: true items: $ref: '#/components/schemas/RestreamModel2' priority: type: integer description: Optional. Set default priority. format: int32 nullable: true encoderProfileId: type: string description: Optional. Set to the encoder profile ID to use a specific encoder profile for this publish token. nullable: true label: type: string description: Name for the token that is used to display in the dashboard. maxLength: 128 minLength: 1 expires: type: integer description: Optional. Number of seconds until the token expires. If not specified, the token never expires (default). format: int32 maximum: 2147483647.0 minimum: 1.0 nullable: true streams: type: array description: A list of streams. minItems: 1 items: $ref: '#/components/schemas/CreateStreamNameModel' allowedOrigins: type: array description: 'Optional. If specified only the domains in list will be allowed in requests to Director API with token. Wildcard subdomains are also allowed, e.g.: "*.demo.com". When unspecified (empty list) there are no domain restrictions. ' nullable: true items: type: string allowedIpAddresses: type: array description: Optional. May specify multiple IPv4 addresses or CIDR notated network blocks. If specified, the token will only be usable from those IP addresses. Not currently supported with RTMP. nullable: true items: type: string bindIpsOnUsage: type: integer description: Optional. If specified will bind the token to the first X IP addresses used with token in requests to Director API, thus restricting the token to those IP addresses without being known beforehand. Mutually exclusive with allowedIpAddresses option. Not currently supported with RTMP. nullable: true originCluster: type: string description: Optional. Cluster to route specified streams to. Default is the account's default cluster. nullable: true allowedCountries: type: array description: Optional. Specify the ISO 3166-1 two letter country codes to explicitly allow viewer to watch the stream from. If the viewer's location does not match any of the specified countries, they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of allowedCountries or deniedCountries should be specified. If the specified streams require authentication, the list of allowed countries can be overridden by the subscribe token. nullable: true items: type: string deniedCountries: type: array description: Optional. Specify the ISO 3166-1 two letter country codes to explicitly deny viewer to watch the stream from. If the viewer's location does match any of the specified countries, they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a token will override account-wide rules. Only one of allowedCountries or deniedCountries should be specified.If the specified streams require authentication, the list of denied countries can be overridden by the subscribe token. nullable: true items: type: string GeoCascadeModel3: type: object additionalProperties: false properties: isEnabled: type: boolean description: Enable or Disable geo cascade. Defaults to Account settings if unset. nullable: true clusters: type: array description: List of cluster IDs to geo cascade publish stream. List cannot be empty when IsEnabled is true. List is ignored when IsEnabled is set to false. Defaults to '["all"]' if unset. nullable: true items: type: string CreateStreamNameModel: type: object additionalProperties: false required: - streamName properties: streamName: type: string description: Name of the stream this token can access. maxLength: 128 minLength: 1 isRegex: type: boolean description: Set to true if the name of the stream is a regular expression. default: false SuccessResponseGetActiveTokenV1: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/TokenIdWrapper' TokenIdWrapper: type: object additionalProperties: false properties: tokenIds: type: array nullable: true items: type: integer SuccessResponseDisableTokensV1: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/DisableTokens' DisableTokens: type: object additionalProperties: false properties: successfulTokens: type: array nullable: true items: type: integer failedTokens: type: array nullable: true items: $ref: '#/components/schemas/FailedToken' FailedToken: type: object additionalProperties: false properties: tokenId: type: integer errorMessage: type: string nullable: true DisableActiveTokenModel: type: object additionalProperties: false required: - tokenIds properties: tokenIds: type: array description: The list of identifiers for the tokens to disable. minItems: 1 items: type: integer UpdatePublishTokenV1: type: object additionalProperties: false properties: subscribeRequiresAuth: type: boolean description: Flag indicating whether the stream viewers require authentication. nullable: true record: type: boolean description: Flag indicating whether to record the stream. nullable: true clip: type: boolean description: Flag indicating whether the stream can generate clips. nullable: true multisource: type: boolean description: Flag indicating whether multisource is enabled or not. nullable: true lowLatencyRtmp: type: boolean description: Flag to indicate if low latency RTMP is enabled for this publish token. nullable: true enableUTCInsertion: type: boolean description: Flag to indicate if UTC timestamp insertion is enabled for this publish token. Set to null to clear value and use the account related setting. nullable: true enableThumbnails: type: boolean description: Flag to receive webhook notifications for thumbnails for the specified streams. Default is false. See documentation https://optiview.dolby.com/docs/millicast/webhooks/thumbnail/. This flag only controls automated time-triggered thumbnails on loop, not on-demand thumbnails. nullable: true displaySrtPassphrase: type: boolean description: Flag to display passphrase encryption settings in the dashboard as well as returning the SRT passphrase in response to this API call. Default is false. nullable: true updateGeoCascade: description: The geo cascading settings. nullable: true oneOf: - $ref: '#/components/schemas/GeoCascadeModel3' updateRestream: type: array description: List of endpoints to restream media. maxItems: 10 nullable: true items: $ref: '#/components/schemas/RestreamModel2' drm: type: boolean description: Optional. Set to true to mark as a DRM stream. nullable: true priority: type: integer description: Optional. Set default priority value for streams. Set to null to clear value. format: int32 nullable: true encoderProfileId: type: string description: Optional. Set encoder profile id. Set to null to clear the value. nullable: true label: type: string description: Name for the token that is used to display in the dashboard. maxLength: 128 nullable: true refreshToken: type: boolean description: Generate new unique token, invalidating previous token. nullable: true isActive: type: boolean description: Indicates if the token is active. nullable: true addTokenStreams: type: array description: The list of stream names to add. nullable: true items: $ref: '#/components/schemas/CreateStreamNameModel' removeTokenStreams: type: array description: The list of stream names to remove. nullable: true items: type: string updateAllowedOrigins: type: array description: The list of allowed origins. nullable: true items: type: string updateAllowedIpAddresses: type: array description: The list of allowed IP addresses. nullable: true items: type: string updateBindIpsOnUsage: type: integer description: Optional. If specified will bind the token to the first X IP addresses used with token in requests to Director API, thus restricting the token to those IP addresses without being known beforehand. Mutually exclusive with allowedIpAddresses option. maximum: 2147483647.0 minimum: 0.0 nullable: true updateOriginCluster: type: string description: Update the origin cluster. nullable: true updateAllowedCountries: type: array nullable: true items: type: string updateDeniedCountries: type: array nullable: true items: type: string SuccessRecordFileModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/RecordFileModel' RecordFileModel: type: object additionalProperties: false properties: id: type: integer tokenId: type: integer nullable: true token: type: string streamName: type: string recordedOn: type: string format: date-time removedOn: type: string format: date-time nullable: true status: $ref: '#/components/schemas/MediaAssetStatus2' metadata: nullable: true oneOf: - $ref: '#/components/schemas/RecordMetadata' download: nullable: true oneOf: - $ref: '#/components/schemas/RecordDownloadUrl2' RemoveRecordFilesModel: type: object additionalProperties: false required: - recordFileIds properties: recordFileIds: type: array minItems: 1 items: type: integer SuccessListRecordFileModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/ListRecordFileModel' ListRecordFileModel: type: object additionalProperties: false properties: id: type: integer tokenId: type: integer nullable: true token: type: string streamName: type: string recordedOn: type: string format: date-time removedOn: type: string format: date-time nullable: true status: $ref: '#/components/schemas/MediaAssetStatus2' metadata: nullable: true oneOf: - $ref: '#/components/schemas/RecordMetadata' ListSortBy3: type: string description: '' x-enumNames: - RecordedOn - StreamName - Token enum: - RecordedOn - StreamName - Token FilterByRecordFileStatus: type: string description: '' x-enumFlags: true x-enumNames: - Started - Transcode - Complete - Deleting - Error enum: - Started - Transcode - Complete - Deleting - Error SuccessRecordFileUsageModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/RecordFileUsage' RecordFileUsage: type: object additionalProperties: false properties: totalBytes: type: integer description: Total storage usage reported in bytes format: uint64 SuccessRecordFileBillableUsageModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/RecordFileBillableUsage' RecordFileBillableUsage: type: object additionalProperties: false properties: gigabyteHours: type: integer description: Measured as binary gigabytes (1024^3) per hour format: uint64 SuccessResponseOfClipRequestResponseModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/ClipRequestResponseModel' ClipRequestResponseModel: type: object additionalProperties: false properties: status: $ref: '#/components/schemas/ClipRequestStatus' streamName: type: string sourceId: type: string nullable: true simulcastId: type: string nullable: true tokenId: type: integer nullable: true itemType: $ref: '#/components/schemas/MediaAssetType2' priority: type: integer format: int32 nullable: true storage: description: Storage information oneOf: - $ref: '#/components/schemas/RecordFileStorageResponseModel' removedOn: type: string format: date nullable: true clipName: type: string description: Clip label if assigned by user nullable: true clipRequestId: type: string description: Id associated with clipping request startTime: type: string format: date nullable: true stopTime: type: string format: date nullable: true expiresOn: type: string format: date nullable: true mediaAssets: type: array description: 'List of media asset ids and statuses associated with this clip request. Call Read Media Asset to retrieve the record file and information about each media asset. ' nullable: true items: $ref: '#/components/schemas/MediaAssetResponseMinimalModel' ClipRequestStatus: type: string description: '' x-enumNames: - Open - InProgress - Complete - Error - Invalid - Started - Deleted - Expiring - Deleting enum: - Open - InProgress - Complete - Error - Invalid - Started - Deleted - Expiring - Deleting MediaAssetResponseMinimalModel: type: object additionalProperties: false properties: id: type: string nullable: true status: $ref: '#/components/schemas/MediaAssetStatus2' CreateClipRequestModel: type: object additionalProperties: false required: - streamName - startTime properties: tokenId: type: integer description: Publish token of stream. nullable: true streamName: type: string description: Name of stream to create live clip. minLength: 1 sourceId: type: string description: 'Optional. ' nullable: true simulcastId: type: string description: 'Optional. ' nullable: true clipName: type: string description: 'Optional. Provide a label for the live recording clip.

ClipNames may not exceed 256 characters. ClipNames must meet the naming requirements recommended by [Google Cloud Storage](https://cloud.google.com/storage/docs/objects#naming) and [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines).

If a media asset is uploaded to third party storage, the `clipName` will be used as the name of the uploaded object. To avoid failed uploads the name should be either unique to avoid conflict with existing objects in the upload location or if overwriting existing objects is desired, appropriate permissions must be granted: [DELETE permissions must be granted to Dolby.io](https://optiview.dolby.com/docs/millicast/distribution/stream-recordings/how-to-setup-media-storage/#setting-up-cloud-storage).

ClipNames may not contain carriage return or line feed characters, or any of the characters #, [, ], *, ?, :, ", “, ”, <, >, |, /, {, }, ^, %, `, ~.' maxLength: 256 minLength: 1 nullable: true storage: description: 'Optional. Provide storage configurations for clip. If unspecified, defaults to Dolby.io''s storage buckets.

If specifying user-defined storage, please refer to setup instructions to grant Dolby.io upload access to buckets and ensure that configurations have been tested using [Test Storage Configuration](#tag/RecordFileTasks/operation/RecordFileTasks_TestRecordFileStorage). ' nullable: true oneOf: - $ref: '#/components/schemas/RecordFileStorageModel' expiresOn: type: string description: 'Optional. Provide expiry time for live recording clip.

If not specified, file will be retained until removed via [Delete Files](#operation/RecordFilesV2_DeleteRecordFileItems).

Has no effect when files are uploaded to user-specified storage locations. ' format: date nullable: true priority: type: integer description: Optional. Priority level of stream(s) to clip. By default the stream with highest priority for a given sourceId will be chosen to clip. format: int32 nullable: true startTime: type: string description: Start time of live recording clip. Must be provided to disambiguate between discontinuous streams. Recordings returned will start on or after specified time, depending on the actual start time of the content request. Time must be set in the past.

ISO 8601 format should be used (eg 2020-01-01T00:00:00Z), all times are expected to be UTC. format: date minLength: 1 stopTime: type: string description: Optional. Stop time of live recording clip. If not provided, defaults to the current time. Time must be set in the past.

ISO 8601 format should be used (eg 2020-01-01T00:00:00Z), all times are expected to be UTC. format: date nullable: true RecordFileStorageModel: type: object additionalProperties: false properties: objectPrefix: type: string description: Optional. Prefix to object when stored in bucket i.e. `protocol`://`bucketName`/`objectPrefix`/`objectName.ext`. Ignored when using Dolby.io's storage buckets. `objectName` is either defined by a system assigned GUID or the user-specified `clipName`. nullable: true storageType: description: 'Optional. Storage provider type. If not specified, defaults to Dolby.io''s storage buckets. ' default: Default nullable: true oneOf: - $ref: '#/components/schemas/RecordFileUploadStorageType' gcsStorageConfig: description: Optional unless `"Gcs"` is specified for `StorageType` nullable: true oneOf: - $ref: '#/components/schemas/RecordFileStorageGcsModel' awsS3StorageConfig: description: Optional unless `"AwsS3"` is specified for `StorageType` nullable: true oneOf: - $ref: '#/components/schemas/RecordFileStorageAwsModel' RecordFileStorageGcsModel: type: object additionalProperties: false required: - bucketName properties: bucketName: type: string description: 'Name of bucket to upload clips to. Please ensure Dolby.io''s service account is granted access to `gs://bucketName`. ' minLength: 1 RecordFileStorageAwsModel: type: object additionalProperties: false required: - bucketName - bucketRegion properties: bucketName: type: string minLength: 1 bucketRegion: type: string minLength: 1 SuccessListClipRequestsModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/ClipRequestResponseBaseModel' ClipRequestResponseBaseModel: type: object additionalProperties: false properties: clipName: type: string description: Clip label if assigned by user nullable: true clipRequestId: type: string description: Id associated with clipping request startTime: type: string format: date nullable: true stopTime: type: string format: date nullable: true expiresOn: type: string format: date nullable: true status: $ref: '#/components/schemas/ClipRequestStatus' streamName: type: string sourceId: type: string nullable: true simulcastId: type: string nullable: true tokenId: type: integer nullable: true itemType: $ref: '#/components/schemas/MediaAssetType2' priority: type: integer format: int32 nullable: true storage: description: Storage information oneOf: - $ref: '#/components/schemas/RecordFileStorageResponseModel' removedOn: type: string format: date nullable: true ListClipRequestsSortBy: type: string description: '' x-enumNames: - RecordedOn - ExpiresOn enum: - RecordedOn - ExpiresOn ListClipRequestsFilterParameters: type: object additionalProperties: false properties: tokenId: type: integer description: Optional. Filter by tokenId. nullable: true streamName: type: string description: Optional. Filter by streamName. nullable: true sourceId: type: string description: 'Optional. Filter by sourceId. ' nullable: true simulcastId: type: string description: 'Optional. Filter by simulcastId. ' nullable: true status: type: array nullable: true items: $ref: '#/components/schemas/FilterByClipRequestStatus' clipRequestId: type: string description: 'Optional. Filter by clipRequestId. ' nullable: true clipName: type: string description: 'Optional. Filter by clipName. ' nullable: true priority: type: integer description: 'Optional. Filter by priority. ' format: int32 nullable: true FilterByClipRequestStatus: type: string description: '' x-enumNames: - Open - InProgress - Complete - Error - RawError - Invalid - Started enum: - Open - InProgress - Complete - Error - RawError - Invalid - Started SuccessListClipSourcesModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/ListClipSourcesResponseModel' ListClipSourcesResponseModel: type: object additionalProperties: false properties: id: type: integer recordedOn: type: string stoppedOn: type: string nullable: true streamName: type: string sourceId: type: string nullable: true simulcastId: type: string nullable: true priority: type: integer format: int32 nullable: true tokenId: type: integer status: $ref: '#/components/schemas/MediaAssetStatus2' ListRecordBlocksSortBy: type: string description: '' x-enumNames: - RecordedOn - StoppedOn enum: - RecordedOn - StoppedOn ListAvailableClipSourcesFilterParameters: type: object additionalProperties: false properties: tokenId: type: integer description: Optional. Filter by tokenId. nullable: true streamName: type: string description: Optional. Filter by streamName. nullable: true simulcastId: type: string description: Optional. Filter by SimulcastId. nullable: true sourceId: type: string description: Optional. Filter by SourceId. nullable: true priority: type: integer description: Optional. Filter by Priority. format: int32 nullable: true SuccessResponseOfSuccessValidateRecordStorageResponse2: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/SuccessValidateRecordStorageResponse2' SuccessValidateRecordStorageResponse2: type: object additionalProperties: false properties: validationId: type: string nullable: true validatedStorage: nullable: true oneOf: - $ref: '#/components/schemas/RecordFileStorageResponseModel' validationFilename: type: string description: 'Test vector uploaded to specified storage path. Expect to see this in your cloud storage if access permissions were currectly configured. ' nullable: true ValidateRecordStorageProfileModel: type: object additionalProperties: false properties: storage: description: Storage settings. nullable: true oneOf: - $ref: '#/components/schemas/UpdateRecordFileStorageModel' UpdateRecordFileStorageModel: type: object additionalProperties: false properties: objectPrefix: type: string description: Update storage object prefix. Set to empty string to clear exisiting value. nullable: true storageType: nullable: true oneOf: - $ref: '#/components/schemas/RecordFileUploadStorageType' gcsStorageConfig: nullable: true oneOf: - $ref: '#/components/schemas/UpdateRecordFileStorageGcsModel' awsS3StorageConfig: nullable: true oneOf: - $ref: '#/components/schemas/UpdateRecordFileStorageAwsModel' UpdateRecordFileStorageGcsModel: type: object additionalProperties: false required: - bucketName properties: bucketName: type: string minLength: 1 UpdateRecordFileStorageAwsModel: type: object additionalProperties: false required: - bucketName - bucketRegion properties: bucketName: type: string minLength: 1 bucketRegion: type: string minLength: 1 SuccessResponseOfRecordBlocksExpiryRuleModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/RecordBlocksExpiryRuleModel' RecordBlocksExpiryRuleModel: type: object additionalProperties: false properties: timeSpan: nullable: true oneOf: - $ref: '#/components/schemas/TimeSpanModel' isCustom: type: boolean description: 'Indicates whether expiry rule is custom set or using system preset. There will be no guarantee that system preset remains unchanged. ' UpdateRecordBlocksExpiryRuleModel: type: object additionalProperties: false required: - expiry properties: expiry: description: 'Update account level expiry rule for clip creation. ' oneOf: - $ref: '#/components/schemas/TimeSpanModel' SuccessResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: {} RemoveClipSourcesModel: type: object additionalProperties: false required: - clipSourceIds properties: clipSourceIds: type: array minItems: 1 items: type: integer SuccessResponseOfDeleteMediaAssetsResponse3: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/DeleteMediaAssetsResponse3' DeleteMediaAssetsResponse3: type: object additionalProperties: false properties: itemsDeleted: type: integer format: int32 errors: type: array nullable: true items: $ref: '#/components/schemas/MediaAssetDeletionError3' MediaAssetDeletionError3: type: object additionalProperties: false properties: id: type: string nullable: true error: type: string nullable: true SuccessStopStreamResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/LevelStreamStopped' LevelStreamStopped: type: object additionalProperties: false properties: stoppingLevel: nullable: true oneOf: - $ref: '#/components/schemas/StreamStoppingLevel' StreamStoppingLevel: type: string description: '' x-enumNames: - Account - Stream - Feed - Server - Token - None enum: - Account - Stream - Feed - Server - Token - None StopStreamRequest: type: object additionalProperties: false required: - streamId properties: streamId: type: string minLength: 1 SuccessResponseOfReprioritizeStreamResponse: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/ReprioritizeStreamResponse' ReprioritizeStreamResponse: type: object additionalProperties: false properties: stoppingLevel: nullable: true oneOf: - $ref: '#/components/schemas/StreamStoppingLevel' ReprioritizeStreamRequest: type: object additionalProperties: false required: - tokenId - updatePriority properties: tokenId: type: integer description: 'Specify the token associated with stream that requires an updated priority. Please ensure that the token is assign a single streamId by calling [Read Token](#operation/PublishTokenV1_ReadToken), otherwise unexpected streams will be assigned the new priority on reconnection.' updatePriority: type: integer format: int32 SuccessResponseSubscribeTokenV1: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/SubscribeTokenResponseV1' SubscribeTokenResponseV1: type: object additionalProperties: false properties: name: type: string deprecated: true x-deprecatedMessage: use Label nullable: true tracking: description: Tracking information nullable: true oneOf: - $ref: '#/components/schemas/TrackingInformation' id: type: integer description: Identifier of the token. label: type: string description: Friendly name of token. token: type: string description: Actual token. addedOn: type: string description: Date when the token was created. format: date-time expiresOn: type: string description: The token expiration date. format: date-time nullable: true isActive: type: boolean description: Flag to indicate if the token is active or not. streams: type: array description: A list of stream names associated with the token. items: $ref: '#/components/schemas/TokenStreamNameModel' allowedOrigins: type: array description: A list of allowed origins for the token. items: type: string allowedIpAddresses: type: array description: A list of allowed IP addresses for the token. items: type: string bindIpsOnUsage: type: integer description: The number of IPs to bind on usage. nullable: true originCluster: type: string description: Default cluster for the token. effectiveSettings: description: Token effective settings for properties that use account default settings. Value for each property will either be token or account level settings. oneOf: - $ref: '#/components/schemas/TokenEffectiveSettings' allowedCountries: type: array description: The list of allowed countries. items: type: string deniedCountries: type: array description: The list of denied countries. items: type: string SuccessResponseListSubscribeTokenV1: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/SubscribeTokenResponseV1' CreateSubscribeTokenV1: type: object additionalProperties: false required: - label - streams properties: tracking: description: Optional. Tracking Information for the Stream Syndication capability. See documentation https://optiview.dolby.com/docs/millicast/distribution/syndication/. nullable: true oneOf: - $ref: '#/components/schemas/TrackingInformation' label: type: string description: Name for the token that is used to display in the dashboard. maxLength: 128 minLength: 1 expires: type: integer description: Optional. Number of seconds until the token expires. If not specified, the token never expires (default). format: int32 maximum: 2147483647.0 minimum: 1.0 nullable: true streams: type: array description: A list of streams. minItems: 1 items: $ref: '#/components/schemas/CreateStreamNameModel' allowedOrigins: type: array description: 'Optional. If specified only the domains in list will be allowed in requests to Director API with token. Wildcard subdomains are also allowed, e.g.: "*.demo.com". When unspecified (empty list) there are no domain restrictions. ' nullable: true items: type: string allowedIpAddresses: type: array description: Optional. May specify multiple IPv4 addresses or CIDR notated network blocks. If specified, the token will only be usable from those IP addresses. Not currently supported with RTMP. nullable: true items: type: string bindIpsOnUsage: type: integer description: Optional. If specified will bind the token to the first X IP addresses used with token in requests to Director API, thus restricting the token to those IP addresses without being known beforehand. Mutually exclusive with allowedIpAddresses option. Not currently supported with RTMP. nullable: true originCluster: type: string description: Optional. Cluster to route specified streams to. Default is the account's default cluster. nullable: true allowedCountries: type: array description: Optional. Specify the ISO 3166-1 two letter country codes to explicitly allow viewer to watch the stream from. If the viewer's location does not match any of the specified countries, they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a subscribe token will override publish token and account-wide rules. Only one of allowedCountries or deniedCountries should be specified. nullable: true items: type: string deniedCountries: type: array description: Optional. Specify the ISO 3166-1 two letter country codes to explicitly deny viewer to watch the stream from. If the viewer's location does match any of the specified countries, they will be blocked from viewing stream, else they will be allowed to view stream. This geo-fencing rule works in concert with the IP and domain restrictions as well. Specifying geo restriction rules in a subscribe token will override publish token and account-wide rules. Only one of allowedCountries or deniedCountries should be specified. nullable: true items: type: string UpdateSubscribeTokenV1: type: object additionalProperties: false properties: label: type: string description: Name for the token that is used to display in the dashboard. maxLength: 128 nullable: true refreshToken: type: boolean description: Generate new unique token, invalidating previous token. nullable: true isActive: type: boolean description: Indicates if the token is active. nullable: true addTokenStreams: type: array description: The list of stream names to add. nullable: true items: $ref: '#/components/schemas/CreateStreamNameModel' removeTokenStreams: type: array description: The list of stream names to remove. nullable: true items: type: string updateAllowedOrigins: type: array description: The list of allowed origins. nullable: true items: type: string updateAllowedIpAddresses: type: array description: The list of allowed IP addresses. nullable: true items: type: string updateBindIpsOnUsage: type: integer description: Optional. If specified will bind the token to the first X IP addresses used with token in requests to Director API, thus restricting the token to those IP addresses without being known beforehand. Mutually exclusive with allowedIpAddresses option. maximum: 2147483647.0 minimum: 0.0 nullable: true updateOriginCluster: type: string description: Update the origin cluster. nullable: true updateAllowedCountries: type: array nullable: true items: type: string updateDeniedCountries: type: array nullable: true items: type: string TriggerThumbnailRequest: type: object additionalProperties: false properties: streamName: type: string description: The name of the stream. nullable: true tokenId: type: integer description: The identifier of the token. nullable: true SuccessWebhookModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: $ref: '#/components/schemas/WebhookModel' WebhookModel: type: object additionalProperties: false properties: id: type: integer description: The unique identifier of this webhook. url: type: string description: Url to send webhook data to. secret: type: string description: Base64 string of signing secret. isFeedHooks: type: boolean description: If true sends webhook events on feeds start/stop. isRecordingHooks: type: boolean description: If true sends webhook events on recording start/error/complete/deleted. isThumbnailHooks: type: boolean description: If true sends webhook events on thumbnail generation. isTranscoderHooks: type: boolean description: If true sends webhook events on transcoder instance updates. isMediaHooks: type: boolean description: If true sends webhook events on media asset processing/errored/completed/deleted. Only media assets of type 'recording' and 'clip' types can trigger webhooks. isViewerConnectionHooks: type: boolean description: If true sends webhooks on important events related to viewers disabled: description: Your webhook may be temporarily disabled if too many attempted webhook events timeout. You can re-enable it immediately by updating the url or setting reenable = true via [Update Webhook](#tag/Webhooks/operation/Webhooks_UpdateWebhook). nullable: true oneOf: - $ref: '#/components/schemas/DisabledInfoModel' filter: type: string description: A regular expression used to filter the events sent to this webhook based on StreamName or TranscoderName. For event types 'feeds', 'media', 'recording', 'thumbnail' and 'viewerConnection' the filter applies to the 'StreamName' field. For event type 'transcoder' the filter applies to the 'TranscoderName' field. nullable: true DisabledInfoModel: type: object additionalProperties: false properties: until: type: string format: date-time nullable: true reason: type: string nullable: true SuccessListWebhooksModel: type: object additionalProperties: false required: - status - data properties: status: type: string default: success minLength: 1 data: type: array items: $ref: '#/components/schemas/WebhookModel' AddWebhookModel: type: object additionalProperties: false required: - url - isFeedHooks properties: url: type: string description: Url to send webhook data to. minLength: 1 isFeedHooks: type: boolean description: If true sends webhook events on feeds start/stop. isRecordingHooks: type: boolean description: "**Please use `isMediaHooks`.**\n\n If true sends webhook events on recording start/error/complete/deleted." default: false deprecated: true nullable: true isThumbnailHooks: type: boolean description: If true sends webhook events on thumbnail generation default: false nullable: true isTranscoderHooks: type: boolean description: If true sends webhook events on transcoder instance updates default: false nullable: true isMediaHooks: type: boolean description: 'If true sends webhook events on media asset processing/errored/completed/deleted. Only media assets of type ''recording'' and ''clip'' types can trigger webhooks. ' default: false nullable: true isViewerConnectionHooks: type: boolean description: If true sends webhooks on important events related to viewers default: false nullable: true filter: type: string description: A regular expression used to filter the events sent to this webhook based on StreamName or TranscoderName. For event types 'feeds', 'media', 'recording', 'thumbnail' and 'viewerConnection' the filter applies to the 'StreamName' field. For event type 'transcoder' the filter applies to the 'TranscoderName' field. maxLength: 128 minLength: 1 nullable: true UpdateWebhookModel: type: object additionalProperties: false properties: url: type: string description: The URL to send webhook data to. nullable: true refreshSecret: type: boolean description: If true will generate new signing secret for webhook. nullable: true isFeedHooks: type: boolean description: Flag indicating if the webhook should send events on feeds start/stop. nullable: true isRecordingHooks: type: boolean description: Flag indicating if the webhook should send events on recording start/error/complete/deleted. nullable: true isThumbnailHooks: type: boolean description: Flag indicating if the webhook should send events on thumbnail generation. nullable: true isTranscoderHooks: type: boolean description: Flag indicating if the webhook should send events on transcoder instance updates. nullable: true isMediaHooks: type: boolean description: Flag indicating if the webhook should send events on media asset processing/errored/completed/deleted. Only media assets of type 'recording' and 'clip' types can trigger webhooks. nullable: true isViewerConnectionHooks: type: boolean description: Flag indicating if the webhook should send important events related to viewers. nullable: true reEnable: type: boolean description: Immediately re-enable the webhook if it has been temporarily disabled nullable: true filter: type: string description: A regular expression used to filter the events sent to this webhook based on StreamName or TranscoderName. For event types 'feeds', 'media', 'recording', 'thumbnail' and 'viewerConnection' the filter applies to the 'StreamName' field. For event type 'transcoder' the filter applies to the 'TranscoderName' field. Set to null to clear value maxLength: 128 minLength: 1 nullable: true WebhookType: type: string description: '' x-enumNames: - Recordings - Thumbnail - Transcoder - Media - Feeds - ViewerConnection enum: - Recordings - Thumbnail - Transcoder - Media - Feeds - ViewerConnection TestWebhookModel: type: object additionalProperties: false properties: streamName: type: string description: StreamName to include in test webhook payload. If not provided a default value will be used. nullable: true transcoderName: type: string description: TranscoderName to include in test webhook payload. If not provided a default value will be used. nullable: true securitySchemes: API_Secret: type: http description: '### Usage #### Acquire secret from dashboard. * Login to the streaming dashboard * On the left menu, click on Settings * Navigate to the Security tab''s sub section API Secrets 1. "+ Create" to generate a new named API Secret if needed 2. Click on the copy button or the reveal button to access a previously created API Secret ![](../assets/api_secret.png "Find API Secret")' scheme: bearer security: - API_Secret: [] tags: - name: Analytics description: All requests require a startDate and stopDate range, startDate is inclusive while stopDate is exclusive. Dates can be sent without time component (eg 2020-01-01) otherwise ISO 8601 format should be used (eg 2020-01-01T00:00:00Z), all times are expected to be UTC. Time series requests require an AnalyticsResolution (Month, Day, Hour). For accounts Month data is stored permanently, Day data is stored for last calendar month, and Hour data is stored for last week. For streams, country or clusters data, the retention is the same, except Month data is not stored at all. Responses to queries outside of the data retention period will be empty. x-code-samples-replace: {}