{"openapi":"3.1.0","info":{"title":"OptiView Live (BYOK) API","version":"0.1.0","description":"OptiView Live (BYOK) lets an AI assistant read your own OptiView Live data through the OptiView Live API with a key you supply (API token key). Read-only: 8 tools (list_channels, get_channel, list_channel_ingests, list_channel_engines, list_channel_distributions, get_distribution, list_regions, list_abr_ladders). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-optiview-live.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-optiview-live/docs"},"termsOfService":"https://connectorbay.com/byok-optiview-live/terms"},"servers":[{"url":"https://byok-optiview-live.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-optiview-live/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_channels":{"post":{"operationId":"list_channels","summary":"List live channels with id, name, status (stopped, deploying, starting, waiting, ingesting, playing), idle timeout in se","description":"List live channels with id, name, status (stopped, deploying, starting, waiting, ingesting, playing), idle timeout in seconds and creation time. Use for \"Which OptiView Live channels do I have and which are playing right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor (pagination.cursor) from the previous answer for the next page.","title":"Cursor"}},"title":"list_channelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_channel":{"post":{"operationId":"get_channel","summary":"Get one channel by id with name, status, idle timeout and creation time. Use for \"Is my OptiView Live channel up and wha","description":"Get one channel by id with name, status, idle timeout and creation time. Use for \"Is my OptiView Live channel up and what is its idle timeout\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"channel_id":{"description":"Channel id from list_channels.","maxLength":64,"title":"Channel Id","type":"string"}},"required":["channel_id"],"title":"get_channelArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_channel_ingests":{"post":{"operationId":"list_channel_ingests","summary":"List the ingests of a channel with id, name, type (for example rtmp-push) and creation time; stream keys are not returne","description":"List the ingests of a channel with id, name, type (for example rtmp-push) and creation time; stream keys are not returned. Use for \"Which ingests feed my OptiView Live channel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"channel_id":{"description":"Channel id from list_channels.","maxLength":64,"title":"Channel Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor (pagination.cursor) from the previous answer for the next page.","title":"Cursor"}},"required":["channel_id"],"title":"list_channel_ingestsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_channel_engines":{"post":{"operationId":"list_channel_engines","summary":"List the transcoding engines of a channel with id, name, priority, DRM flag and update times. Use for \"How many engines ","description":"List the transcoding engines of a channel with id, name, priority, DRM flag and update times. Use for \"How many engines does my OptiView Live channel run and which has priority 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"channel_id":{"description":"Channel id from list_channels.","maxLength":64,"title":"Channel Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor (pagination.cursor) from the previous answer for the next page.","title":"Cursor"}},"required":["channel_id"],"title":"list_channel_enginesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_channel_distributions":{"post":{"operationId":"list_channel_distributions","summary":"List the distributions of a channel with id, name, enabled flag and update times. Use for \"Which OptiView Live distribut","description":"List the distributions of a channel with id, name, enabled flag and update times. Use for \"Which OptiView Live distributions are enabled on my channel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"channel_id":{"description":"Channel id from list_channels.","maxLength":64,"title":"Channel Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor (pagination.cursor) from the previous answer for the next page.","title":"Cursor"}},"required":["channel_id"],"title":"list_channel_distributionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_distribution":{"post":{"operationId":"get_distribution","summary":"Get one distribution by id with enabled flag, linked engine ids, geo blocking and IP blocking switches and DVR flag (sec","description":"Get one distribution by id with enabled flag, linked engine ids, geo blocking and IP blocking switches and DVR flag (security keys are not returned). Use for \"Is geo blocking switched on for my OptiView Live distribution\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"distribution_id":{"description":"Distribution id from list_channel_distributions.","maxLength":64,"title":"Distribution Id","type":"string"}},"required":["distribution_id"],"title":"get_distributionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_regions":{"post":{"operationId":"list_regions","summary":"List the cloud and on-prem regions available to your organization with id and name. Use for \"Which OptiView Live regions","description":"List the cloud and on-prem regions available to your organization with id and name. Use for \"Which OptiView Live regions can I deploy channels to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_regionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_abr_ladders":{"post":{"operationId":"list_abr_ladders","summary":"List the adaptive bitrate ladders of your organization with id and name. Use for \"Which ABR ladders do I have in OptiVie","description":"List the adaptive bitrate ladders of your organization with id and name. Use for \"Which ABR ladders do I have in OptiView Live\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_abr_laddersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}