Zype Playout Scheduler API

Cloud playout for FAST and linear channels: channels, HLS/UDP/RTMP delivery profiles, destinations and connectors, draft and published schedule versions, revertible timeline operations, assets (blocks, ads, bumpers, videos, playlists, graphics, live streams), ad timings, recurrence rules, and EPG export in XMLTV, JSON rundown and Vizio/TCL/Wurl/Roku formats. 82 operations. This is the only Zype API that authenticates with an X-API-Key header rather than a query parameter.

Operations 82

GET /scheduler/v1/channels List Channels #
POST /scheduler/v1/channels Create Channel #
GET /scheduler/v1/channels/{id} View Channel #
DELETE /scheduler/v1/channels/{id} Delete Channel #
PUT /scheduler/v1/channels/{id} Update Channel #
POST /scheduler/v1/channels/{id}/stop Stop On-Air Channel #
GET /scheduler/v1/profiles/hls List HLS Profiles
POST /scheduler/v1/profiles/hls Create HLS Profile #
GET /scheduler/v1/profiles/hls/{id} View HLS Profile #
DELETE /scheduler/v1/profiles/hls/{id} Delete HLS Profile #
PUT /scheduler/v1/profiles/hls/{id} Update HLS Profile #
POST /scheduler/v1/profiles/hls/{id}/duplicate Duplicate HLS Profile #
GET /scheduler/v1/profiles/udp List UDP Profiles
POST /scheduler/v1/profiles/udp Create UDP Profile #
GET /scheduler/v1/profiles/udp/{id} View UDP Profile #
DELETE /scheduler/v1/profiles/udp/{id} Delete UDP Profile #
PUT /scheduler/v1/profiles/udp/{id} Update UDP Profile #
POST /scheduler/v1/profiles/udp/{id}/duplicate Duplicate UDP Profile #
GET /scheduler/v1/profiles/rtmp List RTMP Profiles
POST /scheduler/v1/profiles/rtmp Create RTMP Profile #
GET /scheduler/v1/profiles/rtmp/{id} View RTMP Profile #
DELETE /scheduler/v1/profiles/rtmp/{id} Delete RTMP Profile #
PUT /scheduler/v1/profiles/rtmp/{id} Update RTMP Profile #
POST /scheduler/v1/profiles/rtmp/{id}/duplicate Duplicate RTMP Profile #
GET /scheduler/v1/types List Destination Types #
GET /scheduler/v1/types/{id} View Destination Type #
GET /scheduler/v1/channels/{id}/destinations List Destinations #
POST /scheduler/v1/channels/{id}/destinations Create Destination #
GET /scheduler/v1/channels/{id}/destinations/{destinationId} View Destination #
DELETE /scheduler/v1/channels/{id}/destinations/{destinationId} Delete Destination #
PUT /scheduler/v1/channels/{id}/destinations/{destinationId} Update Destination #
GET /scheduler/v1/channels/{id}/draft View Channel's Draft #
GET /scheduler/v1/channels/{id}/draft/items/{itemId}/graphics View track item's automated graphics #
GET /scheduler/v1/channels/{id}/draft/rundown View Channel Draft's Schedule Rundown #
POST /scheduler/v1/channels/{id}/draft/publish Publish Channel's Draft #
GET /scheduler/v1/channels/{id}/draft/operations List Operations #
POST /scheduler/v1/channels/{id}/draft/operations Create Operation #
DELETE /scheduler/v1/channels/{id}/draft/operations Revert all operations #
GET /scheduler/v1/channels/{id}/draft/operations/{operationId} View Operation #
POST /scheduler/v1/channels/{id}/draft/operations/{operationId}/revert Revert a Draft Schedule to the specified operation #
GET /scheduler/v1/channels/{id}/published View Channel's Published #
POST /scheduler/v1/channels/{id}/graphics_sync Sync automated graphic insertions #
GET /scheduler/v2/assets/blocks List Blocks #
POST /scheduler/v2/assets/blocks Create Block #
GET /scheduler/v2/assets/blocks/{id} View Block #
PUT /scheduler/v2/assets/blocks/{id} Update Block #
DELETE /scheduler/v2/assets/blocks/{id} Delete Block #
GET /scheduler/v2/assets/ads List Ads #
GET /scheduler/v2/assets/ads/{id} View Ad #
GET /scheduler/v2/assets/bumpers List Bumpers #
GET /scheduler/v2/assets/bumpers/{id} View Bumper #
GET /scheduler/v2/assets/videos List Videos #
GET /scheduler/v2/assets/videos/{id} View Video #
GET /scheduler/v2/assets/playlists List Playlists #
GET /scheduler/v2/assets/playlists/{id} View Playlist #
GET /scheduler/v2/assets/ad_timings List Ad Timings #
POST /scheduler/v2/assets/ad_timings Create Ad Timing #
DELETE /scheduler/v2/assets/ad_timings Delete Ad Timings #
PUT /scheduler/v2/assets/ad_timings/{id} Update Ad Timing #
DELETE /scheduler/v2/assets/ad_timings/{id} Delete Ad Timing #
GET /scheduler/v2/assets/{channelId}/live_streams List Live Assets #
POST /scheduler/v2/assets/{channelId}/live_streams Create Live Asset #
PUT /scheduler/v2/assets/{channelId}/live_streams/{id} Update Live Asset #
DELETE /scheduler/v2/assets/{channelId}/live_streams/{id} Delete Live Asset #
POST /scheduler/v2/uploads Create Upload #
GET /scheduler/v2/uploads/{id} Get Upload #
GET /scheduler/v2/assets/graphics List Graphics #
POST /scheduler/v2/assets/graphics Create Graphic #
GET /scheduler/v2/assets/graphics/{id} View Graphic #
PUT /scheduler/v2/assets/graphics/{id} Update Graphic #
DELETE /scheduler/v2/assets/graphics/{id} Delete Graphic #
GET /scheduler/v1/channels/{id}/published/rundown JSON Rundown EPG #
GET /scheduler/v1/channels/{id}/published/rundown/xmltv.xml View Channel's Published Rundown XMLTV format #
GET /scheduler/v2/channels/{id}/epg/vizio Vizio EPG #
GET /scheduler/v2/channels/{id}/epg/tcl Tcl EPG #
GET /scheduler/v2/channels/{id}/epg/wurl Wurl EPG #
GET /scheduler/v2/channels/{id}/epg/roku Roku EPG #
GET /scheduler/v2/recurrence_rules List Recurrence Rules #
POST /scheduler/v2/recurrence_rules Create Recurrence Rule #
GET /scheduler/v2/recurrence_rules/{id} View Recurrence Rule #
DELETE /scheduler/v2/recurrence_rules/{id} Delete Recurrence Rule #
PUT /scheduler/v2/recurrence_rules/{id} Update Recurrence Rule #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/playout-scheduler"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zype-playout-scheduler.json Raw ↑
{
  "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 (`<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/r

# --- truncated at 32 KB (330 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zype/refs/heads/main/openapi/zype-playout-scheduler.json