{
  "openapi": "3.1.0",
  "info": {
    "title": "Channels API",
    "description": "Simplified channel management API",
    "version": "0.1.0"
  },
  "paths": {
    "/api/channel-deployment/eligibility/": {
      "get": {
        "tags": [
          "Deployment"
        ],
        "summary": "Get Eligibility",
        "description": "Return whether channels-api can take over this box, plus the current state.",
        "operationId": "get_eligibility_deployment_eligibility__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EligibilityResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/channel-me/": {
      "get": {
        "tags": [
          "Me"
        ],
        "summary": "Get Me",
        "description": "Return the current user's identity and channels.* permission flags.\n\nRequires a valid Bearer token. On success returns::\n\n    {\n      \"user\": \"asif\",\n      \"groups\": [\"Admin\"],\n      \"permissions\": {\n        \"services.add_service\":    true,\n        \"services.change_service\": true,\n        \"services.delete_service\": true\n      }\n    }\n\nThe front-end can call this once on load and use the permission flags to\ndisable or hide action buttons (stop, start, delete, edit) rather than\ndiscovering access denial only after the user clicks.",
        "operationId": "get_me_me__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/channel-channelalarms/active/": {
      "get": {
        "tags": [
          "Channel Alarms"
        ],
        "summary": "List Active Channel Alarms",
        "description": "List active alarms for a channel identified by name.",
        "operationId": "list_active_channel_alarms_channelalarms_active__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "channelName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Channelname"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlarmListResponse"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/channels/": {
      "get": {
        "tags": [
          "Channels"
        ],
        "summary": "List Channels",
        "description": "List all channels with OData-style filtering and pagination.\n\nFilter examples:\n- `$filter=status/health/severity ne 'Clear'`\n- `$filter=metadata/created ge 2025-01-01T00:00:00Z`\n- `$filter=contains(tolower(metadata/displayName), 'test')`\n\nOperators: eq, ne, lt, le, gt, ge, and, or\nFunctions: contains(), tolower(), toupper()\n\nAll channels are loaded and hydrated with live status before filtering,\nsorting, and pagination are applied in-memory. This is viable because\nchannel count is bounded (tens, not thousands).",
        "operationId": "list_channels_channels__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "$top",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000,
              "minimum": 1,
              "description": "Max items per page",
              "default": 1000,
              "title": "$Top"
            },
            "description": "Max items per page"
          },
          {
            "name": "$skiptoken",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "Offset into results",
              "default": 0,
              "title": "$Skiptoken"
            },
            "description": "Offset into results"
          },
          {
            "name": "$filter",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "OData filter expression",
              "title": "$Filter"
            },
            "description": "OData filter expression"
          },
          {
            "name": "$orderby",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Sort field(s) with optional asc/desc; comma-delimited for multi-key, e.g. 'status/health/severity asc, metadata/created desc'",
              "default": "metadata/created",
              "title": "$Orderby"
            },
            "description": "Sort field(s) with optional asc/desc; comma-delimited for multi-key, e.g. 'status/health/severity asc, metadata/created desc'"
          },
          {
            "name": "$select",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Comma-separated fields; when present, status hydration is skipped",
              "title": "$Select"
            },
            "description": "Comma-separated fields; when present, status hydration is skipped"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ODataPage_Channel_"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/channels/{channel_id}/": {
      "get": {
        "tags": [
          "Channels"
        ],
        "summary": "Get Channel",
        "description": "Get a single channel.",
        "operationId": "get_channel_channels__channel_id___get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "channel_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Channel Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Channel"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Channels"
        ],
        "summary": "Put Channel",
        "description": "Create or replace a channel. Configuration runs in background.",
        "operationId": "put_channel_channels__channel_id___put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "channel_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Channel Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Channel"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Channels"
        ],
        "summary": "Patch Channel",
        "description": "Update channel displayName or state.",
        "operationId": "patch_channel_channels__channel_id___patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "channel_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Channel Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChannelPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Channel"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Channels"
        ],
        "summary": "Delete Channel",
        "description": "Delete a channel. Services are stopped before deletion.\n\nService cleanup errors are logged but don't prevent channel removal.",
        "operationId": "delete_channel_channels__channel_id___delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "channel_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Channel Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "503": {
            "description": "Service unavailable"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/channels/{channel_id}/thumbnails/{thumbnail_id}/thumbnail.jpg": {
      "get": {
        "tags": [
          "Channels"
        ],
        "summary": "Get Thumbnail",
        "description": "Get thumbnail for a channel input.\n\nThe thumbnail_id matches the input's name (e.g. 'sdi-0').\nURL ends with .jpg so browsers treat it as a plain JPEG.",
        "operationId": "get_thumbnail_channels__channel_id__thumbnails__thumbnail_id__thumbnail_jpg_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "channel_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Channel Id"
            }
          },
          {
            "name": "thumbnail_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Thumbnail Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "503": {
            "description": "Service unavailable"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/interfaces/": {
      "get": {
        "tags": [
          "Interfaces"
        ],
        "summary": "List Interfaces",
        "description": "Return available interfaces grouped by type.",
        "operationId": "list_interfaces_interfaces__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/channel-capability/": {
      "get": {
        "tags": [
          "Appliance"
        ],
        "summary": "Get Appliance",
        "description": "Return appliance capability status: SDI/RF/ST2110 cards and firmware.",
        "operationId": "get_appliance_capability__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/applianceResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/channel-metrics/current/": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get Current Metrics",
        "description": "Get instantaneous server metrics. Use $select to limit fields.",
        "operationId": "get_current_metrics_metrics_current__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "$select",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Comma-separated fields: serverId, cpuUtilizationPercent, temperatureCelsius, uptimeSeconds",
              "title": "$Select"
            },
            "description": "Comma-separated fields: serverId, cpuUtilizationPercent, temperatureCelsius, uptimeSeconds"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentMetricsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/channel-metrics/query/": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Query Metrics",
        "description": "Execute arbitrary PromQL range query. Returns Prometheus format.",
        "operationId": "query_metrics_metrics_query__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "PromQL query",
              "title": "Query"
            },
            "description": "PromQL query"
          },
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Start time (ISO8601 or Unix timestamp)",
              "title": "Start"
            },
            "description": "Start time (ISO8601 or Unix timestamp)"
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "End time (ISO8601 or Unix timestamp)",
              "title": "End"
            },
            "description": "End time (ISO8601 or Unix timestamp)"
          },
          {
            "name": "step",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Query resolution step (e.g. 60s, 5m, 1h)",
              "default": "60s",
              "title": "Step"
            },
            "description": "Query resolution step (e.g. 60s, 5m, 1h)"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrometheusRangeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/channel-metrics/cpu/": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Query Cpu",
        "description": "Query CPU utilization over time range. Returns Prometheus format.",
        "operationId": "query_cpu_metrics_cpu__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Start time (ISO8601 or Unix timestamp)",
              "title": "Start"
            },
            "description": "Start time (ISO8601 or Unix timestamp)"
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "End time (ISO8601 or Unix timestamp)",
              "title": "End"
            },
            "description": "End time (ISO8601 or Unix timestamp)"
          },
          {
            "name": "step",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Query resolution step",
              "default": "60s",
              "title": "Step"
            },
            "description": "Query resolution step"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrometheusRangeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/channel-metrics/temperature/": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Query Temperature",
        "description": "Query outlet temperature over time range. Returns Prometheus format.",
        "operationId": "query_temperature_metrics_temperature__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Start time (ISO8601 or Unix timestamp)",
              "title": "Start"
            },
            "description": "Start time (ISO8601 or Unix timestamp)"
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "End time (ISO8601 or Unix timestamp)",
              "title": "End"
            },
            "description": "End time (ISO8601 or Unix timestamp)"
          },
          {
            "name": "step",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Query resolution step",
              "default": "60s",
              "title": "Step"
            },
            "description": "Query resolution step"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrometheusRangeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/channel-export/": {
      "post": {
        "tags": [
          "Import Export"
        ],
        "summary": "Channel Export",
        "description": "Export channels as a JSON payload.\n\nOmit ``channels`` to export all. Set ``includeServices=false`` for a\nspec-only export (lighter; services regenerated from templates on import).",
        "operationId": "channel_export_export__post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/channel-import/": {
      "post": {
        "tags": [
          "Import Export"
        ],
        "summary": "Channel Import",
        "description": "Import channels from a JSON payload.\n\n``mode=merge`` (default): create missing, update changed, leave others alone.\n``mode=replace``: delete any channel not in the payload, then create/update.\nAn empty ``channels`` list with ``mode=replace`` deletes all channels.\n\nReturns immediately. Background tasks push service configs to the controller;\nobserve final per-channel state via ``GET /channels/{id}/`` (``syncState``).",
        "operationId": "channel_import_import__post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/channel-system/": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Get System Info",
        "description": "Get device identity: software version, serial number, hardware model.",
        "operationId": "get_system_info_system__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemInfoResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/channel-biss/injected-ids/": {
      "get": {
        "tags": [
          "Biss"
        ],
        "summary": "List Injected Ids",
        "description": "List BISS Injected IDs stored on the appliance (bkid + description only).",
        "operationId": "list_injected_ids_biss_injected_ids__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InjectedIdsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "Biss"
        ],
        "summary": "Create Injected Id",
        "description": "Create a new BISS Injected ID.\n\nThe appliance assigns the `bkid` — callers should re-list injected IDs\nafter a successful create to discover it.",
        "operationId": "create_injected_id_biss_injected_ids__post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InjectedIdCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Create Injected Id Biss Injected Ids  Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/channel-biss/import-code/": {
      "get": {
        "tags": [
          "Biss"
        ],
        "summary": "Get Import Code",
        "description": "Get the appliance's BISS Import Code, needed before client-side encryption.",
        "operationId": "get_import_code_biss_import_code__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportCodeResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AbrEncodingConfig": {
        "properties": {
          "representations": {
            "items": {
              "$ref": "#/components/schemas/Representation"
            },
            "type": "array",
            "title": "Representations",
            "default": []
          },
          "sharedAudios": {
            "items": {
              "$ref": "#/components/schemas/AudioEncoding"
            },
            "type": "array",
            "title": "Sharedaudios",
            "default": [],
            "x-dyn-deps": [
              "spec.inputs"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.sharedAudios.all(sa,  sa.audioName == null || sa.inputName == null ||  spec.inputs.exists(inp,    inp.name == sa.inputName &&    \"payload\" in inp &&    \"audios\" in inp.payload &&    inp.payload.audios.exists(a, a.name == sa.audioName)  )) ? {} : {\"error\": \"sharedAudio references an audioName not defined in the named input's payload\"}"
          }
        },
        "type": "object",
        "title": "AbrEncodingConfig"
      },
      "Ac4Config": {
        "properties": {
          "frameRate": {
            "type": "string",
            "maxLength": 16,
            "title": "Framerate",
            "default": "25"
          },
          "language": {
            "type": "string",
            "maxLength": 16,
            "title": "Language",
            "default": "auto"
          },
          "contentClassifier": {
            "$ref": "#/components/schemas/Ac4ContentClassifier",
            "default": "classCompleteMain"
          }
        },
        "type": "object",
        "title": "Ac4Config"
      },
      "Ac4ContentClassifier": {
        "type": "string",
        "enum": [
          "Unsynced",
          "classCompleteMain",
          "classEmergency",
          "classMusicEffect",
          "classMainAssociatedMix"
        ],
        "title": "Ac4ContentClassifier",
        "x-enum-varnames": [
          "Unsynced",
          "Complete Main",
          "Emergency",
          "Music and Effect",
          "Main Associated Mix"
        ]
      },
      "ActualState": {
        "type": "string",
        "enum": [
          "Running",
          "Stopped"
        ],
        "title": "ActualState",
        "x-enum-varnames": [
          "Running",
          "Stopped"
        ]
      },
      "Alarm": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "Alarm",
            "title": "Kind",
            "default": "Alarm"
          },
          "metadata": {
            "$ref": "#/components/schemas/AlarmMetadata"
          },
          "status": {
            "$ref": "#/components/schemas/AlarmStatus"
          }
        },
        "type": "object",
        "required": [
          "metadata",
          "status"
        ],
        "title": "Alarm"
      },
      "AlarmListResponse": {
        "properties": {
          "value": {
            "items": {
              "$ref": "#/components/schemas/Alarm"
            },
            "type": "array",
            "title": "Value"
          },
          "supplemental": {
            "$ref": "#/components/schemas/AlarmListSupplemental"
          }
        },
        "type": "object",
        "required": [
          "value",
          "supplemental"
        ],
        "title": "AlarmListResponse"
      },
      "AlarmListSupplemental": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "AlarmList",
            "title": "Kind",
            "default": "AlarmList"
          },
          "count": {
            "type": "integer",
            "title": "Count"
          },
          "operation": {
            "type": "string",
            "const": "list",
            "title": "Operation",
            "default": "list"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "type": "object",
        "required": [
          "count",
          "pagination"
        ],
        "title": "AlarmListSupplemental"
      },
      "AlarmMetadata": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "displayName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Displayname"
          },
          "objectId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Objectid"
          },
          "channelName": {
            "type": "string",
            "title": "Channelname"
          },
          "created": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "channelName"
        ],
        "title": "AlarmMetadata"
      },
      "AlarmStatus": {
        "properties": {
          "severity": {
            "$ref": "#/components/schemas/Severity"
          },
          "additionalInfo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additionalinfo"
          }
        },
        "type": "object",
        "required": [
          "severity"
        ],
        "title": "AlarmStatus"
      },
      "AsiInput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "ASI",
            "title": "Type",
            "default": "ASI"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/AsiInputTransport"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MptsPayload"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type in [\"ReceptionDecoding\"] ? {\"x-required\": true} : {}"
          },
          "decrypt": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DecryptConfig"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "transport"
        ],
        "title": "AsiInput"
      },
      "AsiInputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputMptsPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "ASI",
            "title": "Type",
            "default": "ASI"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AsiInputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "AsiInputStatus"
      },
      "AsiInputTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^asi://",
            "title": "Url",
            "examples": [
              "asi://localhost/slot_2_port_3"
            ]
          },
          "tsPacketSize": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TsPacketSize"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "AsiInputTransport"
      },
      "AsiInputTransportStatus": {
        "properties": {
          "receiving": {
            "type": "boolean",
            "title": "Receiving"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "etr290": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Etr290Stats"
              },
              {
                "type": "null"
              }
            ]
          },
          "fec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputTransportFec"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "receiving"
        ],
        "title": "AsiInputTransportStatus"
      },
      "AsiOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "ASI",
            "title": "Type",
            "default": "ASI"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/AsiOutputTransport"
          }
        },
        "type": "object",
        "required": [
          "transport"
        ],
        "title": "AsiOutput"
      },
      "AsiOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "ASI",
            "title": "Type",
            "default": "ASI"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AsiOutputTransport"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "AsiOutputStatus"
      },
      "AsiOutputTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^asi://",
            "title": "Url",
            "examples": [
              "asi://localhost/slot_2_port_3"
            ]
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "AsiOutputTransport"
      },
      "AudioBitrate": {
        "type": "integer",
        "enum": [
          16000,
          20000,
          24000,
          28000,
          32000,
          40000,
          48000,
          56000,
          64000,
          80000,
          96000,
          112000,
          128000,
          144000,
          160000,
          192000,
          224000,
          256000,
          288000,
          320000,
          384000,
          448000,
          512000,
          640000,
          704000,
          768000,
          832000,
          896000,
          960000,
          1024000
        ],
        "title": "AudioBitrate",
        "x-enum-varnames": [
          "16 Kbps",
          "20 Kbps",
          "24 Kbps",
          "28 Kbps",
          "32 Kbps",
          "40 Kbps",
          "48 Kbps",
          "56 Kbps",
          "64 Kbps",
          "80 Kbps",
          "96 Kbps",
          "112 Kbps",
          "128 Kbps",
          "144 Kbps",
          "160 Kbps",
          "192 Kbps",
          "224 Kbps",
          "256 Kbps",
          "288 Kbps",
          "320 Kbps",
          "384 Kbps",
          "448 Kbps",
          "512 Kbps",
          "640 Kbps",
          "704 Kbps",
          "768 Kbps",
          "832 Kbps",
          "896 Kbps",
          "960 Kbps",
          "1024 Kbps"
        ]
      },
      "AudioCodec": {
        "type": "string",
        "enum": [
          "Unsynced",
          "PassThrough",
          "SMPTE302PassThrough",
          "MPEG1Layer2",
          "AAC",
          "HEAAC",
          "HEAACv2",
          "AC3",
          "EAC3",
          "AC4"
        ],
        "title": "AudioCodec",
        "x-enum-varnames": [
          "Unsynced",
          "Pass-Through",
          "SMPTE 302 Pass-Through",
          "MPEG-1 Layer 2",
          "AAC",
          "HE-AAC",
          "HE-AAC v2",
          "AC-3",
          "E-AC-3",
          "AC-4"
        ]
      },
      "AudioCodecStatus": {
        "type": "string",
        "enum": [
          "PassThrough",
          "SMPTE302PassThrough",
          "MPEG1Layer2",
          "AAC",
          "HEAAC",
          "HEAACv2",
          "AC3",
          "EAC3",
          "AC4"
        ],
        "title": "AudioCodecStatus",
        "x-enum-varnames": [
          "Pass-Through",
          "SMPTE 302 Pass-Through",
          "MPEG-1 Layer 2",
          "AAC",
          "HE-AAC",
          "HE-AAC v2",
          "AC-3",
          "E-AC-3",
          "AC-4"
        ]
      },
      "AudioEncoding": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "inputName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Inputname"
          },
          "audioName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Audioname"
          },
          "codec": {
            "$ref": "#/components/schemas/AudioCodec",
            "default": "AC3"
          },
          "mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioMode"
              },
              {
                "type": "null"
              }
            ],
            "default": "Stereo",
            "x-dyn-deps": [
              "spec.transform.encoding.audios.codec"
            ],
            "x-dyn-on-invalid": "clamp",
            "x-dyn-rule-cel": "self.codec == \"Unsynced\" ? {} : self.codec in [\"MPEG1Layer2\"] ? {\"enum\": [\"Mono\", \"MonoLeft\", \"MonoRight\", \"DualMono\", \"Stereo\"], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec in [\"AC3\", \"EAC3\", \"AC4\"] ? {\"enum\": [\"Stereo\", \"Surround51\"], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec in [\"AAC\", \"HEAAC\"] ? {\"enum\": [\"Mono\", \"MonoLeft\", \"MonoRight\", \"DualMono\", \"Stereo\", \"Surround51\"], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec in [\"HEAACv2\"] ? {\"enum\": [\"Stereo\"], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : {\"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])}"
          },
          "bitrate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioBitrate"
              },
              {
                "type": "null"
              }
            ],
            "default": 192000,
            "x-dyn-deps": [
              "spec.transform.encoding.audios.codec",
              "spec.transform.encoding.audios.mode"
            ],
            "x-dyn-on-invalid": "clamp",
            "x-dyn-rule-cel": "self.codec == \"Unsynced\" ? {} : self.mode == \"Unsynced\" ? {} : self.codec == \"MPEG1Layer2\" && self.mode in [\"Mono\", \"MonoLeft\", \"MonoRight\"] ? {\"enum\": [32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"MPEG1Layer2\" && self.mode in [\"DualMono\", \"Stereo\"] ? {\"enum\": [32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 384000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"AC3\" && self.mode == \"Stereo\" ? {\"enum\": [96000, 128000, 160000, 192000, 224000, 256000, 320000, 384000, 448000, 512000, 640000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"AC3\" && self.mode == \"Surround51\" ? {\"enum\": [224000, 256000, 320000, 384000, 448000, 512000, 640000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"EAC3\" && self.mode == \"Stereo\" ? {\"enum\": [96000, 128000, 160000, 192000, 224000, 256000, 320000, 384000, 448000, 512000, 640000, 704000, 768000, 832000, 896000, 960000, 1024000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"EAC3\" && self.mode == \"Surround51\" ? {\"enum\": [192000, 224000, 256000, 320000, 384000, 448000, 512000, 640000, 704000, 768000, 832000, 896000, 960000, 1024000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"AAC\" && self.mode in [\"Mono\", \"MonoLeft\", \"MonoRight\"] ? {\"enum\": [32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"AAC\" && self.mode in [\"DualMono\", \"Stereo\"] ? {\"enum\": [32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"AAC\" && self.mode == \"Surround51\" ? {\"enum\": [160000, 192000, 224000, 256000, 320000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"HEAAC\" && self.mode in [\"Mono\", \"MonoLeft\", \"MonoRight\"] ? {\"enum\": [32000, 40000, 48000, 56000, 64000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"HEAAC\" && self.mode == \"DualMono\" ? {\"enum\": [32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"HEAAC\" && self.mode == \"Stereo\" ? {\"enum\": [32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"HEAAC\" && self.mode == \"Surround51\" ? {\"enum\": [64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"AC4\" && self.mode == \"Stereo\" ? {\"enum\": [48000, 64000, 96000, 128000, 144000, 192000, 256000, 288000, 320000, 384000, 448000, 512000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"AC4\" && self.mode == \"Surround51\" ? {\"enum\": [96000, 128000, 144000, 192000, 256000, 288000, 320000, 384000, 448000, 512000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : self.codec == \"HEAACv2\" && self.mode in [\"Mono\", \"MonoLeft\", \"MonoRight\", \"DualMono\", \"Stereo\", \"Surround51\"] ? {\"enum\": [16000, 20000, 24000, 28000, 32000, 40000, 48000], \"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])} : {\"x-omit\": self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"], \"x-required\": !(self.codec in [\"PassThrough\", \"SMPTE302PassThrough\"])}"
          },
          "ac4Config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ac4Config"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "codec"
        ],
        "title": "AudioEncoding"
      },
      "AudioMode": {
        "type": "string",
        "enum": [
          "Unsynced",
          "Mono",
          "MonoLeft",
          "MonoRight",
          "DualMono",
          "Stereo",
          "Surround51"
        ],
        "title": "AudioMode",
        "x-enum-varnames": [
          "Unsynced",
          "Mono",
          "Mono Left",
          "Mono Right",
          "Dual Mono",
          "Stereo",
          "5.1 Surround"
        ]
      },
      "AudioModeStatus": {
        "type": "string",
        "enum": [
          "Mono",
          "MonoLeft",
          "MonoRight",
          "DualMono",
          "Stereo",
          "Surround51",
          "Surround71",
          "Surround514",
          "Surround714"
        ],
        "title": "AudioModeStatus",
        "x-enum-varnames": [
          "Mono",
          "Mono Left",
          "Mono Right",
          "Dual Mono",
          "Stereo",
          "5.1 Surround",
          "7.1 Surround",
          "5.1.4 Surround",
          "7.1.4 Surround"
        ]
      },
      "BissMode": {
        "type": "string",
        "enum": [
          "Unsynced",
          "Mode1",
          "ModeE"
        ],
        "title": "BissMode",
        "x-enum-varnames": [
          "Unsynced",
          "Mode 1",
          "Mode E"
        ]
      },
      "CamSlotInterface": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "type": "string",
            "const": "CAM",
            "title": "Type",
            "default": "CAM"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "displayName": {
            "type": "string",
            "title": "Displayname",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "name",
          "url",
          "displayName"
        ],
        "title": "CamSlotInterface",
        "description": "A DVB-CI (CAM) slot. Unlike SDI/ASI/RF-demod, CP has no chassis-slot +\nport addressing for CAM — its wire-format camSlot is a single flat,\n1-indexed integer (confirmed against content-processing's own\nCiDescrambler/hardware-scan code), so this does not reuse\nSlotPortInterface's two-number slot_X_port_Y convention.\n\n`name`/`url`/`type`/`displayName` all lean into \"cam\" rather than CP's own\n\"slot\" wire vocabulary — the wizard team's preference. `url` is opaque\nfrom the API user's perspective, same as SDI/ASI/RF-demod: enumerate this\nlist, pick one, send its `url` back verbatim as `DecryptConfig.camUrl` —\nno parsing/interpretation by the caller. channels-api parses the trailing\nnumber back out server-side (services/blocks/cp.py) to build CP's own\n\"slotN\" wire value — `cam2` here always means CP's internal `slot2` (CP\ncalls it that in its own config, daemon logs, and Advanced UI), same\nnumber, different word. Worth knowing when cross-referencing a raw CP\nconfig/log against this API's output."
      },
      "Channel": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "BeamChannel",
            "title": "Kind",
            "default": "BeamChannel"
          },
          "metadata": {
            "$ref": "#/components/schemas/ChannelMetadataResponse"
          },
          "spec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ChannelSpec"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ChannelStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "serviceIds": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Serviceids"
          }
        },
        "type": "object",
        "required": [
          "metadata"
        ],
        "title": "Channel"
      },
      "ChannelCreate": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "BeamChannel",
            "title": "Kind",
            "default": "BeamChannel"
          },
          "metadata": {
            "$ref": "#/components/schemas/ChannelMetadata"
          },
          "spec": {
            "$ref": "#/components/schemas/ChannelSpec"
          }
        },
        "type": "object",
        "required": [
          "metadata",
          "spec"
        ],
        "title": "ChannelCreate",
        "description": "Create channel - same as Channel but without status."
      },
      "ChannelListSupplemental": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "BeamChannelList",
            "title": "Kind",
            "default": "BeamChannelList"
          },
          "count": {
            "type": "integer",
            "title": "Count"
          },
          "operation": {
            "type": "string",
            "const": "list",
            "title": "Operation",
            "default": "list"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        },
        "type": "object",
        "required": [
          "count",
          "pagination"
        ],
        "title": "ChannelListSupplemental"
      },
      "ChannelMetadata": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Name"
          },
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Displayname"
          }
        },
        "type": "object",
        "required": [
          "name",
          "displayName"
        ],
        "title": "ChannelMetadata"
      },
      "ChannelMetadataPatch": {
        "properties": {
          "displayName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Displayname"
          }
        },
        "type": "object",
        "title": "ChannelMetadataPatch"
      },
      "ChannelMetadataResponse": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Name"
          },
          "displayName": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Displayname"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "title": "Created"
          }
        },
        "type": "object",
        "required": [
          "name",
          "displayName",
          "created"
        ],
        "title": "ChannelMetadataResponse"
      },
      "ChannelPatch": {
        "properties": {
          "metadata": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ChannelMetadataPatch"
              },
              {
                "type": "null"
              }
            ]
          },
          "spec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ChannelSpecPatch"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ChannelPatch",
        "description": "Partial update to a channel."
      },
      "ChannelSpec": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ChannelType"
          },
          "state": {
            "$ref": "#/components/schemas/DesiredState",
            "default": "Stopped"
          },
          "inputs": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SrtCallerInput"
                },
                {
                  "$ref": "#/components/schemas/SrtListenerInput"
                },
                {
                  "$ref": "#/components/schemas/UdpInput"
                },
                {
                  "$ref": "#/components/schemas/AsiInput"
                },
                {
                  "$ref": "#/components/schemas/SatDemodInput"
                },
                {
                  "$ref": "#/components/schemas/Smpte2110Input"
                },
                {
                  "$ref": "#/components/schemas/SdiInput"
                },
                {
                  "$ref": "#/components/schemas/UnsyncedInput"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ASI": "#/components/schemas/AsiInput",
                  "SDI": "#/components/schemas/SdiInput",
                  "SRTCaller": "#/components/schemas/SrtCallerInput",
                  "SRTListener": "#/components/schemas/SrtListenerInput",
                  "SatDemod": "#/components/schemas/SatDemodInput",
                  "Smpte2110": "#/components/schemas/Smpte2110Input",
                  "UDP": "#/components/schemas/UdpInput",
                  "Unsynced": "#/components/schemas/UnsyncedInput"
                }
              },
              "x-discriminator-varnames": {
                "ASI": "ASI",
                "SDI": "SDI",
                "SRTCaller": "SRT Caller",
                "SRTListener": "SRT Listener",
                "SatDemod": "Sat Demod",
                "Smpte2110": "SMPTE 2110",
                "UDP": "UDP",
                "Unsynced": "Unsynced"
              }
            },
            "type": "array",
            "title": "Inputs",
            "default": [],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "clamp",
            "x-dyn-rule-cel": "self.type == \"Unsynced\" ? {} : self.type in [\"EncodingContribution\", \"EncodingDistribution\"] ? {\"allowedDiscriminators\": [\"SDI\", \"Smpte2110\"], \"channelType\": self.type} : self.type in [\"ReceptionDecoding\", \"ReceptionGateway\"] ? {\"allowedDiscriminators\": [\"SRTCaller\", \"SRTListener\", \"UDP\", \"ASI\", \"SatDemod\"], \"channelType\": self.type} : self.type in [\"EncodingStreaming\"] ? {\"allowedDiscriminators\": [\"SDI\"], \"channelType\": self.type} : {}"
          },
          "transform": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TransformConfig"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.type in [\"EncodingContribution\", \"EncodingDistribution\", \"EncodingStreaming\"] ? {\"x-required\": true} : {\"x-omit\": true}"
          },
          "outputs": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SrtCallerOutput"
                },
                {
                  "$ref": "#/components/schemas/SrtListenerOutput"
                },
                {
                  "$ref": "#/components/schemas/UdpOutput"
                },
                {
                  "$ref": "#/components/schemas/AsiOutput"
                },
                {
                  "$ref": "#/components/schemas/RfOutput"
                },
                {
                  "$ref": "#/components/schemas/SdiOutput"
                },
                {
                  "$ref": "#/components/schemas/HttpStreamingOutput"
                },
                {
                  "$ref": "#/components/schemas/Smpte2110Output"
                },
                {
                  "$ref": "#/components/schemas/UnsyncedOutput"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ASI": "#/components/schemas/AsiOutput",
                  "HttpStreaming": "#/components/schemas/HttpStreamingOutput",
                  "RF": "#/components/schemas/RfOutput",
                  "SDI": "#/components/schemas/SdiOutput",
                  "SRTCaller": "#/components/schemas/SrtCallerOutput",
                  "SRTListener": "#/components/schemas/SrtListenerOutput",
                  "Smpte2110": "#/components/schemas/Smpte2110Output",
                  "UDP": "#/components/schemas/UdpOutput",
                  "Unsynced": "#/components/schemas/UnsyncedOutput"
                }
              },
              "x-discriminator-varnames": {
                "ASI": "ASI",
                "HttpStreaming": "HTTP Streaming",
                "RF": "RF",
                "SDI": "SDI",
                "SRTCaller": "SRT Caller",
                "SRTListener": "SRT Listener",
                "Smpte2110": "SMPTE 2110",
                "UDP": "UDP",
                "Unsynced": "Unsynced"
              }
            },
            "type": "array",
            "title": "Outputs",
            "default": [],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "clamp",
            "x-dyn-rule-cel": "self.type == \"Unsynced\" ? {} : self.type in [\"EncodingContribution\", \"EncodingDistribution\", \"ReceptionGateway\"] ? {\"allowedDiscriminators\": [\"ASI\", \"UDP\", \"SRTCaller\", \"SRTListener\", \"RF\"], \"channelType\": self.type} : self.type in [\"ReceptionDecoding\"] ? {\"allowedDiscriminators\": [\"SDI\", \"Smpte2110\"], \"channelType\": self.type} : self.type in [\"EncodingStreaming\"] ? {\"allowedDiscriminators\": [\"HttpStreaming\"], \"channelType\": self.type} : {}"
          }
        },
        "type": "object",
        "required": [
          "type"
        ],
        "title": "ChannelSpec"
      },
      "ChannelSpecPatch": {
        "properties": {
          "state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DesiredState"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ChannelSpecPatch"
      },
      "ChannelStatus": {
        "properties": {
          "state": {
            "$ref": "#/components/schemas/ActualState",
            "default": "Stopped"
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus",
            "default": {
              "severity": "Clear"
            }
          },
          "inputs": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SrtCallerInputStatus"
                },
                {
                  "$ref": "#/components/schemas/SrtListenerInputStatus"
                },
                {
                  "$ref": "#/components/schemas/UdpInputStatus"
                },
                {
                  "$ref": "#/components/schemas/SdiInputStatus"
                },
                {
                  "$ref": "#/components/schemas/Smpte2110InputStatus"
                },
                {
                  "$ref": "#/components/schemas/AsiInputStatus"
                },
                {
                  "$ref": "#/components/schemas/SatDemodInputStatus"
                },
                {
                  "$ref": "#/components/schemas/UnsyncedInputStatus"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ASI": "#/components/schemas/AsiInputStatus",
                  "SDI": "#/components/schemas/SdiInputStatus",
                  "SRTCaller": "#/components/schemas/SrtCallerInputStatus",
                  "SRTListener": "#/components/schemas/SrtListenerInputStatus",
                  "SatDemod": "#/components/schemas/SatDemodInputStatus",
                  "Smpte2110": "#/components/schemas/Smpte2110InputStatus",
                  "UDP": "#/components/schemas/UdpInputStatus",
                  "Unsynced": "#/components/schemas/UnsyncedInputStatus"
                }
              },
              "x-discriminator-varnames": {
                "ASI": "ASI",
                "SDI": "SDI",
                "SRTCaller": "SRT Caller",
                "SRTListener": "SRT Listener",
                "SatDemod": "Sat Demod",
                "Smpte2110": "SMPTE 2110",
                "UDP": "UDP",
                "Unsynced": "Unsynced"
              }
            },
            "type": "array",
            "title": "Inputs",
            "default": []
          },
          "outputs": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SrtCallerOutputStatus"
                },
                {
                  "$ref": "#/components/schemas/SrtListenerOutputStatus"
                },
                {
                  "$ref": "#/components/schemas/UdpOutputStatus"
                },
                {
                  "$ref": "#/components/schemas/AsiOutputStatus"
                },
                {
                  "$ref": "#/components/schemas/RfOutputStatus"
                },
                {
                  "$ref": "#/components/schemas/SdiOutputStatus"
                },
                {
                  "$ref": "#/components/schemas/Smpte2110OutputStatus"
                },
                {
                  "$ref": "#/components/schemas/HttpStreamingOutputStatus"
                },
                {
                  "$ref": "#/components/schemas/UnsyncedOutputStatus"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ASI": "#/components/schemas/AsiOutputStatus",
                  "HttpStreaming": "#/components/schemas/HttpStreamingOutputStatus",
                  "RF": "#/components/schemas/RfOutputStatus",
                  "SDI": "#/components/schemas/SdiOutputStatus",
                  "SRTCaller": "#/components/schemas/SrtCallerOutputStatus",
                  "SRTListener": "#/components/schemas/SrtListenerOutputStatus",
                  "Smpte2110": "#/components/schemas/Smpte2110OutputStatus",
                  "UDP": "#/components/schemas/UdpOutputStatus",
                  "Unsynced": "#/components/schemas/UnsyncedOutputStatus"
                }
              },
              "x-discriminator-varnames": {
                "ASI": "ASI",
                "HttpStreaming": "HTTP Streaming",
                "RF": "RF",
                "SDI": "SDI",
                "SRTCaller": "SRT Caller",
                "SRTListener": "SRT Listener",
                "Smpte2110": "SMPTE 2110",
                "UDP": "UDP",
                "Unsynced": "Unsynced"
              }
            },
            "type": "array",
            "title": "Outputs",
            "default": []
          },
          "syncState": {
            "$ref": "#/components/schemas/SyncState",
            "default": "Ok"
          },
          "syncError": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Syncerror",
            "default": []
          },
          "errors": {
            "items": {
              "$ref": "#/components/schemas/ErrorEntry"
            },
            "type": "array",
            "title": "Errors",
            "default": []
          },
          "unsyncedFields": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Unsyncedfields",
            "default": []
          }
        },
        "type": "object",
        "title": "ChannelStatus",
        "description": "Includes calculated fields such as thumbnailUrl."
      },
      "ChannelType": {
        "type": "string",
        "enum": [
          "EncodingContribution",
          "EncodingDistribution",
          "ReceptionDecoding",
          "ReceptionGateway",
          "EncodingStreaming"
        ],
        "title": "ChannelType",
        "x-enum-varnames": [
          "Encoding (Contribution)",
          "Encoding (Distribution)",
          "Reception (Decoding)",
          "Reception (Gateway)",
          "Encoding (Streaming)"
        ]
      },
      "CurrentMetricsData": {
        "properties": {
          "serverId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Serverid"
          },
          "cpuUtilizationPercent": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cpuutilizationpercent"
          },
          "temperatureCelsius": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Temperaturecelsius"
          },
          "uptimeSeconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uptimeseconds"
          }
        },
        "type": "object",
        "title": "CurrentMetricsData",
        "description": "Selectable fields for current metrics."
      },
      "CurrentMetricsResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CurrentMetricsData"
          },
          "collectedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Collectedat"
          }
        },
        "type": "object",
        "required": [
          "data",
          "collectedAt"
        ],
        "title": "CurrentMetricsResponse",
        "description": "Response for GET /metrics/current/."
      },
      "DecryptConfig": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/DecryptType",
            "default": "None"
          },
          "bissMode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BissMode"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "decrypt.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.type == \"BISS\" ? {\"x-required\": true} : {}"
          },
          "bissKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bisskey",
            "x-dyn-deps": [
              "decrypt.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.type == \"BISS\" ? {\"x-required\": true, \"pattern\": \"^[0-9A-Fa-f]{12}$|^[0-9A-Fa-f]{16}$|^[0-9A-Fa-f]{32}$|^[A-Za-z0-9+/]{33,512}={0,2}$|^\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*$\"} : {}"
          },
          "bissInjectedKeyId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bissinjectedkeyid",
            "x-dyn-deps": [
              "decrypt.type",
              "decrypt.bissMode"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.type == \"BISS\" ? (self.bissMode == \"ModeE\" ? {\"x-required\": true} : {}) : {}"
          },
          "camUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "pattern": "^cam://localhost/cam[1-9]\\d{0,3}$",
                "examples": [
                  "cam://localhost/cam1"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Camurl",
            "x-dyn-deps": [
              "decrypt.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.type == \"DVBCI\" ? {\"x-required\": true} : {}"
          }
        },
        "type": "object",
        "title": "DecryptConfig"
      },
      "DecryptType": {
        "type": "string",
        "enum": [
          "Unsynced",
          "None",
          "BISS",
          "BISSCA",
          "DVBCI"
        ],
        "title": "DecryptType",
        "x-enum-varnames": [
          "Unsynced",
          "None",
          "BISS",
          "BISS-CA",
          "DVB-CI"
        ]
      },
      "DelayMode": {
        "type": "string",
        "enum": [
          "Unsynced",
          "Standard",
          "Low",
          "SuperLow"
        ],
        "title": "DelayMode",
        "x-enum-varnames": [
          "Unsynced",
          "Standard",
          "Low",
          "Super Low"
        ]
      },
      "DesiredState": {
        "type": "string",
        "enum": [
          "Running",
          "Stopped"
        ],
        "title": "DesiredState",
        "x-enum-varnames": [
          "Running",
          "Stopped"
        ]
      },
      "DynamicRangeConversion": {
        "type": "string",
        "enum": [
          "Unsynced",
          "None",
          "BT709"
        ],
        "title": "DynamicRangeConversion",
        "x-enum-varnames": [
          "Unsynced",
          "None",
          "Convert to BT.709"
        ]
      },
      "EligibilityResource": {
        "properties": {
          "type": {
            "type": "string",
            "title": "Type"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "channel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channel"
          },
          "canUpgrade": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Canupgrade"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          }
        },
        "type": "object",
        "required": [
          "type",
          "id"
        ],
        "title": "EligibilityResource",
        "description": "A single existing resource on the box.\n\ntype        — \"service\" (comms registry), \"feed\" or \"savedConfiguration\" (ce1-controller)\nid          — the resource's id (comms serviceId, or ce1 channel/template id)\nchannel     — name of the channels-api channel this is already part of, else None\ncan_upgrade — whether this resource can be upgraded to a channel. None when it is\n              already managed by channels-api (not applicable); otherwise False for\n              now, expanded in later releases as upgrade paths are enabled.\nreason      — explanation of the can_upgrade verdict\n\nNone fields are omitted from the response (the route uses response_model_exclude_none)."
      },
      "EligibilityResponse": {
        "properties": {
          "canRun": {
            "type": "boolean",
            "title": "Canrun"
          },
          "deploymentState": {
            "type": "string",
            "title": "Deploymentstate"
          },
          "resources": {
            "items": {
              "$ref": "#/components/schemas/EligibilityResource"
            },
            "type": "array",
            "title": "Resources",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "canRun",
          "deploymentState"
        ],
        "title": "EligibilityResponse",
        "description": "Verdict for GET /deployment/eligibility/.\n\ncan_run answers \"can channels-api take over this box?\" — False if any listed\nresource cannot be upgraded (can_upgrade is False). Resources already owned by\nchannels-api (can_upgrade None) and any future upgradable resources don't block,\nso an empty list ⇒ True."
      },
      "EncodingConfig": {
        "properties": {
          "video": {
            "$ref": "#/components/schemas/VideoEncoding"
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/AudioEncoding"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "video"
        ],
        "title": "EncodingConfig"
      },
      "ErrorEntry": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code"
          },
          "transient": {
            "type": "boolean",
            "title": "Transient"
          },
          "showCode": {
            "type": "boolean",
            "title": "Showcode"
          },
          "userShort": {
            "type": "string",
            "maxLength": 40,
            "title": "Usershort"
          },
          "userMessage": {
            "type": "string",
            "maxLength": 512,
            "title": "Usermessage"
          },
          "detail": {
            "type": "string",
            "maxLength": 512,
            "title": "Detail"
          }
        },
        "type": "object",
        "required": [
          "code",
          "transient",
          "showCode",
          "userShort",
          "userMessage",
          "detail"
        ],
        "title": "ErrorEntry",
        "description": "A single sync/configure-time error. See error-policy.md for what governs every field\nhere — this model is the response-shape half of that policy; `services/failures.py`'s\n`FailureKind.render()` is what actually produces these dicts."
      },
      "Etr290Stats": {
        "properties": {
          "ccError": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ccerror"
          },
          "tsSyncLoss": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tssyncloss"
          },
          "syncByteError": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Syncbyteerror"
          },
          "transportError": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transporterror"
          },
          "pmtError": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pmterror"
          },
          "pidError": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Piderror"
          }
        },
        "type": "object",
        "title": "Etr290Stats"
      },
      "ExportPayload": {
        "properties": {
          "schemaVersion": {
            "type": "string",
            "title": "Schemaversion",
            "default": "1"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "exportedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Exportedat"
          },
          "sourceVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sourceversion"
          },
          "channels": {
            "items": {
              "$ref": "#/components/schemas/ExportedChannel"
            },
            "type": "array",
            "title": "Channels"
          }
        },
        "type": "object",
        "required": [
          "exportedAt",
          "channels"
        ],
        "title": "ExportPayload"
      },
      "ExportRequest": {
        "properties": {
          "channels": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channels"
          },
          "includeServices": {
            "type": "boolean",
            "title": "Includeservices",
            "default": true
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          }
        },
        "type": "object",
        "title": "ExportRequest"
      },
      "ExportedChannel": {
        "properties": {
          "kind": {
            "type": "string",
            "title": "Kind",
            "default": "BeamChannel"
          },
          "metadata": {
            "$ref": "#/components/schemas/ChannelMetadata"
          },
          "spec": {
            "$ref": "#/components/schemas/ChannelSpec"
          },
          "services": {
            "items": {
              "$ref": "#/components/schemas/ExportedService"
            },
            "type": "array",
            "title": "Services"
          }
        },
        "type": "object",
        "required": [
          "metadata",
          "spec"
        ],
        "title": "ExportedChannel"
      },
      "ExportedService": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "config": {
            "additionalProperties": true,
            "type": "object",
            "title": "Config"
          },
          "configVersion": {
            "type": "string",
            "title": "Configversion"
          }
        },
        "type": "object",
        "required": [
          "name",
          "type",
          "id",
          "config",
          "configVersion"
        ],
        "title": "ExportedService"
      },
      "FecStatus": {
        "type": "string",
        "enum": [
          "Disabled",
          "Enabled",
          "Invalid"
        ],
        "title": "FecStatus",
        "x-enum-varnames": [
          "Disabled",
          "Enabled",
          "Invalid"
        ]
      },
      "FrameRate": {
        "type": "string",
        "enum": [
          "Unsynced",
          "TrueMotion",
          "Standard",
          "Half",
          "Quarter",
          "Eighth"
        ],
        "title": "FrameRate",
        "x-enum-varnames": [
          "Unsynced",
          "True Motion (50/59.94)",
          "Standard (25/29.97)",
          "1/2",
          "1/4",
          "1/8"
        ]
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "HealthStatus": {
        "properties": {
          "severity": {
            "$ref": "#/components/schemas/Severity"
          }
        },
        "type": "object",
        "required": [
          "severity"
        ],
        "title": "HealthStatus"
      },
      "HttpStreamingEndpoint": {
        "properties": {
          "segmentationType": {
            "$ref": "#/components/schemas/SegmentationType"
          },
          "url": {
            "type": "string",
            "title": "Url"
          }
        },
        "type": "object",
        "required": [
          "segmentationType",
          "url"
        ],
        "title": "HttpStreamingEndpoint",
        "description": "One advertised playback URL for a HttpStreaming output."
      },
      "HttpStreamingOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "HttpStreaming",
            "title": "Type",
            "default": "HttpStreaming"
          }
        },
        "type": "object",
        "title": "HttpStreamingOutput"
      },
      "HttpStreamingOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "HttpStreaming",
            "title": "Type",
            "default": "HttpStreaming"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HttpStreamingOutputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputHttpStreamingPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "HttpStreamingOutputStatus"
      },
      "HttpStreamingOutputTransportStatus": {
        "properties": {
          "endpoints": {
            "items": {
              "$ref": "#/components/schemas/HttpStreamingEndpoint"
            },
            "type": "array",
            "title": "Endpoints",
            "default": []
          }
        },
        "type": "object",
        "title": "HttpStreamingOutputTransportStatus"
      },
      "ImportCodeResponse": {
        "properties": {
          "importCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Importcode"
          }
        },
        "type": "object",
        "title": "ImportCodeResponse",
        "description": "Response for GET /biss/import-code."
      },
      "ImportMode": {
        "type": "string",
        "enum": [
          "merge",
          "replace"
        ],
        "title": "ImportMode"
      },
      "ImportRequest": {
        "properties": {
          "payload": {
            "$ref": "#/components/schemas/ExportPayload"
          },
          "mode": {
            "$ref": "#/components/schemas/ImportMode",
            "default": "merge"
          },
          "state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DesiredState"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "payload"
        ],
        "title": "ImportRequest"
      },
      "ImportResult": {
        "properties": {
          "imported": {
            "items": {
              "$ref": "#/components/schemas/ImportedChannelResult"
            },
            "type": "array",
            "title": "Imported"
          },
          "deleted": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Deleted"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Errors"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Warnings"
          }
        },
        "type": "object",
        "title": "ImportResult"
      },
      "ImportedChannelResult": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "sourceName": {
            "type": "string",
            "title": "Sourcename"
          },
          "displayName": {
            "type": "string",
            "title": "Displayname"
          },
          "status": {
            "type": "string",
            "enum": [
              "accepted",
              "skipped",
              "rejected"
            ],
            "title": "Status"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          }
        },
        "type": "object",
        "required": [
          "name",
          "sourceName",
          "displayName",
          "status"
        ],
        "title": "ImportedChannelResult"
      },
      "InjectedIdCreate": {
        "properties": {
          "description": {
            "type": "string",
            "maxLength": 255,
            "title": "Description"
          },
          "encryptedInjectedId": {
            "type": "string",
            "maxLength": 512,
            "title": "Encryptedinjectedid"
          },
          "version": {
            "type": "string",
            "title": "Version",
            "default": "3"
          }
        },
        "type": "object",
        "required": [
          "description",
          "encryptedInjectedId"
        ],
        "title": "InjectedIdCreate",
        "description": "Request body for POST /biss/injected-ids.\n\n`encryptedInjectedId` must already be encrypted client-side (mirroring\nCP's own Advanced UI) — channels-api never sees the plain value."
      },
      "InjectedIdEntry": {
        "properties": {
          "bkid": {
            "type": "string",
            "title": "Bkid"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "creationDate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Creationdate"
          }
        },
        "type": "object",
        "required": [
          "bkid"
        ],
        "title": "InjectedIdEntry",
        "description": "A single BISS Injected ID stored on the appliance."
      },
      "InjectedIdsResponse": {
        "properties": {
          "value": {
            "items": {
              "$ref": "#/components/schemas/InjectedIdEntry"
            },
            "type": "array",
            "title": "Value"
          }
        },
        "type": "object",
        "required": [
          "value"
        ],
        "title": "InjectedIdsResponse",
        "description": "Response for GET /biss/injected-ids."
      },
      "InputElementaryStream": {
        "properties": {
          "pid": {
            "type": "integer",
            "title": "Pid"
          },
          "streamType": {
            "type": "integer",
            "title": "Streamtype"
          },
          "type": {
            "type": "string",
            "title": "Type"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          }
        },
        "type": "object",
        "required": [
          "pid",
          "streamType",
          "type"
        ],
        "title": "InputElementaryStream"
      },
      "InputMptsPayloadStatus": {
        "properties": {
          "videoStandard": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Videostandard"
          },
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputPayloadVideo"
              },
              {
                "type": "null"
              }
            ]
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/InputPayloadAudio"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          },
          "services": {
            "items": {
              "$ref": "#/components/schemas/InputService"
            },
            "type": "array",
            "title": "Services",
            "default": []
          }
        },
        "type": "object",
        "title": "InputMptsPayloadStatus",
        "description": "Input payload for MPTS transports. Adds MPTS programme/PID table."
      },
      "InputPayloadAudio": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "pid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pid"
          },
          "codec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioCodecStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codec"
          },
          "channelCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channelcount"
          },
          "channelMode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioModeStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channelmode"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "samplingRate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Samplingrate"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          }
        },
        "type": "object",
        "title": "InputPayloadAudio"
      },
      "InputPayloadStatus": {
        "properties": {
          "videoStandard": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Videostandard"
          },
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputPayloadVideo"
              },
              {
                "type": "null"
              }
            ]
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/InputPayloadAudio"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "title": "InputPayloadStatus",
        "description": "Base input payload. Applies to SDI and SMPTE 2110 (no MPTS layer)."
      },
      "InputPayloadVideo": {
        "properties": {
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          },
          "resolution": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolution"
          },
          "frameRate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Framerate"
          },
          "interlaced": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interlaced"
          },
          "codec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VideoCodecStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codec"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "chromaFormat": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chromaformat"
          },
          "bitDepth": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitdepth"
          },
          "aspectRatio": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aspectratio"
          },
          "quality": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quality"
          }
        },
        "type": "object",
        "title": "InputPayloadVideo"
      },
      "InputService": {
        "properties": {
          "programNumber": {
            "type": "integer",
            "title": "Programnumber"
          },
          "serviceName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Servicename"
          },
          "providerName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Providername"
          },
          "selected": {
            "type": "boolean",
            "title": "Selected",
            "default": false
          },
          "pmtPid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pmtpid"
          },
          "pcrPid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pcrpid"
          },
          "elementaryStreams": {
            "items": {
              "$ref": "#/components/schemas/InputElementaryStream"
            },
            "type": "array",
            "title": "Elementarystreams",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "programNumber"
        ],
        "title": "InputService"
      },
      "InputTransportFec": {
        "properties": {
          "status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FecStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "correctedPackets": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Correctedpackets"
          },
          "unrecoveredPackets": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unrecoveredpackets"
          }
        },
        "type": "object",
        "title": "InputTransportFec"
      },
      "InterfacesResponse": {
        "properties": {
          "ip": {
            "items": {
              "$ref": "#/components/schemas/IpInterface"
            },
            "type": "array",
            "title": "Ip",
            "default": []
          },
          "sdi": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/SdiSlotPortInterface"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "SDIASI": "#/components/schemas/SdiSlotPortInterface"
                }
              }
            },
            "type": "array",
            "title": "Sdi",
            "default": []
          },
          "asi": {
            "items": {
              "$ref": "#/components/schemas/SlotPortInterface"
            },
            "type": "array",
            "title": "Asi",
            "default": []
          },
          "rf_demod": {
            "items": {
              "$ref": "#/components/schemas/SlotPortInterface"
            },
            "type": "array",
            "title": "Rf Demod",
            "default": []
          },
          "rf_modulator": {
            "items": {
              "$ref": "#/components/schemas/RfModulatorInterface"
            },
            "type": "array",
            "title": "Rf Modulator",
            "default": []
          },
          "cam": {
            "items": {
              "$ref": "#/components/schemas/CamSlotInterface"
            },
            "type": "array",
            "title": "Cam",
            "default": []
          },
          "st2110": {
            "items": {
              "$ref": "#/components/schemas/IpInterface"
            },
            "type": "array",
            "title": "St2110",
            "default": []
          }
        },
        "type": "object",
        "title": "InterfacesResponse"
      },
      "IpInterface": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "type": "string",
            "title": "Type",
            "default": "IP"
          },
          "ipAddresses": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Ipaddresses"
          },
          "displayName": {
            "type": "string",
            "title": "Displayname",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "name",
          "ipAddresses",
          "displayName"
        ],
        "title": "IpInterface"
      },
      "LnbVoltage": {
        "type": "string",
        "enum": [
          "Unsynced",
          "Off",
          "13V",
          "18V"
        ],
        "title": "LnbVoltage",
        "x-enum-varnames": [
          "Unsynced",
          "Off",
          "13V",
          "18V"
        ]
      },
      "MeResponse": {
        "properties": {
          "user": {
            "type": "string",
            "title": "User"
          },
          "groups": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Groups"
          },
          "permissions": {
            "additionalProperties": {
              "type": "boolean"
            },
            "type": "object",
            "title": "Permissions"
          }
        },
        "type": "object",
        "required": [
          "user",
          "groups",
          "permissions"
        ],
        "title": "MeResponse"
      },
      "MptsAudioConfig": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "mode": {
            "$ref": "#/components/schemas/MptsAudioMode"
          },
          "pid": {
            "type": "string",
            "pattern": "^(Auto|[1-9]\\d*)$",
            "title": "Pid"
          }
        },
        "type": "object",
        "required": [
          "name",
          "mode",
          "pid"
        ],
        "title": "MptsAudioConfig"
      },
      "MptsAudioMode": {
        "type": "string",
        "enum": [
          "stereo",
          "16",
          "5.1",
          "passthrough"
        ],
        "title": "MptsAudioMode",
        "x-enum-varnames": [
          "stereo",
          "16",
          "5.1",
          "passthrough"
        ]
      },
      "MptsPayload": {
        "properties": {
          "programNumber": {
            "type": "string",
            "pattern": "^(Auto|[1-9]\\d*)$",
            "title": "Programnumber",
            "default": "Auto",
            "x-options-source": "status.inputs[0].payload.services",
            "x-options-value": "programNumber"
          },
          "delayMode": {
            "$ref": "#/components/schemas/DelayMode",
            "default": "Standard"
          },
          "video": {
            "$ref": "#/components/schemas/MptsVideoConfig"
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/MptsAudioConfig"
            },
            "type": "array",
            "maxItems": 8,
            "title": "Audios",
            "default": []
          },
          "audioAutoSelect": {
            "type": "boolean",
            "title": "Audioautoselect"
          },
          "resolutionMode": {
            "$ref": "#/components/schemas/ReceiverInputResolution"
          }
        },
        "type": "object",
        "required": [
          "programNumber",
          "video",
          "audioAutoSelect",
          "resolutionMode"
        ],
        "title": "MptsPayload"
      },
      "MptsVideoConfig": {
        "properties": {
          "pid": {
            "type": "string",
            "pattern": "^(Auto|[1-9]\\d*)$",
            "title": "Pid"
          }
        },
        "type": "object",
        "required": [
          "pid"
        ],
        "title": "MptsVideoConfig"
      },
      "MultiplexingConfig": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": false
          }
        },
        "type": "object",
        "title": "MultiplexingConfig"
      },
      "ODataPage_Channel_": {
        "properties": {
          "value": {
            "items": {
              "$ref": "#/components/schemas/Channel"
            },
            "type": "array",
            "title": "Value"
          },
          "@odata.nextLink": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "@Odata.Nextlink"
          },
          "supplemental": {
            "$ref": "#/components/schemas/ChannelListSupplemental"
          }
        },
        "type": "object",
        "required": [
          "value",
          "supplemental"
        ],
        "title": "ODataPage[Channel]"
      },
      "OutputAudioPayload": {
        "properties": {
          "pid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pid"
          },
          "codec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioCodecStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codec"
          },
          "mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioModeStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mode"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "channelCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channelcount"
          }
        },
        "type": "object",
        "title": "OutputAudioPayload",
        "description": "Audio payload status from statistics-api."
      },
      "OutputHttpStreamingPayloadStatus": {
        "properties": {
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputVideoPayload"
              },
              {
                "type": "null"
              }
            ]
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/OutputAudioPayload"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          },
          "representations": {
            "items": {
              "$ref": "#/components/schemas/OutputRepresentationPayload"
            },
            "type": "array",
            "title": "Representations",
            "default": []
          }
        },
        "type": "object",
        "title": "OutputHttpStreamingPayloadStatus",
        "description": "HTTP streaming output payload. Adds ABR representation ladder."
      },
      "OutputPayloadStatus": {
        "properties": {
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputVideoPayload"
              },
              {
                "type": "null"
              }
            ]
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/OutputAudioPayload"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "title": "OutputPayloadStatus",
        "description": "Single-service output payload. Applies to SRT, UDP, ASI, RF, SDI, SMPTE 2110."
      },
      "OutputProcessing": {
        "properties": {
          "videoScaling": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VideoScaling"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.inputs"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.inputs.exists(inp, \"payload\" in inp && !(inp.payload == null) && inp.payload.resolutionMode in [\"UHD\"]) ? {\"x-omit\": true} : {}"
          },
          "dynamicRangeConversion": {
            "$ref": "#/components/schemas/DynamicRangeConversion",
            "default": "None"
          }
        },
        "type": "object",
        "title": "OutputProcessing"
      },
      "OutputRepresentationPayload": {
        "properties": {
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputVideoPayload"
              },
              {
                "type": "null"
              }
            ]
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/OutputAudioPayload"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "title": "OutputRepresentationPayload",
        "description": "Single ABR rendition: one video encode paired with shared audio streams."
      },
      "OutputVideoFormatStatus": {
        "properties": {
          "videoFormat": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Videoformat"
          },
          "frameRate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Framerate"
          }
        },
        "type": "object",
        "title": "OutputVideoFormatStatus",
        "description": "Live decoded video characteristics for a Reception Decoding SDI/ST2110\noutput. ``videoFormat`` combines resolution and scan type into a single\nbroadcast-style string (e.g. \"720x576i\") rather than exposing width/\nheight/interlaced separately."
      },
      "OutputVideoPayload": {
        "properties": {
          "pid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pid"
          },
          "resolution": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolution"
          },
          "frameRate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Framerate"
          },
          "interlaced": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interlaced"
          },
          "codec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VideoCodecStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codec"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "bitDepth": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitdepth"
          },
          "chromaFormat": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chromaformat"
          }
        },
        "type": "object",
        "title": "OutputVideoPayload",
        "description": "Video payload status from statistics-api."
      },
      "PacketTime": {
        "type": "string",
        "enum": [
          "PT_1ms",
          "PT_125us"
        ],
        "title": "PacketTime",
        "x-enum-varnames": [
          "PT_1ms",
          "PT_125us"
        ]
      },
      "Pagination": {
        "properties": {
          "start": {
            "type": "integer",
            "title": "Start"
          },
          "end": {
            "type": "integer",
            "title": "End"
          },
          "records": {
            "type": "integer",
            "title": "Records"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          }
        },
        "type": "object",
        "required": [
          "start",
          "end",
          "records",
          "total"
        ],
        "title": "Pagination"
      },
      "PrometheusMatrixData": {
        "properties": {
          "resultType": {
            "type": "string",
            "title": "Resulttype",
            "default": "matrix"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/PrometheusMatrixResult"
            },
            "type": "array",
            "title": "Result"
          }
        },
        "type": "object",
        "required": [
          "result"
        ],
        "title": "PrometheusMatrixData",
        "description": "Data section of a matrix response."
      },
      "PrometheusMatrixResult": {
        "properties": {
          "metric": {
            "$ref": "#/components/schemas/PrometheusMetricLabels"
          },
          "values": {
            "items": {
              "prefixItems": [
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ],
              "type": "array",
              "maxItems": 2,
              "minItems": 2
            },
            "type": "array",
            "title": "Values",
            "description": "Array of [unix_timestamp, value_string] pairs"
          }
        },
        "type": "object",
        "required": [
          "metric",
          "values"
        ],
        "title": "PrometheusMatrixResult",
        "description": "Single result in a matrix response."
      },
      "PrometheusMetricLabels": {
        "properties": {
          "serverID": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Serverid"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "job": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Job"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "PrometheusMetricLabels",
        "description": "Metric labels from Prometheus. Allows arbitrary labels."
      },
      "PrometheusRangeResponse": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "description": "'success' or 'error'"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PrometheusMatrixData"
              },
              {
                "type": "null"
              }
            ]
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Error message if status is 'error'"
          },
          "errorType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Errortype"
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "PrometheusRangeResponse",
        "description": "Response from Prometheus query_range API."
      },
      "ReceiverInputResolution": {
        "type": "string",
        "enum": [
          "UHD",
          "HDSD"
        ],
        "title": "ReceiverInputResolution",
        "x-enum-varnames": [
          "UHD",
          "HDSD"
        ]
      },
      "Representation": {
        "properties": {
          "video": {
            "$ref": "#/components/schemas/VideoEncoding"
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/AudioEncoding"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "video"
        ],
        "title": "Representation"
      },
      "RfModulatorInterface": {
        "properties": {
          "type": {
            "type": "string",
            "const": "RF_MODULATOR",
            "title": "Type",
            "default": "RF_MODULATOR"
          }
        },
        "type": "object",
        "title": "RfModulatorInterface",
        "description": "RF output always routes to the modulator — there's never a choice of\ninterface, so an entry carries no identity, only presence. There is at\nmost one entry in the list, regardless of what hardware reports."
      },
      "RfOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "RF",
            "title": "Type",
            "default": "RF"
          }
        },
        "type": "object",
        "title": "RfOutput"
      },
      "RfOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "RF",
            "title": "Type",
            "default": "RF"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RfOutputTransport"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "RfOutputStatus"
      },
      "RfOutputTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^satmod://",
            "title": "Url",
            "examples": [
              "satmod://localhost/sat0"
            ]
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "RfOutputTransport"
      },
      "SDIUHDLinkMode": {
        "type": "string",
        "enum": [
          "Quadrant",
          "Interleaved",
          "12GSDI"
        ],
        "title": "SDIUHDLinkMode",
        "x-enum-varnames": [
          "Quadrant",
          "Interleaved",
          "12G SDI Port"
        ]
      },
      "SatDemodInput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "SatDemod",
            "title": "Type",
            "default": "SatDemod"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/SatDemodTransport"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MptsPayload"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type in [\"ReceptionDecoding\"] ? {\"x-required\": true} : {}"
          },
          "decrypt": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DecryptConfig"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "transport"
        ],
        "title": "SatDemodInput"
      },
      "SatDemodInputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputMptsPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "SatDemod",
            "title": "Type",
            "default": "SatDemod"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SatDemodInputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "SatDemodInputStatus"
      },
      "SatDemodInputTransportStatus": {
        "properties": {
          "receiving": {
            "type": "boolean",
            "title": "Receiving"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "ber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ber"
          },
          "cnMargin": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cnmargin"
          },
          "fecErrors": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fecerrors"
          },
          "fecRate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fecrate"
          },
          "inversion": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Inversion"
          },
          "modulation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Modulation"
          },
          "pilot": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pilot"
          },
          "rollOff": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rolloff"
          },
          "signalStrength": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Signalstrength"
          },
          "deliverySystem": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliverysystem"
          },
          "ccError": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ccerror"
          }
        },
        "type": "object",
        "required": [
          "receiving"
        ],
        "title": "SatDemodInputTransportStatus"
      },
      "SatDemodTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^rfdemod://",
            "title": "Url",
            "examples": [
              "rfdemod://localhost/slot_1_port_1"
            ]
          },
          "lnbVoltage": {
            "$ref": "#/components/schemas/LnbVoltage",
            "default": "Off"
          },
          "lnbToneEnabled": {
            "type": "boolean",
            "title": "Lnbtoneenabled",
            "default": false
          },
          "tunerSymbolRateSps": {
            "type": "integer",
            "maximum": 95000000.0,
            "minimum": 0.0,
            "title": "Tunersymbolratesps"
          },
          "tunerSearchRangeHz": {
            "type": "integer",
            "maximum": 10000000.0,
            "minimum": 2000000.0,
            "title": "Tunersearchrangehz",
            "default": 2000000
          },
          "tunerMISEnabled": {
            "type": "boolean",
            "title": "Tunermisenabled",
            "default": false
          },
          "tunerGoldCode": {
            "type": "integer",
            "maximum": 262142.0,
            "minimum": 0.0,
            "title": "Tunergoldcode",
            "default": 0
          },
          "lnbFrequencyHz": {
            "type": "integer",
            "maximum": 18000000000.0,
            "minimum": 0.0,
            "title": "Lnbfrequencyhz",
            "x-dyn-deps": [
              "spec.inputs.transport.tunerFrequencyHz"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "(self.tunerFrequencyHz - self.lnbFrequencyHz >= 950000000 && self.tunerFrequencyHz - self.lnbFrequencyHz <= 2150000000) ? {} : (self.lnbFrequencyHz - self.tunerFrequencyHz >= 950000000 && self.lnbFrequencyHz - self.tunerFrequencyHz <= 2150000000) ? {} : {\"error\": \"The difference between LNB frequency and Tuner frequency must be in the range 950-2150MHz\"}"
          },
          "tunerFrequencyHz": {
            "type": "integer",
            "maximum": 18000000000.0,
            "minimum": 0.0,
            "title": "Tunerfrequencyhz",
            "x-dyn-deps": [
              "spec.inputs.transport.lnbFrequencyHz"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "(self.tunerFrequencyHz - self.lnbFrequencyHz >= 950000000 && self.tunerFrequencyHz - self.lnbFrequencyHz <= 2150000000) ? {} : (self.lnbFrequencyHz - self.tunerFrequencyHz >= 950000000 && self.lnbFrequencyHz - self.tunerFrequencyHz <= 2150000000) ? {} : {\"error\": \"The difference between LNB frequency and Tuner frequency must be in the range 950-2150MHz\"}"
          },
          "tunerMISStreamId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tunermisstreamid",
            "x-dyn-deps": [
              "spec.inputs.transport.tunerMISEnabled"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.tunerMISEnabled == true ? {\"x-required\": true} : {}"
          }
        },
        "type": "object",
        "required": [
          "url",
          "tunerSymbolRateSps",
          "lnbFrequencyHz",
          "tunerFrequencyHz"
        ],
        "title": "SatDemodTransport"
      },
      "SdiAudioEmbedding": {
        "type": "string",
        "enum": [
          "Unsynced",
          "G1P1",
          "G1P2",
          "G2P1",
          "G2P2",
          "G3P1",
          "G3P2",
          "G4P1",
          "G4P2",
          "G1P1ToG2P1",
          "G1P2ToG2P2",
          "G2P1ToG3P1",
          "G2P2ToG3P2",
          "G3P1ToG4P1",
          "G3P2ToG4P2",
          "G1P1ToG4P2"
        ],
        "title": "SdiAudioEmbedding",
        "x-enum-varnames": [
          "Unsynced",
          "Group 1 Pair 1",
          "Group 1 Pair 2",
          "Group 2 Pair 1",
          "Group 2 Pair 2",
          "Group 3 Pair 1",
          "Group 3 Pair 2",
          "Group 4 Pair 1",
          "Group 4 Pair 2",
          "Group 1 Pair 1 to Group 2 Pair 1",
          "Group 1 Pair 2 to Group 2 Pair 2",
          "Group 2 Pair 1 to Group 3 Pair 1",
          "Group 2 Pair 2 to Group 3 Pair 2",
          "Group 3 Pair 1 to Group 4 Pair 1",
          "Group 3 Pair 2 to Group 4 Pair 2",
          "Group 1 Pair 1 to Group 4 Pair 2"
        ]
      },
      "SdiAudioInput": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "aggregation": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SdiNoAggregation"
              }
            ],
            "title": "Aggregation",
            "default": {
              "type": "None",
              "pair": "G1P1"
            },
            "discriminator": {
              "propertyName": "type",
              "mapping": {
                "None": "#/components/schemas/SdiNoAggregation"
              }
            },
            "x-discriminator-varnames": {
              "None": "None"
            }
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "SdiAudioInput"
      },
      "SdiAudioPair": {
        "type": "string",
        "enum": [
          "Unsynced",
          "G1P1",
          "G1P2",
          "G2P1",
          "G2P2",
          "G3P1",
          "G3P2",
          "G4P1",
          "G4P2"
        ],
        "title": "SdiAudioPair",
        "x-enum-varnames": [
          "Unsynced",
          "G1P1",
          "G1P2",
          "G2P1",
          "G2P2",
          "G3P1",
          "G3P2",
          "G4P1",
          "G4P2"
        ]
      },
      "SdiCaps": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SdiInterfaceType"
          }
        },
        "type": "object",
        "required": [
          "type"
        ],
        "title": "SdiCaps"
      },
      "SdiInput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "SDI",
            "title": "Type",
            "default": "SDI"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/SdiInputTransport"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SdiPayload"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "transport"
        ],
        "title": "SdiInput"
      },
      "SdiInputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "SDI",
            "title": "Type",
            "default": "SDI"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SdiInputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "SdiInputStatus"
      },
      "SdiInputTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^sdi://",
            "title": "Url",
            "examples": [
              "sdi://localhost/slot_0_port_1"
            ]
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "SdiInputTransport"
      },
      "SdiInputTransportStatus": {
        "properties": {
          "receiving": {
            "type": "boolean",
            "title": "Receiving"
          }
        },
        "type": "object",
        "required": [
          "receiving"
        ],
        "title": "SdiInputTransportStatus"
      },
      "SdiInterfaceType": {
        "type": "string",
        "enum": [
          "3G",
          "12G",
          "Unknown"
        ],
        "title": "SdiInterfaceType"
      },
      "SdiNoAggregation": {
        "properties": {
          "type": {
            "type": "string",
            "const": "None",
            "title": "Type",
            "default": "None"
          },
          "pair": {
            "$ref": "#/components/schemas/SdiAudioPair",
            "default": "G1P1"
          }
        },
        "type": "object",
        "required": [
          "pair"
        ],
        "title": "SdiNoAggregation"
      },
      "SdiOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "SDI",
            "title": "Type",
            "default": "SDI"
          },
          "transport": {
            "$ref": "#/components/schemas/SdiOutputTransport"
          },
          "processing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputProcessing"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SdiOutputPayload"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "transport"
        ],
        "title": "SdiOutput"
      },
      "SdiOutputAudioConfig": {
        "properties": {
          "inputName": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Inputname"
          },
          "audioInputName": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Audioinputname"
          },
          "embedding": {
            "$ref": "#/components/schemas/SdiAudioEmbedding"
          }
        },
        "type": "object",
        "required": [
          "inputName",
          "audioInputName",
          "embedding"
        ],
        "title": "SdiOutputAudioConfig"
      },
      "SdiOutputAudioStatus": {
        "properties": {
          "inputName": {
            "type": "string",
            "title": "Inputname"
          },
          "audioInputName": {
            "type": "string",
            "title": "Audioinputname"
          },
          "embedding": {
            "$ref": "#/components/schemas/SdiAudioEmbedding"
          },
          "mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioModeStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mode"
          }
        },
        "type": "object",
        "required": [
          "inputName",
          "audioInputName",
          "embedding"
        ],
        "title": "SdiOutputAudioStatus"
      },
      "SdiOutputPayload": {
        "properties": {
          "audios": {
            "items": {
              "$ref": "#/components/schemas/SdiOutputAudioConfig"
            },
            "type": "array",
            "title": "Audios",
            "default": [],
            "x-dyn-deps": [
              "self.audios",
              "spec.inputs"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.audios.exists(a, self.audios.exists(b, a.audioInputName != b.audioInputName && b.embedding in {\"G1P1\": [\"G1P1\", \"G1P1ToG2P1\", \"G1P1ToG4P2\"], \"G1P2\": [\"G1P2\", \"G1P1ToG2P1\", \"G1P2ToG2P2\", \"G1P1ToG4P2\"], \"G2P1\": [\"G2P1\", \"G1P1ToG2P1\", \"G1P2ToG2P2\", \"G2P1ToG3P1\", \"G1P1ToG4P2\"], \"G2P2\": [\"G2P2\", \"G1P2ToG2P2\", \"G2P1ToG3P1\", \"G2P2ToG3P2\", \"G1P1ToG4P2\"], \"G3P1\": [\"G3P1\", \"G2P1ToG3P1\", \"G2P2ToG3P2\", \"G3P1ToG4P1\", \"G1P1ToG4P2\"], \"G3P2\": [\"G3P2\", \"G2P2ToG3P2\", \"G3P1ToG4P1\", \"G3P2ToG4P2\", \"G1P1ToG4P2\"], \"G4P1\": [\"G4P1\", \"G3P1ToG4P1\", \"G3P2ToG4P2\", \"G1P1ToG4P2\"], \"G4P2\": [\"G4P2\", \"G3P2ToG4P2\", \"G1P1ToG4P2\"], \"G1P1ToG2P1\": [\"G1P1\", \"G1P2\", \"G2P1\", \"G1P1ToG2P1\", \"G1P2ToG2P2\", \"G2P1ToG3P1\", \"G1P1ToG4P2\"], \"G1P2ToG2P2\": [\"G1P2\", \"G2P1\", \"G2P2\", \"G1P1ToG2P1\", \"G1P2ToG2P2\", \"G2P1ToG3P1\", \"G2P2ToG3P2\", \"G1P1ToG4P2\"], \"G2P1ToG3P1\": [\"G2P1\", \"G2P2\", \"G3P1\", \"G1P1ToG2P1\", \"G1P2ToG2P2\", \"G2P1ToG3P1\", \"G2P2ToG3P2\", \"G3P1ToG4P1\", \"G1P1ToG4P2\"], \"G2P2ToG3P2\": [\"G2P2\", \"G3P1\", \"G3P2\", \"G1P2ToG2P2\", \"G2P1ToG3P1\", \"G2P2ToG3P2\", \"G3P1ToG4P1\", \"G3P2ToG4P2\", \"G1P1ToG4P2\"], \"G3P1ToG4P1\": [\"G3P1\", \"G3P2\", \"G4P1\", \"G2P1ToG3P1\", \"G2P2ToG3P2\", \"G3P1ToG4P1\", \"G3P2ToG4P2\", \"G1P1ToG4P2\"], \"G3P2ToG4P2\": [\"G3P2\", \"G4P1\", \"G4P2\", \"G2P2ToG3P2\", \"G3P1ToG4P1\", \"G3P2ToG4P2\", \"G1P1ToG4P2\"], \"G1P1ToG4P2\": [\"G1P1\", \"G1P2\", \"G2P1\", \"G2P2\", \"G3P1\", \"G3P2\", \"G4P1\", \"G4P2\", \"G1P1ToG2P1\", \"G1P2ToG2P2\", \"G2P1ToG3P1\", \"G2P2ToG3P2\", \"G3P1ToG4P1\", \"G3P2ToG4P2\", \"G1P1ToG4P2\"]}[a.embedding])) ? {\"error\": \"overlapping SDI audio embeddings\"} : (self.audios.all(a,  spec.inputs.exists(inp,    inp.name == a.inputName &&    \"payload\" in inp &&    \"audios\" in inp.payload &&    inp.payload.audios.exists(ia, ia.name == a.audioInputName)  )) ? {} : {\"error\": \"SDI output audio references an unknown input audio\"})"
          }
        },
        "type": "object",
        "title": "SdiOutputPayload"
      },
      "SdiOutputPayloadStatus": {
        "properties": {
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputVideoFormatStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/SdiOutputAudioStatus"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "title": "SdiOutputPayloadStatus"
      },
      "SdiOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "SDI",
            "title": "Type",
            "default": "SDI"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SdiOutputTransport"
              },
              {
                "type": "null"
              }
            ]
          },
          "processing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputProcessing"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SdiOutputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "SdiOutputStatus"
      },
      "SdiOutputTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^sdi://",
            "title": "Url",
            "examples": [
              "sdi://localhost/slot_0_port_1"
            ]
          },
          "linkMode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SDIUHDLinkMode"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.inputs"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.inputs.exists(inp, \"payload\" in inp && !(inp.payload == null) && inp.payload.resolutionMode in [\"HDSD\"]) ? {\"x-omit\": true} : {\"x-required\": true}"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "SdiOutputTransport"
      },
      "SdiPayload": {
        "properties": {
          "audios": {
            "items": {
              "$ref": "#/components/schemas/SdiAudioInput"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "title": "SdiPayload"
      },
      "SdiSlotPortInterface": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "type": "string",
            "const": "SDIASI",
            "title": "Type",
            "default": "SDIASI"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "caps": {
            "$ref": "#/components/schemas/SdiCaps"
          },
          "displayName": {
            "type": "string",
            "title": "Displayname",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "name",
          "url",
          "caps",
          "displayName"
        ],
        "title": "SdiSlotPortInterface",
        "description": "A SDI port carries a real per-port capability class (3G/12G/Unknown),\nunlike ASI/RF-demod ports whose type is just a fixed category tag.\ntype stays \"SDIASI\" (unchanged wire value) — InterfacesResponse.sdi's\nfield type is what scopes this to SDI, not a distinct type literal."
      },
      "SegmentationType": {
        "type": "string",
        "enum": [
          "HLSTS",
          "HLSfMP4",
          "DASHfMP4"
        ],
        "title": "SegmentationType",
        "description": "Packaging format advertised on a HttpStreaming output endpoint.\n\nDerived from the packager catalog output type (hls|cmaf) + manifestType (hls|dash):\ncmaf+hls -> HLSfMP4, cmaf+dash -> DASHfMP4, hls -> HLSTS (HLS-TS not yet emitted).",
        "x-enum-varnames": [
          "HLSTS",
          "HLSfMP4",
          "DASHfMP4"
        ]
      },
      "Severity": {
        "type": "string",
        "enum": [
          "Critical",
          "Major",
          "Minor",
          "Notice",
          "Ignore",
          "Clear"
        ],
        "title": "Severity",
        "x-enum-varnames": [
          "Critical",
          "Major",
          "Minor",
          "Notice",
          "Ignore",
          "Clear"
        ]
      },
      "SlotPortInterface": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "$ref": "#/components/schemas/SlotPortInterfaceType"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "displayName": {
            "type": "string",
            "title": "Displayname",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "name",
          "type",
          "url",
          "displayName"
        ],
        "title": "SlotPortInterface"
      },
      "SlotPortInterfaceType": {
        "type": "string",
        "enum": [
          "SDIASI",
          "RF_DEMOD",
          "CAM"
        ],
        "title": "SlotPortInterfaceType"
      },
      "Smpte2110AudioEssence": {
        "properties": {
          "essenceType": {
            "type": "string",
            "enum": [
              "AudioPCM",
              "AudioAES3"
            ],
            "title": "Essencetype",
            "default": "AudioPCM"
          },
          "transportName": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Transportname"
          },
          "packetTime": {
            "$ref": "#/components/schemas/PacketTime",
            "default": "PT_1ms"
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/Smpte2110OutputAudio"
            },
            "type": "array",
            "maxItems": 32,
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "transportName"
        ],
        "title": "Smpte2110AudioEssence"
      },
      "Smpte2110AudioEssenceStatus": {
        "properties": {
          "essenceType": {
            "type": "string",
            "enum": [
              "AudioPCM",
              "AudioAES3"
            ],
            "title": "Essencetype",
            "default": "AudioPCM"
          },
          "transportName": {
            "type": "string",
            "title": "Transportname"
          },
          "type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          },
          "packetTime": {
            "$ref": "#/components/schemas/PacketTime",
            "default": "PT_1ms"
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/Smpte2110OutputAudioStatus"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          },
          "sdpUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sdpurl"
          }
        },
        "type": "object",
        "required": [
          "transportName"
        ],
        "title": "Smpte2110AudioEssenceStatus"
      },
      "Smpte2110AudioInputEssence": {
        "properties": {
          "type": {
            "type": "string",
            "const": "audio",
            "title": "Type",
            "default": "audio"
          },
          "transportFile": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TransportFile"
              },
              {
                "type": "null"
              }
            ]
          },
          "sdpUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ],
            "title": "Sdpurl"
          },
          "streamIndex": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Streamindex",
            "default": 1
          },
          "channelGroupIndex": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Channelgroupindex",
            "default": 1
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "type": "object",
        "title": "Smpte2110AudioInputEssence"
      },
      "Smpte2110Input": {
        "properties": {
          "type": {
            "type": "string",
            "const": "Smpte2110",
            "title": "Type",
            "default": "Smpte2110"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/Smpte2110InputTransport"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Smpte2110Payload"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.inputs.transport.nmosEnabled"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.transport.nmosEnabled == false ? {\"x-required\": true} : {}"
          }
        },
        "type": "object",
        "required": [
          "name",
          "transport"
        ],
        "title": "Smpte2110Input"
      },
      "Smpte2110InputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "Smpte2110",
            "title": "Type",
            "default": "Smpte2110"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Smpte2110InputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "Smpte2110InputStatus"
      },
      "Smpte2110InputTransport": {
        "properties": {
          "interface": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Interface"
          },
          "nmosEnabled": {
            "type": "boolean",
            "title": "Nmosenabled",
            "default": false
          }
        },
        "type": "object",
        "title": "Smpte2110InputTransport"
      },
      "Smpte2110InputTransportStatus": {
        "properties": {
          "receiving": {
            "type": "boolean",
            "title": "Receiving"
          }
        },
        "type": "object",
        "required": [
          "receiving"
        ],
        "title": "Smpte2110InputTransportStatus"
      },
      "Smpte2110Output": {
        "properties": {
          "type": {
            "type": "string",
            "const": "Smpte2110",
            "title": "Type",
            "default": "Smpte2110"
          },
          "transports": {
            "items": {
              "$ref": "#/components/schemas/Smpte2110OutputTransport"
            },
            "type": "array",
            "title": "Transports"
          },
          "processing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputProcessing"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "$ref": "#/components/schemas/Smpte2110OutputPayload"
          }
        },
        "type": "object",
        "required": [
          "transports",
          "payload"
        ],
        "title": "Smpte2110Output"
      },
      "Smpte2110OutputAudio": {
        "properties": {
          "inputName": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Inputname"
          },
          "audioInputName": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Audioinputname"
          }
        },
        "type": "object",
        "required": [
          "inputName",
          "audioInputName"
        ],
        "title": "Smpte2110OutputAudio",
        "description": "A reference to one of the input's named audios, bundled into an audio\nessence — may itself be a stereo pair or multi-channel group, not\nnecessarily a single raw channel.\n\n`inputName` names the input the audio comes from, and `audioInputName`\nnormally references that input's own payload.audios[].name; see\n`CPSmpte2110Output` in cp.py for how the pair resolves to a real decode\nstream. The two together mirror `SdiOutputAudioConfig` — `inputName` was\nmissing here originally, which left the reference implicit and resolved\nagainst every input at once.\n\nFor an input using audioAutoSelect (where audios aren't individually\nnamed by the user), `audioInputName` instead holds one of the reserved\n`Audio_1`..`Audio_8` identifiers — CP's own decode-stream identifiers\nfor that input's auto-selected decode streams, used directly with no\ntranslation at the cp.py boundary (see _build_smpte2110_named_audio_streams\n/ _smpte2110_audio_essence_from_stream in cp.py).\n\nlipSyncOffset is deliberately not exposed here — channels-api doesn't\nlet a user set it; it's only adjustable from the CP Advanced UI."
      },
      "Smpte2110OutputAudioStatus": {
        "properties": {
          "inputName": {
            "type": "string",
            "title": "Inputname"
          },
          "audioInputName": {
            "type": "string",
            "title": "Audioinputname"
          },
          "mode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AudioModeStatus"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mode"
          }
        },
        "type": "object",
        "required": [
          "inputName",
          "audioInputName"
        ],
        "title": "Smpte2110OutputAudioStatus"
      },
      "Smpte2110OutputPayload": {
        "properties": {
          "essences": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Smpte2110VideoEssence"
                },
                {
                  "$ref": "#/components/schemas/Smpte2110AudioEssence"
                }
              ],
              "discriminator": {
                "propertyName": "essenceType",
                "mapping": {
                  "AudioAES3": "#/components/schemas/Smpte2110AudioEssence",
                  "AudioPCM": "#/components/schemas/Smpte2110AudioEssence",
                  "Video": "#/components/schemas/Smpte2110VideoEssence"
                }
              }
            },
            "type": "array",
            "title": "Essences"
          }
        },
        "type": "object",
        "required": [
          "essences"
        ],
        "title": "Smpte2110OutputPayload"
      },
      "Smpte2110OutputPayloadStatus": {
        "properties": {
          "essences": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Smpte2110VideoEssenceStatus"
                },
                {
                  "$ref": "#/components/schemas/Smpte2110AudioEssenceStatus"
                }
              ],
              "discriminator": {
                "propertyName": "essenceType",
                "mapping": {
                  "AudioAES3": "#/components/schemas/Smpte2110AudioEssenceStatus",
                  "AudioPCM": "#/components/schemas/Smpte2110AudioEssenceStatus",
                  "Video": "#/components/schemas/Smpte2110VideoEssenceStatus"
                }
              }
            },
            "type": "array",
            "title": "Essences",
            "default": []
          }
        },
        "type": "object",
        "title": "Smpte2110OutputPayloadStatus"
      },
      "Smpte2110OutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "Smpte2110",
            "title": "Type",
            "default": "Smpte2110"
          },
          "transports": {
            "items": {
              "$ref": "#/components/schemas/Smpte2110OutputTransport"
            },
            "type": "array",
            "title": "Transports",
            "default": []
          },
          "processing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputProcessing"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Smpte2110OutputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "Smpte2110OutputStatus"
      },
      "Smpte2110OutputTransport": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "interface": {
            "type": "string",
            "maxLength": 32,
            "title": "Interface"
          },
          "destinationAddress": {
            "type": "string",
            "format": "ipv4",
            "title": "Destinationaddress"
          },
          "destinationPort": {
            "type": "integer",
            "maximum": 65535.0,
            "minimum": 1024.0,
            "title": "Destinationport",
            "description": "Port number"
          },
          "sourcePort": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 65535.0,
                "minimum": 1024.0,
                "description": "Port number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sourceport"
          }
        },
        "type": "object",
        "required": [
          "name",
          "interface",
          "destinationAddress",
          "destinationPort"
        ],
        "title": "Smpte2110OutputTransport",
        "description": "One named destination (multicast group) an output essence transmits over."
      },
      "Smpte2110Payload": {
        "properties": {
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Smpte2110VideoInputEssence"
              },
              {
                "type": "null"
              }
            ]
          },
          "audios": {
            "items": {
              "$ref": "#/components/schemas/Smpte2110AudioInputEssence"
            },
            "type": "array",
            "title": "Audios",
            "default": []
          }
        },
        "type": "object",
        "title": "Smpte2110Payload"
      },
      "Smpte2110VideoEssence": {
        "properties": {
          "essenceType": {
            "type": "string",
            "const": "Video",
            "title": "Essencetype",
            "default": "Video"
          },
          "transportName": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Transportname"
          }
        },
        "type": "object",
        "required": [
          "transportName"
        ],
        "title": "Smpte2110VideoEssence"
      },
      "Smpte2110VideoEssenceStatus": {
        "properties": {
          "essenceType": {
            "type": "string",
            "const": "Video",
            "title": "Essencetype",
            "default": "Video"
          },
          "transportName": {
            "type": "string",
            "title": "Transportname"
          },
          "type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          },
          "video": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputVideoFormatStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "sdpUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sdpurl"
          }
        },
        "type": "object",
        "required": [
          "transportName"
        ],
        "title": "Smpte2110VideoEssenceStatus"
      },
      "Smpte2110VideoInputEssence": {
        "properties": {
          "type": {
            "type": "string",
            "const": "video",
            "title": "Type",
            "default": "video"
          },
          "transportFile": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TransportFile"
              },
              {
                "type": "null"
              }
            ]
          },
          "sdpUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ],
            "title": "Sdpurl"
          },
          "streamIndex": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Streamindex",
            "default": 1
          }
        },
        "type": "object",
        "title": "Smpte2110VideoInputEssence"
      },
      "SrtCallerInput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "SRTCaller",
            "title": "Type",
            "default": "SRTCaller"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/SrtCallerTransport"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MptsPayload"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type in [\"ReceptionDecoding\"] ? {\"x-required\": true} : {}"
          },
          "decrypt": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DecryptConfig"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "transport"
        ],
        "title": "SrtCallerInput"
      },
      "SrtCallerInputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputMptsPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "SRTCaller",
            "title": "Type",
            "default": "SRTCaller"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SrtCallerInputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "SrtCallerInputStatus"
      },
      "SrtCallerInputTransportStatus": {
        "properties": {
          "receiving": {
            "type": "boolean",
            "title": "Receiving"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "activeConnections": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activeconnections"
          },
          "connections": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SrtInputConnectionStats"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Connections"
          },
          "etr290": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Etr290Stats"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "receiving"
        ],
        "title": "SrtCallerInputTransportStatus"
      },
      "SrtCallerOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "SRTCaller",
            "title": "Type",
            "default": "SRTCaller"
          },
          "transport": {
            "$ref": "#/components/schemas/SrtCallerOutputTransport"
          }
        },
        "type": "object",
        "required": [
          "transport"
        ],
        "title": "SrtCallerOutput"
      },
      "SrtCallerOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "SRTCaller",
            "title": "Type",
            "default": "SRTCaller"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SrtCallerOutputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "SrtCallerOutputStatus"
      },
      "SrtCallerOutputTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2048,
            "pattern": "^srt://",
            "title": "Url",
            "examples": [
              "srt://10.0.24.5:6060"
            ]
          },
          "latency": {
            "type": "number",
            "maximum": 8.0,
            "minimum": 0.06,
            "title": "Latency",
            "default": 0.125
          },
          "encryptionStandard": {
            "$ref": "#/components/schemas/SrtEncryptionStandard",
            "default": "None"
          },
          "passPhrase": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 79
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "x-dyn-deps": [
              "spec.outputs.transport.encryptionStandard"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.encryptionStandard != 'None' ? {'x-required': true, 'minLength': 10} : {}"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "SrtCallerOutputTransport"
      },
      "SrtCallerOutputTransportStatus": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url"
          },
          "interface": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Interface"
          },
          "latency": {
            "type": "number",
            "title": "Latency",
            "default": 0.125
          },
          "encryptionStandard": {
            "type": "string",
            "title": "Encryptionstandard",
            "default": "None"
          },
          "activeConnections": {
            "type": "integer",
            "title": "Activeconnections",
            "default": 0
          },
          "connections": {
            "items": {
              "$ref": "#/components/schemas/SrtConnectionStats"
            },
            "type": "array",
            "title": "Connections",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "SrtCallerOutputTransportStatus"
      },
      "SrtCallerTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2048,
            "pattern": "^srt://",
            "title": "Url",
            "examples": [
              "srt://10.0.24.5:6060"
            ]
          },
          "interface": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Interface"
          },
          "latency": {
            "type": "number",
            "maximum": 8.0,
            "minimum": 0.06,
            "title": "Latency",
            "default": 0.125
          },
          "encryptionStandard": {
            "$ref": "#/components/schemas/SrtEncryptionStandard",
            "default": "None"
          },
          "passPhrase": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 79
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "x-dyn-deps": [
              "spec.inputs.transport.encryptionStandard"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.encryptionStandard != 'None' ? {'x-required': true, 'minLength': 10} : {}"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "SrtCallerTransport"
      },
      "SrtConnectionStats": {
        "properties": {
          "remoteAddress": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remoteaddress"
          },
          "sendBitrateMbps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sendbitratembps"
          },
          "packetsLost": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Packetslost"
          },
          "packetsRetransmitted": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Packetsretransmitted"
          },
          "rttMs": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rttms"
          },
          "bandwidthMbps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bandwidthmbps"
          }
        },
        "type": "object",
        "title": "SrtConnectionStats"
      },
      "SrtEncryptionStandard": {
        "type": "string",
        "enum": [
          "Unsynced",
          "None",
          "AES128",
          "AES192",
          "AES256"
        ],
        "title": "SrtEncryptionStandard",
        "x-enum-varnames": [
          "Unsynced",
          "None",
          "AES-128",
          "AES-192",
          "AES-256"
        ]
      },
      "SrtInputConnectionStats": {
        "properties": {
          "remoteAddress": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remoteaddress"
          },
          "recvBitrateMbps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recvbitratembps"
          },
          "rttMs": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rttms"
          },
          "bandwidthMbps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bandwidthmbps"
          },
          "packetsLost": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Packetslost"
          }
        },
        "type": "object",
        "title": "SrtInputConnectionStats"
      },
      "SrtListenerInput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "SRTListener",
            "title": "Type",
            "default": "SRTListener"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/SrtListenerTransport"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MptsPayload"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type in [\"ReceptionDecoding\"] ? {\"x-required\": true} : {}"
          },
          "decrypt": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DecryptConfig"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "transport"
        ],
        "title": "SrtListenerInput"
      },
      "SrtListenerInputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputMptsPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "SRTListener",
            "title": "Type",
            "default": "SRTListener"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SrtListenerInputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "SrtListenerInputStatus"
      },
      "SrtListenerInputTransportStatus": {
        "properties": {
          "receiving": {
            "type": "boolean",
            "title": "Receiving"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "activeConnections": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activeconnections"
          },
          "connections": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SrtInputConnectionStats"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Connections"
          },
          "etr290": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Etr290Stats"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "receiving"
        ],
        "title": "SrtListenerInputTransportStatus"
      },
      "SrtListenerOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "SRTListener",
            "title": "Type",
            "default": "SRTListener"
          },
          "transport": {
            "$ref": "#/components/schemas/SrtListenerOutputTransport"
          }
        },
        "type": "object",
        "required": [
          "transport"
        ],
        "title": "SrtListenerOutput"
      },
      "SrtListenerOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "SRTListener",
            "title": "Type",
            "default": "SRTListener"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SrtListenerOutputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "SrtListenerOutputStatus"
      },
      "SrtListenerOutputTransport": {
        "properties": {
          "interface": {
            "type": "string",
            "maxLength": 32,
            "title": "Interface"
          },
          "port": {
            "type": "integer",
            "maximum": 65535.0,
            "minimum": 256.0,
            "title": "Port",
            "description": "Port number"
          },
          "maxConnections": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Maxconnections",
            "default": 10
          },
          "latency": {
            "type": "number",
            "maximum": 8.0,
            "minimum": 0.06,
            "title": "Latency",
            "default": 0.125
          },
          "encryptionStandard": {
            "$ref": "#/components/schemas/SrtEncryptionStandard",
            "default": "None"
          },
          "passPhrase": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 79
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "x-dyn-deps": [
              "spec.outputs.transport.encryptionStandard"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.encryptionStandard != 'None' ? {'x-required': true, 'minLength': 10} : {}"
          }
        },
        "type": "object",
        "required": [
          "interface",
          "port"
        ],
        "title": "SrtListenerOutputTransport"
      },
      "SrtListenerOutputTransportStatus": {
        "properties": {
          "interface": {
            "type": "string",
            "maxLength": 32,
            "title": "Interface"
          },
          "port": {
            "type": "integer",
            "title": "Port"
          },
          "maxConnections": {
            "type": "integer",
            "title": "Maxconnections",
            "default": 10
          },
          "latency": {
            "type": "number",
            "title": "Latency",
            "default": 0.125
          },
          "encryptionStandard": {
            "type": "string",
            "title": "Encryptionstandard",
            "default": "None"
          },
          "activeConnections": {
            "type": "integer",
            "title": "Activeconnections",
            "default": 0
          },
          "connections": {
            "items": {
              "$ref": "#/components/schemas/SrtConnectionStats"
            },
            "type": "array",
            "title": "Connections",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "interface",
          "port"
        ],
        "title": "SrtListenerOutputTransportStatus"
      },
      "SrtListenerTransport": {
        "properties": {
          "interface": {
            "type": "string",
            "maxLength": 32,
            "title": "Interface"
          },
          "port": {
            "type": "integer",
            "maximum": 65535.0,
            "minimum": 256.0,
            "title": "Port",
            "description": "Port number"
          },
          "latency": {
            "type": "number",
            "maximum": 8.0,
            "minimum": 0.06,
            "title": "Latency",
            "default": 0.125
          },
          "encryptionStandard": {
            "$ref": "#/components/schemas/SrtEncryptionStandard",
            "default": "None"
          },
          "passPhrase": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 79
              },
              {
                "type": "null"
              }
            ],
            "title": "Passphrase",
            "x-dyn-deps": [
              "spec.inputs.transport.encryptionStandard"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.encryptionStandard != 'None' ? {'x-required': true, 'minLength': 10} : {}"
          }
        },
        "type": "object",
        "required": [
          "interface",
          "port"
        ],
        "title": "SrtListenerTransport"
      },
      "St2110OutputProfiles": {
        "type": "string",
        "enum": [
          "rx1",
          "rx1_st2110",
          "Unsynced"
        ],
        "title": "St2110OutputProfiles",
        "x-enum-varnames": [
          "Standard",
          "SMPTE ST 2110 UHD Output",
          "Unknown"
        ]
      },
      "SyncState": {
        "type": "string",
        "enum": [
          "Ok",
          "Configuring",
          "ConfigFailed",
          "SyncFailed",
          "Failed"
        ],
        "title": "SyncState",
        "description": "What kind of trouble a channel is in — see error-policy.md.\n\n`syncState` says what kind of trouble; `errors` says what to do about it. Keep the\nsplit: a new state is only warranted by a new *kind* of trouble, not by a new cause of an\nexisting one.",
        "x-enum-varnames": [
          "Ok",
          "Configuring",
          "Configuration Failed",
          "Out of Sync",
          "Failed"
        ]
      },
      "SystemInfoData": {
        "properties": {
          "softwareVersion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Softwareversion"
          },
          "softwareName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Softwarename"
          },
          "serialNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Serialnumber"
          },
          "hardwareModel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hardwaremodel"
          }
        },
        "type": "object",
        "title": "SystemInfoData",
        "description": "Device identity fields."
      },
      "SystemInfoResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SystemInfoData"
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "SystemInfoResponse",
        "description": "Response for GET /system/."
      },
      "ThumbnailPresence": {
        "type": "string",
        "enum": [
          "Unsynced",
          "Present",
          "Absent",
          "Unknown"
        ],
        "title": "ThumbnailPresence",
        "x-enum-varnames": [
          "Unsynced",
          "Present",
          "Absent",
          "Unknown"
        ]
      },
      "TransformConfig": {
        "properties": {
          "encoding": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EncodingConfig"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type in [\"EncodingContribution\", \"EncodingDistribution\"] ? {\"x-required\": true} : {}"
          },
          "abrEncoding": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AbrEncodingConfig"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type == \"EncodingStreaming\" ? {\"x-required\": true} : {\"x-omit\": true}"
          },
          "multiplexing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MultiplexingConfig"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type in [\"EncodingContribution\", \"EncodingDistribution\"] ? {} : {\"x-omit\": true}"
          }
        },
        "type": "object",
        "title": "TransformConfig"
      },
      "TransportFile": {
        "properties": {
          "data": {
            "type": "string",
            "maxLength": 8192,
            "title": "Data",
            "description": "Raw file contents; expects SDP format by default."
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "TransportFile",
        "description": "SDP transport file for an ST 2110 stream."
      },
      "TsPacketSize": {
        "type": "string",
        "enum": [
          "188",
          "204"
        ],
        "title": "TsPacketSize",
        "x-enum-varnames": [
          "188 bytes",
          "204 bytes"
        ]
      },
      "UdpInput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "UDP",
            "title": "Type",
            "default": "UDP"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "transport": {
            "$ref": "#/components/schemas/UdpTransport"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MptsPayload"
              },
              {
                "type": "null"
              }
            ],
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type in [\"ReceptionDecoding\"] ? {\"x-required\": true} : {}"
          },
          "decrypt": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DecryptConfig"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name",
          "transport"
        ],
        "title": "UdpInput"
      },
      "UdpInputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputMptsPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "UDP",
            "title": "Type",
            "default": "UDP"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UdpInputTransportStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "UdpInputStatus"
      },
      "UdpInputTransportStatus": {
        "properties": {
          "receiving": {
            "type": "boolean",
            "title": "Receiving"
          },
          "bitrate": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bitrate"
          },
          "receivedPackets": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receivedpackets"
          },
          "etr290": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Etr290Stats"
              },
              {
                "type": "null"
              }
            ]
          },
          "fec": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputTransportFec"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "receiving"
        ],
        "title": "UdpInputTransportStatus"
      },
      "UdpOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "UDP",
            "title": "Type",
            "default": "UDP"
          },
          "transport": {
            "$ref": "#/components/schemas/UdpOutputTransport"
          }
        },
        "type": "object",
        "required": [
          "transport"
        ],
        "title": "UdpOutput"
      },
      "UdpOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "UDP",
            "title": "Type",
            "default": "UDP"
          },
          "transport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UdpOutputTransport"
              },
              {
                "type": "null"
              }
            ]
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OutputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "UdpOutputStatus"
      },
      "UdpOutputTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "title": "Url",
            "description": "udp://[sourceAddress@]destinationAddress:port. sourceAddress is optional and enables source-specific multicast filtering (currently only applied by CP inputs).",
            "examples": [
              "udp://239.0.1.1:5555",
              "udp://192.168.1.10@239.0.1.1:5555"
            ]
          },
          "interface": {
            "type": "string",
            "maxLength": 32,
            "title": "Interface"
          },
          "sourceAddress": {
            "anyOf": [
              {
                "type": "string",
                "format": "ipv4"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sourceaddress"
          },
          "sourcePort": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 65535.0,
                "minimum": 1.0,
                "description": "Port number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sourceport"
          }
        },
        "type": "object",
        "required": [
          "url",
          "interface"
        ],
        "title": "UdpOutputTransport"
      },
      "UdpTransport": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 128,
            "title": "Url",
            "description": "udp://[sourceAddress@]destinationAddress:port. sourceAddress is optional and enables source-specific multicast filtering (currently only applied by CP inputs).",
            "examples": [
              "udp://239.0.1.1:5555",
              "udp://192.168.1.10@239.0.1.1:5555"
            ]
          },
          "interface": {
            "type": "string",
            "maxLength": 32,
            "title": "Interface"
          }
        },
        "type": "object",
        "required": [
          "url",
          "interface"
        ],
        "title": "UdpTransport"
      },
      "UnsyncedInput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "Unsynced",
            "title": "Type",
            "default": "Unsynced"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "unsupportedValue": {
            "type": "string",
            "title": "Unsupportedvalue",
            "default": ""
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "UnsyncedInput",
        "description": "Input synced from a service config whose transport mode this version of the\nschema does not implement. ``unsupportedValue`` is the discriminator value that\ntriggered it (e.g. ``\"ristListener\"``). Read/display only — a channel containing\none cannot be deployed."
      },
      "UnsyncedInputStatus": {
        "properties": {
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "name": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "title": "Name"
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnailurl"
          },
          "thumbnailPresence": {
            "$ref": "#/components/schemas/ThumbnailPresence",
            "default": "Unknown"
          },
          "metadataUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Metadataurl"
          },
          "payload": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InputPayloadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "type": "string",
            "const": "Unsynced",
            "title": "Type",
            "default": "Unsynced"
          }
        },
        "type": "object",
        "required": [
          "health",
          "name"
        ],
        "title": "UnsyncedInputStatus"
      },
      "UnsyncedOutput": {
        "properties": {
          "type": {
            "type": "string",
            "const": "Unsynced",
            "title": "Type",
            "default": "Unsynced"
          },
          "unsupportedValue": {
            "type": "string",
            "title": "Unsupportedvalue",
            "default": ""
          }
        },
        "type": "object",
        "title": "UnsyncedOutput",
        "description": "Output counterpart of UnsyncedInput. See UnsyncedInput."
      },
      "UnsyncedOutputStatus": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "default": ""
          },
          "health": {
            "$ref": "#/components/schemas/HealthStatus"
          },
          "type": {
            "type": "string",
            "const": "Unsynced",
            "title": "Type",
            "default": "Unsynced"
          }
        },
        "type": "object",
        "required": [
          "health"
        ],
        "title": "UnsyncedOutputStatus"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "VideoCodec": {
        "type": "string",
        "enum": [
          "Unsynced",
          "HEVCMain",
          "HEVCMain10bit",
          "HEVCMain422",
          "HEVCMain10bit422",
          "H264Main",
          "H264High",
          "H264High422",
          "H264High10bit",
          "H264High10bit422",
          "H264Baseline",
          "MPEG2",
          "MPEG2422",
          "JPEGXS",
          "JPEGXS10bit"
        ],
        "title": "VideoCodec",
        "x-enum-varnames": [
          "Unsynced",
          "HEVC Main",
          "HEVC Main 10 bits",
          "HEVC Main 4:2:2",
          "HEVC Main 10 bits 4:2:2",
          "H.264 Main",
          "H.264 High",
          "H.264 High 4:2:2",
          "H.264 High 10 bits",
          "H.264 High 10 bits 4:2:2",
          "H.264 Baseline",
          "MPEG-2 Main",
          "MPEG-2 4:2:2",
          "JPEG-XS",
          "JPEG-XS 10 bits"
        ]
      },
      "VideoCodecStatus": {
        "type": "string",
        "enum": [
          "H264Main",
          "H264High",
          "H264High422",
          "H264High10bit",
          "H264High10bit422",
          "HEVCMain",
          "HEVCMain10bit",
          "HEVCMain422",
          "HEVCMain10bit422",
          "MPEG2",
          "MPEG2422",
          "JPEGXS",
          "JPEGXS10bit",
          "H264Baseline",
          "H264",
          "Hevc",
          "HevcMainSp",
          "VvcMain",
          "VvcMain10",
          "Vvc",
          "Avs",
          "Avs2",
          "Mpeg1Video",
          "Mpeg4Video",
          "Vc1Advanced",
          "Vc1Main",
          "AppleProRes",
          "Jpeg2000",
          "Dv",
          "PassThrough",
          "Av1"
        ],
        "title": "VideoCodecStatus",
        "x-enum-varnames": [
          "H.264 Main",
          "H.264 High",
          "H.264 High 4:2:2",
          "H.264 High 10 bits",
          "H.264 High 10 bits 4:2:2",
          "HEVC Main",
          "HEVC Main 10 bits",
          "HEVC Main 4:2:2",
          "HEVC Main 10 bits 4:2:2",
          "MPEG-2 Main",
          "MPEG-2 4:2:2",
          "JPEG-XS",
          "JPEG-XS 10 bits",
          "H.264 Baseline",
          "H264",
          "Hevc",
          "HEVC Main SP",
          "VVC Main",
          "VVC Main 10",
          "Vvc",
          "Avs",
          "Avs2",
          "MPEG-1 Video",
          "MPEG-4 Video",
          "VC-1 Advanced",
          "VC-1 Main",
          "Apple ProRes",
          "JPEG 2000",
          "Dv",
          "PassThrough",
          "Av1"
        ]
      },
      "VideoEncoding": {
        "properties": {
          "codec": {
            "$ref": "#/components/schemas/VideoCodec",
            "default": "H264High",
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "clamp",
            "x-dyn-rule-cel": "spec.type == \"Unsynced\" ? {} : spec.type in [\"EncodingContribution\"] ? {\"enum\": [\"HEVCMain422\", \"HEVCMain10bit422\", \"H264High\", \"H264High10bit\", \"H264High422\", \"H264High10bit422\", \"MPEG2422\", \"JPEGXS\", \"JPEGXS10bit\"]} : spec.type in [\"EncodingDistribution\"] ? {\"enum\": [\"HEVCMain\", \"HEVCMain10bit\", \"H264High\", \"H264Main\", \"MPEG2\"]} : spec.type in [\"EncodingStreaming\"] ? {\"enum\": [\"HEVCMain\", \"HEVCMain10bit\", \"H264High\", \"H264Main\", \"H264Baseline\"]} : {}"
          },
          "videoFormat": {
            "$ref": "#/components/schemas/VideoFormat",
            "default": "1920x1080p",
            "x-dyn-deps": [
              "spec.transform.encoding.video.codec",
              "spec.transform.abrEncoding.representations.video.codec",
              "spec.type"
            ],
            "x-dyn-on-invalid": "clamp",
            "x-dyn-rule-cel": "spec.type == \"EncodingStreaming\" && self.codec in [\"HEVCMain\", \"HEVCMain10bit\"] ? {\"enum\": [\"3840x2160p\", \"1920x1080p\", \"1440x1080p\", \"1280x1080p\", \"960x1080p\", \"1280x720p\", \"960x720p\", \"854x720p\", \"848x720p\", \"640x720p\", \"720x576p\", \"704x576p\", \"544x576p\", \"528x576p\", \"480x576p\", \"352x576p\", \"720x480p\", \"704x480p\", \"640x480p\", \"544x480p\", \"528x480p\", \"480x480p\", \"352x480p\", \"352x288p\", \"320x240p\", \"192x192p\", \"176x144p\", \"176x120p\", \"128x96p\", \"96x96p\"]} : spec.type == \"EncodingStreaming\" && self.codec in [\"H264High\", \"H264Main\", \"H264Baseline\"] ? {\"enum\": [\"1920x1080p\", \"1440x1080p\", \"1280x1080p\", \"960x1080p\", \"1280x720p\", \"960x720p\", \"854x720p\", \"848x720p\", \"640x720p\", \"720x576p\", \"704x576p\", \"544x576p\", \"528x576p\", \"480x576p\", \"352x576p\", \"720x480p\", \"704x480p\", \"640x480p\", \"544x480p\", \"528x480p\", \"480x480p\", \"352x480p\", \"352x288p\", \"320x240p\", \"192x192p\", \"176x144p\", \"176x120p\", \"128x96p\", \"96x96p\"]} : self.codec == \"Unsynced\" ? {} : self.codec in [\"HEVCMain\", \"HEVCMain10bit\", \"HEVCMain422\", \"HEVCMain10bit422\"] ? {\"enum\": [\"3840x2160p\", \"1920x1080p\", \"1920x1080i\", \"1440x1080p\", \"1440x1080i\", \"1280x1080p\", \"1280x1080i\", \"960x1080p\", \"960x1080i\", \"1280x720p\", \"960x720p\", \"854x720p\", \"848x720p\", \"640x720p\", \"720x576p\", \"720x576i\", \"704x576p\", \"704x576i\", \"544x576p\", \"544x576i\", \"528x576p\", \"528x576i\", \"480x576p\", \"480x576i\", \"352x576p\", \"352x576i\", \"720x480p\", \"720x480i\", \"704x480p\", \"704x480i\", \"640x480p\", \"640x480i\", \"544x480p\", \"544x480i\", \"528x480p\", \"528x480i\", \"480x480p\", \"480x480i\", \"352x480p\", \"352x480i\", \"352x288p\", \"320x240p\", \"192x192p\", \"176x144p\", \"176x120p\", \"128x96p\", \"96x96p\"]} : self.codec in [\"H264Main\", \"H264High\", \"H264High422\", \"H264High10bit\", \"H264High10bit422\", \"H264Baseline\"] ? {\"enum\": [\"1920x1080p\", \"1920x1080i\", \"1440x1080p\", \"1440x1080i\", \"1280x1080p\", \"1280x1080i\", \"960x1080p\", \"960x1080i\", \"1280x720p\", \"960x720p\", \"854x720p\", \"848x720p\", \"640x720p\", \"720x576p\", \"720x576i\", \"704x576p\", \"704x576i\", \"544x576p\", \"544x576i\", \"528x576p\", \"528x576i\", \"480x576p\", \"480x576i\", \"352x576p\", \"352x576i\", \"720x480p\", \"720x480i\", \"704x480p\", \"704x480i\", \"640x480p\", \"640x480i\", \"544x480p\", \"544x480i\", \"528x480p\", \"528x480i\", \"480x480p\", \"480x480i\", \"352x480p\", \"352x480i\", \"352x288p\", \"320x240p\", \"192x192p\", \"176x144p\", \"176x120p\", \"128x96p\", \"96x96p\"]} : self.codec in [\"MPEG2\", \"MPEG2422\"] ? {\"enum\": [\"1920x1080i\", \"1440x1080i\", \"1280x1080i\", \"960x1080i\", \"1280x720p\", \"960x720p\", \"854x720p\", \"848x720p\", \"640x720p\", \"720x576i\", \"704x576i\", \"544x576i\", \"528x576i\", \"480x576i\", \"352x576i\", \"720x480i\", \"704x480i\", \"640x480i\", \"544x480i\", \"528x480i\", \"480x480i\", \"352x480i\", \"352x288p\", \"320x240p\", \"192x192p\", \"176x144p\", \"176x120p\", \"128x96p\", \"96x96p\"]} : self.codec in [\"JPEGXS\", \"JPEGXS10bit\"] ? {\"enum\": [\"3840x2160p\", \"1920x1080p\", \"1440x1080p\", \"1280x1080p\", \"960x1080p\", \"1280x720p\", \"960x720p\", \"854x720p\", \"848x720p\", \"640x720p\", \"720x576p\", \"704x576p\", \"544x576p\", \"528x576p\", \"480x576p\", \"352x576p\", \"720x480p\", \"704x480p\", \"640x480p\", \"544x480p\", \"528x480p\", \"480x480p\", \"352x480p\", \"352x288p\", \"320x240p\", \"192x192p\", \"176x144p\", \"176x120p\", \"128x96p\", \"96x96p\"]} : {}"
          },
          "bitrate": {
            "type": "integer",
            "maximum": 4000000000.0,
            "minimum": 100000.0,
            "title": "Bitrate",
            "default": 6000000,
            "x-dyn-deps": [
              "spec.transform.encoding.video.codec",
              "spec.transform.abrEncoding.representations.video.codec"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "self.codec == \"Unsynced\" ? {} : {\"maximum\": self.codec in [\"JPEGXS\", \"JPEGXS10bit\"] ? 4000000000 : self.codec in [\"HEVCMain10bit422\", \"MPEG2422\"] ? 80000000 : 60000000}"
          },
          "frameRate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FrameRate"
              },
              {
                "type": "null"
              }
            ],
            "default": "TrueMotion",
            "x-dyn-deps": [
              "spec.type"
            ],
            "x-dyn-on-invalid": "error",
            "x-dyn-rule-cel": "spec.type == \"EncodingStreaming\" ? {\"x-required\": true} : {\"x-omit\": true}"
          }
        },
        "type": "object",
        "required": [
          "codec",
          "videoFormat",
          "bitrate"
        ],
        "title": "VideoEncoding"
      },
      "VideoFormat": {
        "type": "string",
        "enum": [
          "Unsynced",
          "3840x2160p",
          "1920x1080p",
          "1920x1080i",
          "1440x1080p",
          "1440x1080i",
          "1280x1080p",
          "1280x1080i",
          "960x1080p",
          "960x1080i",
          "1280x720p",
          "960x720p",
          "854x720p",
          "848x720p",
          "640x720p",
          "720x576p",
          "720x576i",
          "704x576p",
          "704x576i",
          "544x576p",
          "544x576i",
          "528x576p",
          "528x576i",
          "480x576p",
          "480x576i",
          "352x576p",
          "352x576i",
          "720x480p",
          "720x480i",
          "704x480p",
          "704x480i",
          "640x480p",
          "640x480i",
          "544x480p",
          "544x480i",
          "528x480p",
          "528x480i",
          "480x480p",
          "480x480i",
          "352x480p",
          "352x480i",
          "352x288p",
          "320x240p",
          "192x192p",
          "176x144p",
          "176x120p",
          "128x96p",
          "96x96p"
        ],
        "title": "VideoFormat",
        "x-enum-varnames": [
          "Unsynced",
          "3840x2160p",
          "1920x1080p",
          "1920x1080i",
          "1440x1080p",
          "1440x1080i",
          "1280x1080p",
          "1280x1080i",
          "960x1080p",
          "960x1080i",
          "1280x720p",
          "960x720p",
          "854x720p",
          "848x720p",
          "640x720p",
          "720x576p",
          "720x576i",
          "704x576p",
          "704x576i",
          "544x576p",
          "544x576i",
          "528x576p",
          "528x576i",
          "480x576p",
          "480x576i",
          "352x576p",
          "352x576i",
          "720x480p",
          "720x480i",
          "704x480p",
          "704x480i",
          "640x480p",
          "640x480i",
          "544x480p",
          "544x480i",
          "528x480p",
          "528x480i",
          "480x480p",
          "480x480i",
          "352x480p",
          "352x480i",
          "352x288p",
          "320x240p",
          "192x192p",
          "176x144p",
          "176x120p",
          "128x96p",
          "96x96p"
        ]
      },
      "VideoScaling": {
        "type": "string",
        "enum": [
          "Unsynced",
          "None",
          "720p",
          "1080p",
          "1080i"
        ],
        "title": "VideoScaling",
        "x-enum-varnames": [
          "Unsynced",
          "None",
          "720p",
          "1080p",
          "1080i"
        ]
      },
      "applianceCapabilities": {
        "properties": {
          "receiverMultipleInputStream": {
            "type": "boolean",
            "title": "Receivermultipleinputstream",
            "default": false
          },
          "bissCaAvailable": {
            "type": "boolean",
            "title": "Bisscaavailable",
            "default": false
          },
          "st2110OutputProfile": {
            "type": "string",
            "enum": [
              "Standard",
              "SMPTE ST 2110 UHD Output",
              "Unknown"
            ]
          }
        },
        "type": "object",
        "required": [
          "st2110OutputProfile"
        ],
        "title": "applianceCapabilities"
      },
      "applianceResponse": {
        "properties": {
          "optionCardData": {
            "$ref": "#/components/schemas/installedCardData"
          },
          "capabilities": {
            "$ref": "#/components/schemas/applianceCapabilities"
          },
          "dynamicRangeConversionOptions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Dynamicrangeconversionoptions",
            "default": [
              "None",
              "BT709"
            ]
          }
        },
        "type": "object",
        "required": [
          "optionCardData",
          "capabilities"
        ],
        "title": "applianceResponse"
      },
      "dekTecFirmware": {
        "type": "string",
        "enum": [
          "4 ASI/HD-SDI/SD-SDI",
          "8 ASI/HD-SDI/SD-SDI",
          "Dual 12G-SDI with ASI/SDI side channel",
          "1 UHD 12G with downconversion",
          "Dual 4K channels over 12G-SDI or Quad link",
          "1 UHD 12G or Quad Link 3G"
        ],
        "title": "dekTecFirmware"
      },
      "demodulatorCard": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/demodulators"
          },
          "slot": {
            "type": "integer",
            "title": "Slot"
          }
        },
        "type": "object",
        "required": [
          "name",
          "slot"
        ],
        "title": "demodulatorCard"
      },
      "demodulators": {
        "type": "string",
        "enum": [
          "Dektec DTA-2127",
          "Digital Devices SX8 Satellite Demod"
        ],
        "title": "demodulators"
      },
      "installedCardData": {
        "properties": {
          "sdiCards": {
            "items": {
              "$ref": "#/components/schemas/sdiCard"
            },
            "type": "array",
            "title": "Sdicards"
          },
          "rfDemodulators": {
            "items": {
              "$ref": "#/components/schemas/demodulatorCard"
            },
            "type": "array",
            "title": "Rfdemodulators"
          },
          "st2110Cards": {
            "items": {
              "$ref": "#/components/schemas/st2110Card"
            },
            "type": "array",
            "title": "St2110Cards"
          }
        },
        "type": "object",
        "required": [
          "sdiCards",
          "rfDemodulators",
          "st2110Cards"
        ],
        "title": "installedCardData"
      },
      "sdiCard": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/sdiModels"
          },
          "slot": {
            "type": "integer",
            "title": "Slot"
          },
          "firmware": {
            "$ref": "#/components/schemas/dekTecFirmware"
          }
        },
        "type": "object",
        "required": [
          "type",
          "slot",
          "firmware"
        ],
        "title": "sdiCard"
      },
      "sdiModels": {
        "type": "string",
        "enum": [
          "Dektec 2174B SDI/ASI",
          "Dektec 2178 SDI/ASI"
        ],
        "title": "sdiModels"
      },
      "st2110Card": {
        "properties": {
          "type": {
            "$ref": "#/components/schemas/st2110Models"
          },
          "slot": {
            "type": "integer",
            "title": "Slot"
          }
        },
        "type": "object",
        "required": [
          "type",
          "slot"
        ],
        "title": "st2110Card"
      },
      "st2110Models": {
        "type": "string",
        "enum": [
          "NVIDIA ConnectX-6 Lx 25GbE",
          "NVIDIA ConnectX-5 25GbE"
        ],
        "title": "st2110Models"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}
