{ "openapi": "3.0.1", "info": { "title": "Playout Scheduler", "description": "", "version": "1.0" }, "servers": [ { "url": "https://api.zype.com/" } ], "security": [ { "api_key": [] } ], "paths": { "/scheduler/v1/channels": { "get": { "summary": "List Channels", "description": "", "operationId": "getPlayoutSchedulerChannels", "tags": [ "Channels" ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "Page number to return, with per_page dictating page size" }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "Number of records to return per page" } ], "responses": { "200": { "description": "Channels response", "content": { "application/json": { "schema": { "title": "ChannelsResponse", "type": "object", "properties": { "siteId": { "type": "string" }, "channels": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1channels/post/responses/201/content/application~1json/schema" } }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Channel", "description": "", "tags": [ "Channels" ], "operationId": "createPlayoutSchedulerChannel", "x-codegen-request-body-name": "channel", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "title": "ChannelRequest", "type": "object", "required": [ "channel" ], "properties": { "channel": { "type": "object", "title": "ChannelProperties", "required": [ "title", "startAt" ], "properties": { "title": { "type": "string" }, "fallbackSlateId": { "type": "string" }, "type": { "type": "string", "enum": [ "elemental", "no_infra", "live_event" ], "default": "elemental", "description": "Channel type. `live_event` is the Zype Live channel type, which requires exactly one entry in liveInputSources. Defaults to `elemental` when not provided." }, "liveInputSources": { "type": "array", "description": "Live input sources for the channel. Required, with exactly one entry, when type is live_event. Optional for other channel types.", "items": { "$ref": "#/paths/~1scheduler~1v1~1channels/post/responses/201/content/application~1json/schema/properties/liveInputSources" } }, "startAt": { "type": "string", "description": "Setting the Start At date & time will make the channel live at the selected date & time. You can select a date/time at least 30 minutes into the future." }, "stopAt": { "type": "string", "description": "Setting the Stop At date & time will stop stop the channel at the selected date & time. You can select a date/time at least 30 minutes into the future." }, "channelSetting": { "type": "object", "title": "ChannelSetting", "properties": { "staticOverlayEnabled": { "type": "boolean", "default": false, "description": "Enables static overlay feature" }, "hideOverlayDuringAds": { "type": "boolean", "default": false, "description": "Hides the static overlay during Ad slates" }, "priorityTrackGraphicsEnabled": { "type": "boolean", "default": true, "description": "If true, graphics will apply for videos on the priority track" }, "customDynamicReplacementsEnabled": { "type": "boolean", "default": true, "description": "Enables custom dynamic replacements feature" }, "customDynamicReplacements": { "type": "array", "description": "Custom attributes to fetch from video's metadata", "items": { "type": "string" } }, "scteMidrollIdMatchEnabled": { "type": "boolean", "default": true, "description": "When enabled, the Id inserted into the SCTE ad markers during a mid-roll will be the same Id of the video asset" }, "scteMessageFormat": { "type": "string", "description": "Applying to live inputs, the selected format will be the expected SCTE tags format sent from the input source to Playout live inputs", "enum": [ "SPLICE_INSERT", "TIME_SIGNAL" ] }, "availabilityCountries": { "type": "array", "items": { "type": "string" }, "description": "This setting is required by some destinations for determining where content should be available. This is a metadata-only field and does not restrict the playback of content by region." }, "nielsenPcmToId3Tagging": { "type": "boolean", "description": "When enabled, the PCM audio will be converted to ID3 tags for Nielsen reporting" }, "nielsenDistributorId": { "type": "string", "description": "The Nielsen distributor ID. Will be used to report Nielsen metrics to the Nielsen distributor only when nielsenPcmToId3Tagging is true." } } }, "channelCaptionSetting": { "type": "object", "title": "ChannelCaptionSetting", "properties": { "sourceType": { "type": "string", "enum": [ "Teletext", "Embedded" ] }, "languageCode": { "type": "string" }, "pageNumber": { "type": "string" }, "outputDescription": { "type": "object", "title": "ChannelCaptionSetting", "properties": { "name": { "type": "string" }, "languageCode": { "type": "string" }, "languageDescription": { "type": "string" }, "captionSettings": { "type": "string", "enum": [ "Embedded", "WebVtt" ] } } } } }, "automatedGraphicInsertions": { "type": "array", "items": { "required": [ "assetTypes", "duration", "graphicAssetId", "type" ], "properties": { "assetTypes": { "type": "array", "enum": [ "video", "block", "playlist" ], "description": "Determines the asset type to which the graphic will play. At least one is required." }, "duration": { "type": "number", "description": "Determines the duration that the graphic is visible." }, "delay": { "type": "number", "default": 0, "description": "For Intro, determines the delay from when the asset starts to when the graphic starts. For Exit, determines the padding at the end of the video where there will be no graphics" }, "graphicAssetId": { "type": "string", "description": "The Id of the graphic to play on top of the selected asset." } } } }, "midRollAdsEnabled": { "type": "boolean", "description": "Automatically insert mid-roll ads" }, "adPodSlate": { "type": "string", "description": "Default ad slate. Ads will be inserted at video-level ad timings when dragging a video into the timeline." }, "highAvailabilityEnabled": { "type": "boolean", "default": false, "description": "Enables high availability feature" }, "staticOverlay": { "$ref": "#/paths/~1scheduler~1v1~1channels/post/responses/201/content/application~1json/schema/properties/staticOverlay" } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "Channel", "properties": { "id": { "type": "string" }, "created_at": { "type": "string", "format": "date" }, "startAt": { "type": "string", "format": "date" }, "stopAt": { "type": "string", "format": "date" }, "title": { "type": "string" }, "status": { "type": "string", "enum": [ "live", "error", "off-air" ] }, "live": { "type": "boolean" }, "midRollAdsEnabled": { "type": "boolean" }, "adPodSlate": { "type": "string", "description": "The id of the ad slate" }, "syncedAt": { "type": "string", "format": "date" }, "publishedAt": { "type": "string", "format": "date" }, "fallbackSlateId": { "type": "string" }, "region": { "type": "string" }, "highAvailabilityEnabled": { "type": "boolean" }, "liveInputSources": { "title": "LiveInputSource", "type": "object", "properties": { "id": { "description": "Used if you are updating an existing Live Input Source.", "type": "string" }, "name": { "description": "Name of the live input source.", "type": "string" }, "channelId": { "description": "ID of the channel this live input source belongs to.", "type": "string" }, "protocol": { "description": "Protocol used for ingesting the live stream.", "type": "string", "enum": [ "rtmp (PUSH)", "rtp (PUSH)", "srt-listener (PUSH)", "zixi-push (PUSH)", "hls (PULL)" ] }, "ipWhitelist": { "description": "Whitelisted IPv4 addresses. Subnet supported (0.0.0.0/0).", "type": "array", "items": { "type": "string" } }, "serverUrl": { "description": "Primary URL for the push live input source.", "type": "string" }, "serverSecondaryUrl": { "description": "Secondary URL for the push live input source. Only available when the channel is HA.", "type": "string" }, "sourceUrl": { "description": "Primary URL for the pull live input source. Only valid for HLS protocol.", "type": "string" }, "sourceSecondaryUrl": { "description": "Secondary URL for the pull live input source. Only valid for HLS protocol. Only available when the channel is HA.", "type": "string" }, "bufferSegments": { "description": "Number of segments to buffer for HLS live input sources. Only valid for HLS protocol.", "type": "integer", "format": "int32", "default": 4 }, "scte35Source": { "description": "Source of SCTE-35 markers.", "type": "string", "enum": [ "SEGMENTS", "MANIFEST" ] }, "hostname": { "description": "Hostname for the live input source.", "type": "string" }, "secondaryHostname": { "description": "Backup/failover hostname for the live input source, used to build the redundant ingest endpoint. Only available when the channel is HA. If not provided, it is auto-derived from hostname (`-secondary`) the first time hostname is set, and is frozen after that (later hostname changes do not regenerate it). Not allowed for HLS protocol live input sources.", "type": "string" }, "domain": { "description": "Domain used to build the aliased server URLs for this live input source.", "type": "string", "example": "encode.zype.live" }, "serverUrlAlias": { "description": "Full aliased URL for the push live input source, built from hostname and domain. Present when both hostname and serverUrl are set.", "type": "string", "example": "rtmp://api-docs.encode.zype.live/Playout" }, "serverSecondaryUrlAlias": { "description": "Full aliased URL for the secondary push live input source, built from secondaryHostname and domain. Present when hostname and serverSecondaryUrl are set, and only available when the channel is HA.", "type": "string", "example": "rtmp://api-docs-secondary.encode.zype.live/Playout" } }, "example": { "id": "1bf431fa-e285-4e38-9886-5686b30b20fc", "name": "My RTMP Live Input", "channelId": "95efe944-205f-4790-9d99-b27cf3378fe3", "protocol": "rtmp", "ipWhitelist": [ "0.0.0.0/0" ], "serverUrl": "rtmp://10.12.123.111:1935/ZypePlayout/7a20-va84-40d2-89c1-9f62", "serverSecondaryUrl": "rtmp://54.198.191.169:1935/ZypePlayout/fb11-3325-ea5f-1f74-6636", "bufferSegments": 4, "scte35Source": "SEGMENTS", "hostname": "api-docs", "secondaryHostname": "api-docs-secondary", "domain": "encode.zype.live", "serverUrlAlias": "rtmp://api-docs.encode.zype.live/Playout", "serverSecondaryUrlAlias": "rtmp://api-docs-secondary.encode.zype.live/Playout" } }, "channelSetting": { "type": "object", "title": "ChannelSetting", "properties": { "staticOverlayEnabled": { "type": "boolean", "description": "Enables static overlay feature" }, "hideOverlayDuringAds": { "type": "boolean", "description": "Hides the static overlay during Ad slates" }, "priorityTrackGraphicsEnabled": { "type": "boolean", "description": "If true, graphics will apply for videos on the priority track" }, "customDynamicReplacementsEnabled": { "type": "boolean", "description": "Enables custom dynamic replacements feature" }, "customDynamicReplacements": { "type": "array", "description": "Custom attributes to fetch from video's metadata", "items": { "type": "string" } }, "scteMidrollIdMatchEnabled": { "type": "boolean", "description": "When enabled, the Id inserted into the SCTE ad markers during a mid-roll will be the same Id of the video asset" }, "scteMessageFormat": { "type": "string", "description": "Applying to live inputs, the selected format will be the expected SCTE tags format sent from the input source to Playout live inputs", "enum": [ "SPLICE_INSERT", "TIME_SIGNAL" ] }, "availabilityCountries": { "type": "array", "items": { "type": "string" }, "description": "This setting is required by some destinations for determining where content should be available. This is a metadata-only field and does not restrict the playback of content by region." }, "nielsenPcmToId3Tagging": { "type": "boolean", "description": "When enabled, the PCM audio will be converted to ID3 tags for Nielsen reporting" }, "nielsenDistributorId": { "type": "string", "description": "The Nielsen distributor ID. Will be used to report Nielsen metrics to the Nielsen distributor only when nielsenPcmToId3Tagging is true." } } }, "automatedGraphicInsertions": { "type": "array", "items": { "properties": { "assetTypes": { "type": "array", "description": "Determines the asset type to which the graphic will play. At least one is required." }, "duration": { "type": "number", "description": "Determines the duration that the graphic is visible." }, "delay": { "type": "number", "description": "For Intro, determines the delay from when the asset starts to when the graphic starts. For Exit, determines the padding at the end of the video where there will be no graphics" }, "graphicAssetId": { "type": "string", "description": "The Id of the graphic to play on top of the selected asset." } } } }, "staticOverlay": { "type": "object", "description": "Static overlay placement settings", "properties": { "uploadId": { "description": "Upload id so use as the image overlay", "type": "string" }, "anchorPosition": { "type": "string", "enum": [ "bottom_left", "bottom_right", "top_left", "top_right" ], "description": "Anchor position of the upload in the stream", "default": "bottom_right" }, "verticalMargin": { "description": "Vertical margin of the upload in the stream. Between 0% and 100%, relative to the image size and screen resolution", "type": "number", "default": 5 }, "horizontalMargin": { "description": "Horizontal margin of the upload in the stream. Between 0% and 100%, relative to the image size and screen resolution", "type": "number", "default": 5 } } } } } } } }, "422": { "description": "Unprocessable entity. In particular, creating a live_event (Zype Live) channel without a liveInputSources entry returns a zype_live_channel_missing_live_input error.", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}": { "get": { "summary": "View Channel", "description": "", "tags": [ "Channels" ], "operationId": "getPlayoutSchedulerChannel", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "responses": { "200": { "description": "Return a channel", "content": { "application/json": { "schema": { "title": "ChannelResponse", "type": "object", "properties": { "channel": { "$ref": "#/paths/~1scheduler~1v1~1channels/post/responses/201/content/application~1json/schema" } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Channel", "description": "", "tags": [ "Channels" ], "operationId": "deleteChannel", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "responses": { "200": { "description": "Channel deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update Channel", "description": "", "tags": [ "Channels" ], "operationId": "updateChannel", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "x-codegen-request-body-name": "channel", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "title": "ChannelRequestWithLiveSources", "type": "object", "required": [ "channel" ], "properties": { "channel": { "type": "object", "title": "ChannelPropertiesWithLiveSources", "required": [ "title", "startAt" ], "properties": { "title": { "type": "string" }, "fallbackSlateId": { "type": "string" }, "startAt": { "type": "string", "description": "Setting the Start At date & time will make the channel live at the selected date & time. You can select a date/time at least 30 minutes into the future." }, "stopAt": { "type": "string", "description": "Setting the Stop At date & time will stop stop the channel at the selected date & time. You can select a date/time at least 30 minutes into the future." }, "midRollAdsEnabled": { "type": "boolean", "description": "Automatically insert mid-roll ads" }, "adPodSlate": { "type": "string", "description": "Default ad slate. Ads will be inserted at video-level ad timings when dragging a video into the timeline." }, "highAvailabilityEnabled": { "type": "boolean", "default": false, "description": "Enables high availability feature" }, "liveInputSources": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1channels/post/responses/201/content/application~1json/schema/properties/liveInputSources" } }, "channelSetting": { "type": "object", "title": "ChannelSetting", "properties": { "staticOverlayEnabled": { "type": "boolean", "default": false, "description": "Enables static overlay feature" }, "hideOverlayDuringAds": { "type": "boolean", "default": false, "description": "Hides the static overlay during Ad slates" }, "priorityTrackGraphicsEnabled": { "type": "boolean", "default": true, "description": "If true, graphics will apply for videos on the priority track" }, "customDynamicReplacementsEnabled": { "type": "boolean", "default": true, "description": "Enables custom dynamic replacements feature" }, "customDynamicReplacements": { "type": "array", "description": "Custom attributes to fetch from video's metadata", "items": { "type": "string" } }, "scteMidrollIdMatchEnabled": { "type": "boolean", "default": true, "description": "When enabled, the Id inserted into the SCTE ad markers during a mid-roll will be the same Id of the video asset" }, "scteMessageFormat": { "type": "string", "description": "Applying to live inputs, the selected format will be the expected SCTE tags format sent from the input source to Playout live inputs", "enum": [ "SPLICE_INSERT", "TIME_SIGNAL" ] }, "availabilityCountries": { "type": "array", "items": { "type": "string" }, "description": "This setting is required by some destinations for determining where content should be available. This is a metadata-only field and does not restrict the playback of content by region." }, "nielsenPcmToId3Tagging": { "type": "boolean", "description": "When enabled, the PCM audio will be converted to ID3 tags for Nielsen reporting" }, "nielsenDistributorId": { "type": "string", "description": "The Nielsen distributor ID. Will be used to report Nielsen metrics to the Nielsen distributor only when nielsenPcmToId3Tagging is true." } } }, "channelCaptionSetting": { "type": "object", "title": "ChannelCaptionSetting", "properties": { "sourceType": { "type": "string", "enum": [ "Teletext", "Embedded" ] }, "languageCode": { "type": "string" }, "pageNumber": { "type": "string" }, "outputDescription": { "type": "object", "title": "ChannelCaptionSetting", "properties": { "name": { "type": "string" }, "languageCode": { "type": "string" }, "languageDescription": { "type": "string" }, "captionSettings": { "type": "string", "enum": [ "Embedded", "WebVtt" ] } } } } }, "automatedGraphicInsertions": { "type": "array", "items": { "required": [ "assetTypes", "duration", "graphicAssetId", "type" ], "properties": { "assetTypes": { "type": "array", "enum": [ "video", "block", "playlist" ], "description": "Determines the asset type to which the graphic will play. At least one is required." }, "duration": { "type": "number", "description": "Determines the duration that the graphic is visible." }, "delay": { "type": "number", "default": 0, "description": "For Intro, determines the delay from when the asset starts to when the graphic starts. For Exit, determines the padding at the end of the video where there will be no graphics" }, "graphicAssetId": { "type": "string", "description": "The Id of the graphic to play on top of the selected asset." } } } }, "staticOverlay": { "$ref": "#/paths/~1scheduler~1v1~1channels/post/responses/201/content/application~1json/schema/properties/staticOverlay" } } } } } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Channel id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/stop": { "post": { "summary": "Stop On-Air Channel", "description": "", "tags": [ "Channels" ], "operationId": "stopLiveChannel", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/hls": { "get": { "summary": "List HLS Profiles", "description": "", "tags": [ "HLS Profiles" ], "responses": { "200": { "description": "HLS Profiles response", "content": { "application/json": { "schema": { "title": "HlsProfilesResponse", "type": "object", "properties": { "profiles": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1hls/post/responses/201/content/application~1json/schema" } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create HLS Profile", "description": "", "tags": [ "HLS Profiles" ], "operationId": "createHlsProfile", "x-codegen-request-body-name": "profile", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "type": "object", "title": "HlsProfileRequest", "properties": { "code": { "type": "string", "description": "Determines the profile title that will be display in the UI." }, "programDateTimeClock": { "type": "string", "enum": [ "INITIALIZE_FROM_OUTPUT_TIMECODE", "SYSTEM_CLOCK" ], "description": "Specifies the algorithm used to drive the HLS EXT-X-PROGRAM-DATE-TIME clock." }, "captionLanguageSetting": { "type": "string", "enum": [ "INSERT", "NONE" ], "description": "When it's set to 'insert' it will include CLOSED-CAPTIONS lines in the manifest." }, "captionMappings": { "type": "object", "title": "HlsCaptionMapping", "properties": { "eiaChannelNumber": { "type": "number", "description": "Specifies the 608/708 channel number within the video track from which to extract captions. Must be a number between 1 and 4" }, "languageCode": { "type": "string" }, "languageDescription": { "type": "string" } } }, "renditionGroups": { "type": "object", "title": "HlsRenditionGroup", "properties": { "name": { "type": "string" }, "renditionType": { "type": "string", "enum": [ "STANDARD_HLS", "AUDIO_ONLY" ], "description": "When it's set to 'AUDIO_ONLY' the rendition can only have audio tracks." }, "captionDescriptionName": { "type": "string" }, "audio": { "type": "object", "title": "AudioRenditionGroup", "properties": { "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "sampleRate": { "type": "number", "description": "Sample rate in Hz." }, "audioNormalization": { "type": "boolean", "description": "Enable advanced audio normalization settings." } } }, "video": { "type": "object", "title": "VideoRenditionGroup", "properties": { "codecProfile": { "type": "string" }, "codecLevel": { "type": "string" }, "width": { "type": "number" }, "height": { "type": "number" }, "framerate": { "type": "number", "enum": [ 10, 11.988, 12, 12.5, 14.985, 15, 23.976, 24, 25, 29.997, 30, 50, 59.94, 60 ] }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "gopSize": { "type": "number", "description": "GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits." }, "gopUnits": { "type": "string", "enum": [ "FRAMES", "SECONDS" ], "description": "Indicates if the gopSize is specified in frames or seconds." }, "scalingBehavior": { "type": "string", "enum": [ "DEFAULT", "STRETCH_TO_OUTPUT" ], "description": "STRETCH_TO_OUTPUT configures the output position to stretch the video to the specified output resolution (height and width). This option will override any position value. DEFAULT may insert black boxes (pillar boxes or letter boxes) around the video to provide the specified output resolution." }, "bFrames": { "type": "number", "description": "Number of B-frames between reference frames. Must be a number between 0 and 7. Must be 0 when codecProfile is BASELINE." }, "bFrameReference": { "type": "string", "enum": [ "ENABLED", "DISABLED" ], "description": "If enabled, use reference B frames for GOP structures that have B frames > 1." }, "entropyEncoding": { "type": "string", "enum": [ "CABAC", "CAVLC" ], "default": "CABAC", "description": "Entropy encoding mode for the H.264 stream. CABAC is only valid with MAIN or HIGH codec profiles; BASELINE requires CAVLC." }, "adaptiveQuantization": { "type": "string", "enum": [ "HIGH", "AUTO" ] }, "lookAheadRateControl": { "type": "string", "enum": [ "HIGH", "MEDIUM" ], "description": "Amount of lookahead." }, "parControl": { "type": "string", "enum": [ "SPECIFIED", "INITIALIZE_FROM_SOURCE" ], "description": "This field indicates how the output pixel aspect ratio is specified. If 'specified' is selected then the output video pixel aspect ratio is determined by parNumerator and parDenominator, else if 'initializeFromSource' is selected then the output pixsel aspect ratio will be set equal to the input video pixel aspect ratio of the first input." }, "slices": { "type": "number", "description": "Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures. This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution. When it's present it must be a number between 1 and 32." }, "refFrames": { "type": "number", "description": "Number of reference frames to use. Must be a number between 1 and 6." } } } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "HlsProfile", "properties": { "id": { "type": "string" }, "created_at": { "type": "string", "format": "date" }, "siteId": { "type": "string" }, "code": { "type": "string", "description": "Determines the profile title that will be display in the UI." }, "programDateTimeClock": { "type": "string", "enum": [ "INITIALIZE_FROM_OUTPUT_TIMECODE", "SYSTEM_CLOCK" ], "description": "Specifies the algorithm used to drive the HLS EXT-X-PROGRAM-DATE-TIME clock." }, "captionLanguageSetting": { "type": "string", "enum": [ "INSERT", "NONE" ], "description": "When it's set to 'insert' it will include CLOSED-CAPTIONS lines in the manifest." }, "global": { "type": "boolean", "description": "Specifies whether the profile is global or scoped by site." }, "captionMappings": { "type": "object", "title": "HlsCaptionMapping", "properties": { "id": { "type": "string" }, "eiaChannelNumber": { "type": "number", "description": "Specifies the 608/708 channel number within the video track from which to extract captions. Must be a number between 1 and 4" }, "languageCode": { "type": "string" }, "languageDescription": { "type": "string" } } }, "renditionGroups": { "type": "object", "title": "HlsRenditionGroup", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "renditionType": { "type": "string", "enum": [ "STANDARD_HLS", "AUDIO_ONLY" ], "description": "When it's set to 'AUDIO_ONLY' the rendition can only have audio tracks." }, "captionDescriptionName": { "type": "string" }, "AudioRenditionGroup": { "type": "object", "title": "AudioRenditionGroup", "properties": { "id": { "type": "string" }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "sampleRate": { "type": "number", "description": "Sample rate in Hz." }, "audioNormalization": { "type": "boolean", "description": "Enable advanced audio normalization settings." } } }, "VideoRenditionGroup": { "type": "object", "title": "VideoRenditionGroup", "properties": { "id": { "type": "string" }, "codecProfile": { "type": "string" }, "codecLevel": { "type": "string" }, "width": { "type": "number" }, "height": { "type": "number" }, "framerate": { "type": "number", "enum": [ 10, 11.988, 12, 12.5, 14.985, 15, 23.976, 24, 25, 29.997, 30, 50, 59.94, 60 ] }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "gopSize": { "type": "number", "description": "GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits." }, "gopUnits": { "type": "string", "enum": [ "FRAMES", "SECONDS" ], "description": "Indicates if the gopSize is specified in frames or seconds." }, "scalingBehavior": { "type": "string", "enum": [ "DEFAULT", "STRETCH_TO_OUTPUT" ], "description": "STRETCH_TO_OUTPUT configures the output position to stretch the video to the specified output resolution (height and width). This option will override any position value. DEFAULT may insert black boxes (pillar boxes or letter boxes) around the video to provide the specified output resolution." }, "bFrames": { "type": "number", "description": "Number of B-frames between reference frames. Must be a number between 0 and 7. Must be 0 when codecProfile is BASELINE." }, "bFrameReference": { "type": "string", "enum": [ "ENABLED", "DISABLED" ], "description": "If enabled, use reference B frames for GOP structures that have B frames > 1." }, "entropyEncoding": { "type": "string", "enum": [ "CABAC", "CAVLC" ], "default": "CABAC", "description": "Entropy encoding mode for the H.264 stream. CABAC is only valid with MAIN or HIGH codec profiles; BASELINE requires CAVLC." }, "adaptiveQuantization": { "type": "string", "enum": [ "HIGH", "AUTO" ] }, "lookAheadRateControl": { "type": "string", "enum": [ "HIGH", "MEDIUM" ], "description": "Amount of lookahead." }, "parControl": { "type": "string", "enum": [ "SPECIFIED", "INITIALIZE_FROM_SOURCE" ], "description": "This field indicates how the output pixel aspect ratio is specified. If 'specified' is selected then the output video pixel aspect ratio is determined by parNumerator and parDenominator, else if 'initializeFromSource' is selected then the output pixsel aspect ratio will be set equal to the input video pixel aspect ratio of the first input." }, "slices": { "type": "number", "description": "Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures. This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution. When it's present it must be a number between 1 and 32." }, "refFrames": { "type": "number", "description": "Number of reference frames to use. Must be a number between 1 and 6." } } } } }, "channels": { "type": "object", "title": "HlsChannel", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "status": { "type": "string" }, "channelSetting": { "type": "object", "title": "ChannelSetting", "properties": { "hlsProfileId": { "type": "string" }, "customProfileSettingsVisible": { "type": "boolean" }, "customProfileSettingsAllowed": { "type": "boolean" }, "scteMessageFormat": { "type": "string", "enum": [ "TIME_SIGNAL", "SPLICE_INSERT" ] }, "scteProgramIdSource": { "type": "string" } } } } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/hls/{id}": { "get": { "summary": "View HLS Profile", "description": "", "tags": [ "HLS Profiles" ], "operationId": "getHlsProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of HLS Profile" } ], "responses": { "200": { "description": "Return an HLS profile", "content": { "application/json": { "schema": { "title": "HlsProfileResponse", "type": "object", "properties": { "profile": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1hls/post/responses/201/content/application~1json/schema" } } } } } }, "404": { "description": "HLS Profile not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete HLS Profile", "description": "", "tags": [ "HLS Profiles" ], "operationId": "deleteHlsProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of HLS Profile" } ], "responses": { "200": { "description": "HLS Profile deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "HLS Profile not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update HLS Profile", "description": "", "tags": [ "HLS Profiles" ], "operationId": "updateHlsProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of HLS Profile" } ], "x-codegen-request-body-name": "profile", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1hls/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1hls~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "HLS Profile id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/hls/{id}/duplicate": { "post": { "summary": "Duplicate HLS Profile", "description": "", "tags": [ "HLS Profiles" ], "operationId": "duplicateHlsProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of HLS Profile to duplicate" } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1hls~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "HLS Profile id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/udp": { "get": { "summary": "List UDP Profiles", "description": "", "tags": [ "UDP Profiles" ], "responses": { "200": { "description": "UDP Profiles response", "content": { "application/json": { "schema": { "title": "UdpProfilesResponse", "type": "object", "properties": { "profiles": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1udp/post/responses/201/content/application~1json/schema" } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create UDP Profile", "description": "", "tags": [ "UDP Profiles" ], "operationId": "createUdpProfile", "x-codegen-request-body-name": "profile", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "type": "object", "title": "UdpProfileRequest", "description": "Request body for creating or updating a UDP profile. Must contain exactly one rendition group with both audio and video configs.", "properties": { "code": { "type": "string", "description": "Determines the profile title that will be displayed in the UI." }, "renditionGroups": { "type": "array", "description": "UDP profiles allow exactly one rendition group, which must include both audio and video configs.", "items": { "type": "object", "title": "UdpRenditionGroup", "properties": { "name": { "type": "string" }, "renditionType": { "type": "string", "enum": [ "STANDARD_UDP" ] }, "captionDescriptionName": { "type": "string" }, "audio": { "type": "object", "title": "AudioRenditionGroup", "properties": { "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "sampleRate": { "type": "number", "description": "Sample rate in Hz." }, "audioNormalization": { "type": "boolean", "description": "Enable advanced audio normalization settings." } } }, "video": { "type": "object", "title": "VideoRenditionGroup", "properties": { "codecProfile": { "type": "string" }, "codecLevel": { "type": "string" }, "width": { "type": "number" }, "height": { "type": "number" }, "framerate": { "type": "number", "enum": [ 10, 11.988, 12, 12.5, 14.985, 15, 23.976, 24, 25, 29.997, 30, 50, 59.94, 60 ] }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "gopSize": { "type": "number", "description": "GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits." }, "gopUnits": { "type": "string", "enum": [ "FRAMES", "SECONDS" ], "description": "Indicates if the gopSize is specified in frames or seconds." }, "scalingBehavior": { "type": "string", "enum": [ "DEFAULT", "STRETCH_TO_OUTPUT" ], "description": "STRETCH_TO_OUTPUT configures the output position to stretch the video to the specified output resolution (height and width). This option will override any position value. DEFAULT may insert black boxes (pillar boxes or letter boxes) around the video to provide the specified output resolution." }, "bFrames": { "type": "number", "description": "Number of B-frames between reference frames. Must be a number between 0 and 7. Must be 0 when codecProfile is BASELINE." }, "bFrameReference": { "type": "string", "enum": [ "ENABLED", "DISABLED" ], "description": "If enabled, use reference B frames for GOP structures that have B frames > 1." }, "entropyEncoding": { "type": "string", "enum": [ "CABAC", "CAVLC" ], "default": "CABAC", "description": "Entropy encoding mode for the H.264 stream. CABAC is only valid with MAIN or HIGH codec profiles; BASELINE requires CAVLC." }, "adaptiveQuantization": { "type": "string", "enum": [ "HIGH", "AUTO" ] }, "lookAheadRateControl": { "type": "string", "enum": [ "HIGH", "MEDIUM" ], "description": "Amount of lookahead." }, "parControl": { "type": "string", "enum": [ "SPECIFIED", "INITIALIZE_FROM_SOURCE" ], "description": "This field indicates how the output pixel aspect ratio is specified. If 'specified' is selected then the output video pixel aspect ratio is determined by parNumerator and parDenominator, else if 'initializeFromSource' is selected then the output pixsel aspect ratio will be set equal to the input video pixel aspect ratio of the first input." }, "slices": { "type": "number", "description": "Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures. This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution. When it's present it must be a number between 1 and 32." }, "refFrames": { "type": "number", "description": "Number of reference frames to use. Must be a number between 1 and 6." } } } } } }, "renditionGroupsToDelete": { "type": "array", "description": "IDs of existing rendition groups to remove (used in update requests).", "items": { "type": "string" } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "UdpProfile", "properties": { "id": { "type": "string" }, "created_at": { "type": "string", "format": "date" }, "siteId": { "type": "string" }, "code": { "type": "string", "description": "Determines the profile title that will be displayed in the UI." }, "renditionGroups": { "type": "array", "description": "UDP profiles allow exactly one rendition group.", "items": { "type": "object", "title": "UdpRenditionGroup", "description": "Rendition group for a UDP profile. UDP profiles allow exactly one rendition group, which must include both audio and video configs.", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "renditionType": { "type": "string", "enum": [ "STANDARD_UDP" ] }, "captionDescriptionName": { "type": "string" }, "AudioRenditionGroup": { "type": "object", "title": "AudioRenditionGroup", "properties": { "id": { "type": "string" }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "sampleRate": { "type": "number", "description": "Sample rate in Hz." }, "audioNormalization": { "type": "boolean", "description": "Enable advanced audio normalization settings." } } }, "VideoRenditionGroup": { "type": "object", "title": "VideoRenditionGroup", "properties": { "id": { "type": "string" }, "codecProfile": { "type": "string" }, "codecLevel": { "type": "string" }, "width": { "type": "number" }, "height": { "type": "number" }, "framerate": { "type": "number", "enum": [ 10, 11.988, 12, 12.5, 14.985, 15, 23.976, 24, 25, 29.997, 30, 50, 59.94, 60 ] }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "gopSize": { "type": "number", "description": "GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits." }, "gopUnits": { "type": "string", "enum": [ "FRAMES", "SECONDS" ], "description": "Indicates if the gopSize is specified in frames or seconds." }, "scalingBehavior": { "type": "string", "enum": [ "DEFAULT", "STRETCH_TO_OUTPUT" ], "description": "STRETCH_TO_OUTPUT configures the output position to stretch the video to the specified output resolution (height and width). This option will override any position value. DEFAULT may insert black boxes (pillar boxes or letter boxes) around the video to provide the specified output resolution." }, "bFrames": { "type": "number", "description": "Number of B-frames between reference frames. Must be a number between 0 and 7. Must be 0 when codecProfile is BASELINE." }, "bFrameReference": { "type": "string", "enum": [ "ENABLED", "DISABLED" ], "description": "If enabled, use reference B frames for GOP structures that have B frames > 1." }, "entropyEncoding": { "type": "string", "enum": [ "CABAC", "CAVLC" ], "default": "CABAC", "description": "Entropy encoding mode for the H.264 stream. CABAC is only valid with MAIN or HIGH codec profiles; BASELINE requires CAVLC." }, "adaptiveQuantization": { "type": "string", "enum": [ "HIGH", "AUTO" ] }, "lookAheadRateControl": { "type": "string", "enum": [ "HIGH", "MEDIUM" ], "description": "Amount of lookahead." }, "parControl": { "type": "string", "enum": [ "SPECIFIED", "INITIALIZE_FROM_SOURCE" ], "description": "This field indicates how the output pixel aspect ratio is specified. If 'specified' is selected then the output video pixel aspect ratio is determined by parNumerator and parDenominator, else if 'initializeFromSource' is selected then the output pixsel aspect ratio will be set equal to the input video pixel aspect ratio of the first input." }, "slices": { "type": "number", "description": "Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures. This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution. When it's present it must be a number between 1 and 32." }, "refFrames": { "type": "number", "description": "Number of reference frames to use. Must be a number between 1 and 6." } } } } } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/udp/{id}": { "get": { "summary": "View UDP Profile", "description": "", "tags": [ "UDP Profiles" ], "operationId": "getUdpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of UDP Profile" } ], "responses": { "200": { "description": "Return a UDP profile", "content": { "application/json": { "schema": { "title": "UdpProfileResponse", "type": "object", "properties": { "profile": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1udp/post/responses/201/content/application~1json/schema" } } } } } }, "404": { "description": "UDP Profile not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete UDP Profile", "description": "", "tags": [ "UDP Profiles" ], "operationId": "deleteUdpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of UDP Profile" } ], "responses": { "200": { "description": "UDP Profile deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "UDP Profile not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update UDP Profile", "description": "", "tags": [ "UDP Profiles" ], "operationId": "updateUdpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of UDP Profile" } ], "x-codegen-request-body-name": "profile", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1udp/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1udp~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "UDP Profile id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/udp/{id}/duplicate": { "post": { "summary": "Duplicate UDP Profile", "description": "", "tags": [ "UDP Profiles" ], "operationId": "duplicateUdpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of UDP Profile to duplicate" } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1udp~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "UDP Profile id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/rtmp": { "get": { "summary": "List RTMP Profiles", "description": "", "tags": [ "RTMP Profiles" ], "responses": { "200": { "description": "RTMP Profiles response", "content": { "application/json": { "schema": { "title": "RtmpProfilesResponse", "type": "object", "properties": { "profiles": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1rtmp/post/responses/201/content/application~1json/schema" } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create RTMP Profile", "description": "", "tags": [ "RTMP Profiles" ], "operationId": "createRtmpProfile", "x-codegen-request-body-name": "profile", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "type": "object", "title": "RtmpProfileRequest", "description": "Request body for creating or updating an RTMP profile. Must contain exactly one rendition group with both audio and video configs.", "properties": { "code": { "type": "string", "description": "Determines the profile title that will be displayed in the UI." }, "renditionGroups": { "type": "array", "description": "RTMP profiles allow exactly one rendition group, which must include both audio and video configs.", "items": { "type": "object", "title": "RtmpRenditionGroup", "properties": { "name": { "type": "string" }, "renditionType": { "type": "string", "enum": [ "STANDARD_RTMP" ] }, "captionDescriptionName": { "type": "string" }, "audio": { "type": "object", "title": "AudioRenditionGroup", "properties": { "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "sampleRate": { "type": "number", "description": "Sample rate in Hz." }, "audioNormalization": { "type": "boolean", "description": "Enable advanced audio normalization settings." } } }, "video": { "type": "object", "title": "VideoRenditionGroup", "properties": { "codecProfile": { "type": "string" }, "codecLevel": { "type": "string" }, "width": { "type": "number" }, "height": { "type": "number" }, "framerate": { "type": "number", "enum": [ 10, 11.988, 12, 12.5, 14.985, 15, 23.976, 24, 25, 29.997, 30, 50, 59.94, 60 ] }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "gopSize": { "type": "number", "description": "GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits." }, "gopUnits": { "type": "string", "enum": [ "FRAMES", "SECONDS" ], "description": "Indicates if the gopSize is specified in frames or seconds." }, "scalingBehavior": { "type": "string", "enum": [ "DEFAULT", "STRETCH_TO_OUTPUT" ], "description": "STRETCH_TO_OUTPUT configures the output position to stretch the video to the specified output resolution (height and width). This option will override any position value. DEFAULT may insert black boxes (pillar boxes or letter boxes) around the video to provide the specified output resolution." }, "bFrames": { "type": "number", "description": "Number of B-frames between reference frames. Must be a number between 0 and 7. Must be 0 when codecProfile is BASELINE." }, "bFrameReference": { "type": "string", "enum": [ "ENABLED", "DISABLED" ], "description": "If enabled, use reference B frames for GOP structures that have B frames > 1." }, "entropyEncoding": { "type": "string", "enum": [ "CABAC", "CAVLC" ], "default": "CABAC", "description": "Entropy encoding mode for the H.264 stream. CABAC is only valid with MAIN or HIGH codec profiles; BASELINE requires CAVLC." }, "adaptiveQuantization": { "type": "string", "enum": [ "HIGH", "AUTO" ] }, "lookAheadRateControl": { "type": "string", "enum": [ "HIGH", "MEDIUM" ], "description": "Amount of lookahead." }, "parControl": { "type": "string", "enum": [ "SPECIFIED", "INITIALIZE_FROM_SOURCE" ], "description": "This field indicates how the output pixel aspect ratio is specified. If 'specified' is selected then the output video pixel aspect ratio is determined by parNumerator and parDenominator, else if 'initializeFromSource' is selected then the output pixsel aspect ratio will be set equal to the input video pixel aspect ratio of the first input." }, "slices": { "type": "number", "description": "Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures. This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution. When it's present it must be a number between 1 and 32." }, "refFrames": { "type": "number", "description": "Number of reference frames to use. Must be a number between 1 and 6." } } } } } }, "renditionGroupsToDelete": { "type": "array", "description": "IDs of existing rendition groups to remove (used in update requests).", "items": { "type": "string" } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "RtmpProfile", "properties": { "id": { "type": "string" }, "created_at": { "type": "string", "format": "date" }, "siteId": { "type": "string" }, "code": { "type": "string", "description": "Determines the profile title that will be displayed in the UI." }, "renditionGroups": { "type": "array", "description": "RTMP profiles allow exactly one rendition group.", "items": { "type": "object", "title": "RtmpRenditionGroup", "description": "Rendition group for an RTMP profile. RTMP profiles allow exactly one rendition group, which must include both audio and video configs.", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "renditionType": { "type": "string", "enum": [ "STANDARD_RTMP" ] }, "captionDescriptionName": { "type": "string" }, "AudioRenditionGroup": { "type": "object", "title": "AudioRenditionGroup", "properties": { "id": { "type": "string" }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "sampleRate": { "type": "number", "description": "Sample rate in Hz." }, "audioNormalization": { "type": "boolean", "description": "Enable advanced audio normalization settings." } } }, "VideoRenditionGroup": { "type": "object", "title": "VideoRenditionGroup", "properties": { "id": { "type": "string" }, "codecProfile": { "type": "string" }, "codecLevel": { "type": "string" }, "width": { "type": "number" }, "height": { "type": "number" }, "framerate": { "type": "number", "enum": [ 10, 11.988, 12, 12.5, 14.985, 15, 23.976, 24, 25, 29.997, 30, 50, 59.94, 60 ] }, "bitrate": { "type": "number", "description": "Average bitrate in bits/second." }, "gopSize": { "type": "number", "description": "GOP size (keyframe interval) in units of either frames or seconds per gopSizeUnits." }, "gopUnits": { "type": "string", "enum": [ "FRAMES", "SECONDS" ], "description": "Indicates if the gopSize is specified in frames or seconds." }, "scalingBehavior": { "type": "string", "enum": [ "DEFAULT", "STRETCH_TO_OUTPUT" ], "description": "STRETCH_TO_OUTPUT configures the output position to stretch the video to the specified output resolution (height and width). This option will override any position value. DEFAULT may insert black boxes (pillar boxes or letter boxes) around the video to provide the specified output resolution." }, "bFrames": { "type": "number", "description": "Number of B-frames between reference frames. Must be a number between 0 and 7. Must be 0 when codecProfile is BASELINE." }, "bFrameReference": { "type": "string", "enum": [ "ENABLED", "DISABLED" ], "description": "If enabled, use reference B frames for GOP structures that have B frames > 1." }, "entropyEncoding": { "type": "string", "enum": [ "CABAC", "CAVLC" ], "default": "CABAC", "description": "Entropy encoding mode for the H.264 stream. CABAC is only valid with MAIN or HIGH codec profiles; BASELINE requires CAVLC." }, "adaptiveQuantization": { "type": "string", "enum": [ "HIGH", "AUTO" ] }, "lookAheadRateControl": { "type": "string", "enum": [ "HIGH", "MEDIUM" ], "description": "Amount of lookahead." }, "parControl": { "type": "string", "enum": [ "SPECIFIED", "INITIALIZE_FROM_SOURCE" ], "description": "This field indicates how the output pixel aspect ratio is specified. If 'specified' is selected then the output video pixel aspect ratio is determined by parNumerator and parDenominator, else if 'initializeFromSource' is selected then the output pixsel aspect ratio will be set equal to the input video pixel aspect ratio of the first input." }, "slices": { "type": "number", "description": "Number of slices per picture. Must be less than or equal to the number of macroblock rows for progressive pictures, and less than or equal to half the number of macroblock rows for interlaced pictures. This field is optional; when no value is specified the encoder will choose the number of slices based on encode resolution. When it's present it must be a number between 1 and 32." }, "refFrames": { "type": "number", "description": "Number of reference frames to use. Must be a number between 1 and 6." } } } } } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/rtmp/{id}": { "get": { "summary": "View RTMP Profile", "description": "", "tags": [ "RTMP Profiles" ], "operationId": "getRtmpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of RTMP Profile" } ], "responses": { "200": { "description": "Return an RTMP profile", "content": { "application/json": { "schema": { "title": "RtmpProfileResponse", "type": "object", "properties": { "profile": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1rtmp/post/responses/201/content/application~1json/schema" } } } } } }, "404": { "description": "RTMP Profile not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete RTMP Profile", "description": "", "tags": [ "RTMP Profiles" ], "operationId": "deleteRtmpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of RTMP Profile" } ], "responses": { "200": { "description": "RTMP Profile deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "RTMP Profile not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update RTMP Profile", "description": "", "tags": [ "RTMP Profiles" ], "operationId": "updateRtmpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of RTMP Profile" } ], "x-codegen-request-body-name": "profile", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1rtmp/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1rtmp~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "RTMP Profile id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/profiles/rtmp/{id}/duplicate": { "post": { "summary": "Duplicate RTMP Profile", "description": "", "tags": [ "RTMP Profiles" ], "operationId": "duplicateRtmpProfile", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of RTMP Profile to duplicate" } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1profiles~1rtmp~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "RTMP Profile id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/types": { "get": { "summary": "List Destination Types", "description": "", "operationId": "getDestinationTypes", "tags": [ "Destinations" ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "Page number to return, with per_page dictating page size" }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "Number of records to return per page" } ], "responses": { "200": { "description": "Destination Types response", "content": { "application/json": { "schema": { "title": "DestinationTypesResponse", "type": "object", "properties": { "destinationTypes": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1types~1%7Bid%7D/get/responses/200/content/application~1json/schema/properties/destinationType" }, "description": "" }, "pagination": { "title": "PlayoutSchedulerPagination", "type": "object", "properties": { "perPage": { "type": "number", "format": "int32", "description": "the number of results returned per page" }, "page": { "type": "number", "format": "int32", "description": "The current page of results" }, "totalPages": { "type": "number", "format": "int32", "description": "the total number of pages available, using per_page" }, "count": { "type": "number", "format": "int32", "description": "the quantity of results on the current page" } }, "example": { "perPage": 100, "page": 1, "totalPages": 3, "count": 100 } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "title": "Unprocessable Entity", "type": "object", "properties": { "message": { "type": "string" } } } } } } } } }, "/scheduler/v1/types/{id}": { "get": { "summary": "View Destination Type", "description": "", "tags": [ "Destinations" ], "operationId": "getDestinationType", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Destination Type" } ], "responses": { "200": { "description": "Return a destination type", "content": { "application/json": { "schema": { "title": "DestinationTypeResponse", "type": "object", "properties": { "destinationType": { "type": "object", "title": "Destination Type", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" } } } } } } } }, "404": { "description": "Destination type not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/destinations": { "get": { "summary": "List Destinations", "description": "", "operationId": "getChannelsDestinations", "tags": [ "Destinations" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "responses": { "200": { "description": "Destinations response", "content": { "application/json": { "schema": { "title": "DestinationsResponse", "type": "object", "properties": { "destinations": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1destinations/post/responses/201/content/application~1json/schema/properties/destination" } }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Destination", "description": "", "tags": [ "Destinations" ], "operationId": "createChannelDestination", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of the Channel" } ], "x-codegen-request-body-name": "destination", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "title": "DestinationRequest", "type": "object", "required": [ "name", "channelId", "enabled", "destinationTypeId", "staticUrlDelivery" ], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "channelId": { "type": "string" }, "enabled": { "type": "boolean", "default": true }, "ssaiEnabled": { "type": "boolean", "default": false }, "adInsertionServers": { "type": "array", "items": { "type": "object", "properties": { "slateId": { "type": "string" }, "queryParams": { "type": "string", "description": "Depending on your ADS, you can specify custom ad parameters to send in the request to your ad provider. These parameters help to identify the playback session and viewer so that ads can be more targeted." }, "url": { "type": "string", "description": "Also known as ADS. This is typically a VAST-compliant tag URL generated by your ad provider. This is the tag URL used by this channel when inserting ad breaks into the manifest." }, "prefetch": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enables ad prefetch in ssai enabled destinations. Allows for consistent playback of ads." }, "retrieval": { "type": "number", "description": "Prefetch Retrieval Time (seconds)" } } }, "customCdnUrl": { "type": "string", "description": "Custom CDN url" }, "deviceCategory": { "type": "string", "enum": [ "default", "web", "mobile", "tv" ] }, "availSuppressionConfig": { "type": "object", "title": "AvailSuppressionConfig", "description": "Controls ad break (avail) suppression relative to the live edge. When mode is OFF, other fields are ignored. For BEHIND_LIVE_EDGE or AFTER_LIVE_EDGE, `value` is required (HH:MM:SS, e.g. `00:45:00`). For BEHIND_LIVE_EDGE, `fillPolicy` is always normalized to FULL_AVAIL_ONLY. For AFTER_LIVE_EDGE, `fillPolicy` must be FULL_AVAIL_ONLY or PARTIAL_AVAIL.\n", "properties": { "mode": { "type": "string", "enum": [ "OFF", "BEHIND_LIVE_EDGE", "AFTER_LIVE_EDGE" ] }, "value": { "type": "string", "description": "Offset from the live edge in HH:MM:SS format (required when mode is BEHIND_LIVE_EDGE or AFTER_LIVE_EDGE).", "example": "00:45:00" }, "fillPolicy": { "type": "string", "enum": [ "FULL_AVAIL_ONLY", "PARTIAL_AVAIL" ], "description": "Required when mode is AFTER_LIVE_EDGE. Ignored for BEHIND_LIVE_EDGE (API uses FULL_AVAIL_ONLY)." } } } } } }, "distributionTarget": { "type": "string", "description": "Human-readable name of the distribution target (e.g., YouTube, Pluto TV, Samsung TV Plus)" }, "destinationTypeId": { "type": "number", "format": "int32" }, "staticUrlDelivery": { "type": "boolean", "default": false, "description": "Enable static URL delivery for destinations that require syndication URLs with dynamic query parameters removed from master and child manifests." }, "queryParams": { "type": "string", "description": "You can specify custom query parameters and static values that will be appended to to all traffic for an HLS destination. These custom query params can also propagated downstream to SSAI providers on ad requests." }, "streamOutputSettings": { "type": "object", "description": "Only for Hulu (UDP) destinations", "properties": { "streamId": { "type": "string", "description": "The stream ID that is set in the Zixi receiver." }, "destinationIp": { "type": "string", "description": "Destination IP address. Sample format: 192.0.2.0" }, "maxLatency": { "type": "number", "description": "Maximum latency - optional. The size of the buffer (in ms) that you want. Valid range: 0-60,000. Valid characters: 0-9" }, "port": { "type": "number" } } }, "rtmpSettings": { "type": "object", "description": "Only for RTMP destinations", "properties": { "outputResolution": { "type": "string", "enum": [ "1080p", "720p" ] }, "primaryUrl": { "type": "string", "description": "Primary Destination URL" }, "backupUrl": { "type": "string", "description": "Backup Destination URL" }, "streamKey": { "type": "string", "description": "Stream Key or Stream Name" }, "authEnabled": { "type": "boolean", "description": "User Authentication" }, "username": { "type": "string" }, "password": { "type": "string" } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "title": "DestinationResponse", "type": "object", "properties": { "destination": { "type": "object", "title": "Destination", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "channelId": { "type": "string" }, "ssaiEnabled": { "type": "boolean" }, "enabled": { "type": "boolean" }, "type": { "type": "string" }, "settings": { "type": "object", "properties": { "version": { "type": "number" }, "adMarkers": { "type": "string" }, "queryParams": { "type": "string" }, "settingsVersion": { "type": "number" }, "hlsSegmentDuration": { "type": "number" }, "manifestBitrateOrder": { "type": "string" }, "audioNormalizationRequired": { "type": "boolean" }, "hlsLivePlaylistWindowDuration": { "type": "number" } } }, "distributionTarget": { "type": "string", "description": "Human-readable name of the distribution target (e.g., YouTube, Pluto TV, Samsung TV Plus)" }, "destinationTypeName": { "type": "string" }, "queryParams": { "type": "string" }, "description": { "type": "string" }, "url": { "type": "string", "description": "Destination playback URL (only for HLS destinations)" }, "adInsertionServers": { "type": "array", "items": { "type": "object", "title": "AdInsertionServer", "properties": { "id": { "type": "string" }, "deviceCategory": { "type": "string", "enum": [ "default", "ott", "tablet", "mobile", "tv" ] }, "slateId": { "type": "string" }, "queryParams": { "type": "string" }, "url": { "type": "string" }, "prefetch": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "retrieval": { "type": "number" } } }, "logging": { "type": "object", "properties": { "percentage": { "type": "number" }, "expiration": { "type": "number" } } }, "availSuppressionConfig": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1destinations/post/requestBody/content/application~1json/schema/properties/adInsertionServers/items/properties/availSuppressionConfig" } } } }, "streamOutputSettings": { "type": "object", "description": "Only for Hulu (UDP) destinations", "properties": { "streamId": { "type": "string" }, "destinationIp": { "type": "string" }, "maxLatency": { "type": "number" }, "port": { "type": "number" } } }, "rtmpSettings": { "type": "object", "description": "Only for RTMP destinations", "properties": { "outputResolution": { "type": "string", "enum": [ "1080p", "720p" ] }, "primaryUrl": { "type": "string" }, "backupUrl": { "type": "string" }, "streamKey": { "type": "string" }, "authEnabled": { "type": "boolean" }, "username": { "type": "string" }, "password": { "type": "string" } } }, "staticUrlDelivery": { "type": "boolean" } } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/destinations/{destinationId}": { "get": { "summary": "View Destination", "description": "", "tags": [ "Destinations" ], "operationId": "getChannelDestination", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "destinationId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel Destination" } ], "responses": { "200": { "description": "Return a channel destination", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1destinations/post/responses/201/content/application~1json/schema" } } } }, "404": { "description": "Channel destination not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Destination", "description": "", "tags": [ "Destinations" ], "operationId": "deleteChannelDestination", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "destinationId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel Destination" } ], "responses": { "200": { "description": "Channel destination deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Channel destination not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update Destination", "description": "", "tags": [ "Destinations" ], "operationId": "updateChannelDestination", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "destinationId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel Destination" } ], "x-codegen-request-body-name": "destination", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1destinations/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "Channel destination updated successfully", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1destinations/post/responses/201/content/application~1json/schema" } } } }, "404": { "description": "Channel destination not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/draft": { "get": { "summary": "View Channel's Draft", "description": "", "tags": [ "Draft Versions" ], "operationId": "getPlayoutSchedulerChannelDraft", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "startsAt", "in": "query", "required": false, "schema": { "type": "number" }, "description": "Timestamp to filter timeline. It will return items after the given time" }, { "name": "endsAt", "in": "query", "required": false, "schema": { "type": "number" }, "description": "Timestamp to filter timeline. It will return items up to the given time" }, { "name": "autoGraphics", "in": "query", "required": false, "schema": { "type": "boolean", "default": true }, "description": "If true, the automated graphics track will be included in the response" } ], "responses": { "200": { "description": "Return a channel including it's draft information", "content": { "application/json": { "schema": { "title": "ChannelWithDraftResponse", "type": "object", "properties": { "channel": { "type": "object", "title": "ChannelWithDraft", "properties": { "id": { "type": "string" }, "created_at": { "type": "string" }, "startAt": { "type": "string" }, "stopAt": { "type": "string" }, "title": { "type": "string" }, "live": { "type": "boolean" }, "fallbackSlateId": { "type": "string" }, "draftVersion": { "type": "object", "properties": { "createdAt": { "type": "string" }, "scheduleSet": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1operations/post/responses/201/content/application~1json/schema/properties/operation/properties/newScheduleSet" } } } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/draft/items/{itemId}/graphics": { "get": { "summary": "View track item's automated graphics", "description": "Returns automated graphics associated with the given track item id", "tags": [ "Draft Versions" ], "operationId": "getPlayoutSchedulerTrackItemGraphics", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of channel" }, { "name": "itemId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of track item" } ], "responses": { "200": { "description": "Return the list of automated graphics overlaying the given track item", "content": { "application/json": { "schema": { "title": "TrackItemGraphicsResponse", "type": "object", "properties": { "graphics": { "type": "array", "items": { "type": "object", "title": "TrackItem", "properties": { "id": { "type": "string" }, "assetType": { "type": "string" }, "assetId": { "type": "string" }, "assetDuration": { "type": "number" }, "startsAt": { "type": "number", "description": "Timestamp in milliseconds" }, "endsAt": { "type": "number", "description": "Timestamp in milliseconds" }, "durationInSeconds": { "type": "number" }, "beginAtSecond": { "type": "number" }, "truncateAtSecond": { "type": "number" }, "title": { "type": "string" }, "description": { "type": "string" }, "isInfinite": { "type": "boolean" }, "isRecurring": { "type": "boolean" }, "recurrenceSettings": { "type": "object", "properties": { "gapMs": { "type": "number", "description": "Number of milliseconds between repetitions" }, "times": { "type": "number" }, "infinitely": { "type": "boolean" }, "until": { "type": "number", "description": "Timestamp in milliseconds" } } }, "graphic": { "$ref": "#/paths/~1scheduler~1v2~1assets~1graphics/post/responses/201/content/application~1json/schema/properties/destinationType" } } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/draft/rundown": { "get": { "summary": "View Channel Draft's Schedule Rundown", "description": "", "tags": [ "Draft Versions" ], "operationId": "getPlayoutSchedulerChannelDraftsRundown", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "start", "in": "query", "required": false, "schema": { "type": "number" }, "description": "Timestamp in milliseconds of beginning of interval (defaults to current timestamp)" }, { "name": "hours", "in": "query", "required": false, "description": "Number of hours of the interval to calculate", "schema": { "type": "number", "default": 24, "maximum": 24, "minimum": 1 } } ], "responses": { "200": { "description": "Return's a channel draft version's rundown", "content": { "application/json": { "schema": { "title": "RundownResponse", "type": "object", "properties": { "rundown": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "One of 'video', 'ad', 'slate', 'bumper'" }, "assetId": { "type": "string" }, "parentType": { "type": "string" }, "parentAssetId": { "type": "string" }, "start": { "type": "number" }, "end": { "type": "number" }, "trackItemId": { "type": "string" }, "truncateAtSecond": { "type": "number" }, "beginAtSecond": { "type": "number" }, "repetition": { "type": "number" }, "graphics": { "type": "array", "description": "Graphics to be play during the item airtime", "items": { "type": "object", "properties": { "preview": { "type": "string", "description": "Url to preview the graphic" }, "title": { "type": "string", "description": "Graphic asset title" }, "id": { "type": "string", "description": "Graphic asset id" }, "layer": { "type": "number", "description": "Graphic asset layer" }, "start": { "type": "number", "description": "Start time (epoch) of the graphic" }, "end": { "type": "number", "description": "End time (epoch) of the graphic" }, "opacity": { "type": "number", "description": "Graphic asset opacity" }, "fadeIn": { "type": "number", "description": "Duration of the fade in effect" }, "fadeOut": { "type": "number", "description": "Duration of the fade out effect" } } } } } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/draft/publish": { "post": { "summary": "Publish Channel's Draft", "description": "", "tags": [ "Draft Versions" ], "operationId": "publishPlayoutSchedulerChannelDraft", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "responses": { "200": { "description": "Return a channel including it's published information", "content": { "application/json": { "schema": { "type": "object", "properties": { "result": { "type": "object", "properties": { "succeeded": { "type": "boolean" }, "channel": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1published/get/responses/200/content/application~1json/schema/properties/channel" } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft/get/responses/200/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/draft/operations": { "get": { "summary": "List Operations", "description": "", "tags": [ "Timeline Operations" ], "operationId": "getPlayoutSchedulerOperations", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "responses": { "200": { "description": "Operation List response", "content": { "application/json": { "schema": { "title": "OperationsResponse", "type": "object", "properties": { "operations": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1operations/post/responses/201/content/application~1json/schema/properties/operation" } }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Operation", "description": "", "operationId": "createPlayoutSchedulerOperation", "tags": [ "Timeline Operations" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "x-codegen-request-body-name": "operation", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "title": "trackItemOperationRequest", "properties": { "operation": { "type": "object", "title": "TrackItemOperationProperties", "required": [ "type", "trackName", "author" ], "properties": { "type": { "type": "string", "enum": [ "pushTrackItem", "updateTrackItem", "removeTrackItem", "groupItems", "ungroupItem" ] }, "trackName": { "type": "string", "enum": [ "baseTrack", "priorityTrack" ] }, "author": { "type": "object", "description": "User information for audit purposes", "required": [ "userId", "email", "name" ], "properties": { "userId": { "type": "string", "description": "User id of the user performing the operation" }, "email": { "type": "string", "description": "Email of the user performing the operation" }, "name": { "type": "string", "description": "Name of the user performing the operation" } } }, "name": { "type": "string", "description": "Name of the operation (only for audit purposes)" }, "values": { "type": "object", "properties": { "trackItem": { "description": "Only for Push and Update operations", "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1items~1%7BitemId%7D~1graphics/get/responses/200/content/application~1json/schema/properties/graphics/items" }, "trackItemIds": { "type": "array", "description": "IDs of the track items to be grouped into a block (Only for Group operation)", "items": { "type": "string" } }, "trackItemId": { "type": "string", "description": "The ID of the track item to be removed or ungrouped (Only for Remove and Ungroup operations)" } } } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "title": "OperationResponse", "type": "object", "properties": { "operation": { "type": "object", "title": "Operation", "properties": { "id": { "type": "string" }, "type": { "type": "string" }, "parameters": { "type": "object" }, "previousScheduleSet": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1operations/post/responses/201/content/application~1json/schema/properties/operation/properties/newScheduleSet" }, "newScheduleSet": { "type": "object", "title": "Schedule Set", "properties": { "baseTrack": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1items~1%7BitemId%7D~1graphics/get/responses/200/content/application~1json/schema/properties/graphics/items" } } } }, "priorityTrack": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1items~1%7BitemId%7D~1graphics/get/responses/200/content/application~1json/schema/properties/graphics/items" } } } } } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "delete": { "summary": "Revert all operations", "description": "", "tags": [ "Timeline Operations" ], "operationId": "revertAllPlayoutSchedulerOperations", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" } ], "responses": { "200": { "description": "Operations reverted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/draft/operations/{operationId}": { "get": { "summary": "View Operation", "description": "", "tags": [ "Timeline Operations" ], "operationId": "getPlayoutSchedulerOperation", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of the Channel" }, { "name": "operationId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of the Operation" } ], "responses": { "200": { "description": "Return an operation", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1operations/post/responses/201/content/application~1json/schema" } } } }, "404": { "description": "Operation not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/draft/operations/{operationId}/revert": { "post": { "summary": "Revert a Draft Schedule to the specified operation", "description": "", "tags": [ "Timeline Operations" ], "operationId": "revertPlayoutSchedulerOperation", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "operationId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of the Operation to revert to" } ], "responses": { "200": { "description": "Returns the Channel With Draft and Schedule", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Operation not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/published": { "get": { "summary": "View Channel's Published", "description": "", "tags": [ "Published Versions" ], "operationId": "getPlayoutSchedulerChannelPublished", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "startsAt", "in": "query", "required": false, "schema": { "type": "number" }, "description": "Timestamp to filter timeline. It will return items after the given time" } ], "responses": { "200": { "description": "Return a channel including it's published information", "content": { "application/json": { "schema": { "title": "ChannelWithPublishedResponse", "type": "object", "properties": { "channel": { "type": "object", "title": "ChannelWithPublished", "properties": { "id": { "type": "string" }, "created_at": { "type": "string" }, "startAt": { "type": "string" }, "stopAt": { "type": "string" }, "title": { "type": "string" }, "live": { "type": "boolean" }, "publishedAt": { "type": "string" }, "fallbackSlateId": { "type": "string" }, "publishedVersion": { "type": "object", "properties": { "createdAt": { "type": "string" }, "scheduleSet": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1operations/post/responses/201/content/application~1json/schema/properties/operation/properties/newScheduleSet" } } } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/graphics_sync": { "post": { "summary": "Sync automated graphic insertions", "description": "Sync the automated graphic insertions configured for the channel on every future track item (performed asynchronously).", "tags": [ "Channels" ], "operationId": "graphicsSync", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Id of Channel" } ], "responses": { "200": { "description": "Graphics enqueued for synchronization" }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/blocks": { "get": { "summary": "List Blocks", "description": "", "operationId": "getPlayoutSchedulerBlocksV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filter by ID\nExample: `id=5992f328ce593000ef000008`" }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filters by description, title, id" }, { "name": "order", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "asc", "desc" ] }, "description": "Sort ascending or descending order" }, { "name": "sort", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Sort on the specified field" }, { "name": "page", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/0" }, { "name": "perPage", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/1" }, { "name": "dynamic", "in": "query", "required": false, "schema": { "type": "boolean" }, "description": "If true, returns only dynamic blocks" } ], "responses": { "200": { "description": "Blocks response", "content": { "application/json": { "schema": { "title": "PlayoutBlocksResponse", "type": "object", "properties": { "siteId": { "type": "string" }, "blocks": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/post/responses/201/content/application~1json/schema" } }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Block", "description": "", "operationId": "createPlayoutSchedulerBlockV2", "tags": [ "Assets" ], "x-codegen-request-body-name": "block", "requestBody": { "required": true, "content": { "application/json": { "schema": { "title": "BlockRequest", "type": "object", "required": [ "block" ], "properties": { "block": { "type": "object", "title": "BlockProperties", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "draft": { "type": "boolean", "description": "If true, duration must be present and items list will be empty" }, "dynamic": { "type": "boolean", "description": "If true, duration must be present and items list will be filled when pushed into the timeline based on the given criteria" }, "originalConfig": { "description": "Applies only to Dynamic Blocks", "type": "object", "properties": { "orderBy": { "type": "string", "enum": [ "createdAt", "publishedAt", "season", "title" ], "description": "Specifies the field used to sort assets when populating the item list." }, "reuseAssets": { "type": "boolean", "description": "If true, and no 'reuseContentConfig' is specified, assets will be reused with the same filling rules but in the inverted sort order." }, "sortOrder": { "type": "string", "enum": [ "ASC", "DESC" ], "description": "Defines the order of sorting: ascending (ASC) or descending (DESC)." }, "startFrom": { "type": "string", "description": "Specifies the starting point for the asset list. Can be a date, season number, or in hours if relativeStartFrom is enabled." }, "relativeStartFrom": { "type": "boolean", "description": "If true, the starting point is relative to the current time." }, "fitToContent": { "type": "boolean", "description": "If true, adjusts the block's duration to fit the content." } } }, "contentFillingRules": { "type": "array", "description": "A list of rules with different criteria used to fill dynamic block items", "items": { "properties": { "type": { "type": "string", "enum": [ "category", "episode", "season", "series" ] }, "value": { "type": "string" } } } }, "adRule": { "type": "object", "description": "Required only for dynamic blocks", "properties": { "assetId": { "type": "string", "description": "The id if the ad inserted" }, "preRolls": { "type": "boolean", "description": "If enabled, the selected asset will be inserted before every video in the block" }, "midRolls": { "type": "boolean", "description": "If enabled, the selected asset will be inserted as a mid-roll ad, honouring videos' ad timings" }, "postRolls": { "type": "boolean", "description": "If enabled, the selected asset will be inserted after every video in the block" } } }, "reuseContentConfig": { "type": "object", "description": "Optional. Applies only to Dynamic Blocks with reuseAssets as 'true'.", "properties": { "orderBy": { "type": "string", "enum": [ "createdAt", "publishedAt", "season", "title" ], "description": "Specifies the field used to sort assets when populating the item list." }, "sortOrder": { "type": "string", "enum": [ "ASC", "DESC" ], "description": "Defines the order of sorting: ascending (ASC) or descending (DESC)." }, "startFrom": { "type": "string", "description": "Specifies the starting point for the asset list. Can be a date, season number, or in hours if relativeStartFrom is enabled." }, "relativeStartFrom": { "type": "boolean", "description": "If true, the starting point is relative to the current time." } } }, "reuseFillingRules": { "type": "array", "description": "A list of rules with different criteria used to fill a dynamic block re use items", "items": { "properties": { "type": { "type": "string", "enum": [ "category", "episode", "season", "series" ] }, "value": { "type": "string" } } } }, "items": { "type": "array", "items": { "properties": { "assetType": { "type": "string" }, "assetId": { "type": "string" } } } } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "Block", "properties": { "id": { "type": "string" }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" }, "duration": { "type": "number" }, "draft": { "type": "boolean" }, "items": { "type": "object", "properties": { "assetType": { "type": "string" }, "assetId": { "type": "string" } } }, "adRule": { "type": "object", "properties": { "assetId": { "type": "string", "description": "The id if the ad inserted" }, "preRolls": { "type": "boolean", "description": "If enabled, the selected asset will be inserted before every video in the block" }, "midRolls": { "type": "boolean", "description": "If enabled, the selected asset will be inserted as a mid-roll ad, honouring videos' ad timings" }, "postRolls": { "type": "boolean", "description": "If enabled, the selected asset will be inserted after every video in the block" } } }, "originalConfig": { "description": "Applies only to Dynamic Blocks", "type": "object", "properties": { "orderBy": { "type": "string", "enum": [ "createdAt", "publishedAt", "season", "title" ], "description": "Specifies the field used to sort assets when populating the item list." }, "reuseAssets": { "type": "boolean", "description": "If true, assets will be reused with the same filling rules but in the inverted sort order." }, "sortOrder": { "type": "string", "enum": [ "ASC", "DESC" ], "description": "Defines the order of sorting: ascending (ASC) or descending (DESC)." }, "startFrom": { "type": "string", "description": "Specifies the starting point for the asset list. Can be a date, season number, or in hours if relativeStartFrom is enabled." }, "relativeStartFrom": { "type": "boolean", "description": "If true, the starting point is relative to the current time." }, "fitToContent": { "type": "boolean", "description": "If true, adjusts the block's duration to fit the content." } } }, "contentFillingRules": { "type": "array", "description": "A list of rules with different criteria used to fill dynamic block items", "items": { "properties": { "type": { "type": "string" }, "value": { "type": "string" } } } }, "reuseContentConfig": { "type": "object", "description": "Optional. Applies only to Dynamic Blocks with reuseAssets as 'true'.", "properties": { "orderBy": { "type": "string", "enum": [ "createdAt", "publishedAt", "season", "title" ], "description": "Specifies the field used to sort assets when populating the item list." }, "sortOrder": { "type": "string", "enum": [ "ASC", "DESC" ], "description": "Defines the order of sorting: ascending (ASC) or descending (DESC)." }, "startFrom": { "type": "string", "description": "Specifies the starting point for the asset list. Can be a date, season number, or in hours if relativeStartFrom is enabled." }, "relativeStartFrom": { "type": "boolean", "description": "If true, the starting point is relative to the current time." } } }, "reuseFillingRules": { "type": "array", "description": "A list of rules with different criteria used to fill a dynamic block re use items", "items": { "properties": { "type": { "type": "string", "enum": [ "category", "episode", "season", "series" ] }, "value": { "type": "string" } } } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/blocks/{id}": { "get": { "summary": "View Block", "description": "", "tags": [ "Assets" ], "operationId": "getPlayoutSchedulerBlockV2", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of block" } ], "responses": { "200": { "description": "Return a block", "content": { "application/json": { "schema": { "title": "PlayoutBlockResponse", "type": "object", "properties": { "block": { "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/post/responses/201/content/application~1json/schema" } } } } } }, "404": { "description": "Block not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update Block", "description": "", "tags": [ "Assets" ], "operationId": "updateBlockV2", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of block" } ], "x-codegen-request-body-name": "block", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Block not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Block", "description": "", "tags": [ "Assets" ], "operationId": "deleteBlockV2", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of block" } ], "responses": { "204": { "description": "Block deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Block not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/ads": { "get": { "summary": "List Ads", "description": "Retrieve a list of ads from your library", "operationId": "listAdsV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/0" }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filters by description, title, id" }, { "name": "order", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/2" }, { "name": "sort", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/3" }, { "name": "page", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/0" }, { "name": "perPage", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/1" } ], "responses": { "200": { "description": "Returns Ads", "content": { "application/json": { "schema": { "type": "object", "properties": { "assets": { "type": "object", "title": "Asset", "properties": { "id": { "type": "string" }, "externalId": { "type": "string" }, "siteId": { "type": "string" }, "assetType": { "type": "string", "enum": [ "video", "ad", "bumper", "slate" ] }, "createdAt": { "type": "string", "format": "date" }, "updatedAt": { "type": "string", "format": "date" }, "title": { "type": "string" }, "description": { "type": "string" }, "duration": { "type": "number" }, "hasEmbeddedCc": { "type": "boolean" } } }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/ads/{id}": { "get": { "summary": "View Ad", "description": "Retrieve a single ad from your library", "operationId": "getAdV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of video" } ], "responses": { "200": { "description": "Return video", "content": { "application/json": { "schema": { "type": "object", "properties": { "asset": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ads/get/responses/200/content/application~1json/schema/properties/assets" } } } } } }, "404": { "description": "Video not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/bumpers": { "get": { "summary": "List Bumpers", "description": "Retrieve a list of ads from your library", "operationId": "listBumpersV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/0" }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filters by description, title, id" }, { "name": "order", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/2" }, { "name": "sort", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/3" }, { "name": "page", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/0" }, { "name": "perPage", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/1" } ], "responses": { "200": { "description": "Returns Bumpers", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ads/get/responses/200/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/bumpers/{id}": { "get": { "summary": "View Bumper", "description": "Retrieve a single bumper from your library", "operationId": "getBumperV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of video" } ], "responses": { "200": { "description": "Return video", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ads~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Video not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/videos": { "get": { "summary": "List Videos", "description": "Retrieve a list of videos from your library", "operationId": "listVideosV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/0" }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filters by description, title, id" }, { "name": "order", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/2" }, { "name": "sort", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/3" }, { "name": "page", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/0" }, { "name": "perPage", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/1" } ], "responses": { "200": { "description": "Returns Videos", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ads/get/responses/200/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/videos/{id}": { "get": { "summary": "View Video", "description": "Retrieve a single video from your library", "operationId": "getPlayoutVideoV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of video" } ], "responses": { "200": { "description": "Return video", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ads~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Video not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/playlists": { "get": { "summary": "List Playlists", "description": "Retrieve a list of playlists from your library", "operationId": "listPlayoutPlaylistsV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/0" }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filters by description, title, id" }, { "name": "order", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/2" }, { "name": "sort", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/3" }, { "name": "page", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/0" }, { "name": "perPage", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/1" } ], "responses": { "200": { "description": "Playlist response", "content": { "application/json": { "schema": { "title": "PlayoutPlaylistsResponse", "type": "object", "properties": { "siteId": { "type": "string" }, "playlists": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/post/responses/201/content/application~1json/schema" } }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/playlists/{id}": { "get": { "summary": "View Playlist", "description": "Retrieve a single playlist from your library", "operationId": "getPlayoutPlaylistV2", "tags": [ "Assets" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of playlist" } ], "responses": { "200": { "description": "Return a playlist", "content": { "application/json": { "schema": { "title": "PlayoutPlaylistResponse", "type": "object", "properties": { "playlist": { "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/post/responses/201/content/application~1json/schema" } } } } } }, "404": { "description": "Playlist not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/ad_timings": { "get": { "summary": "List Ad Timings", "description": "", "operationId": "getPlayoutSchedulerAdTimings", "tags": [ "Assets" ], "parameters": [ { "name": "assetId", "in": "query", "required": true, "schema": { "type": "string" }, "description": "CMS ID of the asset" } ], "responses": { "200": { "description": "Ad timings response", "content": { "application/json": { "schema": { "type": "object", "properties": { "adTimings": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ad_timings/post/responses/201/content/application~1json/schema" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Ad Timing", "description": "", "operationId": "createPlayoutSchedulerAdTiming", "tags": [ "Assets" ], "x-codegen-request-body-name": "adTiming", "requestBody": { "required": true, "content": { "application/json": { "schema": { "title": "AdTimingRequest", "type": "object", "required": [ "adTiming" ], "properties": { "adTiming": { "type": "object", "title": "AdTimingProperties", "required": [ "assetExternalId", "time" ], "properties": { "assetExternalId": { "type": "string" }, "time": { "type": "number" }, "duration": { "type": "number" } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "Ad Timing", "properties": { "id": { "type": "string" }, "externalAssetId": { "type": "string" }, "siteId": { "type": "string" }, "disabled": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date" }, "updatedAt": { "type": "string", "format": "date" }, "time": { "type": "string" }, "externalId": { "type": "string" }, "duration": { "type": "number" }, "assetId": { "type": "string" }, "overwritten": { "type": "boolean" }, "originalTime": { "type": "number" }, "originalDuration": { "type": "number" }, "placementId": { "type": "string" }, "type": { "type": "string", "enum": [ "overwrite", "push-out" ] } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Ad Timings", "description": "Resets all ad timings associated with the asset (deletes the ones created in Playout and resets the ones coming from CMS)", "tags": [ "Assets" ], "operationId": "deletePlayoutSchedulerAdTimings", "parameters": [ { "name": "assetId", "in": "query", "required": true, "schema": { "type": "string" }, "description": "CMS ID of the asset" } ], "responses": { "204": { "description": "Ad Timing deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Ad timing not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/ad_timings/{id}": { "put": { "summary": "Update Ad Timing", "description": "", "tags": [ "Assets" ], "operationId": "updatePlayoutSchedulerAdTiming", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Id of the ad timing" } ], "x-codegen-request-body-name": "adTiming", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ad_timings/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1ad_timings/post/responses/201/content/application~1json/schema" } } } }, "404": { "description": "Ad timing not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Ad Timing", "description": "", "tags": [ "Assets" ], "operationId": "deletePlayoutSchedulerAdTiming", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Id of the ad timing" } ], "responses": { "204": { "description": "Ad Timing deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Ad timing not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/{channelId}/live_streams": { "get": { "summary": "List Live Assets", "description": "", "operationId": "getPlayoutSchedulerLiveAssets", "tags": [ "Assets" ], "parameters": [ { "name": "channelId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Channel id" }, { "name": "id", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/0" }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filters by description, title, id" }, { "name": "order", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/2" }, { "name": "sort", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/3" }, { "name": "page", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/0" }, { "name": "perPage", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/1" } ], "responses": { "200": { "description": "Live stream assets response", "content": { "application/json": { "schema": { "type": "object", "properties": { "liveStreamAssets": { "$ref": "#/paths/~1scheduler~1v2~1assets~1%7BchannelId%7D~1live_streams/post/responses/201/content/application~1json/schema" }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Live Asset", "description": "", "operationId": "createPlayoutSchedulerLiveAsset", "parameters": [ { "name": "channelId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Channel id" } ], "tags": [ "Assets" ], "x-codegen-request-body-name": "liveStreamAsset", "requestBody": { "required": true, "content": { "application/json": { "schema": { "title": "LiveAssetRequest", "type": "object", "required": [ "liveStreamAsset" ], "properties": { "liveStreamAsset": { "type": "object", "title": "AdTimingProperties", "required": [ "title", "duration", "liveInputSourceId" ], "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "duration": { "type": "number" }, "liveInputSourceId": { "type": "string" }, "thumbnailUrl": { "type": "string", "description": "URL of the thumbnails associated to the live stream" }, "parentalRatingSource": { "type": "string", "description": "Parental Rating Source", "enum": [ "USA_PR", "MPAA", "CHVRS", "CPR", "RTC", "BBFC" ] }, "parentalRating": { "type": "string", "description": "This value will depend on the Parental Rating Source.\nMPAA: \u2018g\u2018, \u2018pg\u2018, \u2018pg13\u2018, \u2018pg-13\u2018, \u2018r\u2018, \u2018nc17\u2018, \u2018nc-17\u2018, \u2018ur\u2018\nUSA_PR: \u2018tv-y\u2018, \u2018tvy\u2018, \u2018tv-y7\u2018, \u2018tvy7\u2018, \u2018tv-g\u2018, \u2018tvg\u2018, \u2018tv-pg\u2018, \u2018tvpg\u2018, \u2018tv-14\u2018, \u2018tv14\u2018, \u2018tv-ma\u2018, \u2018tvma\u2018\nCHVRS: \u2018g\u2018, \u2018pg\u2018, \u201814-a\u2018, \u201814a\u2018, \u201818-a\u2018, \u201818a\u2018, \u2018r\u2018, \u2018e\u2018\nCPR: \u201814+\u2018, \u201818+\u2018, \u2018c\u2018, \u2018c8\u2018, \u2018c-8\u2018, \u2018g\u2018, \u2018pg\u2018, \u2018e\u2018\nRTC: \u2018aa\u2018, \u2018a\u2018, \u2018b\u2018, \u2018b15\u2018, \u2018b-15\u2018, \u2018c\u2018, \u2018d\u2018\nBBFC: \u2018u\u2018, \u2018pg\u2018, \u201812-a\u2018, \u201812a\u2018, \u201812\u2018, \u201815\u2018, \u201818\u2018, \u2018R-18\u2018, \u2018R18\u2018\n", "enum": [ "g", "pg", "pg13", "pg-13", "r", "nc17", "nc-17", "ur", "tv-y", "tvy", "tv-y7", "tvy7", "tv-g", "tvg", "tv-pg", "tvpg", "tv-14", "tv14", "tv-ma", "tvma", "g", "pg", "14-a", "14a", "18-a", "18a", "r", "e", "14+", "18+", "c", "c8", "c-8", "g", "pg", "e", "aa", "a", "b", "b15", "b-15", "c", "d", "u", "pg", "12-a", "12a", "12", "15", "18", "R-18", "R18" ] } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "Asset", "properties": { "id": { "type": "string" }, "createdAt": { "type": "string", "format": "date" }, "updatedAt": { "type": "string", "format": "date" }, "title": { "type": "string" }, "description": { "type": "string" }, "duration": { "type": "number" }, "liveInputSourceId": { "type": "string" }, "thumbnailUrl": { "type": "string" }, "parentalRatingSource": { "type": "string" }, "parentalRating": { "type": "string" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/{channelId}/live_streams/{id}": { "put": { "summary": "Update Live Asset", "description": "", "tags": [ "Assets" ], "operationId": "updatePlayoutSchedulerLiveAsset", "parameters": [ { "name": "channelId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Channel id" }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Id of the live asset" } ], "x-codegen-request-body-name": "liveStreamAsset", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1%7BchannelId%7D~1live_streams/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1%7BchannelId%7D~1live_streams/post/responses/201/content/application~1json/schema" } } } }, "404": { "description": "Live asset not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Live Asset", "description": "", "tags": [ "Assets" ], "operationId": "deletePlayoutSchedulerLiveAsset", "parameters": [ { "name": "channelId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Channel id" }, { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Id of the live asset" } ], "responses": { "204": { "description": "Live asset deleted", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Live asset not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/uploads": { "post": { "summary": "Create Upload", "tags": [ "Uploads" ], "operationId": "createUploadPlayout", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "title": "UploadRequest", "type": "object", "required": [ "region", "upload" ], "properties": { "region": { "type": "string", "title": "Channel region" }, "upload": { "type": "string", "format": "binary", "description": "The file to upload." } } }, "encoding": { "upload": { "contentType": "image/png" } } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "Upload", "properties": { "id": { "type": "string", "description": "Upload id" }, "height": { "type": "number", "description": "Image height" }, "width": { "type": "number", "description": "Image width" }, "url": { "type": "string", "description": "Image URL to preview. Expires in 1 hour" } } } } } }, "404": { "description": "Region not found", "content": { "application/json": { "schema": { "title": "NotFound", "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/uploads/{id}": { "get": { "summary": "Get Upload", "description": "Retrieve an upload", "operationId": "getUpload", "tags": [ "Uploads" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of the upload" } ], "responses": { "200": { "description": "Return upload", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Upload not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/graphics": { "get": { "summary": "List Graphics", "description": "Get graphics in your library", "operationId": "getGraphics", "tags": [ "Assets" ], "parameters": [ { "name": "id", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/0" }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filters by description, title, id" }, { "name": "order", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/2" }, { "name": "sort", "$ref": "#/paths/~1scheduler~1v2~1assets~1blocks/get/parameters/3" }, { "name": "page", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/0" }, { "name": "perPage", "$ref": "#/paths/~1scheduler~1v1~1types/get/parameters/1" } ], "responses": { "200": { "description": "Graphics response", "content": { "application/json": { "schema": { "title": "GraphicsResponse", "type": "object", "properties": { "assets": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1assets~1graphics/post/responses/201/content/application~1json/schema/properties/destinationType" } }, "pagination": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/200/content/application~1json/schema/properties/pagination" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Graphic", "description": "Add a new graphic to your library", "operationId": "createGraphic", "tags": [ "Assets" ], "x-codegen-request-body-name": "graphic", "requestBody": { "required": true, "content": { "application/json": { "schema": { "title": "GraphicRequest", "type": "object", "required": [ "graphic" ], "properties": { "graphic": { "type": "object", "title": "GraphicProperties", "required": [ "title" ], "properties": { "title": { "type": "string" }, "duration": { "type": "number", "default": 60, "description": "Duration of the graphic in seconds (including fade in and fade out)" }, "fadeIn": { "type": "number", "default": 0, "description": "Duration of the fade in effect, in seconds" }, "fadeOn": { "type": "number", "default": 0, "description": "Duration of the fade out effect, in seconds" }, "opacity": { "type": "number", "default": 100, "description": "Opacity of image where 0 is transparent and 100 is fully opaque. Default is 100." }, "staticOverlay": { "type": "object", "description": "Image overlay placement settings", "required": [ "uploadId" ], "properties": { "uploadId": { "description": "Upload id so use as the image overlay", "type": "string" }, "yPosition": { "description": "Y-axis position of the upload in the stream. 0 is the min value, in px", "type": "number", "default": 5 }, "xPosition": { "description": "X-axis position of the upload in the stream. 0 is the min value, in px", "type": "number", "default": 5 }, "scale": { "description": "Allows to scale down the image. Between 0 and 100", "default": 100, "type": "number" } } }, "textOverlay": { "type": "object", "description": "Text overlay placement settings", "required": [ "text" ], "properties": { "text": { "description": "Text to display. To include dynamic params, wrap the param name in {{}} and add it to the dynamicParams list", "type": "string" }, "fontSize": { "description": "Font size of the text", "type": "number", "default": 12 }, "color": { "description": "3-(RGB), 4-(ARGB), 6-(RRGGBB) or 8-digit (AARRGGBB) hexadecimal values. The \"A\" in a 4- or 8-digit hex value represents the color's alpha transparency.", "type": "number", "default": 5 }, "font": { "description": "Text font", "default": "Arial Narrow", "type": "string" }, "yPosition": { "description": "Y-axis position of the text in the stream. 0 is the min value, in px", "type": "number", "default": 0 }, "xPosition": { "description": "X-axis position of the text in the stream. 0 is the min value, in px", "type": "number", "default": 0 }, "width": { "description": "Width of the text area", "type": "number" }, "leading": { "description": "Controls the leading (or line spacing) in the text", "type": "number" }, "tracking": { "description": "Controls the tracking (or letter spacing) in the text", "type": "number" }, "dynamicParams": { "description": "A list of the dynamic replacements included in the text", "type": "array", "items": { "type": "object", "required": [ "name", "sources", "field" ], "properties": { "name": { "description": "Name of the param within {{}} in the text", "type": "string" }, "order": { "description": "Item order to use as data source (previous, current, next)", "type": "string", "enum": [ "previous", "current", "next" ] }, "sources": { "description": "A list of possible data sources, where the data will be picked in the following order: channel > block > playlist > video", "type": "array", "enum": [ "channel", "block", "playlist", "video" ] }, "field": { "description": "The field name of the source. Could be a predefined custom attribute, title or description" } } } } } } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "title": "GraphicResponse", "type": "object", "properties": { "destinationType": { "title": "GraphicAsset", "type": "object", "required": [ "graphic" ], "properties": { "asset": { "type": "object", "title": "GraphicProperties", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "duration": { "type": "number", "description": "Duration of the graphic in seconds (including fade in and fade out)" }, "fadeIn": { "type": "number", "description": "Duration of the fade in effect, in seconds" }, "fadeOn": { "type": "number", "description": "Duration of the fade out effect, in seconds" }, "opacity": { "type": "number", "description": "Opacity of image where 0 is transparent and 100 is fully opaque. Default is 100." }, "staticOverlay": { "$ref": "#/paths/~1scheduler~1v2~1assets~1graphics/post/requestBody/content/application~1json/schema/properties/graphic/properties/staticOverlay" }, "textOverlay": { "$ref": "#/paths/~1scheduler~1v2~1assets~1graphics/post/requestBody/content/application~1json/schema/properties/graphic/properties/textOverlay" } } } } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/assets/graphics/{id}": { "get": { "summary": "View Graphic", "description": "Retrieve a single graphic from your library", "operationId": "getGraphic", "tags": [ "Assets" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of video" } ], "responses": { "200": { "description": "Return graphic", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1graphics/post/responses/201/content/application~1json/schema" } } } }, "404": { "description": "Graphic not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update Graphic", "description": "Update a graphic asset in your library", "tags": [ "Assets" ], "operationId": "updateGraphic", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Id of graphic" } ], "x-codegen-request-body-name": "graphic", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1graphics/post/requestBody/content/application~1json/schema" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1assets~1graphics/post/responses/201/content/application~1json/schema" } } } }, "404": { "description": "Graphic not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Graphic", "description": "Delete a graphic from your library", "tags": [ "Assets" ], "operationId": "deleteGraphic", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Id of graphic" } ], "responses": { "204": { "description": "Graphic deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Graphic not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/published/rundown": { "get": { "summary": "JSON Rundown EPG", "description": "Use this endpoint to get the published JSON EPG", "tags": [ "EPG" ], "operationId": "getPlayoutSchedulerChannelPublishedJsonRundownEPG", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "start", "in": "query", "required": false, "schema": { "type": "number" }, "description": "Timestamp in milliseconds of beginning of interval (defaults to current timestamp)" }, { "name": "hours", "in": "query", "required": false, "description": "Number of hours of the interval to calculate", "schema": { "type": "number", "default": 24, "maximum": 24, "minimum": 1 } }, { "name": "mode", "in": "query", "schema": { "type": "string", "default": "full", "enum": [ "full", "hybrid", "slim" ] }, "required": false, "description": "full return every item without grouping them in collections.\nhybrid return items grouped into collections and single assets.\nslim return only collections." } ], "responses": { "200": { "description": "Return's a channel published version's rundown", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1channels~1%7Bid%7D~1draft~1rundown/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v1/channels/{id}/published/rundown/xmltv.xml": { "get": { "summary": "View Channel's Published Rundown XMLTV format", "description": "This endpoint provides access to EPG data in XMLTV format. XMLTV is a standardized XML-based format for exchanging TV listings and EPG data. This endpoint allows you to retrieve comprehensive and structured information about scheduled TV programs, including program names, descriptions, start times, end times, channels, and more. The response will contain the EPG data in XMLTV format, which you can parse and use to display TV program listings in your application.", "tags": [ "EPG" ], "operationId": "channelXMLTVEPG", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "date_format", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "unix", "iso8601", "yyyymmddhhmm", "yyyymmddHHmmss", "yyyymmddHHmm", "yyyymmdd" ] }, "description": "Different representation of programme's tag start and stop" }, { "name": "with_time_zone", "in": "query", "required": false, "schema": { "type": "boolean" }, "description": "If true, adds UTC timezone in programme's tag start and stop" }, { "name": "mode", "in": "query", "schema": { "type": "string", "default": "full", "enum": [ "full", "hybrid", "slim" ] }, "required": false, "description": "full return every item without grouping them in collections.\nhybrid return items grouped into collections and single assets.\nslim return only collections." }, { "name": "custom_thumbnail", "in": "query", "schema": { "type": "boolean", "default": false }, "description": "If true, uses the custom thumbnail from the Assets when they have one." } ], "responses": { "200": { "description": "Return a channel including it's published information", "content": { "application/xml": { "schema": { "title": "NotFound", "type": "object", "properties": { "xml": { "type": "string" } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/channels/{id}/epg/vizio": { "get": { "summary": "Vizio EPG", "description": "", "operationId": "getVizioEPG", "tags": [ "EPG" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "custom_thumbnail", "in": "query", "schema": { "type": "boolean", "default": false }, "description": "If true, uses the custom thumbnail from the Assets when they have one." } ], "responses": { "200": { "description": "Return vizio epg for next 7 days", "content": { "application/json": { "schema": { "title": "Vizio EPG", "type": "object", "properties": { "availabilityFeed": { "type": "object", "properties": { "sourceId": { "type": "string", "description": "Vizio provided source id" }, "lineups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Playout channel id" }, "channels": { "type": "array", "items": { "type": "object", "properties": { "channelNumber": { "type": "string", "description": "Playout channel id" }, "stationId": { "type": "string", "description": "Playout channel id" } } } } } } }, "schedules": { "type": "array", "items": { "type": "object", "properties": { "lineupId": { "type": "string", "description": "Playout channel id" }, "scheduledContent": { "type": "array", "items": { "type": "object", "properties": { "stationId": { "type": "string", "description": "Playout channel id" }, "schedule": { "type": "object", "properties": { "start": { "type": "string", "format": "date-time", "description": "Start time of the asset" }, "end": { "type": "string", "format": "date-time", "description": "End time of the asset" } } }, "production": { "type": "object", "properties": { "id": { "type": "string", "description": "Asset id" }, "scope": { "type": "string", "description": "Scope of the asset" } } }, "offering": { "type": "object", "properties": { "id": { "type": "integer" }, "payStructure": { "type": "string", "description": "Type of pay structure for the following asset" } } } } } } } } } } }, "configurationFeed": { "type": "object", "properties": { "source": { "type": "object", "properties": { "id": { "type": "string", "description": "Vizio provided source id" }, "name": { "type": "string", "description": "Site title and Channel name" } } } } }, "contentFeed": { "type": "object", "properties": { "sourceId": { "type": "string", "description": "Vizio provided source id" }, "productions": { "type": "array", "items": { "type": "object", "properties": { "songTitle": { "type": "string", "description": "The title of the asset." }, "id": { "type": "integer", "description": "Asset id." }, "productionType": { "type": "string", "description": "The type of the production, e.g. \"MusicVideo\"." }, "primaryTitle": { "type": "object", "properties": { "localizedStrings": { "type": "array", "items": { "type": "object", "properties": { "rawLocale": { "type": "string", "description": "The raw locale of the string, e.g. \"en-US\"." }, "text": { "type": "string", "description": "Asset title." } } } } }, "description": "The primary title of the asset." }, "primaryDescription": { "type": "object", "properties": { "localizedStrings": { "type": "array", "items": { "type": "object", "properties": { "rawLocale": { "type": "string", "description": "The raw locale of the string, e.g. \"en-US\"." }, "text": { "type": "string", "description": "Asset description." } } } } }, "description": "The primary description of the asset." }, "contentRatings": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Contains asset parental rating type and value." }, "ratingBody": { "type": "string", "description": "The rating body that issued the rating, e.g. \"MPAA\"." }, "otherRatingBody": { "type": "string", "description": "If asset parental rating is not MPAA, then this field is used" }, "rating": { "type": "string", "description": "Asset parental rating" }, "isExplicit": { "type": "boolean", "description": "Is asset a mature content" } } } } } } }, "stations": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Playout channel id" }, "stationType": { "type": "string", "description": "Returns station type e.g. \"VideoStation\"" }, "primaryTitle": { "type": "object", "properties": { "localizedStrings": { "type": "array", "items": { "type": "object", "properties": { "rawLocale": { "type": "string", "description": "The raw locale of the string, e.g. \"en-US\"." }, "text": { "type": "string", "description": "Channel title." } } } } }, "description": "The primary title of the channel." }, "primaryDescription": { "type": "object", "properties": { "localizedStrings": { "type": "array", "items": { "type": "object", "properties": { "rawLocale": { "type": "string", "description": "The raw locale of the string, e.g. \"en-US\"." }, "text": { "type": "string", "description": "Channel description." } } } } }, "description": "The primary description of the channel." }, "contentRatings": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Contains channel parental rating type and value." }, "ratingBody": { "type": "string", "description": "The rating body that issued the rating, e.g. \"MPAA\"." }, "rating": { "type": "string", "description": "Channel parental rating" }, "isExplicit": { "type": "boolean", "description": "Does channel contains mature content" } } } } } } } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/channels/{id}/epg/tcl": { "get": { "summary": "Tcl EPG", "description": "", "operationId": "getTclEPG", "tags": [ "EPG" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "custom_thumbnail", "in": "query", "schema": { "type": "boolean", "default": false }, "description": "If true, uses the custom thumbnail from the Assets when they have one." } ], "responses": { "200": { "description": "Return tcl epg for next 7 days", "content": { "application/json": { "schema": { "title": "Tcl EPG", "type": "object", "properties": { "channelId": { "type": "string", "description": "Playout channel id" }, "streamUrl": { "type": "string", "description": "Playout channel stream url" }, "title": { "type": "string", "description": "Playout channel title" }, "description": { "type": "string", "description": "Playout channel description" }, "category": { "type": "string", "description": "Playout channel category, which is LIVE" }, "language": { "type": "string", "description": "Playout channel language" }, "avaAreas": { "type": "array", "description": "Playout channel availability countries" }, "isPay": { "type": "string" }, "onLine": { "type": "string" }, "poster_vertical": { "type": "string", "description": "Playout channel thumbnail url" }, "videos": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Asset id" }, "streamUrl": { "type": "string", "description": "Asset streaming url" }, "title": { "type": "string", "description": "Asset title" }, "category": { "type": "string", "description": "Asset category values" }, "language": { "type": "string", "description": "Asset language" }, "avaAreas": { "type": "array", "description": "Playout channel availability countries" }, "description": { "type": "string", "description": "Asset description" }, "duration": { "type": "string", "description": "Asset duration" }, "isPay": { "type": "string" }, "onLine": { "type": "string" }, "poster_vertical": { "type": "string", "description": "asset thumbnail url" } } } }, "programList": { "type": "array", "items": { "type": "object", "properties": { "programId": { "type": "string", "description": "Rundown item ariring id" }, "startTime": { "type": "string", "description": "Asset start time" }, "endTime": { "type": "string", "description": "Asset end time" }, "title": { "type": "string", "description": "Asset title" }, "type": { "type": "string" } } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/channels/{id}/epg/wurl": { "get": { "summary": "Wurl EPG", "description": "", "operationId": "getWurlEPG", "tags": [ "EPG" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "custom_thumbnail", "in": "query", "schema": { "type": "boolean", "default": false }, "description": "If true, uses the custom thumbnail from the Assets when they have one." } ], "responses": { "200": { "description": "Return Wurl epg for next 7 days", "content": { "application/json": { "schema": { "title": "Wurl EPG", "type": "object", "properties": { "channel": { "type": "object", "description": "The Wurl channel EPG.", "properties": { "title": { "type": "string", "description": "Wurl channel title." }, "wurl_channel_slug": { "type": "string", "description": "Channel slug used to identify the channel in Wurl." }, "broadcast_url": { "type": "string", "description": "Channel Streaming URL." }, "language": { "type": "string", "description": "Channel Language." }, "programs": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "description": "Program key. It will match with Playout video id." }, "external_id": { "type": "string", "description": "Program external id. It will match with Wurl program key." }, "title": { "type": "string", "description": "Program title." }, "content_type": { "type": "string", "description": "It will be \"episode\" when the channel is a series episode. Otherwise it will be \"shortFormVideo\"." }, "release_date": { "type": "string", "format": "date", "description": "Program release date." }, "short_description": { "type": "string", "description": "Video description." }, "description": { "type": "string", "description": "Video description." }, "thumbnails": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "Thumbnail image URL" }, "width": { "type": "number", "description": "Thumbnail image width" }, "height": { "type": "number", "description": "Thumbnail image height" } } } }, "series": { "type": "object", "description": "Program series information (only available when the program is a series episode).", "properties": { "title": { "type": "string", "description": "Series title." }, "description": { "type": "string", "description": "Series description." }, "season": { "type": "object", "properties": { "number": { "type": "number", "description": "Series Season number." }, "episode_number": { "type": "number", "description": "Program Episode number." } } } } } } } }, "events": { "type": "array", "items": { "type": "object", "properties": { "program_key": { "type": "string", "description": "Program key. It will match with one of listed programs." }, "time_slot": { "type": "string", "format": "date-time", "description": "The timestamp when the event will air" }, "duration": { "type": "number", "description": "Event duration in seconds." } } } } } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/channels/{id}/epg/roku": { "get": { "summary": "Roku EPG", "description": "", "operationId": "getRokuEPG", "tags": [ "EPG" ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Channel" }, { "name": "custom_thumbnail", "in": "query", "schema": { "type": "boolean", "default": false }, "description": "If true, uses the custom thumbnail from the Assets when they have one." } ], "responses": { "200": { "description": "Return roku epg for next 7 days", "content": { "application/json": { "schema": { "title": "Roku EPG", "type": "object", "properties": { "providerName": { "type": "string" }, "lastUpdated": { "type": "string" }, "language": { "type": "string" }, "liveFeeds": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "brandedThumbnail": { "type": "string" }, "shortDescription": { "type": "string" }, "longDescription": { "type": "string" }, "validityPeriodStart": { "type": "string" }, "validityPeriodEnd": { "type": "string" }, "advisoryRatings": { "type": "object", "properties": { "source": { "type": "string" }, "value": { "type": "string" } } }, "genres": { "type": "array" }, "tags": { "type": "string" }, "content": { "type": "object", "properties": { "dateAdded": { "type": "string", "description": "The date the liveFeed was added to the library in the ISO 8601 format {YYYY}-{MM}-{DD}T{hh}:{mm}:{ss}+{TZ}. E.g. 2015-11-11T22:21:37+00:00 This information is used to generate the \u201cRecently Added\u201d category." }, "language": { "type": "string" }, "validityPeriodStart": { "type": "string", "description": "The date when the content should become available in the ISO 8601 format {YYYY}-{MM}-{DD}T{hh}:{mm}:{ss}+{TZ}. E.g. 2018-11-11T22:21:37+00:00" }, "validityPeriodEnd": { "type": "string", "description": "same as validityPeriodStart" }, "schedule": { "type": "object", "properties": { "id": { "type": "string" }, "durationInSeconds": { "type": "number" }, "isLive": { "type": "boolean" }, "date": { "type": "string", "description": "Scheduled date for program to play. All times are UTC. Format {YYYY}-{MM}-{DD}" }, "times": { "type": "array", "description": "An array of start times in the particular day the program will start [ \"HH:MM:SS\" ]" }, "attributes": { "type": "array" } } } } } } } }, "movies": { "type": "array", "items": { "type": "object", "properties": { "externalIds": { "type": "array", "items": { "allOf": [ { "$ref": "#/paths/~1scheduler~1v2~1channels~1%7Bid%7D~1epg~1roku/get/responses/200/content/application~1json/schema/properties/tvSpecials/items/allOf/0" }, { "type": "object", "properties": { "genres": { "type": "string" }, "externalIds": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1channels~1%7Bid%7D~1epg~1roku/get/responses/200/content/application~1json/schema/properties/series/items/properties/externalIds/items" } } } } ] } } } } }, "series": { "type": "array", "items": { "type": "object", "properties": { "seasons": { "type": "array", "items": { "type": "object", "properties": { "seasonNumber": { "type": "number" }, "episodes": { "type": "array", "items": { "type": "object", "properties": { "episodeNumber": { "type": "number" }, "episodes": { "type": "array", "items": { "type": "object", "properties": { "episodeNumber": { "type": "number" }, "externalIds": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1channels~1%7Bid%7D~1epg~1roku/get/responses/200/content/application~1json/schema/properties/series/items/properties/externalIds/items" } } } } } } } } } } }, "episodes": { "type": "array", "items": { "type": "object", "properties": { "episodeNumber": { "type": "number" }, "episodes": { "type": "array", "items": { "type": "object", "properties": { "episodeNumber": { "type": "number" }, "externalIds": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1channels~1%7Bid%7D~1epg~1roku/get/responses/200/content/application~1json/schema/properties/series/items/properties/externalIds/items" } } } } } } } }, "externalIds": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "idType": { "type": "string", "enum": [ "TMS", "ROVI", "IMDB", "EIDR" ] } } } } } } }, "shortFormVideos": { "type": "array", "items": { "allOf": [ { "$ref": "#/paths/~1scheduler~1v2~1channels~1%7Bid%7D~1epg~1roku/get/responses/200/content/application~1json/schema/properties/tvSpecials/items/allOf/0" }, { "type": "object", "properties": { "genres": { "type": "string" } } } ] } }, "tvSpecials": { "type": "array", "items": { "allOf": [ { "type": "object", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "thumbnail": { "type": "string" }, "releaseDate": { "type": "string" }, "shortDescription": { "type": "string" }, "credits": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "role": { "type": "string", "enum": [ "actor", "anchor", "host", "narrator", "voice", "director", "producer", "screenwriter" ] }, "birthrate": { "type": "string", "description": "birthdate in format yyyy-mm-dd" } } } }, "advisoryRatings": { "type": "array", "items": { "type": "object", "properties": { "source": { "type": "string", "enum": [ "BBFC", "CHVRS", "CPR", "MPAA", "USA_PR", "RTC" ] }, "value": { "type": "string" } } } } } }, { "type": "object", "properties": { "genres": { "type": "string" }, "externalIds": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1channels~1%7Bid%7D~1epg~1roku/get/responses/200/content/application~1json/schema/properties/series/items/properties/externalIds/items" } } } } ] } } } } } } }, "404": { "description": "Channel not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } } }, "/scheduler/v2/recurrence_rules": { "get": { "summary": "List Recurrence Rules", "description": "", "tags": [ "Recurrence Rules" ], "operationId": "getRecurrenceRules", "parameters": [ { "name": "channelId", "in": "query", "schema": { "type": "string" }, "description": "channel id" }, { "name": "loadAsset", "in": "query", "schema": { "type": "boolean" }, "description": "specify if to include asset title in response or not" }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "Page number to return, with per_page dictating page size" }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "Number of records to return per page" } ], "responses": { "200": { "description": "Return Recurrence Rules", "content": { "application/json": { "schema": { "title": "RecurrenceRuleResponse", "type": "object", "properties": { "recurrenceRules": { "type": "array", "items": { "$ref": "#/paths/~1scheduler~1v2~1recurrence_rules/post/responses/201/content/application~1json/schema" } } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } }, "post": { "summary": "Create Recurrence Rule", "description": "", "tags": [ "Recurrence Rules" ], "operationId": "createRecurrenceRule", "x-codegen-request-body-name": "recurrenceRule", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "type": "object", "title": "RecurrenceRuleRequest", "required": [ "recurrenceRule" ], "properties": { "recurrenceRule": { "type": "object", "properties": { "title": { "type": "string", "description": "Determine the title of the rule" }, "channelId": { "type": "string", "description": "Specify the channel id" }, "active": { "type": "boolean", "description": "Specify if rule will be active or not." }, "assetId": { "type": "string", "description": "Specify the asset, that needs to be used for the rule" }, "assetType": { "type": "string", "description": "Specify the type of asset, for which rule is being applied" }, "startDate": { "type": "string", "description": "Specify the start date from when recurrence rule will be applied" }, "endDate": { "type": "string", "description": "Specify the end date when recurrence rule will end" }, "trackName": { "type": "string", "default": "baseTrack", "enum": [ "baseTrack", "priorityTrack" ], "description": "Track name on which assets should be dropped for the rule." }, "repetition": { "type": "object", "properties": { "time": { "type": "string", "description": "Specify the time in 24-hour format, at which the content will be scheduled" }, "interval": { "type": "array", "description": "Specify the interval days on which rule will be applied", "items": { "type": "number" } }, "frequency": { "type": "string", "enum": [ "monthly", "weekly" ], "description": "Specify the type of frequency monthly/weekly" }, "zone": { "type": "string", "description": "Specify the timezone, based on which rule timing will be applied" } } } } } } } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "type": "object", "title": "RecurrenceRule", "properties": { "id": { "type": "string" }, "title": { "type": "string" }, "channelId": { "type": "string" }, "active": { "type": "boolean" }, "assetType": { "type": "string" }, "startDate": { "type": "string" }, "endDate": { "type": "string" }, "repetition": { "type": "object", "properties": { "time": { "type": "string" }, "interval": { "type": "array", "items": { "type": "number" } }, "frequency": { "type": "string", "enum": [ "monthly", "weekly" ] }, "zone": { "type": "string" } } }, "trackName": { "type": "string", "enum": [ "baseTrack", "priorityTrack" ] }, "assetTitle": { "type": "string" } } } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } }, "/scheduler/v2/recurrence_rules/{id}": { "get": { "summary": "View Recurrence Rule", "description": "", "tags": [ "Recurrence Rules" ], "operationId": "getRecurrenceRule", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Recurrence Rule" } ], "responses": { "200": { "description": "Return an Recurrence Rule", "content": { "application/json": { "schema": { "title": "RecurrenceRuleResponse", "type": "object", "properties": { "recurrenceRule": { "$ref": "#/paths/~1scheduler~1v2~1recurrence_rules/post/responses/201/content/application~1json/schema" } } } } } }, "404": { "description": "Recurrence Rule not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "delete": { "summary": "Delete Recurrence Rule", "description": "", "tags": [ "Recurrence Rules" ], "operationId": "deleteRecurrenceRule", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Recurrence Rule" } ], "responses": { "200": { "description": "Recurrence Rule deleted successfully", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Recurrence Rule not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } } } }, "put": { "summary": "Update Recurrence Rule", "description": "", "tags": [ "Recurrence Rules" ], "operationId": "updateRecurrenceRule", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "ID of Recurrence Rule" } ], "x-codegen-request-body-name": "recurrenceRule", "requestBody": { "description": "", "required": true, "content": { "application/json": { "schema": { "type": "object", "title": "RecurrenceRuleUpdateRequest", "properties": { "recurrenceRule": { "type": "object", "properties": { "title": { "type": "string", "description": "Determine the title of the rule" }, "active": { "type": "boolean", "description": "Specify if rule will be active or not." }, "startDate": { "type": "string", "description": "Specify the start date from when recurrence rule will be applied" }, "endDate": { "type": "string", "description": "Specify the end time when recurrence rule will end" }, "repetition": { "type": "object", "properties": { "time": { "type": "string", "description": "Specify the template time to know the hour/minute/second you want to schedule the content on each ocurrence" }, "interval": { "type": "array", "description": "Specify the interval days on which rule will be applied", "items": { "type": "number" } } } } } }, "scope": { "type": "string", "description": "Which items do you want to apply the new update on all future items or un-modified items", "enum": [ "future_items", "unmodified_items" ] } } } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1recurrence_rules~1%7Bid%7D/get/responses/200/content/application~1json/schema" } } } }, "404": { "description": "Recurrence Rule id not found", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v2~1uploads/post/responses/404/content/application~1json/schema" } } } }, "422": { "description": "Unprocessable entity", "content": { "application/json": { "schema": { "$ref": "#/paths/~1scheduler~1v1~1types/get/responses/422/content/application~1json/schema" } } } } } } } }, "components": { "securitySchemes": { "api_key": { "type": "apiKey", "name": "X-API-Key", "in": "header" } } } }