{"openapi":"3.0.0","info":{"title":"THEOlive API","version":"v2"},"servers":[{"url":"https://api.theo.live/v2","description":"V2 API"},{"url":"https://api.theo.live","description":"Base (for /v1 endpoints)"}],"security":[{"BasicAuth":[]}],"components":{"securitySchemes":{"BasicAuth":{"type":"http","scheme":"basic"}},"schemas":{"PaginatedChannelResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Channel"},"description":"List of channels"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"Channel":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the channel"},"createdAt":{"type":"string","description":"Creation timestamp"},"name":{"type":"string","description":"Name of the channel"},"status":{"type":"string","enum":["ready","stopped","deploying","provisioning","starting","waiting","ingesting","playing","stopping","error","deleting","deleted"],"description":"Current status of the channel, derived from the status of its engines: the most active engine state wins (e.g. a channel with one playing and one stopping engine is playing). A channel is stopping only once all its engines are stopping or stopped (graceful shutdown, typically 10-20 seconds); stopping it again then force stops the remaining engines."},"externalId":{"type":"string","description":"Deprecated, use 'externalIds' instead. For now, this returns the first entry of the 'externalIds' list.","deprecated":true},"externalIds":{"type":"array","items":{"type":"string"},"description":"External identifiers of the channel"},"timeout":{"type":"number","description":"Timeout in seconds"},"sctePassthrough":{"type":"boolean","description":"Whether SCTE-35 markers received in the ingest are preserved as ad-break markers in the HESP / HLS output. Always true when OptiView ads are enabled on the channel."},"ads":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether OptiView ads are enabled on the channel"},"settings":{"type":"object","properties":{"assetKey":{"type":"string","description":"Deprecated. Use customAssetKey instead.","deprecated":true},"layout":{"type":"string","enum":["SINGLE","DOUBLE","LSHAPE_AD","LSHAPE_CONTENT"],"deprecated":true},"enableBumperAds":{"type":"boolean","deprecated":true},"podDuration":{"type":"number","deprecated":true},"customAdTagParameters":{"type":"object","additionalProperties":{"type":"string"},"deprecated":true}},"description":"Deprecated. Only returned for channels still using the old (V1) ads API underneath.","deprecated":true}},"required":["enabled"],"description":"OptiView Ads configuration"},"dvr":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether DVR is enabled"},"windowInSeconds":{"type":"number","minimum":60,"maximum":86400,"description":"DVR window in seconds (60-86400)"}},"required":["enabled"],"description":"DVR configuration"},"nielsen":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether Nielsen is enabled"}},"required":["enabled"],"description":"Nielsen configuration"},"instreamMetadata":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether instream metadata is enabled. Supported metadata is h264 registered or unregistered SEI metadata"},"uuids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Array of instream metadata SEI UUIDs"}},"required":["enabled"],"description":"Instream metadata configuration"},"perpetual":{"type":"boolean","description":"Whether this channel is 24/7 (never times out, excluded from transcoding analytics)"},"organizationId":{"type":"string","description":"Organization ID"}},"required":["id","createdAt","name","status","timeout","sctePassthrough","perpetual","organizationId"]},"ChannelCreatedObjectResult":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChannelCreated"}},"required":["data"]},"ChannelCreated":{"allOf":[{"$ref":"#/components/schemas/Channel"},{"type":"object","properties":{"ingests":{"type":"array","items":{"$ref":"#/components/schemas/Ingest"},"description":"Connected ingests"},"engines":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the engine"},"name":{"type":"string","description":"Name of the engine"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"drm":{"type":"boolean","description":"Whether DRM is enabled"},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider used by this engine"},"priority":{"type":"number","description":"Engine priority"},"status":{"type":"string","enum":["stopped","deploying","provisioning","starting","waiting","ingesting","playing","stopping","error","deleting","deleted"],"description":"Current status of the engine. A started engine goes through deploying (start request accepted), provisioning (compute is being allocated and the engine image is being pulled), starting (engine is booting), then waiting / ingesting / playing. A stopped engine goes through stopping (graceful shutdown: the stream is ended for viewers and the engine is torn down, typically 10-20 seconds) to stopped. Stopping an engine again while it is stopping force stops it (immediate teardown). An engine can only be started while stopped."},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration"},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration"}},"required":["id","name","createdAt","updatedAt","quality","overlays","drm","priority","status","outputs"]},"description":"Connected engines"},"distributions":{"type":"array","items":{"$ref":"#/components/schemas/Distribution"},"description":"Connected distributions"}},"required":["ingests","engines","distributions"]}],"description":"Created channel with connected resources"},"Ingest":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the ingest"},"name":{"type":"string","description":"Name of the ingest"},"createdAt":{"type":"string","description":"Creation timestamp"},"type":{"type":"string","enum":["rtmp-push","rtmp-pull","srt-pull","srt-push","sdi-pull","rtsp-pull","ndi-pull"],"description":"Ingest type"},"url":{"type":"string","description":"Ingest URL"},"streamKey":{"type":"string","description":"Stream key for RTMP push ingests"},"tracks":{"type":"object","properties":{"audio":{"type":"array","items":{"type":"object","properties":{"pid":{"type":"number","description":"Audio track PID (mandatory for multi-audio)"},"language":{"type":"string","description":"Audio track language code"},"label":{"type":"string","description":"Audio track label"}},"required":["language","label"]},"description":"Audio track configuration"}},"description":"Audio track configuration"},"captions":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"number","description":"Caption channel number"},"language":{"type":"string","description":"Caption language code"},"label":{"type":"string","description":"Caption label"}},"required":["channel","language"]},"description":"Caption configuration"},"enhancements":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SpeechEnhancement"}],"discriminator":{"propertyName":"kind","mapping":{"speech":"#/components/schemas/SpeechEnhancement"}},"description":"Enhancement entry, discriminated by 'kind'. Currently supported: 'speech' (live translation)"},"description":"Enhancement configuration"},"sdi":{"$ref":"#/components/schemas/IngestSdi"},"ndi":{"$ref":"#/components/schemas/IngestNdi"},"status":{"type":"string","enum":["stopped","active"],"description":"Status of the ingest. Currently only set for rtsp-pull ingests (they are started/stopped via the ingest)"},"restream":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Restream ID"},"url":{"type":"string","description":"Restream URL"}},"required":["id","url"]},"description":"Restream destinations applied when the ingest is started. Currently only set for rtsp-pull ingests"}},"required":["id","name","createdAt","type","url","tracks","captions"]},"SpeechEnhancement":{"type":"object","properties":{"kind":{"type":"string","enum":["speech"],"description":"Live speech translation of the stream audio (requires translations to be enabled for the organization)"},"sourceLanguage":{"type":"string","description":"Source language spoken in the stream"},"targetTextTracks":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Languages to generate translated text tracks for (max 5). A text track in the source language is included by default, so the source language or a variant of its base language (e.g. \"en\" vs \"en-US\") must not be listed here"},"sourceAudioTrack":{"type":"integer","minimum":0,"description":"PID of the audio track to use as translation source"},"dictionary":{"type":"string","nullable":true,"description":"Speech dictionary ID (see `/enhancements/speech/dictionaries`). The dictionary helps the speech recognition caption the source audio and must have the same `language` as `sourceLanguage`. Can always be set to null to disconnect the dictionary"},"latencyMode":{"type":"string","enum":["fastest","fast","balanced","highest"],"description":"Latency/quality trade-off of the translation. Defaults to 'fast'"},"extraPrompt":{"type":"string","nullable":true,"maxLength":1000,"description":"Extra context for the AI generating the translated outputs, applied to every translation (e.g. 'this is a live horse race' or 'remove profane language from the output'). Can always be set to null to remove it"},"position":{"type":"object","properties":{"bottom":{"type":"integer","minimum":0,"maximum":90,"description":"Margin from the bottom in percent of viewport height"}},"description":"Position of the rendered translated captions. Margins in percent of viewport height"}},"required":["kind","sourceLanguage","targetTextTracks"],"additionalProperties":false},"IngestSdi":{"type":"object","properties":{"persistentId":{"type":"string","description":"Persistent ID of the SDI capture card, identifying it across reboots. Required for sdi-pull ingests: it must match an available SDI device of the region (see `/regions/{regionId}/sdi`) that is not connected to another ingest"},"audioConnection":{"type":"string","enum":["auto","sdi","hdmi","optical-sdi","component","composite","svideo"],"description":"Audio connection type"},"videoConnection":{"type":"string","enum":["auto","sdi","hdmi","optical-sdi","component","composite","svideo"],"description":"Video connection type"},"videoMode":{"type":"string","enum":["auto","ntsc","ntsc2398","pal","ntsc-p","pal-p","1080p2398","1080p24","1080p25","1080p2997","1080p30","1080i50","1080i5994","1080i60","1080p50","1080p5994","1080p60","720p50","720p5994","720p60","1556p2398","1556p24","1556p25","2kdcip2398","2kdcip24","2kdcip25","2kdcip2997","2kdcip30","2kdcip50","2kdcip5994","2kdcip60","2160p2398","2160p24","2160p25","2160p2997","2160p30","2160p50","2160p5994","2160p60","ntsc-widescreen","ntsc2398-widescreen","pal-widescreen","ntsc-p-widescreen","pal-p-widescreen","4kdcip2398","4kdcip24","4kdcip25","4kdcip2997","4kdcip30","4kdcip50","4kdcip5994","4kdcip60","8kp2398","8kp24","8kp25","8kp2997","8kp30","8kp50","8kp5994","8kp60","8kdcip2398","8kdcip24","8kdcip25","8kdcip2997","8kdcip30","8kdcip50","8kdcip5994","8kdcip60"],"description":"Video mode"},"profile":{"type":"string","enum":["default","one-sub-device-full","one-sub-device-half","two-sub-devices-full","two-sub-devices-half","four-sub-devices-half"],"description":"SDI profile"},"videoFormat":{"type":"string","enum":["auto","8bit-yuv","10bit-yuv","8bit-argb","8bit-bgra","10bit-rgb"],"description":"Video format"}},"additionalProperties":false,"description":"SDI capture card configuration (only for sdi-pull ingests)"},"IngestNdi":{"type":"object","properties":{"id":{"type":"string","description":"ID of the NDI source. Required for ndi-pull ingests: it must match a non-stale NDI source of the region (see `/regions/{regionId}/ndi`) that is not connected to another ingest"}},"required":["id"],"additionalProperties":false,"description":"NDI source configuration (only for ndi-pull ingests)"},"Distribution":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the distribution"},"createdAt":{"type":"string","description":"Creation timestamp"},"name":{"type":"string","description":"Name of the distribution"},"externalId":{"type":"string","description":"Deprecated, use 'externalIds' instead. For now, this returns the first entry of the 'externalIds' list.","deprecated":true},"externalIds":{"type":"array","items":{"type":"string"},"description":"External identifiers of the distribution"},"enabled":{"type":"boolean","description":"Whether the distribution is enabled"},"targetLatency":{"type":"number","description":"Target latency in seconds for playback (0.5-30, default: 2)."},"latencies":{"type":"object","properties":{"hesp":{"type":"number","nullable":true,"minimum":0.5,"maximum":30,"description":"HESP latency in seconds (0.5-30, default: 2)"},"hls":{"type":"number","nullable":true,"minimum":6,"maximum":30,"description":"HLS latency in seconds (6-30, default: 10)"}},"description":"Latency configuration per output protocol. Deprecated when HESP3 is enabled for your organization: use targetLatency instead."},"security":{"type":"object","properties":{"geoBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether geo-blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"Geo-blocking mode"},"countries":{"type":"array","items":{"type":"string"},"description":"List of country codes"}},"required":["enabled","mode","countries"],"description":"Geo-blocking configuration"},"ipBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether IP blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"IP blocking mode"},"cidrs":{"type":"array","items":{"type":"string"},"description":"List of CIDR ranges"}},"required":["enabled","mode","cidrs"],"description":"IP blocking configuration"},"refererBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether referer blocking is enabled"},"allowedDomains":{"type":"array","items":{"type":"string"},"description":"List of allowed domains"},"allowNativeApps":{"type":"boolean","description":"Whether native apps are allowed"}},"required":["enabled","allowedDomains","allowNativeApps"],"description":"Referer blocking configuration"},"rewriteSegmentUrls":{"type":"boolean","description":"When enabled, a short-lived token is added to the segment URLs, derived from the token that was passed. This only works when JWT security is enabled on the same distribution."},"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Security key ID"},"name":{"type":"string","description":"Security key name"}},"required":["id"]},"description":"Security keys"}},"required":["geoBlocking","ipBlocking","keys"],"description":"Security configuration"},"endpoints":{"type":"object","properties":{"engineIds":{"type":"array","items":{"type":"string"},"description":"Connected engine IDs"}},"required":["engineIds"],"description":"Endpoint configuration"},"webRtc":{"type":"object","properties":{"priority":{"type":"number","description":"WebRTC priority"},"src":{"type":"object","properties":{"name":{"type":"string","description":"WebRTC source name"},"accountId":{"type":"string","description":"WebRTC account ID"},"apiUrl":{"type":"string","description":"WebRTC API URL"}},"required":["name","accountId","apiUrl"],"description":"WebRTC source configuration"}},"required":["priority","src"],"description":"WebRTC configuration"},"maxBitrate":{"type":"number","description":"Maximum bitrate limit in bps"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Disabled by default."}},"description":"Output format configuration"},"dvr":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether DVR is enabled on the distribution"}},"description":"DVR configuration"},"overrides":{"type":"array","items":{"type":"object","properties":{"deviceType":{"type":"string","nullable":true,"enum":["tv","mobile","desktop","other",null],"description":"Target device type"},"sdkType":{"type":"string","nullable":true,"enum":["native","web",null],"description":"Target SDK type"},"osName":{"type":"string","nullable":true,"enum":["apple","android","windows","roku","xbox","other",null],"description":"Target OS name"},"profileId":{"type":"string","nullable":true,"description":"Target profile ID"},"targets":{"type":"array","items":{"type":"object","properties":{"distributionId":{"type":"string","description":"Target distribution ID"},"weight":{"type":"number","minimum":0,"maximum":100,"description":"Weight (0-100)"}},"required":["distributionId","weight"]},"description":"Override target distributions with weights"}},"required":["targets"]},"description":"Distribution overrides"},"customEndpoints":{"type":"array","items":{"type":"object","properties":{"customEndpointId":{"type":"string","description":"ID of the connected custom endpoint"},"weight":{"type":"number","description":"Weight (0-100)"}},"required":["customEndpointId","weight"]},"description":"Connected custom endpoints with weights"},"ads":{"type":"object","properties":{"dai":{"type":"object","properties":{"weight":{"type":"integer","minimum":0,"maximum":100,"description":"Weight for DAI endpoints (0-100)"},"priority":{"type":"integer","description":"Priority for DAI endpoints (any integer, lower = higher priority)"}},"required":["weight","priority"],"additionalProperties":false,"description":"DAI endpoint settings"}},"additionalProperties":false,"description":"Ads configuration for the distribution"},"playerSettings":{"type":"object","properties":{"hespCooldown":{"type":"number","minimum":0,"maximum":300,"description":"Cooldown period in seconds (0-300) before the player retries HESP playback after falling back to another protocol. Defaults to 120 seconds when not set."}},"additionalProperties":false,"description":"Player settings applied to the player configuration in the discovery response"}},"required":["id","createdAt","name","enabled","latencies","security","endpoints","dvr"]},"CreateChannelBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the channel"},"externalId":{"type":"string","description":"Deprecated, use 'externalIds' instead. Shorthand for a single-entry 'externalIds'. For now, responses will keep returning 'externalId' with the first entry of 'externalIds'.","deprecated":true},"externalIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"description":"External identifiers for the channel. Each must be unique across all channels of the organization. Mutually exclusive with externalId."},"timeout":{"type":"number","minimum":0,"default":3600,"description":"Timeout in seconds. To never stop, specify 0"},"sctePassthrough":{"type":"boolean","description":"Whether SCTE-35 markers received in the ingest (e.g. an SRT MPEG-TS feed) are preserved as ad-break markers in the HESP / HLS output. Defaults to false. Always enabled when OptiView ads are enabled on the channel. Changes are applied when engines are (re)started."},"ads":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether OptiView ads are enabled on the channel"},"customAssetKey":{"type":"string","description":"DAI asset key, only possible when Google is linked to your ads account"},"timebase":{"type":"string","enum":["wallclock","pts"],"description":"Timebase for ad insertion. Defaults to \"wallclock\""},"settings":{"type":"object","properties":{"assetKey":{"type":"string","description":"Deprecated. Use customAssetKey instead.","deprecated":true},"layout":{"type":"string","enum":["SINGLE","DOUBLE","LSHAPE_AD","LSHAPE_CONTENT"],"deprecated":true},"enableBumperAds":{"type":"boolean","deprecated":true},"podDuration":{"type":"number","deprecated":true},"customAdTagParameters":{"type":"object","additionalProperties":{"type":"string"},"deprecated":true}},"description":"Deprecated. V1 ads settings.","deprecated":true}},"required":["enabled"],"description":"OptiView Ads configuration"},"dvr":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether DVR is enabled"},"windowInSeconds":{"type":"number","minimum":60,"maximum":86400,"description":"DVR window in seconds (60-86400)"}},"required":["enabled"],"description":"DVR configuration"},"nielsen":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether Nielsen is enabled"}},"required":["enabled"],"description":"Nielsen configuration"},"instreamMetadata":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether instream metadata is enabled. Supported metadata is h264 registered or unregistered SEI metadata"},"uuids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Array of instream metadata SEI UUIDs"}},"required":["enabled"],"description":"Instream metadata configuration"},"ingests":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/CreateIngestBody"},{"type":"object","properties":{"region":{"type":"string","description":"Region ID. Required for srt-push and rtmp-push. Required for srt-pull and rtmp-pull when single ingest is enabled for the organization, in which case it must be a single ingest enabled region. Required and must be a DUPLO region when a 'speech' enhancement is enabled. Required and must be an on-prem region for rtsp-pull, ndi-pull and sdi-pull (ndi-pull and sdi-pull additionally require the region to support the ingest type). For srt-pull and rtmp-pull, when omitted and engines are passed, the region of the engines is used"},"engines":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the engine"},"region":{"type":"string","description":"Region ID to deploy the engine in"},"priority":{"type":"number","minimum":-100,"maximum":100,"description":"Engine priority (-100 to 100). Lower numbers mean higher priority"},"drm":{"type":"boolean","description":"Enable DRM. Only possible when enabled for your organization."},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider to use. Only possible when your organization has access to the provider. Defaults to the organization default provider."},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"restream":{"type":"array","items":{"$ref":"#/components/schemas/Restream"},"description":"Restream destinations. Only available when the engine runs in an on-prem region"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration. Only available when enabled for your organization. Pass `null` to disable."},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","nullable":true,"minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31. Pass `null` to unset it."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration. Only available when the connected ABR ladder has Dolby Atmos audio configured. Pass `null` to disable."}},"required":["name","region","quality"],"additionalProperties":false},"description":"Engines to create for this ingest"}},"additionalProperties":false}]},"description":"Ingests to create for the channel"},"distributions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the distribution"},"externalId":{"type":"string","description":"Deprecated, use 'externalIds' instead. Shorthand for a single-entry 'externalIds'. For now, responses will keep returning 'externalId' with the first entry of 'externalIds'.","deprecated":true},"externalIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"description":"External identifiers for the distribution. Each must be unique across all distributions of the organization. Mutually exclusive with externalId."},"enabled":{"type":"boolean","description":"Whether the distribution is enabled"},"targetLatency":{"type":"number","minimum":0.5,"maximum":30,"description":"Target latency in seconds for playback (0.5-30, default: 2). Also applied as latencies.hesp."},"latencies":{"type":"object","properties":{"hesp":{"type":"number","nullable":true,"minimum":0.5,"maximum":30,"description":"HESP latency in seconds (0.5-30, default: 2)"},"hls":{"type":"number","nullable":true,"minimum":6,"maximum":30,"description":"HLS latency in seconds (6-30, default: 10)"}},"description":"Latency configuration per output protocol. Deprecated when HESP3 is enabled for your organization: use targetLatency instead."},"security":{"type":"object","properties":{"geoBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether geo-blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"Geo-blocking mode"},"countries":{"type":"array","items":{"type":"string"},"description":"List of country codes"}},"description":"Geo-blocking configuration"},"ipBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether IP blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"IP blocking mode"},"cidrs":{"type":"array","items":{"type":"string"},"description":"List of CIDR ranges"}},"description":"IP blocking configuration"},"refererBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether referer blocking is enabled"},"allowedDomains":{"type":"array","items":{"type":"string"},"description":"List of allowed domains. Matched exactly against the referer host including port (e.g. example.com). `localhost` with an optional port (e.g. localhost:3000) is also allowed."},"allowNativeApps":{"type":"boolean","description":"Whether native apps are allowed"}},"description":"Referer blocking configuration"},"rewriteSegmentUrls":{"type":"boolean","description":"When enabled, a short-lived token is added to the segment URLs, derived from the token that was passed. This only works when JWT security is enabled on the same distribution."},"keys":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the security key"},"key":{"type":"string","description":"Security key value"}},"required":["key"]},"maxItems":2,"description":"Security keys (max 2, create only)"}},"description":"Security configuration"},"webRtc":{"type":"object","nullable":true,"properties":{"priority":{"type":"number","description":"WebRTC priority"},"src":{"type":"object","properties":{"name":{"type":"string","description":"WebRTC source name"},"accountId":{"type":"string","description":"WebRTC account ID"},"apiUrl":{"type":"string","description":"WebRTC API URL"}},"required":["name","accountId","apiUrl"],"description":"WebRTC source configuration"}},"required":["priority","src"],"description":"WebRTC configuration"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Disabled by default."}},"description":"Output format configuration"},"maxBitrate":{"type":"number","nullable":true,"description":"Maximum bitrate limit in bps"},"dvr":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether DVR is enabled on the distribution"}},"description":"DVR configuration"},"overrides":{"type":"array","items":{"type":"object","properties":{"deviceType":{"type":"string","nullable":true,"enum":["tv","mobile","desktop","other",null],"description":"Target device type"},"sdkType":{"type":"string","nullable":true,"enum":["native","web",null],"description":"Target SDK type"},"osName":{"type":"string","nullable":true,"enum":["apple","android","windows","roku","xbox","other",null],"description":"Target OS name"},"profileId":{"type":"string","nullable":true,"description":"Target profile ID"},"targets":{"type":"array","items":{"type":"object","properties":{"distributionId":{"type":"string","description":"Target distribution ID"},"weight":{"type":"number","minimum":0,"maximum":100,"description":"Weight (0-100)"}},"required":["distributionId","weight"]},"description":"Override target distributions with weights"}},"required":["targets"]},"description":"Distribution overrides for device targeting"},"customEndpoints":{"type":"array","items":{"type":"object","properties":{"customEndpointId":{"type":"string","description":"ID of the custom endpoint to connect"},"weight":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"Weight (0-100, default 100)"}},"required":["customEndpointId"]},"description":"Custom endpoints to connect to this distribution"},"ads":{"type":"object","nullable":true,"properties":{"dai":{"type":"object","properties":{"weight":{"type":"integer","minimum":0,"maximum":100,"description":"Weight for DAI endpoints (0-100)"},"priority":{"type":"integer","description":"Priority for DAI endpoints (any integer, lower = higher priority)"}},"required":["weight","priority"],"additionalProperties":false,"description":"DAI endpoint settings"}},"additionalProperties":false,"description":"Ads configuration for the distribution"},"playerSettings":{"type":"object","nullable":true,"properties":{"hespCooldown":{"type":"number","minimum":0,"maximum":300,"description":"Cooldown period in seconds (0-300) before the player retries HESP playback after falling back to another protocol. Defaults to 120 seconds when not set."}},"additionalProperties":false,"description":"Player settings applied to the player configuration in the discovery response"}},"required":["name"],"additionalProperties":false},"description":"Distributions to create for the channel (endpoints will be auto-configured)"}},"required":["name"],"additionalProperties":false},"Restream":{"type":"object","properties":{"id":{"type":"string","minLength":1,"description":"Unique restream ID"},"url":{"type":"string","pattern":"^(rtmp|rtmps|srt):","description":"Restream destination URL"}},"required":["id","url"],"additionalProperties":false},"CreateIngestBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the ingest"},"type":{"type":"string","enum":["rtmp-push","rtmp-pull","srt-pull","srt-push","sdi-pull","rtsp-pull","ndi-pull"],"description":"Ingest type. Note: srt-push requires SRT push to be enabled at organization level. Currently only rtsp-pull ingests can be started/stopped via the ingest start/stop endpoints"},"url":{"type":"string","description":"Source URL (required for pull types, except sdi-pull and ndi-pull). Must start with \"rtsp://\" for rtsp-pull"},"region":{"type":"string","description":"Region ID. Required for srt-push and rtmp-push. Required for srt-pull and rtmp-pull when single ingest is enabled for the organization, in which case it must be a single ingest enabled region. Required and must be a DUPLO region when a 'speech' enhancement is enabled. Required and must be an on-prem region for rtsp-pull, ndi-pull and sdi-pull (ndi-pull and sdi-pull additionally require the region to support the ingest type)"},"captions":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"number","description":"Caption channel number"},"language":{"type":"string","description":"Caption language code"},"label":{"type":"string","description":"Caption label"}},"required":["channel","language"]},"description":"Caption configuration"},"enhancements":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SpeechEnhancement"}],"discriminator":{"propertyName":"kind","mapping":{"speech":"#/components/schemas/SpeechEnhancement"}},"description":"Enhancement entry, discriminated by 'kind'. Currently supported: 'speech' (live translation)"},"description":"Enhancement configuration. At most 1 'speech' entry is allowed. A 'speech' entry requires the ingest to have a DUPLO region"},"tracks":{"type":"object","properties":{"audio":{"type":"array","items":{"type":"object","properties":{"pid":{"type":"number","description":"Audio track PID (mandatory for multi-audio)"},"language":{"type":"string","description":"Audio track language code"},"label":{"type":"string","description":"Audio track label"}},"required":["language","label"]},"description":"Audio track configuration"}},"description":"Audio track configuration"},"sdi":{"allOf":[{"$ref":"#/components/schemas/IngestSdi"},{"description":"SDI capture card configuration (required for sdi-pull)"}]},"ndi":{"allOf":[{"$ref":"#/components/schemas/IngestNdi"},{"description":"NDI source configuration (required for ndi-pull)"}]},"restream":{"type":"array","items":{"$ref":"#/components/schemas/Restream"},"description":"Restream destinations (id + url). Currently only allowed for rtsp-pull ingests; applied when the ingest is started"}},"required":["name","type"],"additionalProperties":false},"ChannelObjectResultWithIncludes":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/Channel"},{"description":"Channel object"}]},"ingests":{"$ref":"#/components/schemas/IncludedIngests"},"engines":{"$ref":"#/components/schemas/IncludedEngines"},"distributions":{"$ref":"#/components/schemas/IncludedDistributions"}},"required":["data"]},"IncludedIngests":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Ingest"},"description":"First 10 ingests"},"hasMore":{"type":"boolean","description":"Whether there are more than 10 ingests"},"link":{"type":"string","description":"Link to the full ingests list"},"count":{"type":"number","description":"Total number of ingests"}},"required":["data","hasMore","link","count"],"description":"Included ingests preview"},"IncludedEngines":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the engine"},"name":{"type":"string","description":"Name of the engine"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"drm":{"type":"boolean","description":"Whether DRM is enabled"},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider used by this engine"},"priority":{"type":"number","description":"Engine priority"},"status":{"type":"string","enum":["stopped","deploying","provisioning","starting","waiting","ingesting","playing","stopping","error","deleting","deleted"],"description":"Current status of the engine. A started engine goes through deploying (start request accepted), provisioning (compute is being allocated and the engine image is being pulled), starting (engine is booting), then waiting / ingesting / playing. A stopped engine goes through stopping (graceful shutdown: the stream is ended for viewers and the engine is torn down, typically 10-20 seconds) to stopped. Stopping an engine again while it is stopping force stops it (immediate teardown). An engine can only be started while stopped."},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration"},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration"}},"required":["id","name","createdAt","updatedAt","quality","overlays","drm","priority","status","outputs"]},"description":"First 10 engines"},"hasMore":{"type":"boolean","description":"Whether there are more than 10 engines"},"link":{"type":"string","description":"Link to the full engines list"},"count":{"type":"number","description":"Total number of engines"}},"required":["data","hasMore","link","count"],"description":"Included engines preview"},"IncludedDistributions":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Distribution"},"description":"First 10 distributions"},"hasMore":{"type":"boolean","description":"Whether there are more than 10 distributions"},"link":{"type":"string","description":"Link to the full distributions list"},"count":{"type":"number","description":"Total number of distributions"}},"required":["data","hasMore","link","count"],"description":"Included distributions preview"},"ChannelDrmConfigsResult":{"type":"object","properties":{"contentProtections":{"type":"array","items":{"$ref":"#/components/schemas/ChannelDrmContentProtection"},"description":"List of DRM content protection configurations"}},"required":["contentProtections"]},"ChannelDrmContentProtection":{"type":"object","properties":{"integration":{"type":"string","description":"DRM integration type"},"merchant":{"type":"string","description":"Merchant identifier, for integrations that identify the customer per license request"},"widevine":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"Widevine license acquisition URL"}},"required":["licenseUrl"],"description":"Widevine configuration"},"playready":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"PlayReady license acquisition URL"}},"required":["licenseUrl"],"description":"PlayReady configuration"},"fairplay":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"FairPlay license acquisition URL"},"certificateUrl":{"type":"string","description":"FairPlay certificate URL"}},"required":["licenseUrl","certificateUrl"],"description":"FairPlay configuration"}},"required":["integration"]},"ChannelObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/Channel"},{"description":"Channel object"}]}},"required":["data"]},"UpdateChannelBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the channel"},"externalId":{"type":"string","description":"Deprecated, use 'externalIds' instead. Shorthand for a single-entry 'externalIds'. For now, responses will keep returning 'externalId' with the first entry of 'externalIds'.","deprecated":true},"externalIds":{"type":"array","items":{"type":"string","minLength":1},"description":"External identifiers for the channel. Replaces the full list; an empty array clears all external IDs. Mutually exclusive with externalId."},"timeout":{"type":"number","minimum":0,"description":"Timeout in seconds (minimum 60). To never stop, specify 0"},"sctePassthrough":{"type":"boolean","description":"Whether SCTE-35 markers received in the ingest (e.g. an SRT MPEG-TS feed) are preserved as ad-break markers in the HESP / HLS output. Defaults to false. Always enabled when OptiView ads are enabled on the channel. Changes are applied when engines are (re)started."},"ads":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether OptiView ads are enabled on the channel"},"customAssetKey":{"type":"string","description":"DAI asset key, only possible when Google is linked to your ads account"},"timebase":{"type":"string","enum":["wallclock","pts"],"description":"Timebase for ad insertion. Defaults to \"wallclock\""},"settings":{"type":"object","properties":{"assetKey":{"type":"string","description":"Deprecated. Use customAssetKey instead.","deprecated":true},"layout":{"type":"string","enum":["SINGLE","DOUBLE","LSHAPE_AD","LSHAPE_CONTENT"],"deprecated":true},"enableBumperAds":{"type":"boolean","deprecated":true},"podDuration":{"type":"number","deprecated":true},"customAdTagParameters":{"type":"object","additionalProperties":{"type":"string"},"deprecated":true}},"description":"Deprecated. V1 ads settings.","deprecated":true}},"required":["enabled"],"description":"OptiView Ads configuration. Only available when OptiView Ads is enabled for your organization."},"dvr":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether DVR is enabled"},"windowInSeconds":{"type":"number","minimum":60,"maximum":86400,"description":"DVR window in seconds (60-86400)"}},"required":["enabled"],"description":"DVR configuration. Only available when DVR feature is enabled for your organization."},"nielsen":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether Nielsen is enabled"}},"required":["enabled"],"description":"Nielsen configuration. Only available when Nielsen feature is enabled for your organization."},"instreamMetadata":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether instream metadata is enabled. Supported metadata is h264 registered or unregistered SEI metadata"},"uuids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Array of instream metadata SEI UUIDs"}},"required":["enabled"],"description":"Instream metadata configuration"}},"additionalProperties":false},"PaginatedIngestResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Ingest"},"description":"List of ingests"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"IngestObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/Ingest"},{"description":"Ingest object"}]}},"required":["data"]},"PaginatedEngineResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the engine"},"name":{"type":"string","description":"Name of the engine"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"drm":{"type":"boolean","description":"Whether DRM is enabled"},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider used by this engine"},"priority":{"type":"number","description":"Engine priority"},"status":{"type":"string","enum":["stopped","deploying","provisioning","starting","waiting","ingesting","playing","stopping","error","deleting","deleted"],"description":"Current status of the engine. A started engine goes through deploying (start request accepted), provisioning (compute is being allocated and the engine image is being pulled), starting (engine is booting), then waiting / ingesting / playing. A stopped engine goes through stopping (graceful shutdown: the stream is ended for viewers and the engine is torn down, typically 10-20 seconds) to stopped. Stopping an engine again while it is stopping force stops it (immediate teardown). An engine can only be started while stopped."},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration"},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration"}},"required":["id","name","createdAt","updatedAt","quality","overlays","drm","priority","status","outputs"]},"description":"List of engines"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"EngineObjectResult":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the engine"},"name":{"type":"string","description":"Name of the engine"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"drm":{"type":"boolean","description":"Whether DRM is enabled"},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider used by this engine"},"priority":{"type":"number","description":"Engine priority"},"status":{"type":"string","enum":["stopped","deploying","provisioning","starting","waiting","ingesting","playing","stopping","error","deleting","deleted"],"description":"Current status of the engine. A started engine goes through deploying (start request accepted), provisioning (compute is being allocated and the engine image is being pulled), starting (engine is booting), then waiting / ingesting / playing. A stopped engine goes through stopping (graceful shutdown: the stream is ended for viewers and the engine is torn down, typically 10-20 seconds) to stopped. Stopping an engine again while it is stopping force stops it (immediate teardown). An engine can only be started while stopped."},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration"},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration"}},"required":["id","name","createdAt","updatedAt","quality","overlays","drm","priority","status","outputs"],"description":"Engine object"}},"required":["data"]},"PaginatedDistributionResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Distribution"},"description":"List of distributions"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"DistributionObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/Distribution"},{"description":"Distribution object"}]}},"required":["data"]},"CreateDistributionBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the distribution"},"externalId":{"type":"string","description":"Deprecated, use 'externalIds' instead. Shorthand for a single-entry 'externalIds'. For now, responses will keep returning 'externalId' with the first entry of 'externalIds'.","deprecated":true},"externalIds":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"description":"External identifiers for the distribution. Each must be unique across all distributions of the organization. Mutually exclusive with externalId."},"enabled":{"type":"boolean","description":"Whether the distribution is enabled"},"targetLatency":{"type":"number","minimum":0.5,"maximum":30,"description":"Target latency in seconds for playback (0.5-30, default: 2). Also applied as latencies.hesp."},"latencies":{"type":"object","properties":{"hesp":{"type":"number","nullable":true,"minimum":0.5,"maximum":30,"description":"HESP latency in seconds (0.5-30, default: 2)"},"hls":{"type":"number","nullable":true,"minimum":6,"maximum":30,"description":"HLS latency in seconds (6-30, default: 10)"}},"description":"Latency configuration per output protocol. Deprecated when HESP3 is enabled for your organization: use targetLatency instead."},"security":{"type":"object","properties":{"geoBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether geo-blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"Geo-blocking mode"},"countries":{"type":"array","items":{"type":"string"},"description":"List of country codes"}},"description":"Geo-blocking configuration"},"ipBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether IP blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"IP blocking mode"},"cidrs":{"type":"array","items":{"type":"string"},"description":"List of CIDR ranges"}},"description":"IP blocking configuration"},"refererBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether referer blocking is enabled"},"allowedDomains":{"type":"array","items":{"type":"string"},"description":"List of allowed domains. Matched exactly against the referer host including port (e.g. example.com). `localhost` with an optional port (e.g. localhost:3000) is also allowed."},"allowNativeApps":{"type":"boolean","description":"Whether native apps are allowed"}},"description":"Referer blocking configuration"},"rewriteSegmentUrls":{"type":"boolean","description":"When enabled, a short-lived token is added to the segment URLs, derived from the token that was passed. This only works when JWT security is enabled on the same distribution."},"keys":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the security key"},"key":{"type":"string","description":"Security key value"}},"required":["key"]},"maxItems":2,"description":"Security keys (max 2, create only)"}},"description":"Security configuration"},"endpoints":{"type":"object","properties":{"engineIds":{"type":"array","items":{"type":"string"},"description":"Engine IDs to connect"}},"description":"Endpoint configuration"},"webRtc":{"type":"object","nullable":true,"properties":{"priority":{"type":"number","description":"WebRTC priority"},"src":{"type":"object","properties":{"name":{"type":"string","description":"WebRTC source name"},"accountId":{"type":"string","description":"WebRTC account ID"},"apiUrl":{"type":"string","description":"WebRTC API URL"}},"required":["name","accountId","apiUrl"],"description":"WebRTC source configuration"}},"required":["priority","src"],"description":"WebRTC configuration"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Disabled by default."}},"description":"Output format configuration"},"maxBitrate":{"type":"number","nullable":true,"description":"Maximum bitrate limit in bps"},"dvr":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether DVR is enabled on the distribution"}},"description":"DVR configuration"},"overrides":{"type":"array","items":{"type":"object","properties":{"deviceType":{"type":"string","nullable":true,"enum":["tv","mobile","desktop","other",null],"description":"Target device type"},"sdkType":{"type":"string","nullable":true,"enum":["native","web",null],"description":"Target SDK type"},"osName":{"type":"string","nullable":true,"enum":["apple","android","windows","roku","xbox","other",null],"description":"Target OS name"},"profileId":{"type":"string","nullable":true,"description":"Target profile ID"},"targets":{"type":"array","items":{"type":"object","properties":{"distributionId":{"type":"string","description":"Target distribution ID"},"weight":{"type":"number","minimum":0,"maximum":100,"description":"Weight (0-100)"}},"required":["distributionId","weight"]},"description":"Override target distributions with weights"}},"required":["targets"]},"description":"Distribution overrides for device targeting"},"customEndpoints":{"type":"array","items":{"type":"object","properties":{"customEndpointId":{"type":"string","description":"ID of the custom endpoint to connect"},"weight":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"Weight (0-100, default 100)"}},"required":["customEndpointId"]},"description":"Custom endpoints to connect to this distribution"},"ads":{"type":"object","nullable":true,"properties":{"dai":{"type":"object","properties":{"weight":{"type":"integer","minimum":0,"maximum":100,"description":"Weight for DAI endpoints (0-100)"},"priority":{"type":"integer","description":"Priority for DAI endpoints (any integer, lower = higher priority)"}},"required":["weight","priority"],"additionalProperties":false,"description":"DAI endpoint settings"}},"additionalProperties":false,"description":"Ads configuration for the distribution"},"playerSettings":{"type":"object","nullable":true,"properties":{"hespCooldown":{"type":"number","minimum":0,"maximum":300,"description":"Cooldown period in seconds (0-300) before the player retries HESP playback after falling back to another protocol. Defaults to 120 seconds when not set."}},"additionalProperties":false,"description":"Player settings applied to the player configuration in the discovery response"}},"required":["name"],"additionalProperties":false},"SendInstreamMetadataBody":{"type":"string","format":"binary","description":"Binary blob of instream metadata as the payload for the UUID"},"PaginatedEngineRunResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EngineRun"},"description":"List of engine runs"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"EngineRun":{"type":"object","properties":{"engineId":{"type":"string","description":"Engine ID"},"start":{"type":"string","description":"Run start timestamp"},"end":{"type":"string","description":"Run end timestamp"},"config":{"type":"object","properties":{"ingest":{"type":"object","properties":{"type":{"type":"string","description":"Ingest type used"},"url":{"type":"string","description":"Ingest URL used"}},"required":["type"]},"abrLadderId":{"type":"string","description":"ABR ladder ID used"},"abrLadder":{"$ref":"#/components/schemas/EngineRunAbrLadder"},"resources":{"type":"object","properties":{"cpuCores":{"type":"number","minimum":1,"maximum":32,"description":"Number of CPU cores (1 - 32)"},"memoryMiB":{"type":"number","minimum":1,"description":"Memory in MiB"},"gpuCount":{"type":"integer","minimum":0,"maximum":2,"description":"Number of GPUs (0, 1 or 2)"}},"required":["cpuCores","memoryMiB"],"description":"Resources allocated for this run (engine override or ABR ladder resources at start time). Absent on runs started before this was recorded"},"drm":{"type":"boolean","description":"Whether DRM was enabled"}},"required":["ingest","abrLadderId","drm"],"description":"Run configuration"},"encoding":{"type":"string","description":"Video encoding used for this run (h264 or vision_h265)"},"startType":{"type":"string","description":"How the run was started"},"startId":{"type":"string","description":"ID of the entity who did the start action"},"stopType":{"type":"string","description":"How the run was stopped"},"stopId":{"type":"string","description":"ID of entity who did the stop action"}},"required":["engineId","start","config","encoding","startType","startId"]},"EngineRunAbrLadder":{"type":"object","properties":{"video":{"type":"array","items":{"type":"object","properties":{"bitrate":{"type":"number","description":"Bitrate in bits-per-second (bps)"},"id":{"type":"string","description":"Unique identifier for this rendition"},"label":{"type":"string","description":"Label for this rendition"},"width":{"type":"number","description":"Width in pixels"},"height":{"type":"number","description":"Height in pixels"},"frameRate":{"type":"object","properties":{"scale":{"type":"number","minimum":1,"description":"Frame rate scale"},"value":{"type":"number","minimum":1,"description":"Frame rate value"}},"required":["scale","value"],"description":"Frame rate configuration"},"codec":{"type":"string","enum":["h264","vision_h265"],"description":"Video codec to use for this rendition (defaults to h264)"},"disableHardwareAcceleration":{"type":"boolean","description":"Disable hardware acceleration for this rendition (defaults to false)"},"tier":{"type":"string","enum":["auto","quality","lowLatency"],"description":"Encoder tier for this rendition, trading latency against quality per bit: 'quality' maximizes quality at the cost of extra encoding latency, 'lowLatency' minimizes encoding latency. 'auto' picks the best tier for the channel configuration (defaults to auto)"}},"required":["bitrate","id","label","width","height"]},"description":"Video quality renditions used"},"audio":{"type":"object","properties":{"bitrate":{"type":"number","minimum":1,"description":"Audio bitrate in kilobits-per-second (kbps)"},"atmos":{"type":"object","properties":{"bitrate":{"type":"number","minimum":1,"description":"Dolby Atmos bitrate in kilobits-per-second (kbps)"}},"required":["bitrate"],"description":"Dolby Atmos audio configuration"}},"required":["bitrate"],"description":"Audio configuration used"},"encoding":{"type":"string","enum":["software","hardware"],"description":"Encoding mode used"}},"required":["video","audio","encoding"],"description":"Complete ABR ladder used for this run, as configured when the run started. Absent on runs started before this was recorded"},"AnalyticsListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","description":"Timestamp of the data point"},"records":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the grouped entity"},"amount":{"type":"number","description":"Metric value"}},"required":["id","amount"]},"description":"Records for this time bucket"}},"required":["timestamp","records"]},"description":"List of analytics data points"}},"required":["data"]},"ViewingBrowserListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"browserName":{"type":"string","description":"Browser name"},"hardwareType":{"type":"string","description":"Hardware type"},"amount":{"type":"number","description":"Metric value"}},"required":["browserName","hardwareType","amount"]},"description":"List of browser viewing data"}},"required":["data"]},"ViewingCountryListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"countryCode":{"type":"string","description":"ISO country code"},"amount":{"type":"number","description":"Metric value"}},"required":["countryCode","amount"]},"description":"List of country viewing data"}},"required":["data"]},"CountryInsightsListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"city":{"type":"string","description":"City name"},"countryCode":{"type":"string","description":"ISO country code"},"geoLocation":{"type":"string","description":"Rounded latitude,longitude"},"amount":{"type":"number","description":"Number of unique viewers"}},"required":["city","countryCode","geoLocation","amount"]},"description":"List of country insights"}},"required":["data"]},"BrowserOsInsightsListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"browserName":{"type":"string","description":"Browser name"},"browserVersion":{"type":"string","description":"Browser version"},"osName":{"type":"string","description":"OS name"},"osVersion":{"type":"string","description":"OS version"},"amount":{"type":"number","description":"Number of unique viewers"}},"required":["browserName","browserVersion","osName","osVersion","amount"]},"description":"List of browser/OS insights"}},"required":["data"]},"ViewersInsightsListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","description":"Timestamp of the data point"},"amount":{"type":"number","description":"Number of unique viewers"}},"required":["timestamp","amount"]},"description":"List of viewer count data points"}},"required":["data"]},"UpdateIngestBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the ingest"},"type":{"type":"string","enum":["rtmp-push","rtmp-pull","srt-pull","srt-push","sdi-pull","rtsp-pull","ndi-pull"],"description":"Ingest type. Note: srt-push requires SRT push to be enabled at organization level"},"url":{"type":"string","description":"Source URL"},"region":{"type":"string","description":"Region ID. Required for srt-push and rtmp-push. Required for srt-pull and rtmp-pull when single ingest is enabled for the organization, in which case it must be a single ingest enabled region. Required and must be a DUPLO region when a 'speech' enhancement is enabled. Required and must be an on-prem region for rtsp-pull, ndi-pull and sdi-pull (ndi-pull and sdi-pull additionally require the region to support the ingest type)"},"captions":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"number","description":"Caption channel number"},"language":{"type":"string","description":"Caption language code"},"label":{"type":"string","description":"Caption label"}},"required":["channel","language"]},"description":"Caption configuration (replaces the whole list)"},"enhancements":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SpeechEnhancement"}],"discriminator":{"propertyName":"kind","mapping":{"speech":"#/components/schemas/SpeechEnhancement"}},"description":"Enhancement entry, discriminated by 'kind'. Currently supported: 'speech' (live translation)"},"description":"Enhancement configuration (replaces the whole list). At most 1 'speech' entry is allowed. A 'speech' entry requires the ingest to have a DUPLO region"},"tracks":{"type":"object","properties":{"audio":{"type":"array","items":{"type":"object","properties":{"pid":{"type":"number","description":"Audio track PID (mandatory for multi-audio)"},"language":{"type":"string","description":"Audio track language code"},"label":{"type":"string","description":"Audio track label"}},"required":["language","label"]},"description":"Audio track configuration"}},"description":"Audio track configuration"},"sdi":{"allOf":[{"$ref":"#/components/schemas/IngestSdi"},{"description":"SDI capture card configuration (replaces the whole object)"}]},"ndi":{"allOf":[{"$ref":"#/components/schemas/IngestNdi"},{"description":"NDI source configuration (replaces the whole object)"}]},"restream":{"type":"array","items":{"$ref":"#/components/schemas/Restream"},"description":"Restream destinations (id + url), replaces the whole list. Currently only allowed for rtsp-pull ingests; applied when the ingest is started"}},"additionalProperties":false},"PaginatedIngestRunResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IngestRun"},"description":"List of ingest runs"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"IngestRun":{"type":"object","properties":{"ingestId":{"type":"string","description":"Ingest ID"},"start":{"type":"string","description":"Run start timestamp"},"end":{"type":"string","description":"Run end timestamp"},"config":{"$ref":"#/components/schemas/IngestRunConfig"},"startType":{"type":"string","description":"How the run was started"},"startId":{"type":"string","description":"ID of the entity who did the start action"},"stopType":{"type":"string","description":"How the run was stopped"},"stopId":{"type":"string","description":"ID of entity who did the stop action"}},"required":["ingestId","start","config","startType","startId"]},"IngestRunConfig":{"type":"object","properties":{"ingest":{"type":"object","properties":{"type":{"type":"string","description":"Ingest type used"},"url":{"type":"string","description":"Ingest URL used"}},"required":["type"]},"restream":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Restream ID"},"url":{"type":"string","description":"Restream URL"}},"required":["id","url"]},"description":"Restream destinations used"},"captions":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"number","description":"Caption channel number"},"language":{"type":"string","description":"Caption language code"},"label":{"type":"string","description":"Caption label"}},"required":["channel","language"]},"description":"Caption configuration used"},"tracks":{"type":"object","properties":{"audio":{"type":"array","items":{"type":"object","properties":{"pid":{"type":"number","description":"Audio track PID (mandatory for multi-audio)"},"language":{"type":"string","description":"Audio track language code"},"label":{"type":"string","description":"Audio track label"}},"required":["language","label"]},"description":"Audio track configuration"}},"description":"Audio track configuration used"}},"required":["ingest","restream","captions","tracks"],"description":"Run configuration"},"IngestRunObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/IngestRun"},{"description":"Ingest run object"}]}},"required":["data"]},"EngineRunObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/EngineRun"},{"description":"Engine run object"}]}},"required":["data"]},"UpdateDistributionBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the distribution"},"externalId":{"type":"string","nullable":true,"description":"Deprecated, use 'externalIds' instead. Shorthand for a single-entry 'externalIds'. For now, responses will keep returning 'externalId' with the first entry of 'externalIds'. Set to null to clear all external IDs.","deprecated":true},"externalIds":{"type":"array","items":{"type":"string","minLength":1},"description":"External identifiers for the distribution. Replaces the full list; an empty array clears all external IDs. Mutually exclusive with externalId."},"enabled":{"type":"boolean","description":"Whether the distribution is enabled"},"targetLatency":{"type":"number","minimum":0.5,"maximum":30,"description":"Target latency in seconds for playback (0.5-30). Also applied as latencies.hesp."},"latencies":{"type":"object","nullable":true,"properties":{"hesp":{"type":"number","nullable":true,"minimum":0.5,"maximum":30,"description":"HESP latency in seconds (0.5-30, default: 2)"},"hls":{"type":"number","nullable":true,"minimum":6,"maximum":30,"description":"HLS latency in seconds (6-30, default: 10)"}},"description":"Latency configuration per output protocol. Deprecated when HESP3 is enabled for your organization: use targetLatency instead."},"security":{"type":"object","properties":{"geoBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether geo-blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"Geo-blocking mode"},"countries":{"type":"array","items":{"type":"string"},"description":"List of country codes"}},"description":"Geo-blocking configuration"},"ipBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether IP blocking is enabled"},"mode":{"type":"string","enum":["allow","deny"],"description":"IP blocking mode"},"cidrs":{"type":"array","items":{"type":"string"},"description":"List of CIDR ranges"}},"description":"IP blocking configuration"},"refererBlocking":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether referer blocking is enabled"},"allowedDomains":{"type":"array","items":{"type":"string"},"description":"List of allowed domains. Matched exactly against the referer host including port (e.g. example.com). `localhost` with an optional port (e.g. localhost:3000) is also allowed."},"allowNativeApps":{"type":"boolean","description":"Whether native apps are allowed"}},"description":"Referer blocking configuration"},"rewriteSegmentUrls":{"type":"boolean","description":"When enabled, a short-lived token is added to the segment URLs, derived from the token that was passed. This only works when JWT security is enabled on the same distribution."},"keys":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the security key"},"key":{"type":"string","description":"Security key value"}},"required":["key"]},"maxItems":2,"description":"Security keys (max 2, create only)"}},"description":"Security configuration"},"endpoints":{"type":"object","properties":{"engineIds":{"type":"array","items":{"type":"string"},"description":"Engine IDs to connect"}},"description":"Endpoint configuration"},"webRtc":{"type":"object","nullable":true,"properties":{"priority":{"type":"number","description":"WebRTC priority"},"src":{"type":"object","properties":{"name":{"type":"string","description":"WebRTC source name"},"accountId":{"type":"string","description":"WebRTC account ID"},"apiUrl":{"type":"string","description":"WebRTC API URL"}},"required":["name","accountId","apiUrl"],"description":"WebRTC source configuration"}},"required":["priority","src"],"description":"WebRTC configuration"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Disabled by default."}},"description":"Output format configuration"},"maxBitrate":{"type":"number","nullable":true,"description":"Maximum bitrate limit in bps"},"dvr":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether DVR is enabled on the distribution"}},"description":"DVR configuration"},"overrides":{"type":"array","nullable":true,"items":{"type":"object","properties":{"deviceType":{"type":"string","nullable":true,"enum":["tv","mobile","desktop","other",null],"description":"Target device type"},"sdkType":{"type":"string","nullable":true,"enum":["native","web",null],"description":"Target SDK type"},"osName":{"type":"string","nullable":true,"enum":["apple","android","windows","roku","xbox","other",null],"description":"Target OS name"},"profileId":{"type":"string","nullable":true,"description":"Target profile ID"},"targets":{"type":"array","items":{"type":"object","properties":{"distributionId":{"type":"string","description":"Target distribution ID"},"weight":{"type":"number","minimum":0,"maximum":100,"description":"Weight (0-100)"}},"required":["distributionId","weight"]},"description":"Override target distributions with weights"}},"required":["targets"]},"description":"Distribution overrides for device targeting"},"customEndpoints":{"type":"array","nullable":true,"items":{"type":"object","properties":{"customEndpointId":{"type":"string","description":"ID of the custom endpoint to connect"},"weight":{"type":"integer","minimum":0,"maximum":100,"default":100,"description":"Weight (0-100, default 100)"}},"required":["customEndpointId"]},"description":"Custom endpoints to connect to this distribution. Replaces all existing connections."},"ads":{"type":"object","nullable":true,"properties":{"dai":{"type":"object","properties":{"weight":{"type":"integer","minimum":0,"maximum":100,"description":"Weight for DAI endpoints (0-100)"},"priority":{"type":"integer","description":"Priority for DAI endpoints (any integer, lower = higher priority)"}},"required":["weight","priority"],"additionalProperties":false,"description":"DAI endpoint settings"}},"additionalProperties":false,"description":"Ads configuration for the distribution. Set to null to clear."},"playerSettings":{"type":"object","nullable":true,"properties":{"hespCooldown":{"type":"number","minimum":0,"maximum":300,"description":"Cooldown period in seconds (0-300) before the player retries HESP playback after falling back to another protocol. Defaults to 120 seconds when not set."}},"additionalProperties":false,"description":"Player settings applied to the player configuration in the discovery response. Set to null to clear."}},"additionalProperties":false},"DistributionSecurityKeyListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Security key ID"},"name":{"type":"string","description":"Security key name"}},"required":["id"]},"description":"List of security keys"}},"required":["data"]},"DistributionSecurityKeyObjectResult":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Security key ID"},"name":{"type":"string","description":"Security key name"}},"required":["id"],"description":"Security key object"}},"required":["data"]},"CreateDistributionSecurityKeyBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the security key"},"key":{"type":"string","description":"Security key value"}},"required":["key"],"additionalProperties":false},"RegionListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the region"},"name":{"type":"string","description":"Display name of the region"},"type":{"type":"string","enum":["cloud","onprem"],"description":"Type of the region"},"supportedIngestTypes":{"type":"array","items":{"type":"string","enum":["srt-pull","rtmp-pull","srt-push","rtmp-push","rtsp-pull","ndi-pull","sdi-pull"]},"description":"Ingest types supported in this region (rtsp-pull, ndi-pull and sdi-pull are only available on on-prem regions; ndi-pull and sdi-pull additionally require the NDI/SDI capability on the region)"}},"required":["id","name","type","supportedIngestTypes"]},"description":"List of regions"}},"required":["data"]},"RegionResult":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the region"},"name":{"type":"string","description":"Display name of the region"},"type":{"type":"string","enum":["cloud","onprem"],"description":"Type of the region"},"supportedIngestTypes":{"type":"array","items":{"type":"string","enum":["srt-pull","rtmp-pull","srt-push","rtmp-push","rtsp-pull","ndi-pull","sdi-pull"]},"description":"Ingest types supported in this region (rtsp-pull, ndi-pull and sdi-pull are only available on on-prem regions; ndi-pull and sdi-pull additionally require the NDI/SDI capability on the region)"}},"required":["id","name","type","supportedIngestTypes"],"description":"The requested region"}},"required":["data"]},"SdiDeviceListResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SdiDevice"},"description":"List of SDI devices in the region"}},"required":["data"]},"SdiDevice":{"type":"object","properties":{"persistentId":{"type":"string","description":"Persistent identifier of the SDI device"},"label":{"type":"string","description":"Human-readable label for the SDI device, e.g. \"SDI Card 1, Input 1\""},"model":{"type":"string","description":"Model name of the SDI device"},"driverVersion":{"type":"string","description":"Driver version of the SDI device"},"available":{"type":"boolean","description":"Whether the SDI device is available for use and has a signal present"},"profile":{"type":"string","description":"Active profile (sub-device layout) of the SDI device"},"signal":{"type":"object","properties":{"present":{"type":"boolean","description":"Whether a signal is present on the SDI device"},"mode":{"type":"string","description":"Detected signal mode"},"resolution":{"type":"object","properties":{"width":{"type":"number","description":"Width in pixels"},"height":{"type":"number","description":"Height in pixels"}},"required":["width","height"],"description":"Detected resolution of the signal"},"frameRate":{"type":"number","description":"Detected frame rate of the signal"},"pixelFormat":{"type":"string","description":"Detected pixel format of the signal"},"videoMode":{"type":"string","description":"Detected video mode of the signal"},"videoFormat":{"type":"string","description":"Detected video format of the signal"}},"required":["present"],"description":"Detected signal on the SDI device"}},"required":["persistentId","model","driverVersion","available","profile"]},"NdiSourceListResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NdiSource"},"description":"List of NDI sources in the region"}},"required":["data"]},"NdiSource":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the NDI source"},"name":{"type":"string","description":"Name of the NDI source"},"url":{"type":"string","description":"Current URL of the NDI source"},"lastSeen":{"type":"string","description":"Timestamp the NDI source was last seen"},"stale":{"type":"boolean","description":"Whether the NDI source has not been seen recently and may no longer be available"},"inUse":{"type":"boolean","description":"Whether the NDI source is already connected to a non-deleted ingest"}},"required":["id","name","url","lastSeen","stale","inUse"]},"AbrListResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the ABR ladder"},"name":{"type":"string","description":"Name of the ABR ladder"},"video":{"type":"array","items":{"type":"object","properties":{"bitrate":{"type":"number","description":"Bitrate in bits-per-second (bps)"},"id":{"type":"string","description":"Unique identifier for this rendition"},"label":{"type":"string","description":"Label for this rendition"},"width":{"type":"number","description":"Width in pixels"},"height":{"type":"number","description":"Height in pixels"},"frameRate":{"type":"object","properties":{"scale":{"type":"number","minimum":1,"description":"Frame rate scale"},"value":{"type":"number","minimum":1,"description":"Frame rate value"}},"required":["scale","value"],"description":"Frame rate configuration"},"codec":{"type":"string","enum":["h264","vision_h265"],"description":"Video codec to use for this rendition (defaults to h264)"},"disableHardwareAcceleration":{"type":"boolean","description":"Disable hardware acceleration for this rendition (defaults to false)"},"tier":{"type":"string","enum":["auto","quality","lowLatency"],"description":"Encoder tier for this rendition, trading latency against quality per bit: 'quality' maximizes quality at the cost of extra encoding latency, 'lowLatency' minimizes encoding latency. 'auto' picks the best tier for the channel configuration (defaults to auto)"}},"required":["bitrate","id","label","width","height"]},"description":"List of video quality renditions"},"audio":{"type":"object","properties":{"bitrate":{"type":"number","minimum":1,"description":"Audio bitrate in kilobits-per-second (kbps)"},"atmos":{"type":"object","properties":{"bitrate":{"type":"number","minimum":1,"description":"Dolby Atmos bitrate in kilobits-per-second (kbps)"}},"required":["bitrate"],"description":"Dolby Atmos audio configuration"}},"required":["bitrate"],"description":"Audio configuration"},"resources":{"type":"object","properties":{"cpuCores":{"type":"number","minimum":1,"maximum":32,"description":"Number of CPU cores (1 - 32)"},"memoryMiB":{"type":"number","minimum":1,"description":"Memory in MiB"},"gpuCount":{"type":"integer","minimum":0,"maximum":2,"description":"Number of GPUs (0, 1 or 2)"}},"required":["cpuCores","memoryMiB"],"description":"Resource allocation configuration"},"encoding":{"type":"string","enum":["software","hardware"],"description":"Encoding mode for the ladder. When omitted, it is derived from the resources: hardware when a GPU is allocated, software otherwise"},"hespFastJoin":{"type":"boolean","description":"Enable HESP fast join for faster stream startup. Only applicable when HESP3 is used. When enabled, additional encoding is performed, increasing the encoding load (defaults to false)"}},"required":["id","name","video"]},"description":"List of ABR ladders"}},"required":["data"]},"AbrEngineCountListResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AbrEngineCount"},"description":"Engine counts per ABR ladder"}},"required":["data"]},"AbrEngineCount":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"Unique identifier of the ABR ladder"},"engineCount":{"type":"integer","description":"Number of engines using this ABR ladder"}},"required":["abrLadderId","engineCount"]},"PaginatedAbrLadderEngineResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AbrLadderEngine"},"description":"List of engines using the ABR ladder"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"AbrLadderEngine":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the engine"},"name":{"type":"string","description":"Name of the engine"},"channelId":{"type":"string","description":"Unique identifier of the channel the engine belongs to"},"channelName":{"type":"string","description":"Name of the channel the engine belongs to"}},"required":["id","name","channelId","channelName"]},"PaginatedWebhookResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"},"description":"List of webhooks"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"Webhook":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the webhook"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"name":{"type":"string","description":"Name of the webhook"},"active":{"type":"boolean","description":"Whether the webhook is active"},"description":{"type":"string","description":"Description of the webhook"},"url":{"type":"string","description":"URL to send webhook events to"},"events":{"type":"array","items":{"type":"string","enum":["*","channel.created","channel.stopped","channel.deleted","channel.deploying","channel.updated","webhook.created","webhook.updated","webhook.deleted","scheduler.created","scheduler.updated","scheduler.deleted","scheduler.active","scheduler.terminated","engine.deploying","engine.provisioning","engine.waiting","engine.starting","engine.error","engine.playing","engine.ingesting","engine.created","engine.updated","engine.stopping","engine.stopped","engine.deleting","engine.deleted","engine.log.warn","engine.log.error","engine.log.info","ingest.created","ingest.updated","ingest.deleted","ingest.started","ingest.stopped","distribution.created","distribution.enabled","distribution.disabled","distribution.updated","distribution.deleted","distribution.security.key.added","distribution.security.key.deleted","distribution.security.keys.deleted"]},"description":"List of subscribed events. \"*\" means all events."}},"required":["id","createdAt","updatedAt","name","active","url","events"]},"WebhookObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/Webhook"},{"description":"Webhook object"}]}},"required":["data"]},"CreateWebhookBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the webhook"},"description":{"type":"string","description":"Description of the webhook"},"url":{"type":"string","format":"uri","description":"URL to send webhook events to"},"events":{"type":"array","items":{"type":"string","enum":["*","channel.created","channel.stopped","channel.deleted","channel.deploying","channel.updated","webhook.created","webhook.updated","webhook.deleted","scheduler.created","scheduler.updated","scheduler.deleted","scheduler.active","scheduler.terminated","engine.deploying","engine.provisioning","engine.waiting","engine.starting","engine.error","engine.playing","engine.ingesting","engine.created","engine.updated","engine.stopping","engine.stopped","engine.deleting","engine.deleted","engine.log.warn","engine.log.error","engine.log.info","ingest.created","ingest.updated","ingest.deleted","ingest.started","ingest.stopped","distribution.created","distribution.enabled","distribution.disabled","distribution.updated","distribution.deleted","distribution.security.key.added","distribution.security.key.deleted","distribution.security.keys.deleted"]},"minItems":1,"description":"List of events to subscribe to"},"active":{"type":"boolean","description":"Whether the webhook should be active upon creation. Defaults to false."}},"required":["name","url","events"],"additionalProperties":false},"UpdateWebhookBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the webhook"},"description":{"type":"string","description":"Description of the webhook"},"url":{"type":"string","format":"uri","description":"URL to send webhook events to"},"events":{"type":"array","items":{"type":"string","enum":["*","channel.created","channel.stopped","channel.deleted","channel.deploying","channel.updated","webhook.created","webhook.updated","webhook.deleted","scheduler.created","scheduler.updated","scheduler.deleted","scheduler.active","scheduler.terminated","engine.deploying","engine.provisioning","engine.waiting","engine.starting","engine.error","engine.playing","engine.ingesting","engine.created","engine.updated","engine.stopping","engine.stopped","engine.deleting","engine.deleted","engine.log.warn","engine.log.error","engine.log.info","ingest.created","ingest.updated","ingest.deleted","ingest.started","ingest.stopped","distribution.created","distribution.enabled","distribution.disabled","distribution.updated","distribution.deleted","distribution.security.key.added","distribution.security.key.deleted","distribution.security.keys.deleted"]},"description":"List of events to subscribe to"},"active":{"type":"boolean","description":"Whether the webhook is active"}},"additionalProperties":false},"WebhookSecretResult":{"type":"object","properties":{"data":{"type":"object","properties":{"secret":{"type":"string","description":"The webhook signing secret"}},"required":["secret"],"description":"Secret object"}},"required":["data"]},"PaginatedWebhookLogResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookLog"},"description":"List of webhook logs"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"WebhookLog":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the log entry"},"timestamp":{"type":"string","description":"Timestamp of the log entry"},"type":{"type":"string","enum":["*","channel.created","channel.stopped","channel.deleted","channel.deploying","channel.updated","webhook.created","webhook.updated","webhook.deleted","scheduler.created","scheduler.updated","scheduler.deleted","scheduler.active","scheduler.terminated","engine.deploying","engine.provisioning","engine.waiting","engine.starting","engine.error","engine.playing","engine.ingesting","engine.created","engine.updated","engine.stopping","engine.stopped","engine.deleting","engine.deleted","engine.log.warn","engine.log.error","engine.log.info","ingest.created","ingest.updated","ingest.deleted","ingest.started","ingest.stopped","distribution.created","distribution.enabled","distribution.disabled","distribution.updated","distribution.deleted","distribution.security.key.added","distribution.security.key.deleted","distribution.security.keys.deleted"],"description":"Event type that triggered the webhook"},"statusCode":{"type":"number","description":"HTTP status code of the webhook delivery"},"requestData":{"type":"object","properties":{"type":{"type":"string","enum":["*","channel.created","channel.stopped","channel.deleted","channel.deploying","channel.updated","webhook.created","webhook.updated","webhook.deleted","scheduler.created","scheduler.updated","scheduler.deleted","scheduler.active","scheduler.terminated","engine.deploying","engine.provisioning","engine.waiting","engine.starting","engine.error","engine.playing","engine.ingesting","engine.created","engine.updated","engine.stopping","engine.stopped","engine.deleting","engine.deleted","engine.log.warn","engine.log.error","engine.log.info","ingest.created","ingest.updated","ingest.deleted","ingest.started","ingest.stopped","distribution.created","distribution.enabled","distribution.disabled","distribution.updated","distribution.deleted","distribution.security.key.added","distribution.security.key.deleted","distribution.security.keys.deleted"],"description":"Event type"},"created":{"type":"number","description":"Unix timestamp of when the event was created"},"object":{"type":"object","properties":{"type":{"type":"string","enum":["channel","ingest","engine","distribution","alias","scheduler"],"description":"Type of the related object"},"id":{"type":"string","description":"ID of the related object"},"parent":{"type":"object","properties":{"type":{"type":"string","enum":["channel","ingest","engine","distribution","alias","scheduler"],"description":"Type of the parent object"},"id":{"type":"string","description":"ID of the parent object"}},"required":["type","id"],"description":"Parent object reference"},"organizationId":{"type":"string","description":"Organization ID"}},"required":["type","id","organizationId"],"description":"Object that triggered the event"},"data":{"nullable":true,"description":"Additional event data"}},"required":["type","created","object"],"description":"Request data sent in the webhook delivery"}},"required":["id","timestamp","type","statusCode","requestData"]},"PaginatedSchedulerResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Scheduler"},"description":"List of schedulers"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"Scheduler":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the scheduler"},"name":{"type":"string","description":"Name of the scheduler"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"enabled":{"type":"boolean","description":"Whether the scheduler is enabled"},"startDate":{"type":"string","description":"Start date (YYYY-MM-DD)"},"startTime":{"type":"string","description":"Start time (HH:mm)"},"endDate":{"type":"string","description":"End date (YYYY-MM-DD)"},"endTime":{"type":"string","description":"End time (HH:mm)"},"recurrence":{"type":"string","description":"RRULE recurrence string"},"timeZone":{"type":"string","description":"IANA time zone"},"channelIds":{"type":"array","items":{"type":"string"},"description":"Channel IDs"},"channels":{"type":"array","items":{"$ref":"#/components/schemas/SchedulerChannelSelection"},"description":"Channels with optional engine selection (engineIds omitted = all engines)"}},"required":["id","name","createdAt","updatedAt","enabled","startDate","startTime","timeZone","channelIds","channels"]},"SchedulerChannelSelection":{"type":"object","properties":{"channelId":{"type":"string","description":"Channel ID"},"engineIds":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Engine IDs of this channel to start/stop. Omit to include all engines of the channel."}},"required":["channelId"],"additionalProperties":false},"SchedulerObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/Scheduler"},{"description":"Scheduler object"}]}},"required":["data"]},"CreateSchedulerBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the scheduler"},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"Start time (HH:mm)"},"timeZone":{"type":"string","description":"IANA time zone (e.g. \"UTC\", \"Europe/Brussels\")"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date (YYYY-MM-DD)"},"endTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"End time (HH:mm)"},"recurrence":{"type":"string","description":"RRULE recurrence string"},"channelIds":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Channel IDs (deprecated, use channels instead). All engines of each channel are scheduled."},"channels":{"type":"array","items":{"$ref":"#/components/schemas/SchedulerChannelSelection"},"minItems":1,"description":"Channels with optional engine selection. Use instead of channelIds."},"enabled":{"type":"boolean","description":"Whether the scheduler is enabled"}},"required":["name","startDate","startTime"],"additionalProperties":false},"UpdateSchedulerBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the scheduler"},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD)"},"startTime":{"type":"string","pattern":"^\\d{2}:\\d{2}$","description":"Start time (HH:mm)"},"timeZone":{"type":"string","description":"IANA time zone (e.g. \"UTC\", \"Europe/Brussels\")"},"endDate":{"type":"string","nullable":true,"pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date (YYYY-MM-DD). Set to null to unset."},"endTime":{"type":"string","nullable":true,"pattern":"^\\d{2}:\\d{2}$","description":"End time (HH:mm). Set to null to unset."},"recurrence":{"type":"string","nullable":true,"description":"RRULE recurrence string. Set to null to unset."},"channelIds":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Channel IDs (deprecated, use channels instead). All engines of each channel are scheduled."},"channels":{"type":"array","items":{"$ref":"#/components/schemas/SchedulerChannelSelection"},"minItems":1,"description":"Channels with optional engine selection. Use instead of channelIds."},"enabled":{"type":"boolean","description":"Whether the scheduler is enabled"}},"additionalProperties":false},"CustomEndpointObjectResult":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CustomEndpoint"}},"required":["data"]},"CustomEndpoint":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"organizationId":{"type":"string","description":"Organization ID"},"channelId":{"type":"string","description":"Channel ID"},"name":{"type":"string","description":"Name"},"src":{"type":"string","description":"Source URL"},"srcType":{"type":"string","enum":["hesp","hls","dash"],"description":"Source type"},"provider":{"type":"string","description":"Provider"},"adSystem":{"type":"string","description":"Ad system (defaults to 'sgai')"},"drmConfig":{"type":"object","nullable":true,"properties":{"integration":{"type":"string","enum":["ezdrm","mediakind","drmtoday"],"description":"DRM integration type"},"merchant":{"type":"string","description":"Merchant identifier, for integrations that identify the customer per license request"},"widevine":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"Widevine license URL"}},"required":["licenseUrl"],"description":"Widevine DRM configuration"},"playready":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"PlayReady license URL"}},"required":["licenseUrl"],"description":"PlayReady DRM configuration"},"fairplay":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"FairPlay license URL"},"certificateUrl":{"type":"string","description":"FairPlay certificate URL"}},"required":["licenseUrl","certificateUrl"],"description":"FairPlay DRM configuration"}},"required":["integration"],"additionalProperties":false,"description":"DRM configuration"},"cdn":{"type":"string","description":"CDN identifier"},"priority":{"type":"number","description":"Priority"}},"required":["id","createdAt","updatedAt","organizationId","channelId","name","src","srcType","provider","adSystem","cdn","priority"],"description":"Custom endpoint object"},"CreateCustomEndpointBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the custom endpoint"},"src":{"type":"string","minLength":1,"description":"Source URL"},"srcType":{"type":"string","enum":["hesp","hls","dash"],"description":"Source type (hesp, hls or dash)"},"provider":{"type":"string","minLength":1,"description":"Provider name (must be configured for the organization)"},"adSystem":{"type":"string","minLength":1,"description":"Ad system name (must be configured for the organization). 'sgai' is always allowed. Defaults to 'sgai' if not specified"},"drmConfig":{"$ref":"#/components/schemas/CustomEndpointDrmConfig"},"cdn":{"type":"string","minLength":1,"pattern":"^[a-zA-Z0-9]+$","description":"CDN identifier"},"priority":{"type":"integer","description":"Priority (lower is higher priority)"}},"required":["name","src","srcType","provider","cdn","priority"],"additionalProperties":false},"CustomEndpointDrmConfig":{"type":"object","properties":{"integration":{"type":"string","enum":["ezdrm","mediakind","drmtoday"],"description":"DRM integration type"},"merchant":{"type":"string","description":"Merchant identifier, for integrations that identify the customer per license request"},"widevine":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"Widevine license URL"}},"required":["licenseUrl"],"description":"Widevine DRM configuration"},"playready":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"PlayReady license URL"}},"required":["licenseUrl"],"description":"PlayReady DRM configuration"},"fairplay":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"FairPlay license URL"},"certificateUrl":{"type":"string","description":"FairPlay certificate URL"}},"required":["licenseUrl","certificateUrl"],"description":"FairPlay DRM configuration"}},"required":["integration"],"additionalProperties":false,"description":"Optional DRM configuration"},"CustomEndpointListResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CustomEndpoint"},"description":"List of custom endpoints"}},"required":["data"]},"UpdateCustomEndpointBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the custom endpoint"},"src":{"type":"string","minLength":1,"description":"Source URL"},"srcType":{"type":"string","enum":["hesp","hls","dash"],"description":"Source type (hesp, hls or dash)"},"provider":{"type":"string","minLength":1,"description":"Provider name (must be configured for the organization)"},"adSystem":{"type":"string","nullable":true,"minLength":1,"description":"Ad system name (must be configured for the organization). 'sgai' is always allowed. Set to null to reset to default ('sgai')"},"drmConfig":{"type":"object","nullable":true,"properties":{"integration":{"type":"string","enum":["ezdrm","mediakind","drmtoday"],"description":"DRM integration type"},"merchant":{"type":"string","description":"Merchant identifier, for integrations that identify the customer per license request"},"widevine":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"Widevine license URL"}},"required":["licenseUrl"],"description":"Widevine DRM configuration"},"playready":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"PlayReady license URL"}},"required":["licenseUrl"],"description":"PlayReady DRM configuration"},"fairplay":{"type":"object","properties":{"licenseUrl":{"type":"string","description":"FairPlay license URL"},"certificateUrl":{"type":"string","description":"FairPlay certificate URL"}},"required":["licenseUrl","certificateUrl"],"description":"FairPlay DRM configuration"}},"required":["integration"],"additionalProperties":false,"description":"Optional DRM configuration"},"cdn":{"type":"string","minLength":1,"pattern":"^[a-zA-Z0-9]+$","description":"CDN identifier"},"priority":{"type":"integer","description":"Priority (lower is higher priority)"}},"additionalProperties":false},"ChannelMonitoringResult":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChannelMonitoringData"}},"required":["data"]},"ChannelMonitoringData":{"type":"object","properties":{"id":{"type":"string","description":"Channel ID"},"name":{"type":"string","description":"Channel name"},"status":{"type":"string","description":"Channel status derived from engine states"},"ingests":{"type":"array","items":{"$ref":"#/components/schemas/IngestMonitoringStatus"},"description":"List of ingests with status"},"engines":{"type":"array","items":{"$ref":"#/components/schemas/EngineMonitoringStatus"},"description":"List of engines with status"},"distributions":{"type":"array","items":{"$ref":"#/components/schemas/DistributionMonitoringStatus"},"description":"List of distributions with status"}},"required":["id","name","status","ingests","engines","distributions"]},"IngestMonitoringStatus":{"type":"object","properties":{"id":{"type":"string","description":"Ingest ID"},"protocol":{"type":"string","description":"Ingest protocol","example":"srt-push"}},"required":["id","protocol"]},"EngineMonitoringStatus":{"type":"object","properties":{"id":{"type":"string","description":"Engine ID"},"status":{"type":"string","description":"Engine status"},"renditions":{"type":"number","description":"Number of renditions"},"bitrate":{"type":"number","description":"Total bitrate"}},"required":["id","status"]},"DistributionMonitoringStatus":{"type":"object","properties":{"id":{"type":"string","description":"Distribution ID"},"status":{"type":"string","description":"Distribution status (enabled/disabled)"}},"required":["id","status"]},"MonitoringError":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]},"IngestMonitoringResult":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IngestMonitoringData"}},"required":["data"]},"IngestMonitoringData":{"type":"object","properties":{"id":{"type":"string","description":"Ingest ID"},"status":{"type":"string","description":"Ingest status"},"protocol":{"type":"string","description":"Ingest protocol","example":"srt-push"},"started":{"type":"string","description":"Connection start time in ISO 8601 format"},"uptime":{"type":"number","description":"Uptime in seconds"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/IngestMetricDataPoint"},"description":"Time-series metric data points"}},"required":["id","status","protocol"]},"IngestMetricDataPoint":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp in ISO 8601 format"},"packetLoss":{"type":"number","description":"Packet loss count"},"rtt":{"type":"number","description":"Round-trip time in milliseconds"},"bitrate":{"type":"object","properties":{"total":{"type":"number","description":"Total bitrate in bps"}},"required":["total"]},"location":{"type":"object","properties":{"ip":{"type":"string","description":"Remote IP address"},"region":{"type":"string","description":"Ingest region"}},"required":["ip","region"]}},"required":["time","packetLoss","rtt","bitrate","location"]},"EngineMonitoringResult":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EngineMonitoringData"}},"required":["data"]},"EngineMonitoringData":{"type":"object","properties":{"id":{"type":"string","description":"Engine ID"},"status":{"type":"string","description":"Engine status"},"renditions":{"type":"array","items":{"$ref":"#/components/schemas/EngineRenditionData"},"description":"List of renditions with metrics"}},"required":["id","status"]},"EngineRenditionData":{"type":"object","properties":{"name":{"type":"string","description":"Rendition name"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/EngineRenditionMetricDataPoint"},"description":"Time-series metric data points"}},"required":["name","metrics"]},"EngineRenditionMetricDataPoint":{"type":"object","properties":{"time":{"type":"string","description":"Timestamp in ISO 8601 format"},"framerate":{"type":"number","description":"Framerate in fps"},"bitrate":{"type":"number","description":"Bitrate in bps"}},"required":["time","framerate","bitrate"]},"ChannelIngestsMonitoringResult":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChannelIngestsMonitoringData"}},"required":["data"]},"ChannelIngestsMonitoringData":{"type":"object","properties":{"id":{"type":"string","description":"Channel ID"},"name":{"type":"string","description":"Channel name"},"status":{"type":"string","description":"Channel status derived from engine states"},"ingests":{"type":"array","items":{"$ref":"#/components/schemas/IngestMonitoringData"},"description":"List of ingests with detailed monitoring data"}},"required":["id","name","status","ingests"]},"ChannelEnginesMonitoringResult":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ChannelEnginesMonitoringData"}},"required":["data"]},"ChannelEnginesMonitoringData":{"type":"object","properties":{"id":{"type":"string","description":"Channel ID"},"name":{"type":"string","description":"Channel name"},"status":{"type":"string","description":"Channel status derived from engine states"},"engines":{"type":"array","items":{"$ref":"#/components/schemas/EngineMonitoringData"},"description":"List of engines with detailed monitoring data"}},"required":["id","name","status","engines"]},"PaginatedSpeechDictionaryResult":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpeechDictionary"},"description":"List of speech dictionaries"},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean","description":"Whether more results are available"},"cursor":{"type":"string","description":"Cursor for the next page of results"}},"required":["hasMore","cursor"],"description":"Pagination info"}},"required":["data","pagination"]},"SpeechDictionary":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the speech dictionary"},"createdAt":{"type":"string","description":"Creation timestamp"},"updatedAt":{"type":"string","description":"Last update timestamp"},"organizationId":{"type":"string","description":"Organization ID the dictionary belongs to"},"name":{"type":"string","description":"Name of the speech dictionary"},"language":{"type":"string","description":"IETF BCP 47 language tag (e.g. \"en\", \"en-US\")"},"terms":{"$ref":"#/components/schemas/DictionaryTerms"}},"required":["id","createdAt","updatedAt","organizationId","name","language","terms"]},"DictionaryTerms":{"type":"array","items":{"type":"string"},"description":"List of terms (names, proper nouns, acronyms, specialized terminology) the speech recognition checks against while captioning the source audio. One term per entry, at most 6 words per term; a term must exactly match what is said in the stream. Optionally append \"sounds like\" phonetic spellings to a term with a pipe, separating multiple pronunciations with a comma: \"D&I|dee-and-eye,dee-n-eye\". Entries are cleaned up automatically: whitespace is normalized, spaces around \"|\" and \",\" are removed, and empty or duplicate entries are dropped. Entries containing \";\" or \"/\" (not accepted by the speech recognition) or more than 6 words are rejected.","example":["THEOlive","A. Väyrynen","D&I|dee-and-eye,dee-n-eye"]},"SpeechDictionaryObjectResult":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/SpeechDictionary"},{"description":"Speech dictionary object"}]}},"required":["data"]},"CreateSpeechDictionaryBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the speech dictionary"},"language":{"type":"string","description":"IETF BCP 47 language tag of the terms (e.g. \"en\", \"en-US\"). Must match the `sourceLanguage` of the speech enhancement the dictionary is used with"},"terms":{"$ref":"#/components/schemas/DictionaryTerms"}},"required":["name","language","terms"],"additionalProperties":false},"UpdateSpeechDictionaryBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the speech dictionary"},"language":{"type":"string","description":"IETF BCP 47 language tag (e.g. \"en\", \"en-US\")"},"terms":{"$ref":"#/components/schemas/DictionaryTerms"}},"additionalProperties":false},"SpeechDictionaryError":{"type":"object","properties":{"code":{"type":"string","description":"Error code"},"message":{"type":"string","description":"Human-readable error message"}},"required":["code","message"]},"SupportedLanguagesResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string"},"description":"List of supported language codes"}},"required":["data"]}},"parameters":{}},"paths":{"/channels":{"get":{"tags":["Channels"],"operationId":"get-channels","summary":"Get all channels","x-mcp":{"description":"List the live channels of the organization. Supports filtering (name, search, status) and cursor pagination. Channel status follows the engine lifecycle (deploying, provisioning, starting, playing, stopped, error, ...)."},"parameters":[{"schema":{"type":"string","description":"Filter by external ID. Matches channels where any entry of 'externalIds' equals the value."},"required":false,"description":"Filter by external ID. Matches channels where any entry of 'externalIds' equals the value.","name":"externalId","in":"query"},{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of channels to return (max 100)"},"required":false,"description":"Maximum number of channels to return (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filter by channel name"},"required":false,"description":"Filter by channel name","name":"name","in":"query"},{"schema":{"type":"string","description":"Search channels based on ID or name"},"required":false,"description":"Search channels based on ID or name","name":"search","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of statuses to filter by"},"required":false,"description":"Comma-separated list of statuses to filter by","name":"status","in":"query"},{"schema":{"type":"string","description":"Filter by channel ID"},"required":false,"description":"Filter by channel ID","name":"id","in":"query"}],"responses":{"200":{"description":"List of channels","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedChannelResult"}}}}}},"post":{"tags":["Channels"],"operationId":"create-channel","summary":"Create a new channel","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChannelBody"}}}},"responses":{"200":{"description":"Channel created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelCreatedObjectResult"}}}}}}},"/channels/{id}":{"get":{"tags":["Channels"],"operationId":"get-channel","summary":"Get a channel by ID","x-mcp":{"description":"Get a single channel by id. Related resources (ingests = contribution feeds, distributions = playback outputs, engines = transcoder instances) have their own list operations."},"parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Comma-separated list of related resources to include. Valid values: `ingests`, `engines`, `distributions`"},"required":false,"description":"Comma-separated list of related resources to include. Valid values: `ingests`, `engines`, `distributions`","name":"include","in":"query"}],"responses":{"200":{"description":"The requested channel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelObjectResultWithIncludes"}}}}}},"patch":{"tags":["Channels"],"operationId":"update-channel","summary":"Update a channel by ID","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateChannelBody"}}}},"responses":{"200":{"description":"Updated channel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelObjectResult"}}}}}},"delete":{"tags":["Channels"],"operationId":"delete-channel","summary":"Delete a channel by ID","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/channels/{id}/drm/configs":{"get":{"tags":["Channels"],"operationId":"get-channel-drm-configs","summary":"Get the DRM content protection configurations of a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"responses":{"200":{"description":"The DRM content protection configurations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelDrmConfigsResult"}}}}}}},"/channels/{id}/start":{"post":{"tags":["Channels"],"operationId":"start-channel","summary":"Start a channel (will start all connected engines and rtsp-pull ingests)","description":"Starts all connected engines and all connected rtsp-pull ingests of the channel.","x-mcp":{"destructiveHint":true,"description":"Start a channel, which starts all its connected engines and rtsp-pull ingests. This deploys transcoding infrastructure and starts billing transcoding minutes until the channel is stopped — only call it when the user explicitly asks to start."},"parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"responses":{"204":{"description":"Channel started"}}}},"/channels/{id}/stop":{"post":{"tags":["Channels"],"operationId":"stop-channel","summary":"Stop a channel (will stop all connected engines and rtsp-pull ingests)","description":"Stops all connected engines and all connected rtsp-pull ingests of the channel. Running engines are stopped gracefully (playlists are closed so that viewers see the stream end, then the engine is torn down; `stopping` for typically 10–20 seconds). Engines that are already `stopping` are force stopped (immediate teardown), so calling this endpoint twice force stops the channel. Engines in `error` are always force stopped.","x-mcp":{"destructiveHint":true,"description":"Stop a channel and all its connected engines and rtsp-pull ingests gracefully — the stream ends for viewers. Engines stay `stopping` for about 10–20 seconds; calling this tool again while they are `stopping` force stops them (immediate teardown). Only call it when the user explicitly asks to stop."},"parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"responses":{"204":{"description":"Channel stopped"}}}},"/channels/{id}/ingests":{"get":{"tags":["Channels","Ingests"],"operationId":"get-channel-ingests","summary":"Get ingests of a channel","description":"Ingests are ordered alphabetically by name.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of items to return (max 100)"},"required":false,"description":"Maximum number of items to return (max 100)","name":"limit","in":"query"}],"responses":{"200":{"description":"List of ingests, ordered alphabetically by name","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedIngestResult"}}}}}},"post":{"tags":["Channels","Ingests"],"operationId":"create-channel-ingest","summary":"Create an ingest for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIngestBody"}}}},"responses":{"200":{"description":"Ingest created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestObjectResult"}}}}}}},"/channels/{id}/engines":{"get":{"tags":["Channels","Engines"],"operationId":"get-channel-engines","summary":"Get engines of a channel","description":"Engines are ordered alphabetically by name.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of items to return (max 100)"},"required":false,"description":"Maximum number of items to return (max 100)","name":"limit","in":"query"}],"responses":{"200":{"description":"List of engines, ordered alphabetically by name","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedEngineResult"}}}}}},"post":{"tags":["Channels","Engines"],"operationId":"create-channel-engine","summary":"Create an engine for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ingestId":{"type":"string","description":"Ingest ID to connect the engine to"},"name":{"type":"string","description":"Name of the engine"},"region":{"type":"string","description":"Region ID to deploy the engine in"},"priority":{"type":"number","minimum":-100,"maximum":100,"description":"Engine priority (-100 to 100). Lower numbers mean higher priority"},"drm":{"type":"boolean","description":"Enable DRM. Only possible when enabled for your organization."},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider to use. Only possible when your organization has access to the provider. Defaults to the organization default provider."},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"restream":{"type":"array","items":{"$ref":"#/components/schemas/Restream"},"description":"Restream destinations. Only available when the engine runs in an on-prem region"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration. Only available when enabled for your organization. Pass `null` to disable."},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","nullable":true,"minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31. Pass `null` to unset it."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration. Only available when the connected ABR ladder has Dolby Atmos audio configured. Pass `null` to disable."}},"required":["name","region","quality"],"additionalProperties":false}}}},"responses":{"200":{"description":"Engine created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineObjectResult"}}}}}}},"/channels/{id}/distributions":{"get":{"tags":["Channels","Distributions"],"operationId":"get-channel-distributions","summary":"Get distributions of a channel","description":"Distributions are ordered alphabetically by name.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of items to return (max 100)"},"required":false,"description":"Maximum number of items to return (max 100)","name":"limit","in":"query"}],"responses":{"200":{"description":"List of distributions, ordered alphabetically by name","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedDistributionResult"}}}}}},"post":{"tags":["Channels","Distributions"],"operationId":"create-channel-distribution","summary":"Create a distribution for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDistributionBody"}}}},"responses":{"200":{"description":"Distribution created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionObjectResult"}}}}}}},"/channels/{id}/instream-metadata/{uuid}":{"post":{"tags":["Channels"],"operationId":"send-channel-instream-metadata","summary":"Send instream metadata for a channel","x-mcp":{"expose":false},"parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Instream metadata UUID"},"required":true,"description":"Instream metadata UUID","name":"uuid","in":"path"}],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/SendInstreamMetadataBody"}}}},"responses":{"200":{"description":"Instream metadata accepted"},"413":{"description":"Payload too large: the instream metadata payload exceeds the configured maximum size (default 65536 bytes)"},"429":{"description":"Too many requests: the per-channel instream metadata rate limit was exceeded"}}}},"/channels/{id}/runs":{"get":{"tags":["Channels"],"operationId":"get-channel-runs","summary":"Get engine runs of a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Maximum number of runs to return"},"required":false,"description":"Maximum number of runs to return","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filter runs starting after this timestamp"},"required":false,"description":"Filter runs starting after this timestamp","name":"start","in":"query"},{"schema":{"type":"string","description":"Filter runs ending before this timestamp"},"required":false,"description":"Filter runs ending before this timestamp","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of engine IDs to filter by"},"required":false,"description":"Comma-separated list of engine IDs to filter by","name":"engineIds","in":"query"}],"responses":{"200":{"description":"List of engine runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedEngineRunResult"}}}}}}},"/channels/{id}/analytics/transcoding-minutes":{"get":{"tags":["Channels"],"operationId":"get-channel-transcoding-minutes","summary":"Get transcoding minutes analytics for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","enum":["engine","channel","codec"],"description":"Group results by engine, channel or codec"},"required":false,"description":"Group results by engine, channel or codec","name":"groupBy","in":"query"},{"schema":{"type":"string","enum":["15min","hour","day","month"],"description":"Time resolution for the analytics data"},"required":true,"description":"Time resolution for the analytics data","name":"resolution","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of engine IDs to filter by"},"required":false,"description":"Comma-separated list of engine IDs to filter by","name":"engineIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of codecs to filter by (e.g. h264, vision_h265)"},"required":false,"description":"Comma-separated list of codecs to filter by (e.g. h264, vision_h265)","name":"codecs","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Transcoding minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/channels/{id}/analytics/viewing-minutes":{"get":{"tags":["Channels"],"operationId":"get-channel-viewing-minutes","summary":"Get viewing minutes analytics for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","enum":["channel","distribution","streaming-format"],"description":"Group results by channel, distribution, or streaming format"},"required":false,"description":"Group results by channel, distribution, or streaming format","name":"groupBy","in":"query"},{"schema":{"type":"string","enum":["15min","hour","day","month"],"description":"Time resolution for the analytics data"},"required":true,"description":"Time resolution for the analytics data","name":"resolution","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Viewing minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/channels/{id}/analytics/bytes-transferred":{"get":{"tags":["Channels"],"operationId":"get-channel-bytes-transferred","summary":"Get bytes transferred analytics for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","enum":["channel","distribution","streaming-format"],"description":"Group results by channel, distribution, or streaming format"},"required":false,"description":"Group results by channel, distribution, or streaming format","name":"groupBy","in":"query"},{"schema":{"type":"string","enum":["15min","hour","day","month"],"description":"Time resolution for the analytics data"},"required":true,"description":"Time resolution for the analytics data","name":"resolution","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Bytes transferred analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/channels/{id}/analytics/captions/translated-minutes":{"get":{"tags":["Channels"],"operationId":"get-channel-captions-translated-minutes","summary":"Get translated minutes analytics for a channel","description":"Only available when the Captions & Translations feature is enabled on organization level. The 'start' and 'end' dates are always interpreted as UTC; timezone and UTC offset options are not supported.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"end","in":"query"},{"schema":{"type":"string","enum":["day","month"],"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days."},"required":false,"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days.","name":"resolution","in":"query"},{"schema":{"type":"string","enum":["channel","ingest","language"],"description":"Group results by channel, ingest, or language. Defaults to 'channel'."},"required":false,"description":"Group results by channel, ingest, or language. Defaults to 'channel'.","name":"groupBy","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of ingest IDs to filter by"},"required":false,"description":"Comma-separated list of ingest IDs to filter by","name":"ingestIds","in":"query"}],"responses":{"200":{"description":"Translated minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/channels/{id}/analytics/captions/captioned-minutes":{"get":{"tags":["Channels"],"operationId":"get-channel-captions-captioned-minutes","summary":"Get captioned minutes analytics for a channel","description":"Only available when the Captions & Translations feature is enabled on organization level. The 'start' and 'end' dates are always interpreted as UTC; timezone and UTC offset options are not supported.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"end","in":"query"},{"schema":{"type":"string","enum":["day","month"],"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days."},"required":false,"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days.","name":"resolution","in":"query"},{"schema":{"type":"string","enum":["channel","ingest"],"description":"Group results by channel or ingest. Defaults to 'channel'."},"required":false,"description":"Group results by channel or ingest. Defaults to 'channel'.","name":"groupBy","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of ingest IDs to filter by"},"required":false,"description":"Comma-separated list of ingest IDs to filter by","name":"ingestIds","in":"query"}],"responses":{"200":{"description":"Captioned minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/channels/{id}/analytics/viewing-minutes/browsers":{"get":{"tags":["Channels"],"operationId":"get-channel-viewing-minutes-browsers","summary":"Get viewing minutes grouped by browser for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Viewing minutes by browser","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingBrowserListResult"}}}}}}},"/channels/{id}/analytics/viewing-minutes/countries":{"get":{"tags":["Channels"],"operationId":"get-channel-viewing-minutes-countries","summary":"Get viewing minutes grouped by country for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Viewing minutes by country","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingCountryListResult"}}}}}}},"/channels/{id}/analytics/bytes-transferred/browsers":{"get":{"tags":["Channels"],"operationId":"get-channel-bytes-transferred-browsers","summary":"Get bytes transferred grouped by browser for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Bytes transferred by browser","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingBrowserListResult"}}}}}}},"/channels/{id}/analytics/bytes-transferred/countries":{"get":{"tags":["Channels"],"operationId":"get-channel-bytes-transferred-countries","summary":"Get bytes transferred grouped by country for a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Bytes transferred by country","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingCountryListResult"}}}}}}},"/channels/{id}/analytics/insights/countries":{"get":{"tags":["Channels"],"operationId":"get-channel-insights-countries","summary":"Get country insights for a channel","description":"Data is only available for the last 30 days.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","enum":["hour","day","week","month"],"description":"Time period for the insights"},"required":true,"description":"Time period for the insights","name":"period","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of channel IDs to filter by"},"required":false,"description":"Comma-separated list of channel IDs to filter by","name":"channelIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"}],"responses":{"200":{"description":"Country insights data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryInsightsListResult"}}}}}}},"/channels/{id}/analytics/insights/browsers-os":{"get":{"tags":["Channels"],"operationId":"get-channel-insights-browsers-os","summary":"Get browser and OS insights for a channel","description":"Data is only available for the last 30 days.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","enum":["hour","day","week","month"],"description":"Time period for the insights"},"required":true,"description":"Time period for the insights","name":"period","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of channel IDs to filter by"},"required":false,"description":"Comma-separated list of channel IDs to filter by","name":"channelIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"}],"responses":{"200":{"description":"Browser/OS insights data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserOsInsightsListResult"}}}}}}},"/channels/{id}/analytics/insights/viewers":{"get":{"tags":["Channels"],"operationId":"get-channel-insights-viewers","summary":"Get viewer count insights for a channel","description":"Data is only available for the last 30 days.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"},{"schema":{"type":"string","enum":["hour","day","week","month"],"description":"Time period for the insights"},"required":true,"description":"Time period for the insights","name":"period","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of channel IDs to filter by"},"required":false,"description":"Comma-separated list of channel IDs to filter by","name":"channelIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"}],"responses":{"200":{"description":"Viewer count insights data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewersInsightsListResult"}}}}}}},"/ingests/{id}":{"get":{"tags":["Ingests"],"operationId":"get-ingest","summary":"Get an ingest by ID","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"responses":{"200":{"description":"The requested ingest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestObjectResult"}}}}}},"patch":{"tags":["Ingests"],"operationId":"update-ingest","summary":"Update an ingest by ID","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIngestBody"}}}},"responses":{"200":{"description":"Updated ingest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestObjectResult"}}}}}},"delete":{"tags":["Ingests"],"operationId":"delete-ingest","summary":"Delete an ingest by ID","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/ingests/{id}/engines":{"get":{"tags":["Ingests"],"operationId":"get-ingest-engines","summary":"Get engines of an ingest","description":"Engines are ordered alphabetically by name.","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"responses":{"200":{"description":"List of engines, ordered alphabetically by name","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedEngineResult"}}}}}},"post":{"tags":["Ingests"],"operationId":"create-ingest-engine","summary":"Create an engine for an ingest","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ingestId":{"type":"string","description":"Ingest ID to connect the engine to"},"name":{"type":"string","description":"Name of the engine"},"region":{"type":"string","description":"Region ID to deploy the engine in"},"priority":{"type":"number","minimum":-100,"maximum":100,"description":"Engine priority (-100 to 100). Lower numbers mean higher priority"},"drm":{"type":"boolean","description":"Enable DRM. Only possible when enabled for your organization."},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider to use. Only possible when your organization has access to the provider. Defaults to the organization default provider."},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"restream":{"type":"array","items":{"$ref":"#/components/schemas/Restream"},"description":"Restream destinations. Only available when the engine runs in an on-prem region"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration. Only available when enabled for your organization. Pass `null` to disable."},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","nullable":true,"minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31. Pass `null` to unset it."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration. Only available when the connected ABR ladder has Dolby Atmos audio configured. Pass `null` to disable."}},"required":["name","region","quality"],"additionalProperties":false}}}},"responses":{"200":{"description":"Engine created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineObjectResult"}}}}}}},"/ingests/{id}/start":{"post":{"tags":["Ingests"],"operationId":"start-ingest","summary":"Start an ingest","description":"Currently only available for rtsp-pull ingests. Starts ingesting from the source; the ingest status becomes `active` and a new ingest run is recorded. Returns 400 `not_supported` for other ingest types and 409 `already_active` when the ingest is already active.","x-mcp":{"destructiveHint":true,"description":"Start an rtsp-pull ingest. This deploys transcoding infrastructure and starts billing transcoding minutes until the ingest is stopped — only call it when the user explicitly asks to start. Currently only available for rtsp-pull ingests."},"parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"responses":{"204":{"description":"Ingest started"}}}},"/ingests/{id}/stop":{"post":{"tags":["Ingests"],"operationId":"stop-ingest","summary":"Stop an ingest","description":"Currently only available for rtsp-pull ingests. Stops ingesting; the ingest status becomes `stopped` and the open ingest run is ended. Returns 400 `not_supported` for other ingest types and 409 `already_stopped` when the ingest is already stopped.","x-mcp":{"destructiveHint":true,"description":"Stop an active rtsp-pull ingest. Viewers of its channel lose the stream immediately — only call it when the user explicitly asks to stop. Currently only available for rtsp-pull ingests."},"parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"responses":{"204":{"description":"Ingest stopped"}}}},"/ingests/{id}/runs":{"get":{"tags":["Ingests"],"operationId":"get-ingest-runs","summary":"Get runs of an ingest","description":"Currently only available for rtsp-pull ingests: a run is recorded every time the ingest is started. Runs are ordered by start time (most recent first).","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"responses":{"200":{"description":"List of ingest runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedIngestRunResult"}}}}}}},"/ingests/{id}/last-run":{"get":{"tags":["Ingests"],"operationId":"get-ingest-last-run","summary":"Get the last run of an ingest","description":"Currently only available for rtsp-pull ingests: a run is recorded every time the ingest is started.","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"}],"responses":{"200":{"description":"Last ingest run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestRunObjectResult"}}}}}}},"/ingests/{id}/analytics/captions/translated-minutes":{"get":{"tags":["Ingests"],"operationId":"get-ingest-captions-translated-minutes","summary":"Get translated minutes analytics for an ingest","description":"Only available when the Captions & Translations feature is enabled on organization level. The 'start' and 'end' dates are always interpreted as UTC; timezone and UTC offset options are not supported.","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"end","in":"query"},{"schema":{"type":"string","enum":["day","month"],"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days."},"required":false,"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days.","name":"resolution","in":"query"},{"schema":{"type":"string","enum":["ingest","language"],"description":"Group results by ingest or language. Defaults to 'ingest'."},"required":false,"description":"Group results by ingest or language. Defaults to 'ingest'.","name":"groupBy","in":"query"}],"responses":{"200":{"description":"Translated minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/ingests/{id}/analytics/captions/captioned-minutes":{"get":{"tags":["Ingests"],"operationId":"get-ingest-captions-captioned-minutes","summary":"Get captioned minutes analytics for an ingest","description":"Only available when the Captions & Translations feature is enabled on organization level. The 'start' and 'end' dates are always interpreted as UTC; timezone and UTC offset options are not supported.","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"end","in":"query"},{"schema":{"type":"string","enum":["day","month"],"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days."},"required":false,"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days.","name":"resolution","in":"query"},{"schema":{"type":"string","enum":["ingest"],"description":"Group results by ingest. Defaults to 'ingest'."},"required":false,"description":"Group results by ingest. Defaults to 'ingest'.","name":"groupBy","in":"query"}],"responses":{"200":{"description":"Captioned minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/engines/{id}":{"get":{"tags":["Engines"],"operationId":"get-engine","summary":"Get an engine by ID","parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"id","in":"path"}],"responses":{"200":{"description":"The requested engine","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineObjectResult"}}}}}},"patch":{"tags":["Engines"],"operationId":"update-engine","summary":"Update an engine by ID","description":"Only `name` and `priority` can be updated while the engine is not stopped; updates to any other field are rejected with a 409 `engine_playing` error.","parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ingestId":{"type":"string","description":"Ingest ID to connect the engine to"},"name":{"type":"string","description":"Name of the engine"},"region":{"type":"string","description":"Region ID"},"priority":{"type":"number","minimum":-100,"maximum":100,"description":"Engine priority (-100 to 100), lower value is higher priority"},"drm":{"type":"boolean","description":"Enable DRM. Only possible when enabled for your organization."},"drmProvider":{"type":"string","enum":["ezdrm","drmtoday"],"description":"DRM provider to use. Only possible when your organization has access to the provider. Defaults to the organization default provider."},"quality":{"type":"object","properties":{"abrLadderId":{"type":"string","description":"ABR ladder ID"}},"required":["abrLadderId"],"description":"Quality configuration"},"daiAssetKey":{"type":"string","nullable":true,"description":"DAI asset key"},"overlays":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL of the overlay image"},"position":{"type":"object","properties":{"top":{"type":"integer","minimum":0,"description":"Pixels from top"},"bottom":{"type":"integer","minimum":0,"description":"Pixels from bottom (ignored if top is present)"},"left":{"type":"integer","minimum":0,"description":"Pixels from left"},"right":{"type":"integer","minimum":0,"description":"Pixels from right (ignored if left is present)"}},"description":"Overlay position"},"size":{"type":"object","properties":{"width":{"type":"integer","minimum":0,"description":"Width in pixels"},"height":{"type":"integer","minimum":0,"description":"Height in pixels"}},"description":"Overlay size"},"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Overlay opacity (`0`=fully transparent, `1`=fully opaque)"}},"required":["url"]},"description":"Image overlay configuration"},"outputs":{"type":"object","properties":{"hesp":{"type":"boolean","default":true,"description":"Enable HESP output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hls":{"type":"boolean","default":true,"description":"Enable HLS output. Enabled by default. Ignored when HESP3 is enabled for your organization."},"hlsMpegTs":{"type":"boolean","default":false,"description":"Enable HLS MPEG-TS output. Only available when enabled for your organization."},"llHls":{"type":"boolean","default":false,"description":"Enable Low-Latency HLS output. Enabling this also enables HLS output. Disabled by default."}},"description":"Output format configuration"},"restream":{"type":"array","items":{"$ref":"#/components/schemas/Restream"},"description":"Restream destinations. Only available when the engine runs in an on-prem region"},"vision":{"type":"object","nullable":true,"properties":{"toneLut":{"type":"object","nullable":true,"properties":{"saturationBoost":{"type":"string","nullable":true,"enum":["high","low",null],"description":"Saturation boost level"},"strength":{"type":"string","nullable":true,"enum":["low","medium","high",null],"description":"Tone mapping strength"}},"additionalProperties":false,"description":"Tone mapping LUT configuration"},"masteringDisplay":{"type":"object","nullable":true,"properties":{"primaries":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["rec2020","p3d65","rec709","custom",null],"description":"Color primaries preset"},"red":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom red primary coordinates (required when type is `custom`)"},"green":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom green primary coordinates (required when type is `custom`)"},"blue":{"type":"object","nullable":true,"properties":{"x":{"type":"number","description":"Chromaticity x coordinate"},"y":{"type":"number","description":"Chromaticity y coordinate"}},"required":["x","y"],"additionalProperties":false,"description":"Custom blue primary coordinates (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display color primaries"},"whitePoint":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true,"enum":["d65","d60","dci","custom",null],"description":"White point preset"},"x":{"type":"number","nullable":true,"description":"Custom white point x coordinate (required when type is `custom`)"},"y":{"type":"number","nullable":true,"description":"Custom white point y coordinate (required when type is `custom`)"}},"additionalProperties":false,"description":"Mastering display white point"},"maxDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"maximum":10000,"description":"Maximum display mastering luminance in nits (0-10000)"},"minDisplayMasteringLuminance":{"type":"number","nullable":true,"minimum":0,"description":"Minimum display mastering luminance in nits"}},"additionalProperties":false,"description":"Mastering display configuration"},"contentLightLevels":{"type":"object","nullable":true,"properties":{"cllMode":{"type":"string","nullable":true,"enum":["auto","expert",null],"description":"Content light level mode. `expert` requires maxCll and maxFall (nits)"},"maxCll":{"type":"number","nullable":true,"minimum":0,"description":"Maximum content light level in nits (required when cllMode is `expert`)"},"maxFall":{"type":"number","nullable":true,"minimum":0,"description":"Maximum frame-average light level in nits (required when cllMode is `expert`)"}},"additionalProperties":false,"description":"Content light level configuration"},"globalLook":{"type":"object","nullable":true,"properties":{"l8Mode":{"type":"string","nullable":true,"enum":["off","quickControls",null],"description":"L8 global look mode"},"l8ContrastBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 contrast boost (required when l8Mode is `quickControls`)"},"l8MidBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 mid boost (required when l8Mode is `quickControls`)"},"l8SaturationBoost":{"type":"string","nullable":true,"enum":["off","low","mid","high",null],"description":"L8 saturation boost (required when l8Mode is `quickControls`)"}},"additionalProperties":false,"description":"Global look (L8) configuration"},"contentType":{"type":"object","nullable":true,"properties":{"l11ContentType":{"type":"string","nullable":true,"enum":["default","cinema","game","sport","ugc",null],"description":"L11 content type"},"l11WhitePointK":{"type":"number","nullable":true,"description":"L11 white point in Kelvin, snapped to the 16 RPU steps"}},"additionalProperties":false,"description":"Content type (L11) configuration"}},"additionalProperties":false,"description":"Vision configuration. Only available when enabled for your organization. The provided settings are merged into the existing configuration: omitted settings keep their current value, settings set to `null` are cleared. Pass `null` to disable vision entirely."},"atmos":{"type":"object","nullable":true,"properties":{"dialnorm":{"type":"integer","nullable":true,"minimum":-31,"maximum":-1,"description":"Dolby Atmos dialnorm value. Must be an integer between -1 and -31. Pass `null` to unset it."}},"required":["dialnorm"],"additionalProperties":false,"description":"Dolby Atmos configuration. Only available when the connected ABR ladder has Dolby Atmos audio configured. Pass `null` to disable."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated engine","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineObjectResult"}}}}}},"delete":{"tags":["Engines"],"operationId":"delete-engine","summary":"Delete an engine by ID","parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/engines/{id}/start":{"post":{"tags":["Engines"],"operationId":"start-engine","summary":"Start an engine","x-mcp":{"destructiveHint":true,"description":"Start an engine. This deploys transcoding infrastructure and starts billing transcoding minutes until the engine is stopped — only call it when the user explicitly asks to start."},"parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"id","in":"path"}],"responses":{"204":{"description":"Engine started"}}}},"/engines/{id}/stop":{"post":{"tags":["Engines"],"operationId":"stop-engine","summary":"Stop an engine","description":"Stops the engine gracefully: its playlists are closed so that viewers see the stream end, after which the engine is torn down. The engine reports `stopping` until the teardown has completed (typically 10–20 seconds), then `stopped`. Calling this endpoint again while the engine is `stopping` force stops it: the engine is torn down immediately. An engine in `error` is always force stopped. The engine can only be started again once it is `stopped`.","x-mcp":{"destructiveHint":true,"description":"Stop a running engine gracefully — the stream ends for viewers of its channel. The engine stays `stopping` for about 10–20 seconds; calling this tool again while it is `stopping` force stops it (immediate teardown). Only call it when the user explicitly asks to stop."},"parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"id","in":"path"}],"responses":{"204":{"description":"Engine stopped"}}}},"/engines/{id}/last-run":{"get":{"tags":["Engines"],"operationId":"get-engine-last-run","summary":"Get the last run of an engine","parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"id","in":"path"}],"responses":{"200":{"description":"Last engine run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineRunObjectResult"}}}}}}},"/engines/{id}/runs":{"get":{"tags":["Engines"],"operationId":"get-engine-runs","summary":"Get runs of an engine","parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"id","in":"path"}],"responses":{"200":{"description":"List of engine runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedEngineRunResult"}}}}}}},"/distributions/{id}":{"get":{"tags":["Distributions"],"operationId":"get-distribution","summary":"Get a distribution by ID","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"}],"responses":{"200":{"description":"The requested distribution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionObjectResult"}}}}}},"patch":{"tags":["Distributions"],"operationId":"update-distribution","summary":"Update a distribution by ID","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDistributionBody"}}}},"responses":{"200":{"description":"Updated distribution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionObjectResult"}}}}}},"delete":{"tags":["Distributions"],"operationId":"delete-distribution","summary":"Delete a distribution by ID","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/distributions/{id}/security/keys":{"get":{"tags":["Distributions"],"operationId":"get-distribution-security-keys","summary":"Get security keys of a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"}],"responses":{"200":{"description":"List of security keys","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionSecurityKeyListResult"}}}}}},"post":{"tags":["Distributions"],"operationId":"create-distribution-security-key","summary":"Add a security key to a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDistributionSecurityKeyBody"}}}},"responses":{"200":{"description":"Security key created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionSecurityKeyObjectResult"}}}}}},"delete":{"tags":["Distributions"],"operationId":"delete-all-distribution-security-keys","summary":"Delete all security keys of a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/distributions/{id}/security/keys/{keyId}":{"get":{"tags":["Distributions"],"operationId":"get-distribution-security-key","summary":"Get a specific security key","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Security key ID"},"required":true,"description":"Security key ID","name":"keyId","in":"path"}],"responses":{"200":{"description":"The requested security key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionSecurityKeyObjectResult"}}}}}},"delete":{"tags":["Distributions"],"operationId":"delete-distribution-security-key","summary":"Delete a specific security key","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Security key ID"},"required":true,"description":"Security key ID","name":"keyId","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/distributions/{id}/analytics/viewing-minutes":{"get":{"tags":["Distributions"],"operationId":"get-distribution-viewing-minutes","summary":"Get viewing minutes analytics for a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","enum":["channel","distribution","streaming-format"],"description":"Group results by channel, distribution, or streaming format"},"required":false,"description":"Group results by channel, distribution, or streaming format","name":"groupBy","in":"query"},{"schema":{"type":"string","enum":["15min","hour","day","month"],"description":"Time resolution for the analytics data"},"required":true,"description":"Time resolution for the analytics data","name":"resolution","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Viewing minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/distributions/{id}/analytics/bytes-transferred":{"get":{"tags":["Distributions"],"operationId":"get-distribution-bytes-transferred","summary":"Get bytes transferred analytics for a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","enum":["channel","distribution","streaming-format"],"description":"Group results by channel, distribution, or streaming format"},"required":false,"description":"Group results by channel, distribution, or streaming format","name":"groupBy","in":"query"},{"schema":{"type":"string","enum":["15min","hour","day","month"],"description":"Time resolution for the analytics data"},"required":true,"description":"Time resolution for the analytics data","name":"resolution","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Bytes transferred analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/distributions/{id}/analytics/viewing-minutes/browsers":{"get":{"tags":["Distributions"],"operationId":"get-distribution-viewing-minutes-browsers","summary":"Get viewing minutes grouped by browser for a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Viewing minutes by browser","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingBrowserListResult"}}}}}}},"/distributions/{id}/analytics/viewing-minutes/countries":{"get":{"tags":["Distributions"],"operationId":"get-distribution-viewing-minutes-countries","summary":"Get viewing minutes grouped by country for a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Viewing minutes by country","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingCountryListResult"}}}}}}},"/distributions/{id}/analytics/bytes-transferred/browsers":{"get":{"tags":["Distributions"],"operationId":"get-distribution-bytes-transferred-browsers","summary":"Get bytes transferred grouped by browser for a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Bytes transferred by browser","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingBrowserListResult"}}}}}}},"/distributions/{id}/analytics/bytes-transferred/countries":{"get":{"tags":["Distributions"],"operationId":"get-distribution-bytes-transferred-countries","summary":"Get bytes transferred grouped by country for a distribution","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Start date for the analytics period"},"required":true,"description":"Start date for the analytics period","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period"},"required":true,"description":"End date for the analytics period","name":"end","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"UTC offset in minutes"},"required":false,"description":"UTC offset in minutes","name":"utcOffset","in":"query"}],"responses":{"200":{"description":"Bytes transferred by country","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingCountryListResult"}}}}}}},"/distributions/{id}/analytics/insights/countries":{"get":{"tags":["Distributions"],"operationId":"get-distribution-insights-countries","summary":"Get country insights for a distribution","description":"Data is only available for the last 30 days.","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","enum":["hour","day","week","month"],"description":"Time period for the insights"},"required":true,"description":"Time period for the insights","name":"period","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of channel IDs to filter by"},"required":false,"description":"Comma-separated list of channel IDs to filter by","name":"channelIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"}],"responses":{"200":{"description":"Country insights data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryInsightsListResult"}}}}}}},"/distributions/{id}/analytics/insights/browsers-os":{"get":{"tags":["Distributions"],"operationId":"get-distribution-insights-browsers-os","summary":"Get browser and OS insights for a distribution","description":"Data is only available for the last 30 days.","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","enum":["hour","day","week","month"],"description":"Time period for the insights"},"required":true,"description":"Time period for the insights","name":"period","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of channel IDs to filter by"},"required":false,"description":"Comma-separated list of channel IDs to filter by","name":"channelIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"}],"responses":{"200":{"description":"Browser/OS insights data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowserOsInsightsListResult"}}}}}}},"/distributions/{id}/analytics/insights/viewers":{"get":{"tags":["Distributions"],"operationId":"get-distribution-insights-viewers","summary":"Get viewer count insights for a distribution","description":"Data is only available for the last 30 days.","parameters":[{"schema":{"type":"string","description":"Distribution ID"},"required":true,"description":"Distribution ID","name":"id","in":"path"},{"schema":{"type":"string","enum":["hour","day","week","month"],"description":"Time period for the insights"},"required":true,"description":"Time period for the insights","name":"period","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of channel IDs to filter by"},"required":false,"description":"Comma-separated list of channel IDs to filter by","name":"channelIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of distribution IDs to filter by"},"required":false,"description":"Comma-separated list of distribution IDs to filter by","name":"distributionIds","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of streaming formats to filter by"},"required":false,"description":"Comma-separated list of streaming formats to filter by","name":"streamingFormats","in":"query"}],"responses":{"200":{"description":"Viewer count insights data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewersInsightsListResult"}}}}}}},"/regions":{"get":{"tags":["Regions"],"operationId":"get-regions","summary":"Get all regions available for your organization","responses":{"200":{"description":"List of regions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionListResult"}}}}}}},"/regions/{regionId}":{"get":{"tags":["Regions"],"operationId":"get-region","summary":"Get a region by ID","parameters":[{"schema":{"type":"string","description":"Region ID"},"required":true,"description":"Region ID","name":"regionId","in":"path"}],"responses":{"200":{"description":"The requested region","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionResult"}}}},"404":{"description":"Region not found or not available for your organization"}}}},"/regions/{regionId}/sdi":{"get":{"tags":["Regions"],"operationId":"get-region-sdi-devices","summary":"Get the SDI devices of an on-prem region","parameters":[{"schema":{"type":"string","description":"Region ID"},"required":true,"description":"Region ID","name":"regionId","in":"path"}],"responses":{"200":{"description":"List of SDI devices in the region","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdiDeviceListResult"}}}},"400":{"description":"Region is not an on-prem region"},"404":{"description":"Region not found or not available for your organization"}}}},"/regions/{regionId}/ndi":{"get":{"tags":["Regions"],"operationId":"get-region-ndi-sources","summary":"Get the NDI sources of an on-prem region","parameters":[{"schema":{"type":"string","description":"Region ID"},"required":true,"description":"Region ID","name":"regionId","in":"path"}],"responses":{"200":{"description":"List of NDI sources in the region","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NdiSourceListResult"}}}},"400":{"description":"Region is not an on-prem region"},"404":{"description":"Region not found or not available for your organization"}}}},"/abr":{"get":{"tags":["ABR Ladders"],"operationId":"get-abr-ladders","summary":"Get all ABR ladders for your organization","responses":{"200":{"description":"List of ABR ladders","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbrListResult"}}}}}}},"/abr/engine-counts":{"get":{"tags":["ABR Ladders"],"operationId":"get-abr-ladder-engine-counts","summary":"Get the number of engines using each ABR ladder of your organization","responses":{"200":{"description":"Engine counts per ABR ladder (ladders without engines are omitted)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbrEngineCountListResult"}}}}}}},"/abr/{id}/engines":{"get":{"tags":["ABR Ladders"],"operationId":"get-abr-ladder-engines","summary":"Get the engines using an ABR ladder","parameters":[{"schema":{"type":"string","description":"ABR ladder ID"},"required":true,"description":"ABR ladder ID","name":"id","in":"path"},{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of items to return (max 100)"},"required":false,"description":"Maximum number of items to return (max 100)","name":"limit","in":"query"}],"responses":{"200":{"description":"Paginated list of engines using the ABR ladder","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedAbrLadderEngineResult"}}}}}}},"/webhooks":{"get":{"tags":["Webhooks"],"operationId":"get-webhooks","summary":"Get all webhooks","responses":{"200":{"description":"List of webhooks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedWebhookResult"}}}}}},"post":{"tags":["Webhooks"],"operationId":"create-webhook","summary":"Create a new webhook","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookBody"}}}},"responses":{"200":{"description":"Webhook created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookObjectResult"}}}}}}},"/webhooks/{id}":{"get":{"tags":["Webhooks"],"operationId":"get-webhook","summary":"Get a webhook by ID","parameters":[{"schema":{"type":"string","description":"Webhook ID"},"required":true,"description":"Webhook ID","name":"id","in":"path"}],"responses":{"200":{"description":"The requested webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookObjectResult"}}}}}},"patch":{"tags":["Webhooks"],"operationId":"update-webhook","summary":"Update a webhook by ID","parameters":[{"schema":{"type":"string","description":"Webhook ID"},"required":true,"description":"Webhook ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookBody"}}}},"responses":{"200":{"description":"Updated webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookObjectResult"}}}}}},"delete":{"tags":["Webhooks"],"operationId":"delete-webhook","summary":"Delete a webhook by ID","parameters":[{"schema":{"type":"string","description":"Webhook ID"},"required":true,"description":"Webhook ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/webhooks/{id}/secret":{"get":{"tags":["Webhooks"],"operationId":"get-webhook-secret","summary":"Get a webhook secret","parameters":[{"schema":{"type":"string","description":"Webhook ID"},"required":true,"description":"Webhook ID","name":"id","in":"path"}],"responses":{"200":{"description":"The webhook secret","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecretResult"}}}}}}},"/webhooks/{id}/logs":{"get":{"tags":["Webhooks"],"operationId":"get-webhook-logs","summary":"Get webhook logs","parameters":[{"schema":{"type":"string","description":"Webhook ID"},"required":true,"description":"Webhook ID","name":"id","in":"path"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"Start date in 'YYYY-MM-DDTHH:mm:ss.sssZ' format"},"required":false,"description":"Start date in 'YYYY-MM-DDTHH:mm:ss.sssZ' format","name":"startDate","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$","description":"End date in 'YYYY-MM-DDTHH:mm:ss.sssZ' format"},"required":false,"description":"End date in 'YYYY-MM-DDTHH:mm:ss.sssZ' format","name":"endDate","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of logs to return (max 100)"},"required":false,"description":"Maximum number of logs to return (max 100)","name":"limit","in":"query"}],"responses":{"200":{"description":"Webhook logs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedWebhookLogResult"}}}}}}},"/schedulers":{"get":{"tags":["Schedulers"],"operationId":"get-schedulers","summary":"List all schedulers","parameters":[{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of schedulers to return (max 100)"},"required":false,"description":"Maximum number of schedulers to return (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of statuses to filter by (idle, starting, active, stopping, terminated)"},"required":false,"description":"Comma-separated list of statuses to filter by (idle, starting, active, stopping, terminated)","name":"status","in":"query"},{"schema":{"type":"string","enum":["name","status","startDate","startTime"],"description":"Sort field"},"required":false,"description":"Sort field","name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"description":"Sort direction"},"required":false,"description":"Sort direction","name":"sortDirection","in":"query"}],"responses":{"200":{"description":"List of schedulers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedSchedulerResult"}}}}}},"post":{"tags":["Schedulers"],"operationId":"create-scheduler","summary":"Create a scheduler","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSchedulerBody"}}}},"responses":{"200":{"description":"Created scheduler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulerObjectResult"}}}}}}},"/schedulers/{id}":{"get":{"tags":["Schedulers"],"operationId":"get-scheduler","summary":"Get a scheduler by ID","parameters":[{"schema":{"type":"string","description":"Scheduler ID"},"required":true,"description":"Scheduler ID","name":"id","in":"path"}],"responses":{"200":{"description":"The requested scheduler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulerObjectResult"}}}}}},"patch":{"tags":["Schedulers"],"operationId":"update-scheduler","summary":"Update a scheduler by ID","parameters":[{"schema":{"type":"string","description":"Scheduler ID"},"required":true,"description":"Scheduler ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSchedulerBody"}}}},"responses":{"200":{"description":"Updated scheduler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulerObjectResult"}}}}}},"delete":{"tags":["Schedulers"],"operationId":"delete-scheduler","summary":"Delete a scheduler by ID","parameters":[{"schema":{"type":"string","description":"Scheduler ID"},"required":true,"description":"Scheduler ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/channels/{id}/custom-endpoints":{"post":{"tags":["Channels","Custom Endpoints"],"operationId":"create-custom-endpoint","summary":"Create a custom endpoint on a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomEndpointBody"}}}},"responses":{"200":{"description":"Created custom endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEndpointObjectResult"}}}}}},"get":{"tags":["Channels","Custom Endpoints"],"operationId":"get-channel-custom-endpoints","summary":"List all custom endpoints of a channel","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"id","in":"path"}],"responses":{"200":{"description":"List of custom endpoints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEndpointListResult"}}}}}}},"/custom-endpoints/{id}":{"get":{"tags":["Custom Endpoints"],"operationId":"get-custom-endpoint","summary":"Get a custom endpoint by ID","parameters":[{"schema":{"type":"string","description":"Custom Endpoint ID"},"required":true,"description":"Custom Endpoint ID","name":"id","in":"path"}],"responses":{"200":{"description":"The requested custom endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEndpointObjectResult"}}}}}},"patch":{"tags":["Custom Endpoints"],"operationId":"update-custom-endpoint","summary":"Update a custom endpoint","parameters":[{"schema":{"type":"string","description":"Custom Endpoint ID"},"required":true,"description":"Custom Endpoint ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomEndpointBody"}}}},"responses":{"200":{"description":"Updated custom endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEndpointObjectResult"}}}}}},"delete":{"tags":["Custom Endpoints"],"operationId":"delete-custom-endpoint","summary":"Delete a custom endpoint","parameters":[{"schema":{"type":"string","description":"Custom Endpoint ID"},"required":true,"description":"Custom Endpoint ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"}}}},"/monitoring/channels/{channelId}":{"get":{"tags":["Monitoring"],"operationId":"get-channel-monitoring","summary":"Get monitoring data for a channel","description":"Returns monitoring data for a specific channel including status of ingests, engines, and distributions.","x-mcp":{"description":"Get the current health/monitoring snapshot of a channel: engine and ingest state plus stream quality indicators. Use this to diagnose why a channel is not playing. Requires the liveMonitoring feature."},"parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"channelId","in":"path"}],"responses":{"200":{"description":"Channel monitoring data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelMonitoringResult"}}}},"404":{"description":"Channel not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}}}}},"/monitoring/ingests/{ingestId}":{"get":{"tags":["Monitoring"],"operationId":"get-ingest-monitoring","summary":"Get detailed monitoring data for an ingest","description":"Returns monitoring data for a specific ingest including time-series metrics like packet loss, RTT, and bitrate.","parameters":[{"schema":{"type":"string","description":"Ingest ID"},"required":true,"description":"Ingest ID","name":"ingestId","in":"path"},{"schema":{"type":"string","description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:00:00Z"},"required":false,"description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"start","in":"query"},{"schema":{"type":"string","description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:01:00Z"},"required":false,"description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"end","in":"query"}],"responses":{"200":{"description":"Ingest monitoring data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestMonitoringResult"}}}},"404":{"description":"Ingest not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}}}}},"/monitoring/engines/{engineId}":{"get":{"tags":["Monitoring"],"operationId":"get-engine-monitoring","summary":"Get detailed monitoring data for an engine","description":"Returns monitoring data for a specific engine including rendition metrics.","parameters":[{"schema":{"type":"string","description":"Engine ID"},"required":true,"description":"Engine ID","name":"engineId","in":"path"},{"schema":{"type":"string","description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:00:00Z"},"required":false,"description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"start","in":"query"},{"schema":{"type":"string","description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:01:00Z"},"required":false,"description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"end","in":"query"}],"responses":{"200":{"description":"Engine monitoring data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineMonitoringResult"}}}},"404":{"description":"Engine not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}}}}},"/monitoring/channels/{channelId}/ingests":{"get":{"tags":["Monitoring"],"operationId":"get-channel-ingests-monitoring","summary":"Get detailed ingest monitoring data for a channel","description":"Returns channel metadata along with detailed monitoring data for all ingests belonging to the channel.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"channelId","in":"path"},{"schema":{"type":"string","description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:00:00Z"},"required":false,"description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"start","in":"query"},{"schema":{"type":"string","description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:01:00Z"},"required":false,"description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"end","in":"query"}],"responses":{"200":{"description":"Channel ingests monitoring data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelIngestsMonitoringResult"}}}},"404":{"description":"Channel not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}}}}},"/monitoring/channels/{channelId}/engines":{"get":{"tags":["Monitoring"],"operationId":"get-channel-engines-monitoring","summary":"Get detailed engine monitoring data for a channel","description":"Returns channel metadata along with detailed monitoring data for all engines belonging to the channel.","parameters":[{"schema":{"type":"string","description":"Channel ID"},"required":true,"description":"Channel ID","name":"channelId","in":"path"},{"schema":{"type":"string","description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:00:00Z"},"required":false,"description":"Start time in ISO 8601 format. Default: 1 minute ago. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"start","in":"query"},{"schema":{"type":"string","description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","example":"2026-03-20T00:01:00Z"},"required":false,"description":"End time in ISO 8601 format. Default: now. Must be within 5 minutes of the current time. Start and end must be at most 1 minute apart.","name":"end","in":"query"}],"responses":{"200":{"description":"Channel engines monitoring data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelEnginesMonitoringResult"}}}},"404":{"description":"Channel not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringError"}}}}}}},"/enhancements/speech/dictionaries":{"get":{"tags":["Enhancements"],"operationId":"get-speech-dictionaries","summary":"Get all speech dictionaries","description":"A speech dictionary is a flat list of terms (names, proper nouns, acronyms, specialized terminology) that helps the speech recognition correctly caption the source audio of a speech enhancement. It does not translate terms: the source audio is first captioned in the source language (aided by the dictionary) and then translated into the target languages. Connect a dictionary to an ingest via the `dictionary` field of the speech enhancement entry; the dictionary `language` must match that enhancement's `sourceLanguage`.","parameters":[{"schema":{"type":"string","description":"Pagination cursor"},"required":false,"description":"Pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"number","nullable":true,"maximum":100,"description":"Maximum number of items to return (max 100)"},"required":false,"description":"Maximum number of items to return (max 100)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filter by speech dictionary name"},"required":false,"description":"Filter by speech dictionary name","name":"name","in":"query"}],"responses":{"200":{"description":"Paginated list of speech dictionaries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedSpeechDictionaryResult"}}}}}},"post":{"tags":["Enhancements"],"operationId":"create-speech-dictionary","summary":"Create a new speech dictionary","description":"A speech dictionary is a flat list of terms (names, proper nouns, acronyms, specialized terminology) that helps the speech recognition correctly caption the source audio of a speech enhancement. It does not translate terms: the source audio is first captioned in the source language (aided by the dictionary) and then translated into the target languages. Connect a dictionary to an ingest via the `dictionary` field of the speech enhancement entry; the dictionary `language` must match that enhancement's `sourceLanguage`. Terms are cleaned up automatically (whitespace normalized, empty and duplicate entries dropped); terms that cannot be fixed automatically (forbidden characters \";\" or \"/\", more than 6 words) are rejected with `invalid_value`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpeechDictionaryBody"}}}},"responses":{"200":{"description":"Speech dictionary created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechDictionaryObjectResult"}}}}}}},"/enhancements/speech/dictionaries/{id}":{"get":{"tags":["Enhancements"],"operationId":"get-speech-dictionary","summary":"Get a speech dictionary by ID","parameters":[{"schema":{"type":"string","description":"Speech dictionary ID"},"required":true,"description":"Speech dictionary ID","name":"id","in":"path"}],"responses":{"200":{"description":"The requested speech dictionary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechDictionaryObjectResult"}}}}}},"patch":{"tags":["Enhancements"],"operationId":"update-speech-dictionary","summary":"Update a speech dictionary by ID","description":"The `terms` list is replaced as a whole. Terms are cleaned up automatically (whitespace normalized, empty and duplicate entries dropped); terms that cannot be fixed automatically (forbidden characters \";\" or \"/\", more than 6 words) are rejected with `invalid_value`.","parameters":[{"schema":{"type":"string","description":"Speech dictionary ID"},"required":true,"description":"Speech dictionary ID","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpeechDictionaryBody"}}}},"responses":{"200":{"description":"Updated speech dictionary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechDictionaryObjectResult"}}}}}},"delete":{"tags":["Enhancements"],"operationId":"delete-speech-dictionary","summary":"Delete a speech dictionary by ID","description":"A dictionary cannot be deleted while it is connected to an ingest that has an engine which is not stopped (409 `speech_dictionary_in_use`). Once deleted, the dictionary is automatically disconnected from all ingests that referenced it.","parameters":[{"schema":{"type":"string","description":"Speech dictionary ID"},"required":true,"description":"Speech dictionary ID","name":"id","in":"path"}],"responses":{"204":{"description":"Empty response"},"409":{"description":"The speech dictionary is connected to one or more ingests with active engines","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechDictionaryError"}}}}}}},"/enhancements/speech/supported-source-languages":{"get":{"tags":["Enhancements"],"operationId":"get-supported-source-languages","summary":"Get supported source languages","description":"Languages the speech recognition can transcribe, i.e. the valid values for the `sourceLanguage` field of a speech enhancement entry (the language spoken in the stream).","responses":{"200":{"description":"List of supported source language codes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportedLanguagesResult"}}}}}}},"/enhancements/speech/supported-target-languages":{"get":{"tags":["Enhancements"],"operationId":"get-supported-target-languages","summary":"Get supported target languages","description":"Languages the source captions can be translated into, i.e. the valid values for the `targetTextTracks` field of a speech enhancement entry.","responses":{"200":{"description":"List of supported target language codes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportedLanguagesResult"}}}}}}},"/enhancements/speech/analytics/translated-minutes":{"get":{"tags":["Enhancements"],"operationId":"get-speech-translated-minutes","summary":"Get translated minutes analytics","description":"Only available when the Captions & Translations feature is enabled on organization level. The 'start' and 'end' dates are always interpreted as UTC; timezone and UTC offset options are not supported.","parameters":[{"schema":{"type":"string","description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"end","in":"query"},{"schema":{"type":"string","enum":["day","month"],"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days."},"required":false,"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days.","name":"resolution","in":"query"},{"schema":{"type":"string","enum":["language","channel","total"],"description":"Group results by language, channel, or total. Defaults to 'total'."},"required":false,"description":"Group results by language, channel, or total. Defaults to 'total'.","name":"groupBy","in":"query"}],"responses":{"200":{"description":"Translated minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}},"/enhancements/speech/analytics/captioned-minutes":{"get":{"tags":["Enhancements"],"operationId":"get-speech-captioned-minutes","summary":"Get captioned minutes analytics","description":"Only available when the Captions & Translations feature is enabled on organization level. The 'start' and 'end' dates are always interpreted as UTC; timezone and UTC offset options are not supported.","parameters":[{"schema":{"type":"string","description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"Start date for the analytics period in 'YYYY-MM-DD' format. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"start","in":"query"},{"schema":{"type":"string","description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics."},"required":true,"description":"End date for the analytics period in 'YYYY-MM-DD' format. Must be equal to or later than 'start'. Always interpreted as UTC; timezone and UTC offset options are not supported for these analytics.","name":"end","in":"query"},{"schema":{"type":"string","enum":["day","month"],"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days."},"required":false,"description":"Time resolution for the analytics data. Defaults to 'day'. For 'day', the difference between 'start' and 'end' can be at most 1000 days.","name":"resolution","in":"query"},{"schema":{"type":"string","enum":["channel","total"],"description":"Group results by channel or total. Defaults to 'total'."},"required":false,"description":"Group results by channel or total. Defaults to 'total'.","name":"groupBy","in":"query"}],"responses":{"200":{"description":"Captioned minutes analytics data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsListResult"}}}}}}}}}