{
  "components": {
    "examples": {},
    "headers": {},
    "parameters": {},
    "requestBodies": {},
    "responses": {},
    "schemas": {
      "RateLimitError": {
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ValidationError": {
        "properties": {
          "message": {
            "type": "string"
          },
          "details": {
            "properties": {},
            "additionalProperties": {},
            "type": "object"
          }
        },
        "required": [
          "message",
          "details"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ResourceNotFound": {
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UnexpectedError": {
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthorizationError": {
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AuthenticationError": {
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveTransportErrorResponse": {
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "required": [
          "message",
          "code"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Id": {
        "type": "integer",
        "format": "int32",
        "description": "Entity identifier",
        "minimum": 1
      },
      "CompetitionGrade": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Name": {
        "type": "string",
        "description": "Default Entity name",
        "minLength": 6,
        "maxLength": 39
      },
      "NullableGfxName": {
        "type": "string",
        "nullable": true,
        "description": "Name predominantly display in graphics",
        "minLength": 6,
        "maxLength": 19
      },
      "SportKey": {
        "enum": [
          "football",
          "rugbyUnion",
          "rugbyLeague",
          "netball",
          "cricket",
          "futsal",
          "iceHockey",
          "fieldHockey",
          "waterPolo",
          "handBall",
          "lacrosse",
          "touchFootball",
          "ausRules",
          "basketball",
          "rugbySevens",
          "gridiron",
          "volleyball",
          "baseball",
          "tennis"
        ],
        "type": "string"
      },
      "ProviderName": {
        "enum": [
          "RB",
          "OPTA_CRICKET",
          "OPTA_FOOTBALL",
          "OPTA_RUGBY_UNION",
          "STATSLLC",
          "GENIUS_BASKETBALL",
          "GENIUS_GRIDIRON",
          "GENIUS_VOLLEYBALL",
          "GENIUS_FOOTBALL",
          "GENIUS_ICE_HOCKEY",
          "PIXELLOT",
          "CLOUDMIX",
          "CHAMPION",
          "ligr-live-score",
          "MLB",
          "IMG_FOOTBALL",
          "CRIONET_TENNIS",
          "SPORT_RADAR_FOOTBALL"
        ],
        "type": "string"
      },
      "Provider": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProviderName"
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Competition": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/NullableGfxName"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          }
        },
        "required": [
          "id",
          "name",
          "gfxName",
          "sport"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "id": 24,
          "name": "UEFA Champions League",
          "gfxName": "Champions League",
          "sport": "football"
        }
      },
      "Age": {
        "enum": [
          "Adults",
          "U7",
          "U8",
          "U9",
          "U10",
          "U11",
          "U12",
          "U13",
          "U14",
          "U15",
          "U16",
          "U17",
          "U18",
          "U19",
          "U20",
          "U21",
          "U22",
          "U23",
          "Senior",
          "Unknown"
        ],
        "type": "string"
      },
      "Gender": {
        "enum": [
          "Male",
          "Female",
          "Mixed",
          "Unknown"
        ],
        "type": "string"
      },
      "CreateCompetitionRequestBody": {
        "description": "Competition metadata. Discover grade identifiers with GET /v1/competitions/grades.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "type": "string"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "age": {
            "$ref": "#/components/schemas/Age"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "gradeId": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "required": [
          "name",
          "sport",
          "age",
          "gender",
          "gradeId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "GfxName": {
        "type": "string",
        "description": "Name predominantly display in graphics",
        "minLength": 6,
        "maxLength": 19
      },
      "GfxFullName": {
        "type": "string",
        "description": "Name predominantly display in graphics",
        "minLength": 6,
        "maxLength": 35
      },
      "Abbreviation": {
        "type": "string",
        "description": "Abbreviation",
        "minLength": 2,
        "maxLength": 4
      },
      "StaffRole": {
        "description": "Role of a team staff member. Graphics show the `manager` as the coach.",
        "enum": [
          "manager",
          "assistantManager"
        ],
        "type": "string"
      },
      "TeamStaffMember": {
        "description": "A coach or other staff member of a team.",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "role": {
            "$ref": "#/components/schemas/StaffRole"
          }
        },
        "required": [
          "firstName",
          "lastName",
          "role"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Team": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/GfxName"
          },
          "gfxFullName": {
            "$ref": "#/components/schemas/GfxFullName"
          },
          "abbreviation": {
            "$ref": "#/components/schemas/Abbreviation"
          },
          "primaryBackgroundColor": {
            "type": "string"
          },
          "primaryTextColor": {
            "type": "string"
          },
          "secondaryBackgroundColor": {
            "type": "string"
          },
          "secondaryTextColor": {
            "type": "string"
          },
          "defaultVenueId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "clubId": {
            "$ref": "#/components/schemas/Id"
          },
          "isHome": {
            "type": "boolean"
          },
          "logoUrl": {
            "type": "string",
            "description": "CDN URL of the team logo, or of the club logo when the team has none.\nPresent only on the team routes."
          },
          "nonPlayerStaff": {
            "items": {
              "$ref": "#/components/schemas/TeamStaffMember"
            },
            "type": "array",
            "description": "Coaches and other staff who are not players. Graphics show the `manager` entry as the coach.\nIf no entry has the `manager` role, graphics show the first entry."
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          }
        },
        "required": [
          "id",
          "name",
          "sport"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CompetitionWithAllIncludes": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/NullableGfxName"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "teams": {
            "items": {
              "$ref": "#/components/schemas/Team"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "gfxName",
          "sport"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CompetitionIncludeQueryParam": {
        "type": "string",
        "description": "Comma seperated string of entity abbreviations\nAllows optional population of nested entities\nt = teams\ne.g. 't'"
      },
      "Count": {
        "type": "integer",
        "format": "int32",
        "example": 24,
        "minimum": 0
      },
      "CompetitionTeamsResponseBody": {
        "properties": {
          "count": {
            "$ref": "#/components/schemas/Count"
          },
          "teams": {
            "items": {
              "$ref": "#/components/schemas/Team"
            },
            "type": "array"
          }
        },
        "required": [
          "count",
          "teams"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CompetitionSearchResponseBody": {
        "properties": {
          "competitions": {
            "items": {
              "$ref": "#/components/schemas/Competition"
            },
            "type": "array"
          },
          "total": {
            "$ref": "#/components/schemas/Count"
          },
          "returned": {
            "$ref": "#/components/schemas/Count"
          }
        },
        "required": [
          "competitions",
          "total",
          "returned"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeProfileVariableValue": {
        "properties": {
          "variableId": {
            "type": "string",
            "description": "Variable id from the theme schema."
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "boolean"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "variableId",
          "value"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeProfileResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "themeId": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "defaultControlRoomId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Id"
              }
            ],
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "themeVariableValues": {
            "items": {
              "$ref": "#/components/schemas/ThemeProfileVariableValue"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "competitionId",
          "themeId",
          "name",
          "defaultControlRoomId",
          "isDefault",
          "themeVariableValues"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateThemeProfileRequestBody": {
        "description": "Assign an organization-owned theme to a competition.\nThe default control room must belong to this organization and use the same theme.",
        "properties": {
          "themeId": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "defaultControlRoomId": {
            "$ref": "#/components/schemas/Id"
          },
          "themeVariableValues": {
            "items": {
              "$ref": "#/components/schemas/ThemeProfileVariableValue"
            },
            "type": "array",
            "description": "Values for variables declared by the active theme version."
          }
        },
        "required": [
          "themeId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ControlRoomSectionResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "colorKey": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ControlRoomResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "themeId": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/ControlRoomSectionResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "themeId",
          "name",
          "sections"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ControlRoomName": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      },
      "CreateControlRoomRequestBody": {
        "properties": {
          "themeId": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/ControlRoomName"
          }
        },
        "required": [
          "themeId",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ControlRoomThemeResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "activeVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Published theme version that overlays render, or null before activation."
          }
        },
        "required": [
          "id",
          "name",
          "activeVersion"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PresetVariableValues": {
        "description": "Scalar and enum overrides keyed by names in the active published graphic manifest.",
        "properties": {},
        "type": "object",
        "additionalProperties": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number",
              "format": "double"
            },
            {
              "type": "boolean"
            }
          ]
        }
      },
      "ControlRoomDetailPresetResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "controlRoomId": {
            "$ref": "#/components/schemas/Id"
          },
          "sectionId": {
            "type": "string"
          },
          "graphicId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "orderIndex": {
            "type": "integer",
            "format": "int32"
          },
          "variableValues": {
            "$ref": "#/components/schemas/PresetVariableValues"
          },
          "exposedVariables": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Every control variable operators can see on this preset, with or without a stored value."
          },
          "graphicName": {
            "type": "string",
            "description": "Name of the preset's graphic in the theme. Absent when the graphic was deleted from the theme."
          }
        },
        "required": [
          "id",
          "controlRoomId",
          "sectionId",
          "graphicId",
          "name",
          "orderIndex",
          "variableValues",
          "exposedVariables"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UUIDv4": {
        "type": "string",
        "description": "Stringified UUIDv4.\nSee [RFC 4112](https://tools.ietf.org/html/rfc4122)",
        "pattern": "[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}"
      },
      "NullableOverlayAssignmentId": {
        "type": "integer",
        "format": "int32",
        "nullable": true,
        "minimum": 1
      },
      "Overlay": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 35,
            "minLength": 1
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "encodingDelay": {
            "type": "integer",
            "format": "int32",
            "description": "Seconds to delay graphic updates",
            "maximum": 120
          },
          "key": {
            "$ref": "#/components/schemas/UUIDv4"
          },
          "autoMode": {
            "type": "boolean"
          },
          "adType": {
            "type": "string"
          },
          "competitionThemeSettingId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          },
          "controlRoomId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          },
          "controlRoomUrl": {
            "type": "string",
            "description": "Open this URL with an authenticated dashboard session after setup."
          },
          "monitoringUrl": {
            "type": "string",
            "description": "Read-only monitoring page of this overlay on the overlay host of this environment.\nOpen it to see the graphics that are on air. It does not take control of the overlay."
          }
        },
        "required": [
          "name",
          "id",
          "key"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "matchId": 703,
          "id": 2300003,
          "name": "Overlay 1",
          "encodingDelay": 6,
          "key": "3b2bbcc8-0544-4edb-b847-8179ba026086"
        }
      },
      "ControlRoomDetailResponse": {
        "description": "A room with everything needed to check it without a dashboard login.\nFire presets with their id through the overlay control-room graphics endpoint.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "themeId": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/ControlRoomSectionResponse"
            },
            "type": "array"
          },
          "theme": {
            "$ref": "#/components/schemas/ControlRoomThemeResponse"
          },
          "presets": {
            "items": {
              "$ref": "#/components/schemas/ControlRoomDetailPresetResponse"
            },
            "type": "array"
          },
          "overlays": {
            "items": {
              "$ref": "#/components/schemas/Overlay"
            },
            "type": "array",
            "description": "Overlays that use this room, each with its read-only monitoringUrl.\nPresent only when the key has the overlays:read scope."
          }
        },
        "required": [
          "id",
          "themeId",
          "name",
          "sections",
          "theme",
          "presets"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateControlRoomSectionRequestBody": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ControlRoomName"
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ControlRoomPresetResponse": {
        "description": "Use the returned id as presetId with the overlay control-room graphics endpoint.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "controlRoomId": {
            "$ref": "#/components/schemas/Id"
          },
          "sectionId": {
            "type": "string"
          },
          "graphicId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "orderIndex": {
            "type": "integer",
            "format": "int32"
          },
          "variableValues": {
            "$ref": "#/components/schemas/PresetVariableValues"
          },
          "exposedVariables": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Every control variable operators can see on this preset, with or without a stored value."
          }
        },
        "required": [
          "id",
          "controlRoomId",
          "sectionId",
          "graphicId",
          "name",
          "orderIndex",
          "variableValues",
          "exposedVariables"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PresetExposedVariableNames": {
        "items": {
          "type": "string"
        },
        "type": "array",
        "description": "Names of control variables to expose in the control room without a value.\nUse this for fact, stat, team, player and match variables; operators pick the value live."
      },
      "CreateControlRoomPresetRequestBody": {
        "properties": {
          "sectionId": {
            "type": "string",
            "description": "Identifier returned when creating or reading a section of this room."
          },
          "graphicId": {
            "type": "string",
            "description": "Stable graphic UUID from the theme's code or Rive graphics."
          },
          "name": {
            "$ref": "#/components/schemas/ControlRoomName"
          },
          "variableValues": {
            "$ref": "#/components/schemas/PresetVariableValues"
          },
          "exposeVariables": {
            "$ref": "#/components/schemas/PresetExposedVariableNames"
          }
        },
        "required": [
          "sectionId",
          "graphicId",
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateControlRoomPresetRequestBody": {
        "description": "Omitted fields keep their stored value. When variableValues or exposeVariables is present,\nthe preset's variable set is replaced from the active published graphic manifest.\nVariables that stay in the set keep their dashboard display type, exit mode and hidden state.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ControlRoomName"
          },
          "sectionId": {
            "type": "string",
            "description": "Moves the preset to the end of another section of the same room."
          },
          "variableValues": {
            "$ref": "#/components/schemas/PresetVariableValues"
          },
          "exposeVariables": {
            "$ref": "#/components/schemas/PresetExposedVariableNames"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PushDataSourceResponseBody": {
        "description": "Response body after successfully pushing data",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "alias": {
            "type": "string"
          },
          "competitionThemeSettingId": {
            "type": "number",
            "format": "double"
          },
          "lastPushedAt": {
            "type": "string"
          },
          "warning": {
            "type": "string",
            "description": "Validation warning if the data doesn't match the template schema.\nData is still stored even if validation fails."
          }
        },
        "required": [
          "success",
          "alias",
          "competitionThemeSettingId",
          "lastPushedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SheetParseHints": {
        "description": "Parse hints for raw sheet data",
        "properties": {
          "orientation": {
            "type": "string",
            "enum": [
              "row",
              "col"
            ],
            "description": "'row' = headers in first row (default), 'col' = headers in first column"
          },
          "headerIndex": {
            "type": "number",
            "format": "double",
            "description": "Which row/column contains headers (1-based). Defaults to 1."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "PushDataSourceRequestBody": {
        "description": "Request body for pushing data to an external data source.\nSupports two formats:\n\n1. Pre-formatted JSON (for complex schemas or direct API integrations):\n   { data: { rows: [...] } }\n\n2. CSV string (for flat tabular data):\n   { csv: \"name,score\\nJohn,10\\nJane,20\" }",
        "properties": {
          "data": {
            "description": "Pre-formatted data matching the template schema.\nUse this format for complex schemas or direct API integrations."
          },
          "csv": {
            "type": "string",
            "description": "CSV or TSV string. Works with any data source that can export CSV.\nRow 1 = headers, Row 2+ = data. Supports comma, tab, or semicolon delimiters.\nServer auto-detects delimiter and parses values (numbers, booleans, JSON arrays)."
          },
          "parse": {
            "$ref": "#/components/schemas/SheetParseHints"
          }
        },
        "type": "object",
        "additionalProperties": false,
        "example": {
          "data": {
            "rows": [
              {
                "team": "Eagles",
                "score": 42
              }
            ]
          }
        }
      },
      "MatchName": {
        "type": "string",
        "description": "Match name",
        "maxLength": 42,
        "minLength": 5
      },
      "PeriodStatus": {
        "description": "The liveStatus of the match as defined by the period",
        "enum": [
          "live",
          "break"
        ],
        "type": "string"
      },
      "FinishedStatus": {
        "enum": [
          "finished",
          "pregame",
          "cancelled",
          "inProgress",
          "abandoned",
          "retirement",
          "finishedEarly"
        ],
        "type": "string"
      },
      "MatchV1": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "liveStatus": {
            "$ref": "#/components/schemas/PeriodStatus"
          },
          "finishedStatus": {
            "$ref": "#/components/schemas/FinishedStatus"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "homeTeamId": {
            "$ref": "#/components/schemas/Id"
          },
          "awayTeamId": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "required": [
          "id",
          "name",
          "date",
          "competitionId",
          "sport",
          "liveStatus",
          "finishedStatus",
          "venueId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Venue": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/NullableGfxName"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          }
        },
        "required": [
          "id",
          "name",
          "gfxName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "FirstName": {
        "type": "string",
        "description": "Default Player first name",
        "minLength": 1,
        "maxLength": 35
      },
      "LastName": {
        "type": "string",
        "description": "Default Player first name",
        "minLength": 1,
        "maxLength": 35
      },
      "PlayerNumber": {
        "type": "string",
        "minLength": 0,
        "maxLength": 3
      },
      "NullableUrl": {
        "type": "string",
        "nullable": true,
        "pattern": "https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)"
      },
      "MatchPlayer": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "teamId": {
            "$ref": "#/components/schemas/Id"
          },
          "firstName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "lastName": {
            "$ref": "#/components/schemas/LastName"
          },
          "position": {
            "type": "string",
            "nullable": true
          },
          "positionType": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlayerNumber"
              }
            ],
            "nullable": true
          },
          "photoUrl": {
            "$ref": "#/components/schemas/NullableUrl"
          },
          "captain": {
            "type": "boolean"
          },
          "starter": {
            "type": "boolean"
          },
          "formationNumber": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "The player's slot in the team's formation layout, numbered from the\ngoalkeeper through to the forwards. Null when no formation slot is assigned."
          },
          "lineupPosition": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "The player's position in the team's lineup ordering as managed in the\ncontrol room. Null when no explicit lineup order is set."
          }
        },
        "required": [
          "id",
          "teamId",
          "firstName",
          "lastName",
          "position",
          "positionType",
          "number",
          "captain",
          "starter",
          "formationNumber",
          "lineupPosition"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamDestination": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "youtube",
              "facebook",
              "twitter",
              "linkedin",
              "tiktok",
              "twitch",
              "custom",
              "perform",
              "genius",
              "img",
              "igame",
              "fifa+",
              "infront"
            ]
          },
          "url": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "url",
          "key"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Stream": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "destinations": {
            "items": {
              "$ref": "#/components/schemas/StreamDestination"
            },
            "type": "array"
          },
          "idleImageUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "destinations"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchWithAllIncludesV1": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "liveStatus": {
            "$ref": "#/components/schemas/PeriodStatus"
          },
          "finishedStatus": {
            "$ref": "#/components/schemas/FinishedStatus"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "homeTeamId": {
            "$ref": "#/components/schemas/Id"
          },
          "awayTeamId": {
            "$ref": "#/components/schemas/Id"
          },
          "competition": {
            "$ref": "#/components/schemas/Competition"
          },
          "homeTeam": {
            "$ref": "#/components/schemas/Team"
          },
          "awayTeam": {
            "$ref": "#/components/schemas/Team"
          },
          "overlays": {
            "items": {
              "$ref": "#/components/schemas/Overlay"
            },
            "type": "array"
          },
          "venue": {
            "$ref": "#/components/schemas/Venue"
          },
          "lineup": {
            "items": {
              "$ref": "#/components/schemas/MatchPlayer"
            },
            "type": "array"
          },
          "streams": {
            "items": {
              "$ref": "#/components/schemas/Stream"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "date",
          "competitionId",
          "sport",
          "liveStatus",
          "finishedStatus",
          "venueId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchIncludeQueryParam": {
        "type": "string",
        "description": "Comma seperated string of entity abbreviations\nAllows optional population of nested entities\nc = competition\nv = venue\nt = teams\no = overlays\np = players\ns = streams\ncp = competitors\ne.g. 'c,v,t,o,p,cp'"
      },
      "MatchPlayerSearchResponseBody": {
        "properties": {
          "lineup": {
            "items": {
              "$ref": "#/components/schemas/MatchPlayer"
            },
            "type": "array"
          },
          "count": {
            "$ref": "#/components/schemas/Count"
          }
        },
        "required": [
          "lineup",
          "count"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ListMatchV1": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "liveStatus": {
            "$ref": "#/components/schemas/PeriodStatus"
          },
          "finishedStatus": {
            "$ref": "#/components/schemas/FinishedStatus"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "homeTeamId": {
            "$ref": "#/components/schemas/Id"
          },
          "awayTeamId": {
            "$ref": "#/components/schemas/Id"
          },
          "streams": {
            "items": {
              "$ref": "#/components/schemas/Stream"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "date",
          "competitionId",
          "sport",
          "liveStatus",
          "finishedStatus",
          "venueId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchSearchResponseBodyV1": {
        "properties": {
          "matches": {
            "items": {
              "$ref": "#/components/schemas/ListMatchV1"
            },
            "type": "array"
          },
          "total": {
            "$ref": "#/components/schemas/Count"
          },
          "returned": {
            "$ref": "#/components/schemas/Count"
          }
        },
        "required": [
          "matches",
          "total",
          "returned"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchesIncludeQueryParam": {
        "type": "string",
        "description": "Comma seperated string of entity abbreviations\nAllows optional population of nested entities\ns = streams\ne.g. 'c,v,t,o,p,cp'"
      },
      "BaseCreateMatchResponseBody": {
        "properties": {
          "overlays": {
            "items": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "key": {
                  "$ref": "#/components/schemas/UUIDv4"
                },
                "id": {
                  "type": "number",
                  "format": "double"
                }
              },
              "required": [
                "name",
                "key",
                "id"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "streams": {
            "items": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "id": {
                  "type": "number",
                  "format": "double"
                }
              },
              "required": [
                "name",
                "id"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "overlays",
          "streams",
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateMatchResponseBodyV1": {
        "$ref": "#/components/schemas/BaseCreateMatchResponseBody"
      },
      "CreateMatchRequestBodyV1": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "homeTeamId": {
            "$ref": "#/components/schemas/Id"
          },
          "awayTeamId": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "required": [
          "venueId",
          "competitionId",
          "date",
          "homeTeamId",
          "awayTeamId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateMatchRequestBody": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "homeTeamId": {
            "$ref": "#/components/schemas/Id"
          },
          "awayTeamId": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "FactResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "periodNumber": {
            "type": "number",
            "format": "double"
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "matchId",
          "name",
          "periodNumber",
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateFactRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "teamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "playerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "playerTwoId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "date": {
            "type": "string"
          },
          "data": {
            "description": "Sport-specific detail of the event, for example the goal type or the card colour.\nThe shape depends on the sport and the fact name."
          },
          "meta": {
            "description": "Free-form metadata that travels with the fact. LIGR stores it as sent."
          }
        },
        "required": [
          "name",
          "periodNumber"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateFactRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          },
          "teamId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "playerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clockAtDate": {
            "type": "string",
            "description": "Format mm:ss"
          },
          "date": {
            "type": "string"
          },
          "data": {
            "description": "Sport-specific detail of the event. Replaces the stored value. Send null to clear it."
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "meta": {
            "description": "Free-form metadata that travels with the fact. Replaces the stored value. Send null to clear it."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "DeleteFactResponse": {
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchCompetitorsType": {
        "description": "The match format: `singles`, `doubles`, `teams` or `group`. It is one value for the match.\nEach row in `competitors` has its own `entityType`. For example, a doubles match has\n`competitorsType: doubles` and four `entityType: player` rows. A group match has `player` rows.",
        "enum": [
          "singles",
          "doubles",
          "teams",
          "group"
        ],
        "type": "string"
      },
      "MatchV2": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "liveStatus": {
            "$ref": "#/components/schemas/PeriodStatus"
          },
          "finishedStatus": {
            "$ref": "#/components/schemas/FinishedStatus"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "competitorsType": {
            "$ref": "#/components/schemas/MatchCompetitorsType"
          }
        },
        "required": [
          "id",
          "name",
          "date",
          "competitionId",
          "sport",
          "liveStatus",
          "finishedStatus",
          "venueId",
          "competitorsType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Player": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "firstName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "lastName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          }
        },
        "required": [
          "id",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchWithAllIncludesV2": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "liveStatus": {
            "$ref": "#/components/schemas/PeriodStatus"
          },
          "finishedStatus": {
            "$ref": "#/components/schemas/FinishedStatus"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "competitorsType": {
            "$ref": "#/components/schemas/MatchCompetitorsType"
          },
          "competition": {
            "$ref": "#/components/schemas/Competition"
          },
          "overlays": {
            "items": {
              "$ref": "#/components/schemas/Overlay"
            },
            "type": "array"
          },
          "venue": {
            "$ref": "#/components/schemas/Venue"
          },
          "lineup": {
            "items": {
              "$ref": "#/components/schemas/MatchPlayer"
            },
            "type": "array"
          },
          "streams": {
            "items": {
              "$ref": "#/components/schemas/Stream"
            },
            "type": "array"
          },
          "competitors": {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Team"
                },
                {
                  "$ref": "#/components/schemas/Player"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "date",
          "competitionId",
          "sport",
          "liveStatus",
          "finishedStatus",
          "venueId",
          "competitorsType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SummaryTeamScore": {
        "properties": {
          "home": {
            "type": "number",
            "format": "double"
          },
          "away": {
            "type": "number",
            "format": "double"
          },
          "homeShootout": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "awayShootout": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "required": [
          "home",
          "away"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SummarySetScoreItem": {
        "properties": {
          "home": {
            "type": "number",
            "format": "double"
          },
          "away": {
            "type": "number",
            "format": "double"
          },
          "homeTiebreak": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "awayTiebreak": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "required": [
          "home",
          "away"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SummarySetScore": {
        "properties": {
          "setScores": {
            "items": {
              "$ref": "#/components/schemas/SummarySetScoreItem"
            },
            "type": "array"
          },
          "homePoints": {
            "type": "string"
          },
          "awayPoints": {
            "type": "string"
          }
        },
        "required": [
          "setScores",
          "homePoints",
          "awayPoints"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SummaryClock": {
        "properties": {
          "clockRunning": {
            "type": "boolean"
          },
          "clockInMs": {
            "type": "number",
            "format": "double"
          },
          "clockChangeDate": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "clockRunning",
          "clockInMs"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SummaryPeriodType": {
        "type": "string",
        "enum": [
          "regular",
          "overtime"
        ],
        "description": "Literal unions (rather than the internal enums from '@/types/Period') so the\nREST contract stands alone and tsoa model names can't collide with\nidentically-named enums elsewhere in the program (e.g. aws-sdk's PeriodType)."
      },
      "SummaryPeriodStatus": {
        "type": "string",
        "enum": [
          "live",
          "break"
        ]
      },
      "SummaryPeriodFinishType": {
        "type": "string",
        "enum": [
          "default",
          "cancelled",
          "finishedEarly",
          "abandoned"
        ]
      },
      "SummaryPeriod": {
        "properties": {
          "number": {
            "type": "number",
            "format": "double"
          },
          "name": {
            "type": "string"
          },
          "shortName": {
            "type": "string"
          },
          "abbreviation": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/SummaryPeriodType"
          },
          "status": {
            "$ref": "#/components/schemas/SummaryPeriodStatus"
          },
          "duration": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Period duration in milliseconds"
          },
          "started": {
            "type": "string",
            "nullable": true
          },
          "finished": {
            "type": "string",
            "nullable": true
          },
          "pregame": {
            "type": "boolean",
            "nullable": true
          },
          "shootout": {
            "type": "boolean",
            "nullable": true
          },
          "matchFinished": {
            "type": "boolean",
            "nullable": true
          },
          "finishType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SummaryPeriodFinishType"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "number",
          "name",
          "shortName",
          "abbreviation",
          "type",
          "status"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Record_string.unknown_": {
        "properties": {},
        "type": "object",
        "description": "Construct a type with a set of properties K of type T"
      },
      "SummaryPeriodStats": {
        "properties": {
          "periodNumber": {
            "type": "number",
            "format": "double"
          },
          "home": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          },
          "away": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          },
          "score": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SummaryTeamScore"
              },
              {
                "$ref": "#/components/schemas/SummarySetScoreItem"
              }
            ]
          }
        },
        "required": [
          "periodNumber",
          "home",
          "away",
          "score"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SummaryStats": {
        "properties": {
          "home": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          },
          "away": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          },
          "periods": {
            "items": {
              "$ref": "#/components/schemas/SummaryPeriodStats"
            },
            "type": "array"
          }
        },
        "required": [
          "home",
          "away",
          "periods"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchSummaryResponseV2": {
        "properties": {
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "score": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SummaryTeamScore"
              },
              {
                "$ref": "#/components/schemas/SummarySetScore"
              }
            ]
          },
          "clock": {
            "$ref": "#/components/schemas/SummaryClock"
          },
          "currentPeriod": {
            "type": "number",
            "format": "double"
          },
          "periods": {
            "items": {
              "$ref": "#/components/schemas/SummaryPeriod"
            },
            "type": "array"
          },
          "stats": {
            "$ref": "#/components/schemas/SummaryStats"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "matchId",
          "sport",
          "score",
          "clock",
          "currentPeriod",
          "periods",
          "stats",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ListMatchV2": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "liveStatus": {
            "$ref": "#/components/schemas/PeriodStatus"
          },
          "finishedStatus": {
            "$ref": "#/components/schemas/FinishedStatus"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "competitorsType": {
            "$ref": "#/components/schemas/MatchCompetitorsType"
          },
          "streams": {
            "items": {
              "$ref": "#/components/schemas/Stream"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "date",
          "competitionId",
          "sport",
          "liveStatus",
          "finishedStatus",
          "venueId",
          "competitorsType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchSearchResponseBodyV2": {
        "properties": {
          "matches": {
            "items": {
              "$ref": "#/components/schemas/ListMatchV2"
            },
            "type": "array"
          },
          "total": {
            "$ref": "#/components/schemas/Count"
          },
          "returned": {
            "$ref": "#/components/schemas/Count"
          }
        },
        "required": [
          "matches",
          "total",
          "returned"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateMatchResponseBodyV2": {
        "$ref": "#/components/schemas/BaseCreateMatchResponseBody"
      },
      "CompetitorType": {
        "description": "The kind of one competitor row: `team` or `player`. A `teams` match has `team` rows.\nA `singles`, `doubles` or `group` match has `player` rows.",
        "enum": [
          "team",
          "player"
        ],
        "type": "string"
      },
      "Competitor": {
        "properties": {
          "entityId": {
            "$ref": "#/components/schemas/Id"
          },
          "entityType": {
            "$ref": "#/components/schemas/CompetitorType"
          },
          "meta": {
            "properties": {
              "isHome": {
                "type": "boolean"
              }
            },
            "required": [
              "isHome"
            ],
            "type": "object",
            "nullable": true
          }
        },
        "required": [
          "entityId",
          "entityType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateMatchRequestBodyV2": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitorsType": {
            "$ref": "#/components/schemas/MatchCompetitorsType"
          },
          "competitors": {
            "items": {
              "$ref": "#/components/schemas/Competitor"
            },
            "type": "array"
          }
        },
        "required": [
          "venueId",
          "competitionId",
          "date",
          "competitorsType",
          "competitors"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateMatchRequestBodyV2": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "venueId": {
            "$ref": "#/components/schemas/Id"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "competitorsType": {
            "$ref": "#/components/schemas/MatchCompetitorsType"
          },
          "competitors": {
            "items": {
              "$ref": "#/components/schemas/Competitor"
            },
            "type": "array"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "MatchLineupPlayerInput": {
        "properties": {
          "playerId": {
            "$ref": "#/components/schemas/Id"
          },
          "number": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlayerNumber"
              }
            ],
            "nullable": true,
            "description": "Shirt number for this match. Defaults to the roster number."
          },
          "position": {
            "type": "string",
            "nullable": true,
            "description": "Position for this match. Defaults to the roster position."
          },
          "captain": {
            "type": "boolean",
            "nullable": true,
            "description": "Team captain for this match. Defaults to the roster captain flag."
          },
          "lineupPosition": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Order of the player in the team's lineup. Defaults to the roster lineup position."
          },
          "formationNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Football only. The formation slot of a starter, 1 to 11. Leave it out for no slot."
          }
        },
        "required": [
          "playerId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchLineupTeamInput": {
        "properties": {
          "teamId": {
            "$ref": "#/components/schemas/Id"
          },
          "starting": {
            "items": {
              "$ref": "#/components/schemas/MatchLineupPlayerInput"
            },
            "type": "array"
          },
          "bench": {
            "items": {
              "$ref": "#/components/schemas/MatchLineupPlayerInput"
            },
            "type": "array"
          }
        },
        "required": [
          "teamId",
          "starting",
          "bench"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SetMatchLineupRequestBody": {
        "properties": {
          "teams": {
            "items": {
              "$ref": "#/components/schemas/MatchLineupTeamInput"
            },
            "type": "array",
            "description": "One entry per team to replace. A team you leave out keeps its lineup.",
            "minItems": 1,
            "maxItems": 2
          }
        },
        "required": [
          "teams"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "MatchStateChangeResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "finishedStatus": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "finishedStatus"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Official": {
        "description": "A match official, such as a referee or an umpire.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "firstName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "lastName": {
            "$ref": "#/components/schemas/LastName"
          },
          "gender": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true,
            "example": "AUS"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          }
        },
        "required": [
          "id",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OfficialSearchResponseBody": {
        "properties": {
          "officials": {
            "items": {
              "$ref": "#/components/schemas/Official"
            },
            "type": "array"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "returned": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "officials",
          "total",
          "returned"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OverlayWithAllIncludesV1": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 35,
            "minLength": 1
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "encodingDelay": {
            "type": "integer",
            "format": "int32",
            "description": "Seconds to delay graphic updates",
            "maximum": 120
          },
          "key": {
            "$ref": "#/components/schemas/UUIDv4"
          },
          "autoMode": {
            "type": "boolean"
          },
          "adType": {
            "type": "string"
          },
          "competitionThemeSettingId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          },
          "controlRoomId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          },
          "controlRoomUrl": {
            "type": "string",
            "description": "Open this URL with an authenticated dashboard session after setup."
          },
          "monitoringUrl": {
            "type": "string",
            "description": "Read-only monitoring page of this overlay on the overlay host of this environment.\nOpen it to see the graphics that are on air. It does not take control of the overlay."
          },
          "match": {
            "$ref": "#/components/schemas/MatchV1"
          }
        },
        "required": [
          "name",
          "id",
          "key"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OverlayIncludeQueryParam": {
        "type": "string",
        "description": "Comma seperated string of entity abbreviations\nAllows optional population of nested entities\nm = match\ne.g. 'm'"
      },
      "UpdateOverlayRequestBody": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "encodingDelay": {
            "type": "integer",
            "format": "int32",
            "description": "Graphics delay in seconds. The overlay holds every graphic back by this much, so the\ngraphics land on the delayed picture of the stream.",
            "minimum": 0,
            "maximum": 60
          },
          "adType": {
            "type": "string",
            "enum": [
              "free",
              "brands",
              "noBrands"
            ]
          },
          "competitionThemeSettingId": {
            "$ref": "#/components/schemas/Id"
          },
          "controlRoomId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          },
          "autoMode": {
            "type": "boolean",
            "description": "Auto Graphics. When true, the automation of the match fires the graphics on this overlay."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "RefreshOverlayKeyResponseBody": {
        "properties": {
          "key": {
            "$ref": "#/components/schemas/UUIDv4"
          }
        },
        "required": [
          "key"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateOverlayResponseBody": {
        "properties": {
          "key": {
            "$ref": "#/components/schemas/UUIDv4"
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "controlRoomUrl": {
            "type": "string"
          },
          "monitoringUrl": {
            "type": "string",
            "description": "Read-only monitoring page of the new overlay on the overlay host of this environment."
          }
        },
        "required": [
          "key",
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateOverlayRequestBody": {
        "properties": {
          "name": {
            "$ref": "#/components/schemas/MatchName"
          },
          "encodingDelay": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 60
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "autoMode": {
            "type": "boolean",
            "description": "Set false for manual control. Requires adType noBrands or brands."
          },
          "adType": {
            "type": "string",
            "enum": [
              "free",
              "brands",
              "noBrands"
            ]
          },
          "competitionThemeSettingId": {
            "$ref": "#/components/schemas/Id"
          },
          "controlRoomId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          }
        },
        "required": [
          "name",
          "matchId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OverlayWithAllIncludesV2": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 35,
            "minLength": 1
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "encodingDelay": {
            "type": "integer",
            "format": "int32",
            "description": "Seconds to delay graphic updates",
            "maximum": 120
          },
          "key": {
            "$ref": "#/components/schemas/UUIDv4"
          },
          "autoMode": {
            "type": "boolean"
          },
          "adType": {
            "type": "string"
          },
          "competitionThemeSettingId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          },
          "controlRoomId": {
            "$ref": "#/components/schemas/NullableOverlayAssignmentId"
          },
          "controlRoomUrl": {
            "type": "string",
            "description": "Open this URL with an authenticated dashboard session after setup."
          },
          "monitoringUrl": {
            "type": "string",
            "description": "Read-only monitoring page of this overlay on the overlay host of this environment.\nOpen it to see the graphics that are on air. It does not take control of the overlay."
          },
          "match": {
            "$ref": "#/components/schemas/MatchV2"
          }
        },
        "required": [
          "name",
          "id",
          "key"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ManualGraphicCommandResponseBody": {
        "properties": {
          "overlayId": {
            "$ref": "#/components/schemas/Id"
          },
          "manualGraphicState": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          }
        },
        "required": [
          "overlayId",
          "manualGraphicState"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "overlayId": 2300003,
          "manualGraphicState": {
            "Scoreboard": {
              "_ligr_presetId": 101,
              "variableValues": {
                "hide": false
              }
            }
          }
        }
      },
      "ManualGraphicCommandRequestBody": {
        "properties": {
          "command": {
            "type": "string",
            "enum": [
              "show",
              "hide",
              "hideAll",
              "update"
            ],
            "description": "Action to perform on the graphic."
          },
          "graphicUuid": {
            "type": "string",
            "description": "Graphic UUID. Used directly as the key in manualGraphicState — no\nlookup. Exactly one of `graphicUuid` or `name` is required for any\ncommand except `hideAll`; if both are provided, `graphicUuid` wins."
          },
          "name": {
            "type": "string",
            "description": "Graphic human name (as configured in the theme). The server looks it\nup in the overlay's theme and resolves to the UUID before dispatching.\nMust be a graphic name, not a UUID — pass UUIDs via `graphicUuid`."
          },
          "variableValues": {
            "properties": {},
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number",
                  "format": "double"
                },
                {
                  "type": "boolean"
                }
              ],
              "nullable": true
            },
            "type": "object"
          }
        },
        "required": [
          "command"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "command": "hideAll"
        }
      },
      "ControlRoomGraphicCommandRequestBody": {
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "show",
              "update",
              "hide"
            ],
            "description": "`show` puts the preset graphic on air. `update` sends new values to a preset graphic\nthat is already on air; the live values become the preset values plus `variableValues`.\n`hide` takes the graphic off air. For hideAll, use the /graphics/commands endpoint."
          },
          "presetId": {
            "type": "number",
            "format": "double",
            "description": "Control-room graphic (preset) id. The server resolves the preset's\ngraphic UUID and merges its configured control-room variable values\nwith any `variableValues` overrides."
          },
          "variableValues": {
            "properties": {},
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number",
                  "format": "double"
                },
                {
                  "type": "boolean"
                }
              ],
              "nullable": true
            },
            "type": "object"
          }
        },
        "required": [
          "action",
          "presetId"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "action": "show",
          "presetId": 1091
        }
      },
      "PlayerSearchResponseBody": {
        "properties": {
          "players": {
            "items": {
              "$ref": "#/components/schemas/Player"
            },
            "type": "array"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "returned": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "players",
          "total",
          "returned"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerWithAllIncludes": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "firstName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "lastName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "teams": {
            "items": {
              "$ref": "#/components/schemas/Team"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerIncludeQueryParam": {
        "type": "string",
        "description": "Comma seperated string of entity abbreviations\nAllows optional population of nested entities\nt = teams\ne.g. 't'"
      },
      "ScenarioStep": {
        "properties": {},
        "type": "object",
        "additionalProperties": {}
      },
      "Scenario": {
        "properties": {
          "scenario": {
            "type": "string"
          },
          "dataSequence": {
            "items": {
              "$ref": "#/components/schemas/ScenarioStep"
            },
            "type": "array"
          }
        },
        "required": [
          "scenario",
          "dataSequence"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ScenariosResponse": {
        "properties": {
          "sport": {
            "type": "string"
          },
          "scenarios": {
            "items": {
              "$ref": "#/components/schemas/Scenario"
            },
            "type": "array"
          }
        },
        "required": [
          "sport",
          "scenarios"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SportSchemaResponse": {
        "properties": {
          "sport": {
            "type": "string"
          },
          "schema": {
            "$ref": "#/components/schemas/Record_string.unknown_"
          }
        },
        "required": [
          "sport",
          "schema"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "Record_string.SchemaTypeInfo_": {
        "properties": {},
        "type": "object",
        "description": "Construct a type with a set of properties K of type T"
      },
      "ControlVariablesSchemaResponse": {
        "properties": {
          "types": {
            "$ref": "#/components/schemas/Record_string.SchemaTypeInfo_"
          },
          "reserved": {
            "$ref": "#/components/schemas/Record_string.SchemaTypeInfo_"
          }
        },
        "required": [
          "types",
          "reserved"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamDestinationTransportDirection": {
        "type": "string",
        "enum": [
          "push",
          "pull"
        ]
      },
      "StreamDestinationProtocol": {
        "type": "string",
        "enum": [
          "rtmp",
          "srt"
        ]
      },
      "StreamDestinationDetail": {
        "description": "A saved destination of the organization. `url` and `key` are the server URL and the stream key\nfor a push destination. A pull destination has no url and key; LIGR serves it at `pullUrl`.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "youtube",
              "facebook",
              "twitter",
              "linkedin",
              "tiktok",
              "twitch",
              "custom",
              "perform",
              "genius",
              "img",
              "igame",
              "fifa+",
              "infront"
            ]
          },
          "transportDirection": {
            "$ref": "#/components/schemas/StreamDestinationTransportDirection"
          },
          "transportProtocol": {
            "$ref": "#/components/schemas/StreamDestinationProtocol"
          },
          "feedType": {
            "type": "string",
            "enum": [
              "program",
              "clean"
            ],
            "description": "`program` carries the graphics. `clean` is the picture without them."
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "pullUrl": {
            "type": "string",
            "nullable": true,
            "description": "For a pull destination: the URL a player or a relay pulls from."
          },
          "singleUse": {
            "type": "boolean",
            "description": "True for a destination created for one match by createAndLinkOneOffDestination."
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "transportDirection",
          "transportProtocol",
          "feedType",
          "url",
          "key",
          "pullUrl",
          "singleUse",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamDestinationListResponse": {
        "properties": {
          "destinations": {
            "items": {
              "$ref": "#/components/schemas/StreamDestinationDetail"
            },
            "type": "array"
          }
        },
        "required": [
          "destinations"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateStreamDestinationDetailRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "youtube",
              "facebook",
              "twitter",
              "linkedin",
              "tiktok",
              "twitch",
              "custom",
              "perform",
              "genius",
              "img",
              "igame",
              "fifa+",
              "infront"
            ]
          },
          "transportDirection": {
            "type": "string",
            "enum": [
              "push",
              "pull"
            ],
            "description": "`push` sends to `url`. `pull` lets a player pull from LIGR. Default `push`."
          },
          "transportProtocol": {
            "type": "string",
            "enum": [
              "rtmp",
              "srt"
            ],
            "description": "Inferred from the url when left out: `srt://` is SRT, anything else RTMP."
          },
          "feedType": {
            "type": "string",
            "enum": [
              "program",
              "clean"
            ],
            "description": "Default `program`."
          },
          "url": {
            "type": "string",
            "description": "Server URL. Required for a push destination."
          },
          "key": {
            "type": "string",
            "description": "Stream key. Required for a push destination."
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "name": "YouTube main",
          "type": "youtube",
          "url": "rtmp://a.rtmp.youtube.com/live2",
          "key": "abcd-efgh-ijkl-mnop"
        }
      },
      "StreamDestinationFeedType": {
        "type": "string",
        "enum": [
          "program",
          "clean"
        ]
      },
      "UpdateStreamDestinationDetailRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "youtube",
              "facebook",
              "twitter",
              "linkedin",
              "tiktok",
              "twitch",
              "custom",
              "perform",
              "genius",
              "img",
              "igame",
              "fifa+",
              "infront"
            ]
          },
          "transportProtocol": {
            "$ref": "#/components/schemas/StreamDestinationProtocol"
          },
          "feedType": {
            "$ref": "#/components/schemas/StreamDestinationFeedType"
          },
          "url": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "DeletedResponse": {
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamInputType": {
        "type": "string",
        "enum": [
          "default",
          "pull"
        ]
      },
      "StreamInput": {
        "description": "An input of the organization. A `default` input is a push endpoint LIGR hosts: send RTMP to\n`rtmpUrl` with `streamKey`, or SRT to `srtUrl`. A `pull` input reads `sourceUrl`.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/StreamInputType"
          },
          "host": {
            "type": "string"
          },
          "applicationName": {
            "type": "string"
          },
          "streamKey": {
            "type": "string"
          },
          "rtmpUrl": {
            "type": "string",
            "description": "RTMP ingest URL. Publish with `streamKey` as the stream key."
          },
          "srtUrl": {
            "type": "string",
            "description": "SRT ingest URL, stream id included."
          },
          "sourceUrl": {
            "type": "string",
            "nullable": true,
            "description": "For a pull input: the URL LIGR pulls."
          },
          "latencyMs": {
            "type": "number",
            "format": "double",
            "description": "Receive latency in milliseconds."
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "host",
          "applicationName",
          "streamKey",
          "rtmpUrl",
          "srtUrl",
          "sourceUrl",
          "latencyMs",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamInputListResponse": {
        "properties": {
          "inputs": {
            "items": {
              "$ref": "#/components/schemas/StreamInput"
            },
            "type": "array"
          }
        },
        "required": [
          "inputs"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateStreamInputRequestBody": {
        "description": "LIGR generates the host, the application name and the stream key.",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "default",
              "pull"
            ],
            "description": "Default `default`, a push endpoint."
          },
          "sourceUrl": {
            "type": "string",
            "description": "Required for a `pull` input. The RTMP or SRT URL LIGR pulls."
          },
          "latencyMs": {
            "type": "integer",
            "format": "int32",
            "description": "Receive latency in milliseconds. One of 20, 50, 100, 150, 250, 350, 500, 1000, 1500, 2000,\n2500, 3000. Default 1000."
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "name": "OB van 1",
          "latencyMs": 1000
        }
      },
      "UpdateStreamInputRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          },
          "sourceUrl": {
            "type": "string",
            "nullable": true
          },
          "latencyMs": {
            "type": "integer",
            "format": "int32"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "StreamStateResponse": {
        "properties": {
          "streamSettingsId": {
            "$ref": "#/components/schemas/Id"
          },
          "state": {
            "type": "string"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "required": [
          "streamSettingsId",
          "state",
          "matchId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ManageStreamResponse": {
        "properties": {
          "streamSettingsId": {
            "$ref": "#/components/schemas/Id"
          },
          "state": {
            "type": "string"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "transitioning": {
            "type": "boolean"
          }
        },
        "required": [
          "streamSettingsId",
          "state",
          "matchId",
          "transitioning"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StartStreamRequestBody": {
        "properties": {
          "destinationIds": {
            "items": {
              "type": "number",
              "format": "double"
            },
            "type": "array",
            "description": "Destinations to publish to as soon as the stream is up, by stream destination id. Leave it\nout to start the stream with no destination publishing: the picture runs, and an operator\nstarts the destinations from the dashboard when it is right. An empty array means the same."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "StreamCommand": {
        "description": "The lifecycle commands the deprecated `manage` route still accepts. Use `POST .../start` and\n`POST .../stop` instead.",
        "enum": [
          "GoLive",
          "StopStream"
        ],
        "type": "string"
      },
      "ManageStreamRequestBody": {
        "properties": {
          "command": {
            "$ref": "#/components/schemas/StreamCommand"
          },
          "startDestinationsImmediately": {
            "items": {
              "type": "number",
              "format": "double"
            },
            "type": "array",
            "description": "Destinations to start at once with `GoLive`, by stream destination id. Leave it out to start\nthe stream with no destination publishing. Ignored by `StopStream`."
          }
        },
        "required": [
          "command"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "OverlayActionResponse": {
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ChangeOverlayRequestBody": {
        "properties": {
          "overlayId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "required": [
          "overlayId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DestinationHealthResponse": {
        "description": "What the stream reports for one destination right after a start or a stop.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "status": {
            "type": "string",
            "description": "`connected`, `connecting` or `retrying`."
          },
          "bitrateKb": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Outgoing bitrate in kb/s. Present when the status is `connected`."
          },
          "nextRetryDate": {
            "type": "string",
            "nullable": true,
            "description": "Time of the next connection attempt, in ISO 8601. Present when the status is `retrying`."
          },
          "activeClients": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Number of connected clients. Pull destinations only."
          }
        },
        "required": [
          "id",
          "status",
          "bitrateKb",
          "nextRetryDate",
          "activeClients"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DestinationsHealthResponse": {
        "properties": {
          "streamSettingsId": {
            "$ref": "#/components/schemas/Id"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "destinations": {
            "items": {
              "$ref": "#/components/schemas/DestinationHealthResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "streamSettingsId",
          "matchId",
          "destinations"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DestinationIdsRequestBody": {
        "properties": {
          "destinationIds": {
            "items": {
              "type": "number",
              "format": "double"
            },
            "type": "array",
            "description": "Stream destination ids. A destination must be linked to the stream.",
            "minItems": 1
          }
        },
        "required": [
          "destinationIds"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamAutomationResponse": {
        "properties": {
          "streamSettingsId": {
            "$ref": "#/components/schemas/Id"
          },
          "autoStream": {
            "type": "boolean"
          }
        },
        "required": [
          "streamSettingsId",
          "autoStream"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamAutomationRequestBody": {
        "properties": {
          "autoStream": {
            "type": "boolean",
            "description": "Auto Stream. When true, the stream starts and stops at the automation times of the match.\nThe match needs pregame and postgame automation times first."
          }
        },
        "required": [
          "autoStream"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "InputLatencyResponse": {
        "properties": {
          "inputId": {
            "$ref": "#/components/schemas/Id"
          },
          "latencyMs": {
            "type": "integer",
            "format": "int32",
            "description": "The latency now saved on the input, in milliseconds."
          }
        },
        "required": [
          "inputId",
          "latencyMs"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "InputLatencyRequestBody": {
        "properties": {
          "latencyMs": {
            "type": "integer",
            "format": "int32",
            "description": "Receive latency of the input in milliseconds. A higher value absorbs more network jitter\nand adds the same delay to the picture.",
            "minimum": 0,
            "maximum": 60000
          }
        },
        "required": [
          "latencyMs"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamResolutionValue": {
        "type": "string",
        "enum": [
          "1280 * 720",
          "1920 * 1080"
        ]
      },
      "StreamFps": {
        "type": "string",
        "enum": [
          "25",
          "30",
          "50",
          "60"
        ]
      },
      "StreamRegionValue": {
        "type": "string",
        "enum": [
          "us-east-1",
          "ap-southeast-2",
          "us-east-2",
          "us-west-1",
          "us-west-2",
          "ap-south-1",
          "ap-northeast-1",
          "ap-northeast-2",
          "ap-northeast-3",
          "ap-southeast-1",
          "ca-central-1",
          "eu-central-1",
          "eu-west-1",
          "eu-west-2",
          "eu-west-3",
          "eu-north-1",
          "sa-east-1",
          "eu-south-1",
          "eu-south-2",
          "af-south-1",
          "ap-southeast-3",
          "ap-southeast-4",
          "ap-east-1",
          "me-south-1",
          "me-central-1",
          "il-central-1",
          "cn-north-1",
          "cn-northwest-1",
          "mx-central-1"
        ]
      },
      "StreamSizeValue": {
        "type": "string",
        "enum": [
          "small",
          "regular",
          "large"
        ]
      },
      "AutoStreamTriggerMode": {
        "enum": [
          "schedule",
          "venues"
        ],
        "type": "string"
      },
      "StreamAutomationSettings": {
        "properties": {
          "preview": {
            "properties": {
              "mode": {
                "$ref": "#/components/schemas/AutoStreamTriggerMode"
              }
            },
            "required": [
              "mode"
            ],
            "type": "object",
            "nullable": true
          },
          "goLive": {
            "properties": {
              "mode": {
                "$ref": "#/components/schemas/AutoStreamTriggerMode"
              }
            },
            "required": [
              "mode"
            ],
            "type": "object",
            "nullable": true
          },
          "stop": {
            "properties": {
              "mode": {
                "$ref": "#/components/schemas/AutoStreamTriggerMode"
              }
            },
            "required": [
              "mode"
            ],
            "type": "object",
            "nullable": true
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "StreamSettings": {
        "description": "The configuration of one stream of a match.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          },
          "competitionId": {
            "$ref": "#/components/schemas/Id"
          },
          "overlayId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Id"
              }
            ],
            "nullable": true,
            "description": "The overlay the stream renders. Null when no overlay is linked."
          },
          "resolution": {
            "$ref": "#/components/schemas/StreamResolutionValue"
          },
          "fps": {
            "$ref": "#/components/schemas/StreamFps"
          },
          "region": {
            "$ref": "#/components/schemas/StreamRegionValue"
          },
          "size": {
            "$ref": "#/components/schemas/StreamSizeValue"
          },
          "videoBitrateKbps": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Video bitrate in kb/s. Null means the preset for the resolution."
          },
          "inputId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Id"
              }
            ],
            "nullable": true,
            "description": "The input the stream reads. Null until one is linked or resolved."
          },
          "inputSelection": {
            "type": "string",
            "enum": [
              "specific",
              "home",
              "venue"
            ],
            "description": "`specific` uses `inputId`. `home` and `venue` resolve the input from the match."
          },
          "destinationSelection": {
            "type": "string",
            "enum": [
              "specific",
              "home",
              "venue"
            ],
            "description": "`specific` uses `destinations`. `home` and `venue` resolve them from the match."
          },
          "destinations": {
            "items": {
              "$ref": "#/components/schemas/StreamDestination"
            },
            "type": "array"
          },
          "idleImageUrl": {
            "type": "string"
          },
          "hideOverlay": {
            "type": "boolean"
          },
          "autoStream": {
            "type": "boolean"
          },
          "autoStreamConfig": {
            "$ref": "#/components/schemas/StreamAutomationSettings"
          },
          "streamPreviewStartTime": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Minutes relative to the scheduled start of the match."
          },
          "streamLiveStartTime": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Minutes relative to the scheduled start of the match."
          },
          "streamAutoStopTime": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Minutes relative to the time the match stopped."
          },
          "generateHighlights": {
            "type": "boolean"
          },
          "publishHighlights": {
            "type": "boolean"
          },
          "archiveFullFeed": {
            "type": "boolean"
          },
          "archiveCleanFeed": {
            "type": "boolean"
          },
          "autoConvertRecording": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "matchId",
          "competitionId",
          "overlayId",
          "resolution",
          "fps",
          "region",
          "size",
          "videoBitrateKbps",
          "inputId",
          "inputSelection",
          "destinationSelection",
          "destinations",
          "hideOverlay",
          "autoStream",
          "autoStreamConfig",
          "streamPreviewStartTime",
          "streamLiveStartTime",
          "streamAutoStopTime",
          "generateHighlights",
          "publishHighlights",
          "archiveFullFeed",
          "archiveCleanFeed",
          "autoConvertRecording",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "StreamSettingsListResponse": {
        "properties": {
          "streams": {
            "items": {
              "$ref": "#/components/schemas/StreamSettings"
            },
            "type": "array"
          }
        },
        "required": [
          "streams"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "VideoBitrateKbps": {
        "type": "integer",
        "format": "int32",
        "description": "Video bitrate in kb/s, from 2000 to 10000. The range sits on this alias because tsoa\nignores validators on a `number | null` union.",
        "minimum": 2000,
        "maximum": 10000
      },
      "StreamSelectionMode": {
        "type": "string",
        "enum": [
          "specific",
          "home",
          "venue"
        ]
      },
      "CreateStreamSettingsRequestBody": {
        "description": "The stream takes its competition from the match. Every field but `matchId`, `resolution`,\n`fps` and `region` has a default. A typical body: `matchId`, `name`, `resolution`, `fps`,\n`region`, `inputId`, `destinationIds` and `overlayId`.",
        "properties": {
          "name": {
            "type": "string"
          },
          "overlayId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Id"
              }
            ],
            "nullable": true,
            "description": "The overlay to render. Send null to unlink."
          },
          "resolution": {
            "$ref": "#/components/schemas/StreamResolutionValue"
          },
          "fps": {
            "$ref": "#/components/schemas/StreamFps"
          },
          "region": {
            "$ref": "#/components/schemas/StreamRegionValue"
          },
          "size": {
            "$ref": "#/components/schemas/StreamSizeValue"
          },
          "videoBitrateKbps": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VideoBitrateKbps"
              }
            ],
            "nullable": true,
            "description": "Video bitrate in kb/s. The encoder runs at whole megabits, so the value is\nrounded to the nearest 1000 and must fall between 2000 and 10000. Leave it\nout for the preset of the resolution."
          },
          "inputId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Id"
              }
            ],
            "nullable": true,
            "description": "The input to read. Sets `inputSelection` to `specific`."
          },
          "destinationIds": {
            "items": {
              "$ref": "#/components/schemas/Id"
            },
            "type": "array",
            "description": "The destinations to publish to. Sets `destinationSelection` to `specific`."
          },
          "inputSelection": {
            "$ref": "#/components/schemas/StreamSelectionMode"
          },
          "destinationSelection": {
            "$ref": "#/components/schemas/StreamSelectionMode"
          },
          "hideOverlay": {
            "type": "boolean"
          },
          "autoStream": {
            "type": "boolean"
          },
          "autoStreamConfig": {
            "$ref": "#/components/schemas/StreamAutomationSettings"
          },
          "streamPreviewStartTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "streamLiveStartTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "streamAutoStopTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "generateHighlights": {
            "type": "boolean"
          },
          "publishHighlights": {
            "type": "boolean"
          },
          "archiveFullFeed": {
            "type": "boolean"
          },
          "archiveCleanFeed": {
            "type": "boolean"
          },
          "autoConvertRecording": {
            "type": "boolean",
            "description": "Needs `archiveFullFeed`."
          },
          "matchId": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "required": [
          "matchId",
          "resolution",
          "fps",
          "region"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateStreamSettingsRequestBody": {
        "description": "Every field is optional. A field you leave out keeps its value. While the stream runs, only\n`autoStream`, `autoStreamConfig`, the three times, the highlight switches and `destinationIds`\ncan change. Any other change answers 400.",
        "properties": {
          "name": {
            "type": "string"
          },
          "overlayId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Id"
              }
            ],
            "nullable": true,
            "description": "The overlay to render. Send null to unlink."
          },
          "resolution": {
            "$ref": "#/components/schemas/StreamResolutionValue"
          },
          "fps": {
            "$ref": "#/components/schemas/StreamFps"
          },
          "region": {
            "$ref": "#/components/schemas/StreamRegionValue"
          },
          "size": {
            "$ref": "#/components/schemas/StreamSizeValue"
          },
          "videoBitrateKbps": {
            "allOf": [
              {
                "$ref": "#/components/schemas/VideoBitrateKbps"
              }
            ],
            "nullable": true,
            "description": "Video bitrate in kb/s. The encoder runs at whole megabits, so the value is\nrounded to the nearest 1000 and must fall between 2000 and 10000. Leave it\nout for the preset of the resolution."
          },
          "inputId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Id"
              }
            ],
            "nullable": true,
            "description": "The input to read. Sets `inputSelection` to `specific`."
          },
          "destinationIds": {
            "items": {
              "$ref": "#/components/schemas/Id"
            },
            "type": "array",
            "description": "The destinations to publish to. Sets `destinationSelection` to `specific`."
          },
          "inputSelection": {
            "$ref": "#/components/schemas/StreamSelectionMode"
          },
          "destinationSelection": {
            "$ref": "#/components/schemas/StreamSelectionMode"
          },
          "hideOverlay": {
            "type": "boolean"
          },
          "autoStream": {
            "type": "boolean"
          },
          "autoStreamConfig": {
            "$ref": "#/components/schemas/StreamAutomationSettings"
          },
          "streamPreviewStartTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "streamLiveStartTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "streamAutoStopTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "generateHighlights": {
            "type": "boolean"
          },
          "publishHighlights": {
            "type": "boolean"
          },
          "archiveFullFeed": {
            "type": "boolean"
          },
          "archiveCleanFeed": {
            "type": "boolean"
          },
          "autoConvertRecording": {
            "type": "boolean",
            "description": "Needs `archiveFullFeed`."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateStreamDestinationResponseBody": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateStreamDestinationRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "youtube",
              "facebook",
              "twitter",
              "linkedin",
              "tiktok",
              "twitch",
              "custom",
              "perform",
              "genius",
              "img",
              "igame",
              "fifa+",
              "infront"
            ]
          },
          "url": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "url",
          "key"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateTeamRequestBody": {
        "description": "Create a team and optionally add it to competitions in the same organization.\nDiscover grade identifiers with GET /v1/competitions/grades.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/GfxName"
          },
          "gfxFullName": {
            "$ref": "#/components/schemas/GfxFullName"
          },
          "abbreviation": {
            "$ref": "#/components/schemas/Abbreviation"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "age": {
            "$ref": "#/components/schemas/Age"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "gradeId": {
            "$ref": "#/components/schemas/Id"
          },
          "competitionIds": {
            "items": {
              "$ref": "#/components/schemas/Id"
            },
            "type": "array"
          },
          "defaultVenueId": {
            "$ref": "#/components/schemas/Id"
          },
          "primaryBackgroundColor": {
            "type": "string"
          },
          "primaryTextColor": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "sport",
          "age",
          "gender",
          "gradeId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TeamSearchResponseBody": {
        "properties": {
          "teams": {
            "items": {
              "$ref": "#/components/schemas/Team"
            },
            "type": "array"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "returned": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "teams",
          "total",
          "returned"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "NullableGfxFirstName": {
        "type": "string",
        "nullable": true,
        "description": "Name predominantly display in graphics",
        "minLength": 1,
        "maxLength": 19
      },
      "NullableGfxLastName": {
        "type": "string",
        "nullable": true,
        "description": "Name predominantly display in graphics",
        "minLength": 1,
        "maxLength": 19
      },
      "TeamPlayer": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "firstName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "gfxFirstName": {
            "$ref": "#/components/schemas/NullableGfxFirstName"
          },
          "gfxLastName": {
            "$ref": "#/components/schemas/NullableGfxLastName"
          },
          "lastName": {
            "$ref": "#/components/schemas/LastName"
          },
          "position": {
            "type": "string",
            "nullable": true
          },
          "positionType": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlayerNumber"
              }
            ],
            "nullable": true
          },
          "starter": {
            "type": "boolean"
          },
          "bench": {
            "type": "boolean"
          },
          "captain": {
            "type": "boolean"
          },
          "photoUrl": {
            "$ref": "#/components/schemas/NullableUrl"
          }
        },
        "required": [
          "id",
          "firstName",
          "gfxFirstName",
          "gfxLastName",
          "lastName",
          "position",
          "positionType",
          "number",
          "starter",
          "bench",
          "captain"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TeamWithAllIncludes": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/GfxName"
          },
          "gfxFullName": {
            "$ref": "#/components/schemas/GfxFullName"
          },
          "abbreviation": {
            "$ref": "#/components/schemas/Abbreviation"
          },
          "primaryBackgroundColor": {
            "type": "string"
          },
          "primaryTextColor": {
            "type": "string"
          },
          "secondaryBackgroundColor": {
            "type": "string"
          },
          "secondaryTextColor": {
            "type": "string"
          },
          "defaultVenueId": {
            "$ref": "#/components/schemas/Id"
          },
          "sport": {
            "$ref": "#/components/schemas/SportKey"
          },
          "clubId": {
            "$ref": "#/components/schemas/Id"
          },
          "isHome": {
            "type": "boolean"
          },
          "logoUrl": {
            "type": "string",
            "description": "CDN URL of the team logo, or of the club logo when the team has none.\nPresent only on the team routes."
          },
          "nonPlayerStaff": {
            "items": {
              "$ref": "#/components/schemas/TeamStaffMember"
            },
            "type": "array",
            "description": "Coaches and other staff who are not players. Graphics show the `manager` entry as the coach.\nIf no entry has the `manager` role, graphics show the first entry."
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "defaultVenue": {
            "$ref": "#/components/schemas/Venue"
          },
          "players": {
            "items": {
              "$ref": "#/components/schemas/TeamPlayer"
            },
            "type": "array"
          },
          "competitions": {
            "items": {
              "$ref": "#/components/schemas/Competition"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "sport"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TeamIncludeQueryParam": {
        "type": "string",
        "description": "Comma seperated string of entity abbreviations\nAllows optional population of nested entities\nv = venue\np = players\nc = competitions\ne.g. 'c,p,v'"
      },
      "UpdateTeamRequestBody": {
        "description": "Change one or more fields of a team. Send only the fields to change.\nFields that you omit keep their current value.\nDiscover grade identifiers with GET /v1/competitions/grades.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/GfxName"
          },
          "gfxFullName": {
            "$ref": "#/components/schemas/GfxFullName"
          },
          "abbreviation": {
            "$ref": "#/components/schemas/Abbreviation"
          },
          "age": {
            "$ref": "#/components/schemas/Age"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "gradeId": {
            "$ref": "#/components/schemas/Id"
          },
          "defaultVenueId": {
            "$ref": "#/components/schemas/Id"
          },
          "primaryBackgroundColor": {
            "type": "string"
          },
          "primaryTextColor": {
            "type": "string"
          },
          "secondaryBackgroundColor": {
            "type": "string"
          },
          "secondaryTextColor": {
            "type": "string"
          },
          "nonPlayerStaff": {
            "items": {
              "$ref": "#/components/schemas/TeamStaffMember"
            },
            "type": "array",
            "description": "Replaces the whole staff list. Send an empty array to remove all staff.\nGraphics show the `manager` entry as the coach. If no entry has the `manager` role, graphics show the first entry."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "TeamLogoUploadHeaders": {
        "properties": {
          "x-amz-checksum-sha256": {
            "type": "string",
            "description": "Base64 SHA-256 of the file. Send it unchanged with the PUT."
          }
        },
        "required": [
          "x-amz-checksum-sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TeamLogoUploadResponse": {
        "properties": {
          "uploadId": {
            "type": "number",
            "format": "double",
            "description": "Send it as `uploadId` to `PUT /v1/teams/{teamId}/logo`."
          },
          "url": {
            "type": "string",
            "description": "Signed URL for one PUT of the exact bytes."
          },
          "expiresAt": {
            "type": "string",
            "description": "Time after which `url` no longer accepts the PUT."
          },
          "headers": {
            "$ref": "#/components/schemas/TeamLogoUploadHeaders"
          }
        },
        "required": [
          "uploadId",
          "url",
          "expiresAt",
          "headers"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TeamLogoUploadRequestBody": {
        "description": "Declare the exact logo file you will upload.",
        "properties": {
          "contentType": {
            "type": "string",
            "enum": [
              "image/png",
              "image/jpeg"
            ]
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Byte count of the file. The limit is 500 KB.",
            "minimum": 1,
            "maximum": 500000
          },
          "sha256": {
            "type": "string",
            "description": "Lowercase hexadecimal SHA-256 of the exact bytes you will PUT."
          }
        },
        "required": [
          "contentType",
          "size",
          "sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SetTeamLogoRequestBody": {
        "description": "Set the team logo from a completed upload.",
        "properties": {
          "uploadId": {
            "type": "number",
            "format": "double",
            "description": "The `uploadId` from `POST /v1/teams/{teamId}/logo/uploads`."
          }
        },
        "required": [
          "uploadId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PlayerPositionName": {
        "type": "string",
        "description": "A player position label or position key",
        "minLength": 1,
        "maxLength": 255
      },
      "PlayerGfxName": {
        "type": "string",
        "description": "A player name that graphics show",
        "minLength": 1,
        "maxLength": 16
      },
      "CreateTeamPlayerRequestBody": {
        "description": "Add a new player to a team roster. `firstName` and `lastName` are required.\n`number` is the squad number, 0 to 3 characters. `position` is the position label, for example\n\"Goalkeeper\". `positionType` is the sport position key, for example `goalKeeper`.\n`gfxFirstName` and `gfxLastName` are the names that graphics show, 1 to 16 characters.\nSet `defaultStarter` or `defaultBench` to put the player in the default starting list or on the\ndefault bench. Both are false when you omit them.",
        "properties": {
          "firstName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "lastName": {
            "$ref": "#/components/schemas/LastName"
          },
          "number": {
            "$ref": "#/components/schemas/PlayerNumber"
          },
          "position": {
            "$ref": "#/components/schemas/PlayerPositionName"
          },
          "positionType": {
            "$ref": "#/components/schemas/PlayerPositionName"
          },
          "gfxFirstName": {
            "$ref": "#/components/schemas/PlayerGfxName"
          },
          "gfxLastName": {
            "$ref": "#/components/schemas/PlayerGfxName"
          },
          "defaultStarter": {
            "type": "boolean"
          },
          "defaultBench": {
            "type": "boolean"
          }
        },
        "required": [
          "firstName",
          "lastName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateTeamPlayerRequestBody": {
        "description": "Change one or more fields of a roster player. Send only the fields to change.\nFields that you omit keep their current value.\n`firstName` and `lastName` belong to the player and change on every team of the player.\nAll other fields belong to the roster entry on this team only.\n`gfxFirstName` and `gfxLastName` are the names that graphics show, 1 to 16 characters.",
        "properties": {
          "firstName": {
            "$ref": "#/components/schemas/FirstName"
          },
          "lastName": {
            "$ref": "#/components/schemas/LastName"
          },
          "number": {
            "$ref": "#/components/schemas/PlayerNumber"
          },
          "position": {
            "$ref": "#/components/schemas/PlayerPositionName"
          },
          "positionType": {
            "$ref": "#/components/schemas/PlayerPositionName"
          },
          "gfxFirstName": {
            "$ref": "#/components/schemas/PlayerGfxName"
          },
          "gfxLastName": {
            "$ref": "#/components/schemas/PlayerGfxName"
          },
          "defaultStarter": {
            "type": "boolean"
          },
          "defaultBench": {
            "type": "boolean"
          },
          "captain": {
            "type": "boolean"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "TeamPlayerSearchResponseBody": {
        "properties": {
          "teamPlayers": {
            "items": {
              "$ref": "#/components/schemas/TeamPlayer"
            },
            "type": "array"
          },
          "count": {
            "$ref": "#/components/schemas/Count"
          }
        },
        "required": [
          "teamPlayers",
          "count"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CodeGraphicStateMachine": {
        "description": "Runtime, control variables and user expressions of a code graphic.\n\nThe index signature keeps the keys. tsoa strips every key of a `Record<string, unknown>`,\nbecause that type declares no properties.",
        "properties": {},
        "type": "object",
        "additionalProperties": {}
      },
      "CodeGraphicAsset": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Path of the file inside the bundle, for example `assets/app.js`."
          },
          "mime": {
            "type": "string",
            "description": "Content type recorded for the file."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Size of the file in bytes."
          },
          "hash": {
            "type": "string",
            "description": "Content hash the client sent. Compare it to skip an unchanged upload."
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "Revision counter of this file. It increases every time the hash changes."
          },
          "updatedAt": {
            "type": "string",
            "description": "Time of the last change, in ISO 8601."
          }
        },
        "required": [
          "name",
          "mime",
          "size",
          "hash",
          "version",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CodeGraphicLock": {
        "properties": {
          "userName": {
            "type": "string",
            "description": "Name of the lock holder. An API key shows as `API key <name>`."
          }
        },
        "required": [
          "userName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CodeGraphicResponse": {
        "description": "A working code graphic.\n\n`id` is the row identifier of the working copy. It changes on every publish.\n`stateMachine` holds the runtime, the control variables and the user expressions.\n`lock` is null when no one holds the graphic.",
        "properties": {
          "graphicId": {
            "type": "string",
            "description": "Stable graphic identifier. It does not change between versions."
          },
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "code"
            ],
            "nullable": false
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "Version number of the editable working copy."
          },
          "sports": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "stateMachine": {
            "$ref": "#/components/schemas/CodeGraphicStateMachine"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/CodeGraphicAsset"
            },
            "type": "array",
            "description": "Files of the bundle, sorted by name."
          },
          "publishedVersions": {
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "type": "array",
            "description": "Published version numbers, in ascending order."
          },
          "lock": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CodeGraphicLock"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "graphicId",
          "id",
          "name",
          "type",
          "version",
          "sports",
          "stateMachine",
          "assets",
          "publishedVersions",
          "lock"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CodeGraphicInvalidError": {
        "description": "Body of a 400 answer for a code graphic the service refuses.\n\n`code` is always `CODE_GRAPHIC_INVALID`. `details` lists every broken rule.\nA malformed request body returns the ValidationError shape instead.",
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "details": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "message",
          "code",
          "details"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateCodeGraphicRequestBody": {
        "description": "Leave out `stateMachine` to get the standard code graphic state.",
        "properties": {
          "name": {
            "type": "string"
          },
          "sports": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Sports the graphic supports. Defaults to the sports of the theme."
          },
          "stateMachine": {
            "$ref": "#/components/schemas/CodeGraphicStateMachine"
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PresignUpload": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Path of the file inside the bundle."
          },
          "url": {
            "type": "string",
            "description": "Signed URL. Send the file body to it."
          },
          "method": {
            "type": "string",
            "enum": [
              "PUT"
            ],
            "nullable": false
          },
          "expiresInSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "Lifetime of the signed URL in seconds."
          }
        },
        "required": [
          "name",
          "url",
          "method",
          "expiresInSeconds"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PresignUploadsResponse": {
        "properties": {
          "uploadSessionId": {
            "type": "string",
            "description": "Identifier of this upload session, a UUID v4. Send it as `uploadSessionId` to\n`PUT .../bundle`, which moves the files of this session into the graphic. Each call returns a\nnew id. An id is never reused.",
            "pattern": "[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}"
          },
          "uploads": {
            "items": {
              "$ref": "#/components/schemas/PresignUpload"
            },
            "type": "array",
            "description": "One entry per requested file, in request order."
          }
        },
        "required": [
          "uploadSessionId",
          "uploads"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "uploadSessionId": "823d14c6-ef4e-4d72-932e-20d8ed422e3c",
          "uploads": [
            {
              "name": "index.html",
              "url": "https://assets.example.com/203/6a1c.../_uploads/823d14c6.../index.html?X-Amz-Signature=...",
              "method": "PUT",
              "expiresInSeconds": 600
            }
          ]
        }
      },
      "LockedError": {
        "description": "Body of a 409 answer. The graphic is open in another editor.\n\n`code` is always `LOCKED`. `holder` is null when the lock expired between the check and the\nanswer.",
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "holder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CodeGraphicLock"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "message",
          "code",
          "holder"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PresignUploadFile": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Path of the file inside the bundle. It must stay inside the bundle folder."
          },
          "contentType": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "contentType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PresignUploadsRequestBody": {
        "properties": {
          "files": {
            "items": {
              "$ref": "#/components/schemas/PresignUploadFile"
            },
            "type": "array",
            "description": "Files to upload.",
            "maxItems": 200
          },
          "uploadSessionId": {
            "type": "string",
            "description": "An open upload session from an earlier call, to add more files to it. Leave it out to open a\nnew session. Use it when a bundle changes more than 200 files: call this route once per\nbatch of 200 with the same id, then record the bundle once with that id.",
            "pattern": "[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}"
          }
        },
        "required": [
          "files"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ReplaceBundleFile": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Path of the file inside the bundle."
          },
          "mime": {
            "type": "string",
            "description": "Content type of the file."
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Size of the file in bytes.",
            "minimum": 0
          },
          "hash": {
            "type": "string",
            "description": "Content hash of the file."
          }
        },
        "required": [
          "name",
          "mime",
          "size",
          "hash"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ReplaceBundleRequestBody": {
        "description": "Leave out `stateMachine` to keep the stored one.",
        "properties": {
          "files": {
            "items": {
              "$ref": "#/components/schemas/ReplaceBundleFile"
            },
            "type": "array",
            "description": "The complete file set of the bundle. A file left out is deleted.",
            "maxItems": 2000
          },
          "stateMachine": {
            "$ref": "#/components/schemas/CodeGraphicStateMachine"
          },
          "uploadSessionId": {
            "type": "string",
            "description": "The session the files were uploaded in, from the `POST .../uploads` answer. The request moves\nthe files of this session into the graphic, and clears the session afterwards. Leave it out\nonly when every named file is already in the graphic from an earlier bundle.",
            "pattern": "[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}"
          }
        },
        "required": [
          "files"
        ],
        "type": "object",
        "additionalProperties": false,
        "example": {
          "uploadSessionId": "823d14c6-ef4e-4d72-932e-20d8ed422e3c",
          "files": [
            {
              "name": "index.html",
              "mime": "text/html",
              "size": 1240,
              "hash": "sha256:6f1c"
            },
            {
              "name": "assets/app.js",
              "mime": "application/javascript",
              "size": 8300,
              "hash": "sha256:9b02"
            }
          ]
        }
      },
      "CreateGraphicVersionResponse": {
        "properties": {
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "The graphic version this request published."
          }
        },
        "required": [
          "version"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicLockResponse": {
        "properties": {
          "holder": {
            "type": "string",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "holder",
          "expiresAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicSummaryResponse": {
        "properties": {
          "graphicId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sports": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "updatedAt": {
            "type": "string"
          },
          "publishedVersions": {
            "items": {
              "type": "number",
              "format": "double"
            },
            "type": "array",
            "description": "Published versions in ascending order."
          },
          "lock": {
            "$ref": "#/components/schemas/RiveGraphicLockResponse"
          }
        },
        "required": [
          "graphicId",
          "name",
          "sports",
          "updatedAt",
          "publishedVersions",
          "lock"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportCapabilitiesResponse": {
        "properties": {
          "sourceImports": {
            "type": "boolean"
          },
          "sourceArchives": {
            "type": "boolean"
          },
          "sourceRequired": {
            "type": "boolean",
            "description": "The theme requires editable source: runtime-only uploads are refused and source is always kept."
          }
        },
        "required": [
          "sourceImports",
          "sourceArchives",
          "sourceRequired"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportUploadHeaders": {
        "properties": {
          "x-amz-checksum-sha256": {
            "type": "string"
          }
        },
        "required": [
          "x-amz-checksum-sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportUploadResponse": {
        "properties": {
          "jobId": {
            "type": "string"
          },
          "candidateId": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "headers": {
            "$ref": "#/components/schemas/RiveImportUploadHeaders"
          }
        },
        "required": [
          "jobId",
          "candidateId",
          "url",
          "expiresAt",
          "headers"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportTargetInput": {
        "properties": {
          "graphicId": {
            "type": "string"
          },
          "assetId": {
            "type": "string",
            "description": "Selects one existing Rive asset for replacement. Omit only for an empty draft."
          },
          "updatedAt": {
            "type": "string",
            "description": "ISO 8601 timestamp of the working draft."
          },
          "lockToken": {
            "type": "string",
            "description": "REST acquires an API-key lock; a dashboard token is not required."
          }
        },
        "required": [
          "graphicId",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateRiveImportUploadRequestBody": {
        "properties": {
          "filename": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "sha256": {
            "type": "string",
            "description": "Lowercase hexadecimal SHA-256."
          },
          "retainSource": {
            "type": "boolean",
            "description": "Preserve an editable source or complete project archive. Defaults to false."
          },
          "target": {
            "$ref": "#/components/schemas/RiveImportTargetInput"
          }
        },
        "required": [
          "filename",
          "size",
          "sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportJobStatus": {
        "type": "string",
        "enum": [
          "uploading",
          "queued",
          "processing",
          "completed",
          "selection-required",
          "ready",
          "failed",
          "abandoned",
          "cancelled"
        ]
      },
      "RiveImportProblemResponse": {
        "properties": {
          "severity": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "line": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "severity",
          "kind",
          "line",
          "message"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportErrorResponse": {
        "properties": {
          "code": {
            "type": "string"
          },
          "problems": {
            "items": {
              "$ref": "#/components/schemas/RiveImportProblemResponse"
            },
            "type": "array",
            "nullable": true
          }
        },
        "required": [
          "code"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveSourceCandidateResponse": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "runtime",
              "editor",
              "project"
            ]
          },
          "entry": {
            "type": "string"
          }
        },
        "required": [
          "kind",
          "entry"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveStateMachineInputMetadataResponse": {
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "boolean",
              "number",
              "trigger",
              "unknown"
            ]
          },
          "initialValue": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "index",
          "name",
          "type",
          "initialValue"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveStateMachineMetadataResponse": {
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "inputs": {
            "items": {
              "$ref": "#/components/schemas/RiveStateMachineInputMetadataResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "index",
          "name",
          "inputs"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveArtboardMetadataResponse": {
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "width": {
            "type": "number",
            "format": "double"
          },
          "height": {
            "type": "number",
            "format": "double"
          },
          "defaultViewModelIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stateMachines": {
            "items": {
              "$ref": "#/components/schemas/RiveStateMachineMetadataResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "index",
          "name",
          "width",
          "height",
          "defaultViewModelIndex",
          "stateMachines"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImageDimensionsMetadataResponse": {
        "properties": {
          "width": {
            "type": "number",
            "format": "double"
          },
          "height": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "width",
          "height"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveBindingListMetadataResponse": {
        "properties": {
          "length": {
            "type": "integer",
            "format": "int32"
          },
          "modelIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resolution": {
            "type": "string",
            "enum": [
              "resolved",
              "empty",
              "ambiguous",
              "unavailable"
            ]
          }
        },
        "required": [
          "length",
          "modelIndex",
          "resolution"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveBindingMetadataResponse": {
        "properties": {
          "path": {
            "type": "string"
          },
          "pathSegments": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "enumValues": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "imageDimensions": {
            "$ref": "#/components/schemas/RiveImageDimensionsMetadataResponse"
          },
          "enumName": {
            "type": "string"
          },
          "list": {
            "$ref": "#/components/schemas/RiveBindingListMetadataResponse"
          },
          "unresolved": {
            "type": "boolean"
          }
        },
        "required": [
          "path",
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveViewModelPropertyMetadataResponse": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "enumName": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveViewModelInstanceMetadataResponse": {
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "bindings": {
            "items": {
              "$ref": "#/components/schemas/RiveBindingMetadataResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "index",
          "name",
          "bindings"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveViewModelMetadataResponse": {
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "instanceNames": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "defaultInstanceBindings": {
            "items": {
              "$ref": "#/components/schemas/RiveBindingMetadataResponse"
            },
            "type": "array",
            "nullable": true
          },
          "properties": {
            "items": {
              "$ref": "#/components/schemas/RiveViewModelPropertyMetadataResponse"
            },
            "type": "array"
          },
          "instances": {
            "items": {
              "$ref": "#/components/schemas/RiveViewModelInstanceMetadataResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "index",
          "name",
          "instanceNames",
          "defaultInstanceBindings",
          "properties",
          "instances"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveBundledImageMetadataResponse": {
        "properties": {
          "entry": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          },
          "decoded": {
            "type": "boolean"
          }
        },
        "required": [
          "entry",
          "size",
          "width",
          "height",
          "decoded"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveAssetMetadataResponse": {
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "image",
              "font",
              "audio",
              "unknown"
            ]
          },
          "uniqueFilename": {
            "type": "string"
          },
          "embedded": {
            "type": "boolean"
          },
          "embeddedSize": {
            "type": "integer",
            "format": "int32"
          },
          "embeddedSha256": {
            "type": "string",
            "nullable": true
          },
          "cdnId": {
            "type": "string",
            "nullable": true
          },
          "unresolved": {
            "type": "boolean"
          },
          "bundledImage": {
            "$ref": "#/components/schemas/RiveBundledImageMetadataResponse"
          }
        },
        "required": [
          "index",
          "id",
          "name",
          "type",
          "uniqueFilename",
          "embedded",
          "embeddedSize",
          "embeddedSha256",
          "cdnId",
          "unresolved"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveRuntimeMetadataResponse": {
        "properties": {
          "artboards": {
            "items": {
              "$ref": "#/components/schemas/RiveArtboardMetadataResponse"
            },
            "type": "array"
          },
          "viewModels": {
            "items": {
              "$ref": "#/components/schemas/RiveViewModelMetadataResponse"
            },
            "type": "array"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/RiveAssetMetadataResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "artboards",
          "viewModels",
          "assets"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportRuntimeResponse": {
        "properties": {
          "sha256": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "sha256",
          "size"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportPreviewAssetResponse": {
        "properties": {
          "uniqueFilename": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "sha256": {
            "type": "string"
          }
        },
        "required": [
          "uniqueFilename",
          "url",
          "sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportPreviewResponse": {
        "properties": {
          "url": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/RiveImportPreviewAssetResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "url",
          "expiresAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImportStatusResponse": {
        "properties": {
          "traceparent": {
            "type": "string",
            "nullable": true
          },
          "jobId": {
            "type": "string"
          },
          "candidateId": {
            "type": "string"
          },
          "themeId": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/RiveImportJobStatus"
          },
          "expiresAt": {
            "type": "string"
          },
          "error": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveImportErrorResponse"
              }
            ],
            "nullable": true
          },
          "candidates": {
            "items": {
              "$ref": "#/components/schemas/RiveSourceCandidateResponse"
            },
            "type": "array",
            "nullable": true
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveRuntimeMetadataResponse"
              }
            ],
            "nullable": true
          },
          "runtime": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveImportRuntimeResponse"
              }
            ],
            "nullable": true
          },
          "preview": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveImportPreviewResponse"
              }
            ],
            "nullable": true
          },
          "graphicId": {
            "type": "string",
            "nullable": true
          },
          "assetId": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "jobId",
          "candidateId",
          "themeId",
          "status",
          "expiresAt",
          "error",
          "candidates",
          "metadata",
          "runtime",
          "preview",
          "graphicId",
          "assetId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PrepareRiveImportRequestBody": {
        "properties": {
          "versionId": {
            "type": "string",
            "description": "Exact opaque object version returned by the upload response headers."
          }
        },
        "required": [
          "versionId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SelectRiveImportEntryRequestBody": {
        "properties": {
          "entry": {
            "type": "string",
            "description": "Exact candidate entry returned by the selection-required status."
          }
        },
        "required": [
          "entry"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveCandidateAttachmentResponse": {
        "properties": {
          "candidateId": {
            "type": "string"
          },
          "themeId": {
            "type": "integer",
            "format": "int32"
          },
          "graphicId": {
            "type": "string"
          },
          "assetId": {
            "type": "string"
          }
        },
        "required": [
          "candidateId",
          "themeId",
          "graphicId",
          "assetId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveCandidateSelectionInput": {
        "properties": {
          "artboardIndex": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "stateMachineIndex": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        },
        "required": [
          "artboardIndex",
          "stateMachineIndex"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveExposedBindingInput": {
        "properties": {
          "name": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          },
          "entityType": {
            "type": "string",
            "enum": [
              "player",
              "team",
              "competition",
              "ad"
            ]
          },
          "width": {
            "type": "number",
            "format": "double"
          },
          "height": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "name",
          "expression",
          "required",
          "entityType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImageTransformPaddingInput": {
        "properties": {
          "top": {
            "type": "number",
            "format": "double"
          },
          "right": {
            "type": "number",
            "format": "double"
          },
          "bottom": {
            "type": "number",
            "format": "double"
          },
          "left": {
            "type": "number",
            "format": "double"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "RiveImageTransformBackgroundInput": {
        "properties": {
          "r": {
            "type": "number",
            "format": "double"
          },
          "g": {
            "type": "number",
            "format": "double"
          },
          "b": {
            "type": "number",
            "format": "double"
          },
          "a": {
            "type": "number",
            "format": "double"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "RiveImageTransformInput": {
        "properties": {
          "outWidth": {
            "type": "number",
            "format": "double"
          },
          "outHeight": {
            "type": "number",
            "format": "double"
          },
          "fit": {
            "type": "string",
            "enum": [
              "cover",
              "contain",
              "stretch"
            ]
          },
          "scaleX": {
            "type": "number",
            "format": "double"
          },
          "scaleY": {
            "type": "number",
            "format": "double"
          },
          "rotateDeg": {
            "type": "number",
            "format": "double"
          },
          "skewXDeg": {
            "type": "number",
            "format": "double"
          },
          "skewYDeg": {
            "type": "number",
            "format": "double"
          },
          "translateX": {
            "type": "number",
            "format": "double"
          },
          "translateY": {
            "type": "number",
            "format": "double"
          },
          "padding": {
            "$ref": "#/components/schemas/RiveImageTransformPaddingInput"
          },
          "background": {
            "$ref": "#/components/schemas/RiveImageTransformBackgroundInput"
          },
          "anchor": {
            "type": "string",
            "enum": [
              "center",
              "top-left",
              "top",
              "top-right",
              "left",
              "right",
              "bottom-left",
              "bottom",
              "bottom-right"
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "RiveBindingOverrideInput": {
        "properties": {
          "id": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "defaultValue": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string"
              }
            ]
          },
          "sourceArrayPath": {
            "type": "string"
          },
          "exposed": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveExposedBindingInput"
              }
            ],
            "nullable": true
          },
          "imageTransform": {
            "$ref": "#/components/schemas/RiveImageTransformInput"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveInputOverrideInput": {
        "properties": {
          "id": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveExposedAssetInput": {
        "properties": {
          "name": {
            "type": "string"
          },
          "defaultFileId": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "required": {
            "type": "boolean"
          },
          "expression": {
            "type": "string"
          },
          "entityType": {
            "type": "string",
            "enum": [
              "player",
              "team",
              "competition",
              "ad"
            ]
          }
        },
        "required": [
          "name",
          "required",
          "entityType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveAssetOverrideInput": {
        "properties": {
          "id": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "exposed": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveExposedAssetInput"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveControlVariableInput": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "string",
              "number",
              "boolean",
              "enum"
            ]
          },
          "defaultValue": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "description": {
            "type": "string"
          },
          "options": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exitMode": {
            "type": "string",
            "enum": [
              "immediate",
              "deferred"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveUserExpressionInput": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "expression"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveCandidateConfigurationInput": {
        "description": "On replacement, submit only `bindings`, `inputs` and `assets`. Control variables, user\nexpressions and layout are edited through the operation routes.",
        "properties": {
          "bindings": {
            "items": {
              "$ref": "#/components/schemas/RiveBindingOverrideInput"
            },
            "type": "array"
          },
          "inputs": {
            "items": {
              "$ref": "#/components/schemas/RiveInputOverrideInput"
            },
            "type": "array"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/RiveAssetOverrideInput"
            },
            "type": "array"
          },
          "controlVariables": {
            "items": {
              "$ref": "#/components/schemas/RiveControlVariableInput"
            },
            "type": "array"
          },
          "userExpressions": {
            "items": {
              "$ref": "#/components/schemas/RiveUserExpressionInput"
            },
            "type": "array"
          },
          "renderer": {
            "type": "string",
            "enum": [
              "webgl2",
              "canvas"
            ]
          },
          "deferInitialShow": {
            "type": "boolean"
          },
          "scale": {
            "type": "number",
            "format": "double"
          },
          "x": {
            "type": "number",
            "format": "double"
          },
          "y": {
            "type": "number",
            "format": "double"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateRiveGraphicRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          },
          "selection": {
            "$ref": "#/components/schemas/RiveCandidateSelectionInput"
          },
          "configuration": {
            "$ref": "#/components/schemas/RiveCandidateConfigurationInput"
          },
          "lockToken": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "selection"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicControlVariableResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "defaultValue": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "value": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true
          },
          "data": {},
          "dataSchema": {},
          "description": {
            "type": "string"
          },
          "options": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exitMode": {
            "type": "string",
            "enum": [
              "immediate",
              "deferred"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicViewModelPropertyResponse": {
        "properties": {
          "imageDimensions": {
            "properties": {
              "height": {
                "type": "number",
                "format": "double"
              },
              "width": {
                "type": "number",
                "format": "double"
              }
            },
            "required": [
              "height",
              "width"
            ],
            "type": "object"
          },
          "viewModelId": {
            "type": "string"
          },
          "viewModelName": {
            "type": "string"
          },
          "listModel": {
            "type": "string"
          },
          "sourceArrayPath": {
            "type": "string"
          },
          "enumValues": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "type": "string"
          },
          "path": {
            "type": "string"
          }
        },
        "required": [
          "viewModelId",
          "viewModelName",
          "type",
          "path"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicDataBindingResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "defaultValue": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string"
              }
            ]
          },
          "value": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "viewModelProperty": {
            "$ref": "#/components/schemas/RiveGraphicViewModelPropertyResponse"
          },
          "exposed": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveExposedBindingInput"
              }
            ],
            "nullable": true
          },
          "imageTransform": {
            "$ref": "#/components/schemas/RiveImageTransformInput"
          }
        },
        "required": [
          "id",
          "name",
          "expression",
          "viewModelProperty"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicStateMachineInputResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "boolean",
              "number",
              "trigger"
            ]
          },
          "defaultValue": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              }
            ],
            "nullable": true
          },
          "value": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              }
            ],
            "nullable": true
          },
          "expression": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "value"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicAssetMetadataResponse": {
        "properties": {
          "size": {
            "type": "number",
            "format": "double"
          },
          "width": {
            "type": "number",
            "format": "double"
          },
          "height": {
            "type": "number",
            "format": "double"
          },
          "fileId": {
            "type": "number",
            "format": "double"
          },
          "storageKey": {
            "type": "string"
          },
          "sha256": {
            "type": "string"
          }
        },
        "required": [
          "size"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicConfiguredAssetResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "uniqueFileName": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "image",
              "font",
              "audio"
            ]
          },
          "expression": {
            "type": "string"
          },
          "unresolved": {
            "type": "boolean"
          },
          "metadata": {
            "$ref": "#/components/schemas/RiveGraphicAssetMetadataResponse"
          },
          "exposed": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveExposedAssetInput"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "id",
          "name",
          "uniqueFileName",
          "type",
          "exposed"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicStateMachineResponse": {
        "properties": {
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "currentArtboard": {
            "type": "string"
          },
          "currentStateMachine": {
            "type": "string"
          },
          "controlVariables": {
            "items": {
              "$ref": "#/components/schemas/RiveGraphicControlVariableResponse"
            },
            "type": "array"
          },
          "dataBindings": {
            "items": {
              "$ref": "#/components/schemas/RiveGraphicDataBindingResponse"
            },
            "type": "array"
          },
          "stateMachineInputs": {
            "items": {
              "$ref": "#/components/schemas/RiveGraphicStateMachineInputResponse"
            },
            "type": "array"
          },
          "userExpressions": {
            "items": {
              "$ref": "#/components/schemas/RiveUserExpressionInput"
            },
            "type": "array"
          },
          "selectedSport": {
            "type": "string"
          },
          "selectedSchemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/RiveGraphicConfiguredAssetResponse"
            },
            "type": "array"
          },
          "scale": {
            "type": "number",
            "format": "double"
          },
          "x": {
            "type": "number",
            "format": "double"
          },
          "y": {
            "type": "number",
            "format": "double"
          },
          "artboardWidth": {
            "type": "number",
            "format": "double"
          },
          "artboardHeight": {
            "type": "number",
            "format": "double"
          },
          "renderer": {
            "type": "string",
            "enum": [
              "webgl2",
              "canvas"
            ]
          },
          "deferInitialShow": {
            "type": "boolean"
          }
        },
        "required": [
          "version",
          "currentArtboard",
          "currentStateMachine",
          "controlVariables",
          "dataBindings",
          "stateMachineInputs",
          "assets",
          "scale",
          "x",
          "y",
          "artboardWidth",
          "artboardHeight"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicAssetResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "version",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicResponse": {
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "graphicId": {
            "type": "string"
          },
          "themeId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "rive"
            ],
            "nullable": false
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "sports": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "stateMachine": {
            "$ref": "#/components/schemas/RiveGraphicStateMachineResponse"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/RiveGraphicAssetResponse"
            },
            "type": "array"
          },
          "publishedVersions": {
            "items": {
              "type": "number",
              "format": "double"
            },
            "type": "array",
            "description": "Published versions in ascending order."
          },
          "updatedAt": {
            "type": "string"
          },
          "lock": {
            "$ref": "#/components/schemas/RiveGraphicLockResponse"
          }
        },
        "required": [
          "id",
          "graphicId",
          "themeId",
          "name",
          "type",
          "version",
          "sports",
          "stateMachine",
          "assets",
          "publishedVersions",
          "updatedAt",
          "lock"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DuplicateRiveGraphicResponse": {
        "properties": {
          "graphicId": {
            "type": "string"
          },
          "themeId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "graphicId",
          "themeId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DuplicateRiveGraphicRequestBody": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PublishRiveGraphicVersionResponse": {
        "properties": {
          "version": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "version"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveVersionFileMetadataResponse": {
        "properties": {
          "assetId": {
            "type": "string"
          },
          "runtimeAvailable": {
            "type": "boolean"
          },
          "originalAvailable": {
            "type": "boolean"
          },
          "sourceKind": {
            "type": "string",
            "enum": [
              "runtime",
              "editor",
              "project"
            ],
            "nullable": true
          },
          "originalFilename": {
            "type": "string",
            "nullable": true
          },
          "selectedEntry": {
            "type": "string",
            "nullable": true
          },
          "archive": {
            "type": "boolean"
          },
          "editableSource": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "runtimeAvailable",
          "originalAvailable",
          "sourceKind",
          "originalFilename",
          "selectedEntry",
          "archive",
          "editableSource"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveVersionFileResponse": {
        "properties": {
          "filename": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "sha256": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "selectedEntry": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "filename",
          "size",
          "sha256",
          "expiresAt",
          "url",
          "selectedEntry"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeVariableTypeName": {
        "type": "string",
        "enum": [
          "string",
          "number",
          "boolean",
          "enum"
        ]
      },
      "ThemeVariableResponse": {
        "description": "One theme variable. An operator sets the value per competition; the graphics read it.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Equal to `name` for a variable this API created."
          },
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/ThemeVariableTypeName"
          },
          "defaultValue": {
            "type": "string",
            "nullable": true,
            "description": "The value in force when a competition sets nothing. Null means no default."
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "enumOptions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "nullable": true,
            "description": "Allowed values of an `enum` variable. Null for the other types."
          },
          "isStyle": {
            "type": "boolean",
            "description": "True when the variable holds a colour, a font or another style value."
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "defaultValue",
          "description",
          "enumOptions",
          "isStyle"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeVariableListResponse": {
        "description": "Body of `GET /v2/themes/{themeId}/variables`.\n\n`updatedAt` is the theme's `updatedAt` at the time of this read. Send it back as\n`ifUnchangedSince` on the next write to `var add`, `set` or `rm` this variable list.",
        "properties": {
          "updatedAt": {
            "type": "string"
          },
          "variables": {
            "items": {
              "$ref": "#/components/schemas/ThemeVariableResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "updatedAt",
          "variables"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeVariableWriteResponse": {
        "description": "Response of `POST` and `PATCH` on a theme variable.\n\n`updatedAt` is the theme's new `updatedAt` after this write. Send it back as\n`ifUnchangedSince` on the next write, in place of a fresh list read.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Equal to `name` for a variable this API created."
          },
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/ThemeVariableTypeName"
          },
          "defaultValue": {
            "type": "string",
            "nullable": true,
            "description": "The value in force when a competition sets nothing. Null means no default."
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "enumOptions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "nullable": true,
            "description": "Allowed values of an `enum` variable. Null for the other types."
          },
          "isStyle": {
            "type": "boolean",
            "description": "True when the variable holds a colour, a font or another style value."
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "defaultValue",
          "description",
          "enumOptions",
          "isStyle",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "TargetChangedError": {
        "description": "Body of a 409 answer when the caller's `ifUnchangedSince` no longer matches.\n\n`code` is always `TARGET_CHANGED`. Read the resource again and send the write once more.",
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "required": [
          "message",
          "code"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateThemeVariableRequestBody": {
        "description": "Body of `POST /v2/themes/{themeId}/variables`.",
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "Unique within the theme. The id takes the same value.",
            "minLength": 1,
            "maxLength": 64
          },
          "type": {
            "$ref": "#/components/schemas/ThemeVariableTypeName"
          },
          "defaultValue": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "enumOptions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "nullable": true,
            "description": "Required for `enum`, at least one option."
          },
          "isStyle": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateThemeVariableRequestBody": {
        "description": "Body of `PATCH /v2/themes/{themeId}/variables/{id}`. The name never changes; delete and create\na variable to rename it.",
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/ThemeVariableTypeName"
          },
          "defaultValue": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "enumOptions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "nullable": true
          },
          "isStyle": {
            "type": "boolean"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ThemeVariableDeleteResponse": {
        "description": "Response of `DELETE /v2/themes/{themeId}/variables/{id}`.",
        "properties": {
          "updatedAt": {
            "type": "string",
            "description": "The theme's new `updatedAt` after this delete."
          }
        },
        "required": [
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "DataSourceType": {
        "type": "string",
        "enum": [
          "csv",
          "xlsx"
        ]
      },
      "DataSourceShapeName": {
        "type": "string",
        "enum": [
          "cell",
          "kv",
          "rows"
        ]
      },
      "DataSourceTemplateResponse": {
        "description": "One data source template. The alias names the schema a graphic selects, and an operator pushes\nrows into it with `POST /v2/data-sources/{competitionThemeSettingId}/{alias}`.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "alias": {
            "type": "string"
          },
          "sourceType": {
            "$ref": "#/components/schemas/DataSourceType"
          },
          "shape": {
            "$ref": "#/components/schemas/DataSourceShapeName"
          },
          "config": {
            "description": "Parse options, for example `headerRow` and `dataStartRow`. Null when the defaults apply."
          },
          "schema": {
            "description": "JSON schema of the pushed data. The server infers it from the sample."
          },
          "sample": {
            "description": "First rows of the sample, so the builder can preview the shape."
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "description": "ISO 8601 timestamp."
          }
        },
        "required": [
          "id",
          "alias",
          "sourceType",
          "shape",
          "config",
          "schema",
          "sample",
          "description",
          "updatedAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateDataSourceTemplateRequestBody": {
        "description": "Body of `POST /v2/themes/{themeId}/data-source-templates`.\n\nSend the sample as `sample` text for CSV, or as `sampleBase64` bytes for XLSX. The server\nparses the sample, infers the JSON schema, and stores both.",
        "properties": {
          "alias": {
            "type": "string",
            "description": "Lowercase letters, digits and underscores. It must start with a letter. Unique in the theme.",
            "pattern": "^[a-z][a-z0-9_]*$"
          },
          "sourceType": {
            "$ref": "#/components/schemas/DataSourceType"
          },
          "shape": {
            "$ref": "#/components/schemas/DataSourceShapeName"
          },
          "config": {
            "description": "Parse options, for example `{ \"headerRow\": 1, \"dataStartRow\": 2 }`."
          },
          "sample": {
            "type": "string",
            "description": "Sample content as text. Use it for CSV."
          },
          "sampleBase64": {
            "type": "string",
            "description": "Sample content as base64 bytes. Use it for XLSX."
          },
          "schema": {
            "description": "JSON schema to store instead of the inferred one. Leave it out in nearly every case."
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "alias",
          "sourceType",
          "shape"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UpdateDataSourceTemplateRequestBody": {
        "description": "Body of `PATCH /v2/themes/{themeId}/data-source-templates/{id}`. A new sample reinfers the\nschema unless the request also names a schema.",
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "config": {},
          "sample": {
            "type": "string"
          },
          "sampleBase64": {
            "type": "string"
          },
          "schema": {},
          "description": {
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "DataSchemaInUseError": {
        "description": "Body of a 409 answer for a data schema a graphic still selects.\n\n`code` is always `DATA_SCHEMA_IN_USE`. `details` names one graphic per line.",
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "details": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "message",
          "code",
          "details"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveOperationResponse": {
        "properties": {
          "updatedAt": {
            "type": "string"
          },
          "entityId": {
            "type": "string",
            "nullable": true,
            "description": "Id of the created or changed entity, or null for settings."
          },
          "stateMachine": {
            "$ref": "#/components/schemas/RiveGraphicStateMachineResponse"
          }
        },
        "required": [
          "updatedAt",
          "entityId",
          "stateMachine"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveControlVariableType": {
        "type": "string",
        "enum": [
          "string",
          "number",
          "boolean",
          "enum",
          "team",
          "player",
          "match",
          "fact",
          "teamStat",
          "set",
          "round",
          "court",
          "stat",
          "period"
        ]
      },
      "ControlVariableRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/RiveControlVariableType"
          },
          "defaultValue": {
            "description": "boolean, number, string or null. Left untyped so JSON primitives keep their type."
          },
          "description": {
            "type": "string"
          },
          "options": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exitMode": {
            "type": "string",
            "enum": [
              "immediate",
              "deferred"
            ]
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ControlVariablePatchRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/RiveControlVariableType"
          },
          "defaultValue": {},
          "description": {
            "type": "string"
          },
          "options": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "exitMode": {
            "type": "string",
            "enum": [
              "immediate",
              "deferred"
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "DataBindingPatchRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "defaultValue": {
            "description": "boolean, number, string, or null to clear."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "BindingExposureRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          },
          "entityType": {
            "type": "string",
            "enum": [
              "player",
              "team",
              "competition",
              "ad"
            ]
          },
          "width": {
            "type": "number",
            "format": "double"
          },
          "height": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "name",
          "expression",
          "required",
          "entityType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ImageTransformRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "outWidth": {
            "type": "number",
            "format": "double"
          },
          "outHeight": {
            "type": "number",
            "format": "double"
          },
          "fit": {
            "type": "string",
            "enum": [
              "cover",
              "contain",
              "stretch"
            ]
          },
          "scaleX": {
            "type": "number",
            "format": "double"
          },
          "scaleY": {
            "type": "number",
            "format": "double"
          },
          "rotateDeg": {
            "type": "number",
            "format": "double"
          },
          "skewXDeg": {
            "type": "number",
            "format": "double"
          },
          "skewYDeg": {
            "type": "number",
            "format": "double"
          },
          "translateX": {
            "type": "number",
            "format": "double"
          },
          "translateY": {
            "type": "number",
            "format": "double"
          },
          "padding": {
            "$ref": "#/components/schemas/RiveImageTransformPaddingInput"
          },
          "background": {
            "$ref": "#/components/schemas/RiveImageTransformBackgroundInput"
          },
          "anchor": {
            "type": "string",
            "enum": [
              "center",
              "top-left",
              "top",
              "top-right",
              "left",
              "right",
              "bottom-left",
              "bottom",
              "bottom-right"
            ]
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "SourceArrayRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "arrayPath": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "arrayPath"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "EmptyRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ListOrderRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "order": {
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "type": "array"
          }
        },
        "required": [
          "order"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "InputPatchRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "expression": {
            "type": "string",
            "nullable": true,
            "description": "null clears the expression."
          },
          "defaultValue": {
            "description": "boolean, number or null."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "AssetPatchRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "expression": {
            "type": "string",
            "nullable": true
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "AssetFileRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "fileId": {
            "type": "number",
            "format": "double",
            "description": "`fileId` from `POST v2/themes/{themeId}/rive-graphics/images`, after the signed PUT succeeded."
          }
        },
        "required": [
          "fileId"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "AssetExposureRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "defaultFileId": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "required": {
            "type": "boolean"
          },
          "expression": {
            "type": "string"
          },
          "entityType": {
            "type": "string",
            "enum": [
              "player",
              "team",
              "competition",
              "ad"
            ]
          }
        },
        "required": [
          "name",
          "required",
          "entityType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserExpressionRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "expression"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "UserExpressionPatchRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "SettingsRequestBody": {
        "properties": {
          "ifUnchangedSince": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "sports": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "selectedSport": {
            "type": "string",
            "nullable": true
          },
          "renderer": {
            "type": "string",
            "enum": [
              "webgl2",
              "canvas"
            ]
          },
          "deferInitialShow": {
            "type": "boolean"
          },
          "scale": {
            "type": "number",
            "format": "double"
          },
          "x": {
            "type": "number",
            "format": "double"
          },
          "y": {
            "type": "number",
            "format": "double"
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "RiveImageUploadHeaders": {
        "properties": {
          "x-amz-checksum-sha256": {
            "type": "string"
          }
        },
        "required": [
          "x-amz-checksum-sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImageUploadResponse": {
        "properties": {
          "fileId": {
            "type": "number",
            "format": "double",
            "description": "Numeric file id. Send it as `fileId` to `PUT …/assets/{id}/file`,\nor as `defaultFileId` on an asset exposure."
          },
          "url": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "headers": {
            "$ref": "#/components/schemas/RiveImageUploadHeaders"
          }
        },
        "required": [
          "fileId",
          "url",
          "expiresAt",
          "headers"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveImageUploadRequestBody": {
        "properties": {
          "filename": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 26214400
          },
          "sha256": {
            "type": "string",
            "description": "Lowercase hexadecimal SHA-256 of the exact bytes you will PUT."
          },
          "contentType": {
            "type": "string",
            "enum": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ]
          }
        },
        "required": [
          "filename",
          "size",
          "sha256",
          "contentType"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicPreviewRuntimeResponse": {
        "properties": {
          "url": {
            "type": "string"
          },
          "sha256": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "url",
          "sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicPreviewAssetResponse": {
        "properties": {
          "uniqueFilename": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "sha256": {
            "type": "string"
          }
        },
        "required": [
          "uniqueFilename",
          "url",
          "sha256"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicPreviewScenarioResponse": {
        "properties": {
          "name": {
            "type": "string"
          },
          "dataSequence": {
            "items": {
              "$ref": "#/components/schemas/Record_string.unknown_"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "dataSequence"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveGraphicPreviewResponse": {
        "properties": {
          "graphicId": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "description": "Every `url` in this response stops working at this time."
          },
          "runtime": {
            "$ref": "#/components/schemas/RiveGraphicPreviewRuntimeResponse"
          },
          "assets": {
            "items": {
              "$ref": "#/components/schemas/RiveGraphicPreviewAssetResponse"
            },
            "type": "array"
          },
          "scenario": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RiveGraphicPreviewScenarioResponse"
              }
            ],
            "nullable": true
          },
          "stateMachine": {
            "$ref": "#/components/schemas/RiveGraphicStateMachineResponse"
          }
        },
        "required": [
          "graphicId",
          "updatedAt",
          "expiresAt",
          "runtime",
          "assets",
          "scenario",
          "stateMachine"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveEvaluateBindingResponse": {
        "properties": {
          "id": {
            "type": "string"
          },
          "expression": {
            "type": "string"
          },
          "value": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "string"
              }
            ],
            "nullable": true,
            "description": "Present in `full` mode only."
          },
          "error": {
            "type": "string",
            "nullable": true,
            "description": "An error code, or null when the binding resolves."
          }
        },
        "required": [
          "id",
          "expression",
          "error"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveEvaluateResponse": {
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "full",
              "static"
            ],
            "description": "`full` reports values. `static` checks syntax and references only."
          },
          "scenario": {
            "type": "string",
            "nullable": true
          },
          "bindings": {
            "items": {
              "$ref": "#/components/schemas/RiveEvaluateBindingResponse"
            },
            "type": "array"
          },
          "userExpressions": {
            "items": {
              "$ref": "#/components/schemas/RiveEvaluateBindingResponse"
            },
            "type": "array",
            "description": "One row per user expression. `id` is the user expression id."
          },
          "unresolved": {
            "type": "number",
            "format": "double",
            "description": "Count of rows in `bindings` and `userExpressions` whose `error` is not null."
          }
        },
        "required": [
          "mode",
          "scenario",
          "bindings",
          "userExpressions",
          "unresolved"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "RiveEvaluateRequestBody": {
        "properties": {
          "scenario": {
            "type": "string",
            "description": "Demonstration scenario name. Omit to evaluate against an empty context."
          },
          "variables": {
            "properties": {},
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number",
                  "format": "double"
                },
                {
                  "type": "string"
                }
              ]
            },
            "type": "object",
            "description": "Control variable values by name. They override the stored defaults."
          },
          "step": {
            "type": "number",
            "format": "double",
            "description": "Zero-based step of the scenario data sequence. Defaults to the last step."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "ThemeListItem": {
        "description": "One theme the organization owns.",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "sports": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Sport keys the theme supports, for example `football`."
          },
          "activeVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Theme version the overlays render. Null means no version is active."
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 timestamp."
          }
        },
        "required": [
          "id",
          "name",
          "sports",
          "activeVersion",
          "createdAt"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeGraphicSummary": {
        "properties": {
          "graphicId": {
            "type": "string",
            "description": "Stable graphic identifier. It does not change between versions."
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "`code` or `rive`."
          },
          "workingVersion": {
            "type": "integer",
            "format": "int32",
            "description": "Version number of the editable working copy."
          },
          "publishedVersions": {
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "type": "array",
            "description": "Published version numbers, in ascending order."
          }
        },
        "required": [
          "graphicId",
          "name",
          "type",
          "workingVersion",
          "publishedVersions"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeSummaryResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          },
          "activeVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Theme version the overlays render. Null means no version is active."
          },
          "versions": {
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "type": "array",
            "description": "Published theme version numbers, in ascending order."
          },
          "graphics": {
            "items": {
              "$ref": "#/components/schemas/ThemeGraphicSummary"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "activeVersion",
          "versions",
          "graphics"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeLimitReachedError": {
        "description": "Body of a 409 answer when the organization owns as many themes as it can create.\n\n`code` is always `THEME_LIMIT_REACHED`.",
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "required": [
          "message",
          "code"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeVariableInput": {
        "description": "A theme variable an operator sets per competition: a colour, a label or a sponsor name.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Use the same string as `name`."
          },
          "name": {
            "type": "string",
            "description": "Unique within the theme."
          },
          "type": {
            "type": "string",
            "enum": [
              "string",
              "number",
              "boolean",
              "enum"
            ]
          },
          "defaultValue": {
            "type": "string",
            "nullable": true,
            "description": "The value in force when a competition sets nothing."
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "enumOptions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "nullable": true,
            "description": "Required for `enum`, at least one option."
          },
          "isStyle": {
            "type": "boolean",
            "nullable": true,
            "description": "True when the variable holds a colour, a font or another style value."
          }
        },
        "required": [
          "id",
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "CreateThemeRequestBody": {
        "description": "Body of `POST /v2/themes`.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "sports": {
            "items": {
              "$ref": "#/components/schemas/SportKey"
            },
            "type": "array",
            "description": "Sport keys the theme supports, for example `[\"football\"]`. At least one.",
            "minItems": 1
          },
          "variables": {
            "items": {
              "$ref": "#/components/schemas/ThemeVariableInput"
            },
            "type": "array",
            "description": "Theme variables the graphics can read. Default: none."
          }
        },
        "required": [
          "name",
          "sports"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeInUseError": {
        "description": "Body of a 409 answer for a theme a competition still uses.\n\n`code` is always `THEME_IN_USE`. `details` names one competition per line.",
        "properties": {
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "details": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "message",
          "code",
          "details"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeVariableDefinition": {
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "defaultValue": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "name",
          "type"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PublishThemeVersionGraphicSelection": {
        "properties": {
          "graphicId": {
            "type": "string"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "minimum": 1
          }
        },
        "required": [
          "graphicId",
          "version"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "ThemeVersionResponse": {
        "properties": {
          "variables": {
            "items": {
              "$ref": "#/components/schemas/ThemeVariableDefinition"
            },
            "type": "array",
            "description": "Frozen variable definitions. Use their IDs when configuring a theme profile."
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "Published theme version number."
          },
          "graphics": {
            "items": {
              "$ref": "#/components/schemas/PublishThemeVersionGraphicSelection"
            },
            "type": "array",
            "description": "Frozen graphic selections in this theme version."
          }
        },
        "required": [
          "variables",
          "version",
          "graphics"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SetThemeActiveVersionResponse": {
        "properties": {
          "activeVersion": {
            "type": "integer",
            "format": "int32",
            "description": "The existing theme version now active."
          }
        },
        "required": [
          "activeVersion"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "SetThemeActiveVersionRequestBody": {
        "properties": {
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "Existing published theme version to activate.",
            "minimum": 1
          }
        },
        "required": [
          "version"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PublishThemeVersionResponse": {
        "properties": {
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "The theme version this request created."
          },
          "activeVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Theme version the overlays render. Null means no version is active."
          }
        },
        "required": [
          "version",
          "activeVersion"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "PublishThemeVersionRequestBody": {
        "properties": {
          "graphics": {
            "items": {
              "$ref": "#/components/schemas/PublishThemeVersionGraphicSelection"
            },
            "type": "array",
            "description": "Pin these graphics to the given version. Unlisted graphics use their latest published version."
          },
          "activate": {
            "type": "boolean",
            "description": "Set the new theme version active. Defaults to false."
          }
        },
        "type": "object",
        "additionalProperties": false
      },
      "CreateVenueRequestBody": {
        "description": "Location fields require a nonblank address. Omit all location fields for a venue without an address.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "city": {
            "type": "string",
            "description": "Requires a nonblank `address`."
          },
          "country": {
            "type": "string",
            "description": "Requires a nonblank `address`."
          },
          "state": {
            "type": "string",
            "description": "Requires a nonblank `address`."
          },
          "postcode": {
            "type": "string",
            "description": "Requires a nonblank `address`."
          }
        },
        "required": [
          "name"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "VenueWithAllIncludes": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "$ref": "#/components/schemas/Name"
          },
          "gfxName": {
            "$ref": "#/components/schemas/NullableGfxName"
          },
          "dataProvider": {
            "$ref": "#/components/schemas/Provider"
          },
          "teams": {
            "items": {
              "$ref": "#/components/schemas/Team"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "gfxName"
        ],
        "type": "object",
        "additionalProperties": false
      },
      "VenueIncludeQueryParam": {
        "type": "string",
        "description": "Comma seperated string of entity abbreviations\nAllows optional population of nested entities\nt = teams\n\ne.g. 't'"
      },
      "VenueSearchResponseBody": {
        "properties": {
          "venues": {
            "items": {
              "$ref": "#/components/schemas/Venue"
            },
            "type": "array"
          },
          "total": {
            "$ref": "#/components/schemas/Count"
          },
          "returned": {
            "$ref": "#/components/schemas/Count"
          }
        },
        "required": [
          "venues",
          "total",
          "returned"
        ],
        "type": "object",
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "Preferred: provide your API key as Authorization: Bearer <key>."
      },
      "api_key": {
        "type": "apiKey",
        "in": "header",
        "name": "x-ligr-api-key",
        "description": "Legacy API key header. Use Bearer authentication for new integrations."
      }
    }
  },
  "info": {
    "title": "LIGR REST API",
    "description": "The LIGR REST API drives matches, facts, graphics and streams.\n\nSend an API key as `Authorization: Bearer <key>` on every request. `x-ligr-api-key` is the legacy\nheader. Each operation names the scope it needs, such as `matches:read` or `matches:write`. See [Authentication](/get-started/authentication/).\n\nEvery page below is generated from this specification. Download it at [/openapi.json](/openapi.json).",
    "contact": {
      "name": "Live Graphic Systems",
      "email": "support@ligrsystems.com",
      "url": "https://help.ligr.live/en/"
    },
    "version": "0.0.23"
  },
  "openapi": "3.0.0",
  "paths": {
    "/v1/competitions/grades": {
      "get": {
        "operationId": "GetCompetitionGrades",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/CompetitionGrade"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Lists the global grades available when creating competitions and teams.\nUse a returned id as gradeId in either creation request. Grades are shared across organizations.",
        "summary": "List competition grades",
        "tags": [
          "Competitions"
        ],
        "security": [
          {
            "bearer": [
              "competitions:read"
            ]
          },
          {
            "api_key": [
              "competitions:read"
            ]
          }
        ],
        "parameters": []
      }
    },
    "/v1/competitions": {
      "post": {
        "operationId": "CreateCompetition",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Competition"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates a competition. Matches inherit the default rules for the selected sport.",
        "summary": "Create a competition",
        "tags": [
          "Competitions"
        ],
        "security": [
          {
            "bearer": [
              "competitions:write"
            ]
          },
          {
            "api_key": [
              "competitions:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCompetitionRequestBody"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "GetCompetitions",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitionSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return a list of competitions for the organization. Filter by sport.",
        "summary": "List competitions",
        "tags": [
          "Competitions"
        ],
        "security": [
          {
            "bearer": [
              "competitions:read"
            ]
          },
          {
            "api_key": [
              "competitions:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Allows filtering by specific sport",
            "in": "query",
            "name": "sport",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SportKey"
            }
          },
          {
            "description": "Only return competitions from this data provider",
            "in": "query",
            "name": "providerName",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ProviderName"
            }
          },
          {
            "description": "Only return competitions with these ids at the data provider. A comma-separated list of up to 100 ids. Needs `providerName`.",
            "in": "query",
            "name": "providerIds",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "double",
              "type": "number"
            }
          }
        ]
      }
    },
    "/v1/competitions/{competitionId}": {
      "get": {
        "operationId": "GetCompetition",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/CompetitionWithAllIncludes"
                    },
                    {
                      "$ref": "#/components/schemas/Competition"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the competition with the given ID.\nAccepts the `include` query parameter with code `t`, one level deep.",
        "summary": "Get a competition",
        "tags": [
          "Competitions"
        ],
        "security": [
          {
            "bearer": [
              "competitions:read"
            ]
          },
          {
            "api_key": [
              "competitions:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The competition identifier",
            "in": "path",
            "name": "competitionId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CompetitionIncludeQueryParam"
            }
          }
        ]
      }
    },
    "/v1/competitions/{competitionId}/teams": {
      "get": {
        "operationId": "GetCompetitionTeams",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitionTeamsResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the teams competing in a competition.",
        "summary": "List competition teams",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "competitions:read"
            ]
          },
          {
            "api_key": [
              "competitions:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The competition id",
            "in": "path",
            "name": "competitionId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v2/competitions/{competitionId}/theme-profiles": {
      "get": {
        "operationId": "ListThemeProfiles",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ThemeProfileResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition, theme, control room, or profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Lists active profiles that use themes your organization owns.\nThe competition must belong to your organization. Archived profiles are excluded.",
        "summary": "List theme profiles",
        "tags": [
          "Competitions"
        ],
        "security": [
          {
            "bearer": [
              "competitions:read"
            ]
          },
          {
            "api_key": [
              "competitions:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "competitionId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      },
      "post": {
        "operationId": "CreateThemeProfile",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition, theme, control room, or profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates a theme profile. The first profile becomes the competition default.\nThe theme must have an active version and support the competition sport.",
        "summary": "Create a theme profile",
        "tags": [
          "Competitions"
        ],
        "security": [
          {
            "bearer": [
              "competitions:write"
            ]
          },
          {
            "api_key": [
              "competitions:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "competitionId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateThemeProfileRequestBody"
              }
            }
          }
        }
      }
    },
    "/v2/competitions/{competitionId}/theme-profiles/{profileId}": {
      "get": {
        "operationId": "GetThemeProfile",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Competition, theme, control room, or profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Returns saved theme values and the default control room for a nonarchived competition profile.\nBoth the competition and its theme must belong to your organization.",
        "summary": "Get a theme profile",
        "tags": [
          "Competitions"
        ],
        "security": [
          {
            "bearer": [
              "competitions:read"
            ]
          },
          {
            "api_key": [
              "competitions:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "competitionId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "path",
            "name": "profileId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v2/control-rooms": {
      "get": {
        "operationId": "ListRooms",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ControlRoomResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns rooms owned by your organization. Use themeId to filter rooms for an owned theme.",
        "summary": "List control rooms",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "themeId",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      },
      "post": {
        "operationId": "CreateRoom",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ControlRoomResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nThe theme must belong to your organization and have an active published version.\nA new room starts without sections or presets.",
        "summary": "Create a control room",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateControlRoomRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/control-rooms/{roomId}": {
      "get": {
        "operationId": "GetRoom",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ControlRoomDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns a room owned by your organization with its sections, its theme, and its presets.\nEach preset lists its graphic id, graphic name and exposed variables.\nWhen the key also has overlays:read, the response lists the overlays that use the room.\nEach overlay has a read-only monitoringUrl, so you can check the room without a dashboard login.",
        "summary": "Get a control room",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "roomId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/control-rooms/{roomId}/sections": {
      "get": {
        "operationId": "ListSections",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ControlRoomSectionResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns the sections of an organization-owned room in their configured order.",
        "summary": "List sections",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "roomId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      },
      "post": {
        "operationId": "CreateSection",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ControlRoomSectionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nAppends a section to an organization-owned room and returns its generated identifier.\nThe room's owned theme must have an active published version.",
        "summary": "Create a section",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "roomId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateControlRoomSectionRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/control-rooms/{roomId}/presets": {
      "get": {
        "operationId": "ListPresets",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ControlRoomPresetResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns stored presets and their explicit variable overrides from an organization-owned room.\nPresets remain readable when a later theme activation omits their graphic.",
        "summary": "List presets",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "roomId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      },
      "post": {
        "operationId": "CreatePreset",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ControlRoomPresetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nValues use control-variable names from the active published code or Rive graphic manifest.\nValues support string, number, boolean, and enum variables. Use exposeVariables to show fact, stat,\nteam, player and match variables that operators set live. The overlay controls the reserved hide variable.",
        "summary": "Create a preset",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "roomId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateControlRoomPresetRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/control-rooms/{roomId}/presets/{presetId}": {
      "get": {
        "operationId": "GetPreset",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ControlRoomPresetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns a preset only when it belongs to the specified organization-owned room.\nUse its numeric id to show or hide the preset through the overlay graphics endpoint.",
        "summary": "Get a preset",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "roomId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "path",
            "name": "presetId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      },
      "put": {
        "operationId": "UpdatePreset",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ControlRoomPresetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme, control room, section, or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRenames or moves a preset, or replaces its variable set from the active published manifest.\nSend variableValues and exposeVariables together; the stored set becomes exactly what you send.\nPosition, scale and other dashboard settings on the preset are kept. A variable that stays in the\nset keeps its dashboard display type, exit mode and hidden state; naming it in exposeVariables shows it.",
        "summary": "Update a preset",
        "tags": [
          "Control room setup"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "roomId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "path",
            "name": "presetId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateControlRoomPresetRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/data-sources/{competitionThemeSettingId}/{alias}": {
      "post": {
        "operationId": "PushDataSource",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushDataSourceResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Data source not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Update the snapshot for a data source identified by competition theme setting and alias.\nUse this endpoint from Google Apps Script, Zapier, or any other automation tool.",
        "summary": "Push external data",
        "tags": [
          "Data sources"
        ],
        "security": [
          {
            "bearer": [
              "data-sources:write"
            ]
          },
          {
            "api_key": [
              "data-sources:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The competition theme setting ID",
            "in": "path",
            "name": "competitionThemeSettingId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The data source template alias (e.g., \"standings\", \"factfile\")",
            "in": "path",
            "name": "alias",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PushDataSourceRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/matches/{matchId}": {
      "get": {
        "operationId": "GetMatch",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/MatchV1"
                    },
                    {
                      "$ref": "#/components/schemas/MatchWithAllIncludesV1"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the match with the given ID. Tennis matches are not supported in v1; use v2 instead.\nAccepts the `include` query parameter with codes `t`, `v`, `c`, `o`, `p`, `s`, one level deep.",
        "summary": "Get a match (v1)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:read"
            ]
          },
          {
            "api_key": [
              "matches:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "Comma seperated string of nested entity abbreviations to include in request",
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/MatchIncludeQueryParam"
            }
          }
        ]
      },
      "post": {
        "operationId": "UpdateMatch",
        "responses": {
          "204": {
            "description": "No content"
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Update an existing match. Changing `competitionId` on a tennis match is not supported in v1; use v2 instead.",
        "summary": "Update a match (v1)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "description": "The match properties to update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/matches/{matchId}/lineup": {
      "get": {
        "operationId": "GetMatchPlayers",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchPlayerSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the player lineup for a match.",
        "summary": "Get a match lineup",
        "tags": [
          "Players"
        ],
        "security": [
          {
            "bearer": [
              "matches:read"
            ]
          },
          {
            "api_key": [
              "matches:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match id",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/matches": {
      "get": {
        "operationId": "GetMatches",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchSearchResponseBodyV1"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return a list of matches for the organization. Tennis matches are excluded from the v1 endpoint.\nFilter by sport, team, venue, competition, or finished status. Accepts the `include` query parameter with code `s`.",
        "summary": "List matches (v1)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:read"
            ]
          },
          {
            "api_key": [
              "matches:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Filter by sport",
            "in": "query",
            "name": "sport",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SportKey"
            }
          },
          {
            "description": "Filter by team",
            "in": "query",
            "name": "teamId",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "query",
            "name": "venueId",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "Filter by competition",
            "in": "query",
            "name": "competitionId",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "Filter by finished status (a match will remain in pregame by default)",
            "in": "query",
            "name": "finishedStatus",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/FinishedStatus"
            }
          },
          {
            "description": "Date order",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "ASC",
              "type": "string",
              "enum": [
                "ASC",
                "DESC"
              ]
            }
          },
          {
            "description": "Start of search range",
            "in": "query",
            "name": "startDate",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of search result range (starting point if order = DESC)",
            "in": "query",
            "name": "endDate",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/MatchesIncludeQueryParam"
            }
          },
          {
            "description": "Only return entities from this data provider",
            "in": "query",
            "name": "providerName",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ProviderName"
            }
          },
          {
            "description": "Only return entities with these ids at the data provider. A comma-separated list of up to 100 ids. Needs `providerName`.",
            "in": "query",
            "name": "providerIds",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Limit the maximum number of matches to be returned",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "Start search from initial offset",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "double",
              "type": "number"
            }
          }
        ]
      },
      "post": {
        "operationId": "CreateMatch",
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMatchResponseBodyV1"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Create a new match using team competitors. Tennis competitions are not supported in v1; use v2 instead.",
        "summary": "Create a match (v1)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchRequestBodyV1"
              }
            }
          }
        }
      }
    },
    "/v2/matches/{matchId}/facts": {
      "post": {
        "operationId": "CreateFact",
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FactResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match or fact not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Create a new fact for a match. Facts record discrete match events, such as goals or cards.",
        "summary": "Create a fact",
        "tags": [
          "Facts"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFactRequestBody"
              }
            }
          }
        }
      }
    },
    "/v2/matches/{matchId}/facts/{factId}": {
      "post": {
        "operationId": "UpdateFact",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FactResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match or fact not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Update an existing fact for a match.",
        "summary": "Update a fact",
        "tags": [
          "Facts"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The fact identifier",
            "in": "path",
            "name": "factId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFactRequestBody"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteFact",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteFactResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match or fact not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Delete a fact for a match. This undoes the event the fact recorded.",
        "summary": "Delete a fact",
        "tags": [
          "Facts"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The fact identifier",
            "in": "path",
            "name": "factId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v2/matches/{matchId}": {
      "get": {
        "operationId": "GetMatchV2",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/MatchV2"
                    },
                    {
                      "$ref": "#/components/schemas/MatchWithAllIncludesV2"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the match with the given ID.\nAccepts the `include` query parameter with codes `cp`, `v`, `c`, `o`, `p`, `s`, one level deep.",
        "summary": "Get a match (v2)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:read"
            ]
          },
          {
            "api_key": [
              "matches:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "Comma seperated string of nested entity abbreviations to include in request",
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/MatchIncludeQueryParam"
            }
          }
        ]
      },
      "post": {
        "operationId": "UpdateMatchV2",
        "responses": {
          "204": {
            "description": "No content"
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Update an existing match.",
        "summary": "Update a match (v2)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "description": "The match properties to update",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchRequestBodyV2"
              }
            }
          }
        }
      }
    },
    "/v2/matches/{matchId}/summary": {
      "get": {
        "operationId": "GetMatchSummary",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchSummaryResponseV2"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return team-level match and period stats, score, clock, and period state for a match.",
        "summary": "Get a match summary",
        "tags": [
          "Match summary"
        ],
        "security": [
          {
            "bearer": [
              "matches:read"
            ]
          },
          {
            "api_key": [
              "matches:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "Language code for period names (defaults to en)",
            "in": "query",
            "name": "lng",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v2/matches": {
      "get": {
        "operationId": "GetMatchesV2",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchSearchResponseBodyV2"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return a list of matches for the organization.\nFilter by sport, team, venue, competition, or finished status. Accepts the `include` query parameter with code `s`.",
        "summary": "List matches (v2)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:read"
            ]
          },
          {
            "api_key": [
              "matches:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Filter by sport",
            "in": "query",
            "name": "sport",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SportKey"
            }
          },
          {
            "description": "Filter by team",
            "in": "query",
            "name": "teamId",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "query",
            "name": "venueId",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "Filter by competition",
            "in": "query",
            "name": "competitionId",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "Filter by finished status (a match will remain in pregame by default)",
            "in": "query",
            "name": "finishedStatus",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/FinishedStatus"
            }
          },
          {
            "description": "Date order",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "ASC",
              "type": "string",
              "enum": [
                "ASC",
                "DESC"
              ]
            }
          },
          {
            "description": "Start of search range",
            "in": "query",
            "name": "startDate",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "End of search result range (starting point if order = DESC)",
            "in": "query",
            "name": "endDate",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/MatchesIncludeQueryParam"
            }
          },
          {
            "description": "Only return entities from this data provider",
            "in": "query",
            "name": "providerName",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ProviderName"
            }
          },
          {
            "description": "Only return entities with these ids at the data provider. A comma-separated list of up to 100 ids. Needs `providerName`.",
            "in": "query",
            "name": "providerIds",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Limit the maximum number of matches to be returned",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "Start search from initial offset",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "double",
              "type": "number"
            }
          }
        ]
      },
      "post": {
        "operationId": "CreateMatchV2",
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMatchResponseBodyV2"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Create a new match for the organization.",
        "summary": "Create a match (v2)",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchRequestBodyV2"
              }
            }
          }
        }
      }
    },
    "/v2/matches/{matchId}/lineup": {
      "put": {
        "operationId": "SetMatchLineup",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchPlayerSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Replace the lineup of one or both teams of a match. Send the full starting and bench lists of\neach team you replace. Players you leave out are removed from that team's lineup. A team you\nleave out keeps its lineup. Sending the same body again changes nothing.\n\nEach player must be on the team's roster. Per-player fields you leave out take the roster value.\nOpen overlays receive the new lineup. The response is the full match lineup, in the shape of\n`GET /v1/matches/{matchId}/lineup`.",
        "summary": "Set a match lineup",
        "tags": [
          "Players"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "description": "The starting and bench players of each team",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetMatchLineupRequestBody"
              }
            }
          }
        }
      }
    },
    "/v2/matches/{matchId}/cancel": {
      "post": {
        "operationId": "CancelMatch",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchStateChangeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Set the match's finished status to `cancelled`.",
        "summary": "Cancel a match",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v2/matches/{matchId}/finish": {
      "post": {
        "operationId": "FinishMatch",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchStateChangeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Set the match's finished status to `finishedEarly`.",
        "summary": "Finish a match",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v2/matches/{matchId}/abandon": {
      "post": {
        "operationId": "AbandonMatch",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchStateChangeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Match not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Set the match's finished status to `abandoned`.",
        "summary": "Abandon a match",
        "tags": [
          "Matches"
        ],
        "security": [
          {
            "bearer": [
              "matches:write"
            ]
          },
          {
            "api_key": [
              "matches:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "path",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/officials": {
      "get": {
        "operationId": "GetOfficials",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfficialSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Official not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return a page of your organization's match officials, sorted by id.\nFilter by data provider to find the officials that a provider supplies.",
        "summary": "List officials",
        "tags": [
          "Officials"
        ],
        "security": [
          {
            "bearer": [
              "players:read"
            ]
          },
          {
            "api_key": [
              "players:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Only return officials from this data provider",
            "in": "query",
            "name": "providerName",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ProviderName"
            }
          },
          {
            "description": "Only return officials with these ids at the data provider. A comma-separated list of up to 100 ids. Needs `providerName`.",
            "in": "query",
            "name": "providerIds",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The maximum number of officials to return",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "The number of officials to skip",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "double",
              "type": "number"
            }
          }
        ]
      }
    },
    "/v1/officials/{officialId}": {
      "get": {
        "operationId": "GetOfficial",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Official"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Official not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the match official with the given ID.",
        "summary": "Get an official",
        "tags": [
          "Officials"
        ],
        "security": [
          {
            "bearer": [
              "players:read"
            ]
          },
          {
            "api_key": [
              "players:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The official id",
            "in": "path",
            "name": "officialId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/overlays/{overlayId}": {
      "get": {
        "operationId": "GetOverlay",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/Overlay"
                    },
                    {
                      "$ref": "#/components/schemas/OverlayWithAllIncludesV1"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Overlay not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the overlay with the given ID.\nAccepts the `include` query parameter with code `m`, one level deep.",
        "summary": "Get an overlay (v1)",
        "tags": [
          "Overlays"
        ],
        "security": [
          {
            "bearer": [
              "overlays:read"
            ]
          },
          {
            "api_key": [
              "overlays:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The overlays identifier",
            "in": "path",
            "name": "overlayId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/OverlayIncludeQueryParam"
            }
          }
        ]
      },
      "post": {
        "operationId": "UpdateOverlay",
        "responses": {
          "204": {
            "description": "No content"
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Overlay not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Update an existing overlay.",
        "summary": "Update an overlay",
        "tags": [
          "Overlays"
        ],
        "security": [
          {
            "bearer": [
              "overlays:write"
            ]
          },
          {
            "api_key": [
              "overlays:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The overlay id",
            "in": "path",
            "name": "overlayId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOverlayRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/overlays/{overlayId}/refresh-key": {
      "post": {
        "operationId": "RefreshKey",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefreshOverlayKeyResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Overlay not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Refresh the overlay key. The previous key stops working immediately.",
        "summary": "Refresh an overlay key",
        "tags": [
          "Overlays"
        ],
        "security": [
          {
            "bearer": [
              "overlays:write"
            ]
          },
          {
            "api_key": [
              "overlays:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The overlay id",
            "in": "path",
            "name": "overlayId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/overlays": {
      "post": {
        "operationId": "CreateOverlay",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOverlayResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Overlay not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Create a new overlay for a match.",
        "summary": "Create an overlay",
        "tags": [
          "Overlays"
        ],
        "security": [
          {
            "bearer": [
              "overlays:write"
            ]
          },
          {
            "api_key": [
              "overlays:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOverlayRequestBody"
              }
            }
          }
        }
      }
    },
    "/v2/overlays/{overlayId}": {
      "get": {
        "operationId": "GetOverlayV2",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/Overlay"
                    },
                    {
                      "$ref": "#/components/schemas/OverlayWithAllIncludesV2"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Overlay not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the overlay with the given ID.\nThe `include` query parameter accepts `m` to add the match.\n`cp` has no effect alone; combine it with `m` (`include=m,cp`) to nest competitors under the match.",
        "summary": "Get an overlay (v2)",
        "tags": [
          "Overlays"
        ],
        "security": [
          {
            "bearer": [
              "overlays:read"
            ]
          },
          {
            "api_key": [
              "overlays:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The overlays identifier",
            "in": "path",
            "name": "overlayId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/OverlayIncludeQueryParam"
            }
          }
        ]
      }
    },
    "/v2/overlays/{overlayId}/graphics/commands": {
      "post": {
        "operationId": "PostGraphicsCommand",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualGraphicCommandResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Overlay not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Fire a show, hide, update, or hideAll command on a graphic by UUID or name.\nPass `variableValues` to set values directly. For control-room preset semantics\n(automatic defaults resolution), use /control-room/graphics instead.",
        "summary": "Send a graphics command",
        "tags": [
          "Overlays"
        ],
        "security": [
          {
            "bearer": [
              "overlays:write"
            ]
          },
          {
            "api_key": [
              "overlays:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The overlay id",
            "in": "path",
            "name": "overlayId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualGraphicCommandRequestBody"
              }
            }
          }
        }
      }
    },
    "/v2/overlays/{overlayId}/control-room/graphics": {
      "post": {
        "operationId": "PostControlRoomGraphic",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualGraphicCommandResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Overlay not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Fire a control-room preset by ID. The server resolves the preset's graphic UUID\nand merges its configured control-room variable values with any `variableValues` overrides.\n`show` puts the preset on air. `update` sends the same values to a preset graphic that is\nalready on air, and returns 400 when it is not. `hide` takes it off air.",
        "summary": "Show, update or hide graphic",
        "tags": [
          "Control room graphics"
        ],
        "security": [
          {
            "bearer": [
              "overlays:write"
            ]
          },
          {
            "api_key": [
              "overlays:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The overlay id",
            "in": "path",
            "name": "overlayId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ControlRoomGraphicCommandRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/players": {
      "get": {
        "operationId": "GetPlayers",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlayerSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Player not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return a page of your organization's players, sorted by id.\nFilter by data provider to find the players that a provider supplies.",
        "summary": "List players",
        "tags": [
          "Players"
        ],
        "security": [
          {
            "bearer": [
              "players:read"
            ]
          },
          {
            "api_key": [
              "players:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Only return players from this data provider",
            "in": "query",
            "name": "providerName",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ProviderName"
            }
          },
          {
            "description": "Only return players with these ids at the data provider. A comma-separated list of up to 100 ids. Needs `providerName`.",
            "in": "query",
            "name": "providerIds",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The maximum number of players to return",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "The number of players to skip",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "double",
              "type": "number"
            }
          }
        ]
      }
    },
    "/v1/players/{playerId}": {
      "get": {
        "operationId": "GetPlayer",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/Player"
                    },
                    {
                      "$ref": "#/components/schemas/PlayerWithAllIncludes"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Player not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the player with the given ID.\nAccepts the `include` query parameter with code `t`, one level deep.",
        "summary": "Get a player",
        "tags": [
          "Players"
        ],
        "security": [
          {
            "bearer": [
              "players:read"
            ]
          },
          {
            "api_key": [
              "players:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The player id",
            "in": "path",
            "name": "playerId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "include teams e.g. ?include=\"t\"",
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/PlayerIncludeQueryParam"
            }
          }
        ]
      }
    },
    "/v2/scenarios/{sport}": {
      "get": {
        "operationId": "GetSportScenarios",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScenariosResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Sport not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Get demonstration scenarios for a sport.\nReturns scenario names with their data sequences (step-by-step sport data).\nThese are the same scenarios used in Fuse (RiveGraphicsBuilder).",
        "summary": "List sport scenarios",
        "tags": [
          "Schemas & scenarios"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sport",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v2/schemas/sports/{sport}": {
      "get": {
        "operationId": "GetSportSchema",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SportSchemaResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Sport not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Get the JSON Schema for a sport's data shape.\nReturns the graphicBuilderSportSchema used by Fuse and code graphics.",
        "summary": "Get a sport schema",
        "tags": [
          "Schemas & scenarios"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sport",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/streams/destinations": {
      "get": {
        "operationId": "ListDestinations",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamDestinationListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Destination not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Lists the destinations of the organization, one-off destinations included.",
        "summary": "List destinations",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:read"
            ]
          },
          {
            "api_key": [
              "streams:read"
            ]
          }
        ],
        "parameters": []
      },
      "post": {
        "operationId": "CreateDestination",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamDestinationDetail"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Destination not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates a destination. A push destination needs `url` and `key`. A pull destination needs\nneither: LIGR serves it, and the answer carries `pullUrl`.",
        "summary": "Create a destination",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStreamDestinationDetailRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/destinations/{destinationId}": {
      "get": {
        "operationId": "GetDestination",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamDestinationDetail"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Destination not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Returns one destination.",
        "summary": "Get a destination",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:read"
            ]
          },
          {
            "api_key": [
              "streams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The destination identifier",
            "in": "path",
            "name": "destinationId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      },
      "post": {
        "operationId": "UpdateDestination",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamDestinationDetail"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Destination not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Updates a destination. A field you leave out keeps its value. A change to `url` or `key`\napplies at the next start of a stream that uses the destination.",
        "summary": "Update a destination",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The destination identifier",
            "in": "path",
            "name": "destinationId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStreamDestinationDetailRequestBody"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteDestination",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Destination not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Deletes a destination. A destination linked to a running stream cannot be deleted. Stop the\nstream, or remove the destination from it, first.",
        "summary": "Delete a destination",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The destination identifier",
            "in": "path",
            "name": "destinationId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/inputs": {
      "get": {
        "operationId": "ListInputs",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamInputListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Input not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Lists the inputs of the organization.",
        "summary": "List inputs",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:read"
            ]
          },
          {
            "api_key": [
              "streams:read"
            ]
          }
        ],
        "parameters": []
      },
      "post": {
        "operationId": "CreateInput",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamInput"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Input not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates an input. LIGR generates the host, the application name and the stream key. Send\nyour picture to `rtmpUrl` with `streamKey`, or to `srtUrl`. A `pull` input reads `sourceUrl`\ninstead.",
        "summary": "Create an input",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStreamInputRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/inputs/{inputId}": {
      "get": {
        "operationId": "GetInput",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamInput"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Input not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Returns one input with its ingest URLs.",
        "summary": "Get an input",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:read"
            ]
          },
          {
            "api_key": [
              "streams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The input identifier",
            "in": "path",
            "name": "inputId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      },
      "post": {
        "operationId": "UpdateInput",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamInput"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Input not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Updates an input. The host, the application name and the stream key never change. To change\nthe latency of a running stream, use set input latency on the stream instead.",
        "summary": "Update an input",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The input identifier",
            "in": "path",
            "name": "inputId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStreamInputRequestBody"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteInput",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Input not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Deletes an input. An input in use by a running stream cannot be deleted. Stop the stream\nfirst.",
        "summary": "Delete an input",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The input identifier",
            "in": "path",
            "name": "inputId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamSettingsId}/state": {
      "get": {
        "operationId": "GetStreamState",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamStateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the current state of a stream.",
        "summary": "Get stream state",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:read"
            ]
          },
          {
            "api_key": [
              "streams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamSettingsId}/start": {
      "post": {
        "operationId": "StartStream",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManageStreamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Starts the stream. The stream infrastructure comes up and the state moves through `CREATING`\nto `ONLIVE`. Without `destinationIds` the stream publishes nowhere until an operator starts\nthe destinations from the dashboard, which is how you preview the picture. With\n`destinationIds` those destinations publish as soon as the stream is up.",
        "summary": "Start a stream",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartStreamRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/{streamSettingsId}/stop": {
      "post": {
        "operationId": "StopStream",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManageStreamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Stops the stream. Every destination stops publishing and the infrastructure is torn down. The\nstate moves through `TRANSIT_TO_STOPPED` to `IDLE`, and the stream is then ready for the next\nstart.",
        "summary": "Stop a stream",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamSettingsId}/manage": {
      "post": {
        "operationId": "ManageStream",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManageStreamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Deprecated. Use `POST /v1/streams/{streamSettingsId}/start` and\n`POST /v1/streams/{streamSettingsId}/stop`. This route keeps working until the `Sunset` date\nin its response headers, and accepts `GoLive` and `StopStream` only.",
        "summary": "Send a stream command (deprecated)",
        "tags": [
          "Streams"
        ],
        "deprecated": true,
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManageStreamRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/{streamSettingsId}/overlay/refresh": {
      "post": {
        "operationId": "RefreshOverlay",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OverlayActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Refresh the stream overlay: stop it, destroy its keys, then restart it.",
        "summary": "Refresh the stream overlay",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamSettingsId}/overlay/change": {
      "post": {
        "operationId": "ChangeOverlay",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OverlayActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Change which overlay is linked to a stream, or unlink the current overlay.",
        "summary": "Change the stream overlay",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeOverlayRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/{streamSettingsId}/overlay/hide": {
      "post": {
        "operationId": "HideOverlay",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OverlayActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Hide the stream overlay without stopping the stream.",
        "summary": "Hide the stream overlay",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamSettingsId}/overlay/show": {
      "post": {
        "operationId": "ShowOverlay",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OverlayActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Show a previously hidden stream overlay.",
        "summary": "Show the stream overlay",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamSettingsId}/destinations/start": {
      "post": {
        "operationId": "StartDestinations",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DestinationsHealthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Starts publishing to the given destinations of a running stream. Use it after a start\nwithout `destinationIds`, once the picture is right. The answer is what the stream reports\nfor each destination at that moment. A stream that is not running answers 400.",
        "summary": "Start stream destinations",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DestinationIdsRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/{streamSettingsId}/destinations/stop": {
      "post": {
        "operationId": "StopDestinations",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DestinationsHealthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Stops publishing to the given destinations. The stream keeps running, so you can start\nthem again. A stream that is not running answers 400.",
        "summary": "Stop stream destinations",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DestinationIdsRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/{streamSettingsId}/automation": {
      "post": {
        "operationId": "SetAutomation",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamAutomationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Turns Auto Stream on or off. With it on, the stream starts and stops at the automation times\nof the match. The match needs pregame and postgame automation times first. Auto Graphics is\nthe `autoMode` field of the overlay. See update overlay.",
        "summary": "Set stream automation",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StreamAutomationRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/{streamSettingsId}/input/refresh": {
      "post": {
        "operationId": "RefreshInput",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OverlayActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Restarts the input of a running stream. Use it when the picture freezes or the source\nreconnected. The output drops for a few seconds. A stream that is not running answers 400.",
        "summary": "Restart the stream input",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamSettingsId}/input/latency": {
      "post": {
        "operationId": "SetInputLatency",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InputLatencyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Sets the receive latency of the input of a stream. The value is saved on the input, so it\napplies to the next start too. A running input restarts with the new value, which drops\nthe output for a few seconds.",
        "summary": "Set input latency",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InputLatencyRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams": {
      "get": {
        "operationId": "ListStreams",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamSettingsListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Lists the streams of a match with their configuration.",
        "summary": "List streams",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:read"
            ]
          },
          {
            "api_key": [
              "streams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The match identifier",
            "in": "query",
            "name": "matchId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      },
      "post": {
        "operationId": "CreateStream",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamSettings"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates a stream for a match. The stream takes its competition from the match. Link an input\nand destinations now, or later with an update. Start it with `POST /v1/streams/{id}/start`.",
        "summary": "Create a stream",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStreamSettingsRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/streams/{streamSettingsId}": {
      "get": {
        "operationId": "GetStream",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamSettings"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Returns the configuration of one stream. For its live state, see get stream state.",
        "summary": "Get a stream",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:read"
            ]
          },
          {
            "api_key": [
              "streams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      },
      "post": {
        "operationId": "UpdateStream",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamSettings"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Updates the configuration of a stream. A field you leave out keeps its value. While the\nstream runs, only automation, the times, the highlight switches and `destinationIds` can\nchange. Any other change answers 400.",
        "summary": "Update a stream",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStreamSettingsRequestBody"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteStream",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Deletes a stream configuration. A running stream cannot be deleted. Stop it first.",
        "summary": "Delete a stream",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The stream settings identifier",
            "in": "path",
            "name": "streamSettingsId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/streams/{streamId}/createAndLinkOneOffDestination": {
      "post": {
        "operationId": "CreateAndLinkOneOffDestination",
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateStreamDestinationResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Stream not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Create a new destination and link it to the stream, for a single match.",
        "summary": "Create a one-off destination",
        "tags": [
          "Streams"
        ],
        "security": [
          {
            "bearer": [
              "streams:write"
            ]
          },
          {
            "api_key": [
              "streams:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "streamId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStreamDestinationRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/teams": {
      "post": {
        "operationId": "CreateTeam",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Team"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates a team. Supplied competitions and the default venue must belong to your organization.",
        "summary": "Create a team",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "teams:write"
            ]
          },
          {
            "api_key": [
              "teams:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTeamRequestBody"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "GetTeams",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return a page of your organization's teams, sorted by id.\nFilter by data provider to find the teams that a provider supplies.",
        "summary": "List teams",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "teams:read"
            ]
          },
          {
            "api_key": [
              "teams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Only return teams from this data provider",
            "in": "query",
            "name": "providerName",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ProviderName"
            }
          },
          {
            "description": "Only return teams with these ids at the data provider. A comma-separated list of up to 100 ids. Needs `providerName`.",
            "in": "query",
            "name": "providerIds",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The maximum number of teams to return",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "The number of teams to skip",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "double",
              "type": "number"
            }
          }
        ]
      }
    },
    "/v1/teams/{teamId}": {
      "get": {
        "operationId": "GetTeam",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/Team"
                    },
                    {
                      "$ref": "#/components/schemas/TeamWithAllIncludes"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the team with the given ID.\nAccepts the `include` query parameter with codes `p`, `v`, `c`, one level deep.",
        "summary": "Get a team",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "teams:read"
            ]
          },
          {
            "api_key": [
              "teams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/TeamIncludeQueryParam"
            }
          },
          {
            "in": "query",
            "name": "disableClubFallback",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ]
      },
      "patch": {
        "operationId": "UpdateTeam",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Team"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Changes one or more fields of a team in your organization. Send only the fields to change.\nFields that you omit keep their current value. The default venue must belong to your organization.\nThe response has the same shape as GET /v1/teams/{teamId}.\n\nIf a data provider supplies the team, the response includes `dataProvider`.\nYour organization has its own copy of a provider team, so an edit changes only your organization.\nA provider sync keeps all fields that this route sets. The sync changes only the shared provider record.\nOne exception: when an admin connects `SPORT_RADAR_FOOTBALL` to your organization,\nthe initial load replaces `nonPlayerStaff` with the provider manager.",
        "summary": "Update a team",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "teams:write"
            ]
          },
          {
            "api_key": [
              "teams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTeamRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/logo/uploads": {
      "post": {
        "operationId": "CreateTeamLogoUpload",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamLogoUploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Opens a signed upload for one team logo. Declare the exact PNG or JPEG file you will send.\nUpload the bytes with one PUT to `url` and send `headers` with it.\nThen send `uploadId` to `PUT /v1/teams/{teamId}/logo` within one hour.",
        "summary": "Create a logo upload",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "teams:write"
            ]
          },
          {
            "api_key": [
              "teams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TeamLogoUploadRequestBody"
              }
            }
          }
        }
      }
    },
    "/v1/teams/{teamId}/logo": {
      "put": {
        "operationId": "SetTeamLogo",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Team"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Sets the team logo from a completed upload. The API checks the size and SHA-256 of the bytes.\nIt applies the same image checks as the dashboard upload. Each upload sets a logo one time.\nIf a data provider supplies the team, a provider sync keeps the logo. No data provider sets team logos.\nThe response has the same shape as GET /v1/teams/{teamId}.",
        "summary": "Set the team logo",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "teams:write"
            ]
          },
          {
            "api_key": [
              "teams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetTeamLogoRequestBody"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "DeleteTeamLogo",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Team"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Removes the team logo. Graphics then show the club logo, if the club has one.\nThe response has the same shape as GET /v1/teams/{teamId}.",
        "summary": "Remove the team logo",
        "tags": [
          "Teams"
        ],
        "security": [
          {
            "bearer": [
              "teams:write"
            ]
          },
          {
            "api_key": [
              "teams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/teams/{teamId}/players": {
      "post": {
        "operationId": "CreateTeamPlayer",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamPlayer"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates a new player in your organization and adds the player to the roster of the team.\nThe team must belong to your organization. The response has the same shape as an item of\nGET /v1/teams/{teamId}/players. Use the returned `id` as `playerId` in\nPUT /v2/matches/{matchId}/lineup.",
        "summary": "Add a team player",
        "tags": [
          "Players"
        ],
        "security": [
          {
            "bearer": [
              "teams:write"
            ]
          },
          {
            "api_key": [
              "teams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTeamPlayerRequestBody"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "GetTeamPlayers",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamPlayerSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the players on a team.",
        "summary": "List team players",
        "tags": [
          "Players"
        ],
        "security": [
          {
            "bearer": [
              "teams:read"
            ]
          },
          {
            "api_key": [
              "teams:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ]
      }
    },
    "/v1/teams/{teamId}/players/{playerId}": {
      "patch": {
        "operationId": "UpdateTeamPlayer",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamPlayer"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Team not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Changes one or more fields of a player on the roster of a team. Send only the fields to change.\nFields that you omit keep their current value. The team and the player must belong to your\norganization, and the player must be on the roster of the team.\n`firstName` and `lastName` change on every team of the player. All other fields change on\nthis team only. Use `gfxFirstName` and `gfxLastName` to set shorter names for graphics.\n\nIf a data provider supplies the player, the next provider sync replaces `firstName`, `lastName`,\n`number`, `position` and `positionType`. The sync does not change `gfxFirstName`,\n`gfxLastName`, `defaultStarter`, `defaultBench` or `captain`.\n\nThe response has the same shape as an item of GET /v1/teams/{teamId}/players.",
        "summary": "Update a team player",
        "tags": [
          "Players"
        ],
        "security": [
          {
            "bearer": [
              "teams:write"
            ]
          },
          {
            "api_key": [
              "teams:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The team id",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The player id",
            "in": "path",
            "name": "playerId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTeamPlayerRequestBody"
              }
            }
          }
        }
      }
    },
    "/v2/themes/{themeId}/code-graphics": {
      "get": {
        "operationId": "ListCodeGraphics",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/CodeGraphicResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns the working copy of every code graphic in the theme. The response leaves out the Rive\ngraphics of the theme.",
        "summary": "List code graphics",
        "tags": [
          "Code graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      },
      "post": {
        "operationId": "CreateCodeGraphic",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeGraphicResponse"
                }
              }
            }
          },
          "400": {
            "description": "The code graphic breaks a rule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeGraphicInvalidError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreates an empty code graphic in the theme. Upload the bundle files in a later request, and\nleave out `stateMachine` to get the standard code graphic state.",
        "summary": "Create a code graphic",
        "tags": [
          "Code graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCodeGraphicRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/code-graphics/{graphicId}": {
      "get": {
        "operationId": "GetCodeGraphic",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeGraphicResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns the working copy of one code graphic. The response includes the files of the working\ncopy and its published versions.",
        "summary": "Get a code graphic",
        "tags": [
          "Code graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The graphic identifier",
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/code-graphics/{graphicId}/uploads": {
      "post": {
        "operationId": "PresignUploads",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PresignUploadsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "The graphic is locked by another editor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LockedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreates one signed `PUT` URL for each file you name. Each call opens one upload session and\nreturns its `uploadSessionId`, unless you send the id of an open session to add files to it. Every URL writes into that session, which holds the files until\nyou record them. Send each file body to its own URL, then call `PUT .../bundle` with the same\n`uploadSessionId`. That request moves the files of the session into the graphic and records\nthe file set. A session id is never reused, and a publish never affects a URL you already\nhold.",
        "summary": "Create upload URLs",
        "tags": [
          "Code graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The graphic identifier",
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresignUploadsRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/code-graphics/{graphicId}/bundle": {
      "put": {
        "operationId": "ReplaceBundle",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeGraphicResponse"
                }
              }
            }
          },
          "400": {
            "description": "The code graphic breaks a rule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeGraphicInvalidError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "The graphic is locked by another editor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LockedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRecords the complete file set of the code graphic. The request deletes each file you leave out,\nand `stateMachine` applies a new manifest at the same time.\n\nUpload every changed file first, then send the `uploadSessionId` that `POST .../uploads`\nreturned. The request moves each named file of that session into the graphic, and clears the\nsession afterwards. It reads no other session, so a file another session left behind is never\npromoted. A file you name but do not upload in this session is kept only when the graphic\nalready holds it from an earlier bundle. Otherwise the request fails with\n`CODE_GRAPHIC_INVALID` and names the file.",
        "summary": "Replace a bundle",
        "tags": [
          "Code graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The graphic identifier",
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReplaceBundleRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/code-graphics/{graphicId}/versions": {
      "post": {
        "operationId": "CreateGraphicVersion",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateGraphicVersionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The code graphic breaks a rule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeGraphicInvalidError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or graphic not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "The graphic is locked by another editor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LockedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nPublishes the working copy as an immutable version and opens the next working copy. The\nresponse carries the published version number.",
        "summary": "Publish a graphic version",
        "tags": [
          "Code graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "description": "The graphic identifier",
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics": {
      "get": {
        "operationId": "listRiveGraphics",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/RiveGraphicSummaryResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nList working Rive graphics in an owned theme.",
        "summary": "List Rive graphics",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/capabilities": {
      "get": {
        "operationId": "getRiveImportCapabilities",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveImportCapabilitiesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturn native Rive import capabilities for an owned theme.",
        "summary": "Get import capabilities",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/uploads": {
      "post": {
        "operationId": "createRiveImportUpload",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveImportUploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreate a signed upload session for a native Rive source.",
        "summary": "Create an import upload",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRiveImportUploadRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/imports/{jobId}/prepare": {
      "post": {
        "operationId": "prepareRiveImport",
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveImportStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nSeal the uploaded object version and start native Rive preparation.",
        "summary": "Prepare an import",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrepareRiveImportRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/imports/{jobId}/selection": {
      "post": {
        "operationId": "selectRiveImportEntry",
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveImportStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nSelect one supported source from an inspected archive.",
        "summary": "Select an archive entry",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectRiveImportEntryRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/imports/{jobId}": {
      "get": {
        "operationId": "getRiveImportStatus",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveImportStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturn the sanitized status of an owned native Rive import.",
        "summary": "Get import status",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/imports/{jobId}/cancel": {
      "post": {
        "operationId": "cancelRiveImport",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveImportStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCancel an owned native Rive import.",
        "summary": "Cancel an import",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "jobId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/candidates/{candidateId}/graphics": {
      "post": {
        "operationId": "createRiveGraphicFromCandidate",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveCandidateAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreate, fill, or replace a working Rive graphic from a ready candidate.",
        "summary": "Attach an import candidate",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "candidateId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRiveGraphicRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}": {
      "get": {
        "operationId": "getRiveGraphic",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveGraphicResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturn the sanitized working Rive graphic configuration.",
        "summary": "Get a Rive graphic",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      },
      "delete": {
        "operationId": "deleteRiveGraphic",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nDelete a working Rive graphic. Refused while the theme's active version pins it.",
        "summary": "Delete a Rive graphic",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/duplicate": {
      "post": {
        "operationId": "duplicateRiveGraphic",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DuplicateRiveGraphicResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nDuplicate a working Rive graphic under a new name.",
        "summary": "Duplicate a Rive graphic",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DuplicateRiveGraphicRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/versions": {
      "post": {
        "operationId": "publishRiveGraphicVersion",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishRiveGraphicVersionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nPublish the working Rive graphic as an immutable version.",
        "summary": "Publish a graphic version",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/files/metadata": {
      "get": {
        "operationId": "getRiveGraphicFileMetadata",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveVersionFileMetadataResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturn file availability for a working or exact published Rive version.",
        "summary": "Get file metadata",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "assetId",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/files/{kind}": {
      "get": {
        "operationId": "getRiveGraphicFile",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveVersionFileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Rive request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Theme, import, graphic, version, or file not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Rive import or graphic state conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "410": {
            "description": "Rive candidate or source is no longer available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "422": {
            "description": "Rive file or configuration cannot be used",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Rive source imports are unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveTransportErrorResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturn a signed original or exact runtime file for an owned Rive graphic.",
        "summary": "Download a Rive file",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "original",
                "runtime"
              ]
            }
          },
          {
            "in": "query",
            "name": "version",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "assetId",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/variables": {
      "get": {
        "operationId": "listThemeVariables",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeVariableListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or variable not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nLists the variables of a theme your organization owns. An operator sets each value per\ncompetition, and the graphics read the value while they render.\n\nThe response carries the theme's `updatedAt`. Send it back as `ifUnchangedSince` on the\nnext `add`, `set` or `rm`, so that write answers 409 TARGET_CHANGED if the theme moved.",
        "summary": "List theme variables",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "x-beta": "true"
      },
      "post": {
        "operationId": "createThemeVariable",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeVariableWriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or variable not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "ifUnchangedSince no longer matches the theme",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TargetChangedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nAdds one variable to a theme. The id takes the value of the name. A name already used in\nthe theme answers 400.",
        "summary": "Create a theme variable",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateThemeVariableRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/variables/{id}": {
      "patch": {
        "operationId": "updateThemeVariable",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeVariableWriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or variable not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "ifUnchangedSince no longer matches the theme",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TargetChangedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates one theme variable. The request changes only the keys it names. The name never\nchanges; delete the variable and create it again to rename it.",
        "summary": "Update a theme variable",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "The variable identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateThemeVariableRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "deleteThemeVariable",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeVariableDeleteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or variable not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "ifUnchangedSince no longer matches the theme",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TargetChangedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves one theme variable. A competition that set a value for the variable loses that\nvalue at the next theme version.\n\nThe response carries the theme's new `updatedAt`, so a caller does not need a fresh list\nread to keep sending `ifUnchangedSince` on further writes.",
        "summary": "Delete a theme variable",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "The variable identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/data-source-templates": {
      "get": {
        "operationId": "listThemeDataSourceTemplates",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DataSourceTemplateResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or data source template not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nLists the data source templates of a theme your organization owns. A graphic selects a\ntemplate by its alias, and an operator pushes rows into the alias per competition.",
        "summary": "List data source templates",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "x-beta": "true"
      },
      "post": {
        "operationId": "createThemeDataSourceTemplate",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataSourceTemplateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or data source template not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreates a data source template. The server parses the sample, infers the JSON schema and\nstores the first rows as the preview sample. Send `sample` text for CSV, or `sampleBase64`\nbytes for XLSX.",
        "summary": "Create a data source template",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDataSourceTemplateRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/data-source-templates/{id}": {
      "patch": {
        "operationId": "updateThemeDataSourceTemplate",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataSourceTemplateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or data source template not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "ifUnchangedSince no longer matches the template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TargetChangedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates a data source template. A new sample reinfers the schema, unless the request also\nnames a schema. The alias, the source type and the shape never change.",
        "summary": "Update a data source template",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "The data source template identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDataSourceTemplateRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "deleteThemeDataSourceTemplate",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme or data source template not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "A graphic still selects the data schema",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataSchemaInUseError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves a data source template and every pushed snapshot derived from it. A graphic that\nstill selects the alias refuses the delete with 409. Deselect the schema on each named\ngraphic first.",
        "summary": "Delete a data source template",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "The data source template identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/control-variables": {
      "post": {
        "operationId": "addRiveControlVariable",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nAdds a control variable.",
        "summary": "Create a control variable",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ControlVariableRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/control-variables/{id}": {
      "patch": {
        "operationId": "updateRiveControlVariable",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates a control variable.",
        "summary": "Update a control variable",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ControlVariablePatchRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "removeRiveControlVariable",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves a control variable. `force` blanks expressions that reference it.",
        "summary": "Delete a control variable",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/data-bindings/{id}": {
      "patch": {
        "operationId": "updateRiveDataBinding",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates a data binding expression or default.",
        "summary": "Update a data binding",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataBindingPatchRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/data-bindings/{id}/exposure": {
      "put": {
        "operationId": "setRiveDataBindingExposure",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nExposes an image binding as a dynamic image.",
        "summary": "Expose a data binding",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BindingExposureRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "clearRiveDataBindingExposure",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves a binding exposure.",
        "summary": "Remove a binding exposure",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/data-bindings/{id}/image-transform": {
      "put": {
        "operationId": "setRiveImageTransform",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nSets an image transform.",
        "summary": "Set an image transform",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImageTransformRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "clearRiveImageTransform",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nClears an image transform.",
        "summary": "Clear an image transform",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/data-bindings/{id}/source-array": {
      "put": {
        "operationId": "setRiveSourceArray",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nSets or clears the source array of a list binding.",
        "summary": "Set a source array",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SourceArrayRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/data-bindings/{id}/elements": {
      "post": {
        "operationId": "addRiveListElement",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nAdds a manual list element.",
        "summary": "Add a list element",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmptyRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/data-bindings/{id}/elements/{index}": {
      "delete": {
        "operationId": "removeRiveListElement",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves a manual list element.",
        "summary": "Remove a list element",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "index",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/data-bindings/{id}/elements/order": {
      "put": {
        "operationId": "reorderRiveListElements",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReorders manual list elements.",
        "summary": "Reorder list elements",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListOrderRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/inputs/{id}": {
      "patch": {
        "operationId": "updateRiveInput",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates a state-machine input.",
        "summary": "Update a state-machine input",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InputPatchRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/assets/{id}": {
      "patch": {
        "operationId": "updateRiveAsset",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates an asset expression.",
        "summary": "Update an asset",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetPatchRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "removeRiveAsset",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves an asset from the configuration.",
        "summary": "Remove an asset",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/assets/{id}/file": {
      "put": {
        "operationId": "setRiveAssetFile",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nSupplies the image of an unresolved asset.\nUpload the bytes with `POST v2/themes/{themeId}/rive-graphics/images` first, then send the `fileId` it returned.\nThe asset stops being unresolved and the renderer loads the stored image.",
        "summary": "Set an asset file",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetFileRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/assets/{id}/exposure": {
      "put": {
        "operationId": "setRiveAssetExposure",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nExposes an image asset.",
        "summary": "Expose an asset",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetExposureRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "clearRiveAssetExposure",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves an asset exposure.",
        "summary": "Remove an asset exposure",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/user-expressions": {
      "post": {
        "operationId": "addRiveUserExpression",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nAdds a user expression.",
        "summary": "Create a user expression",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserExpressionRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/user-expressions/{id}": {
      "patch": {
        "operationId": "updateRiveUserExpression",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates a user expression.",
        "summary": "Update a user expression",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserExpressionPatchRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "removeRiveUserExpression",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nRemoves a user expression.",
        "summary": "Delete a user expression",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/schemas/{name}": {
      "put": {
        "operationId": "addRiveSchema",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nSelects a data schema for the graphic.",
        "summary": "Select a data schema",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmptyRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      },
      "delete": {
        "operationId": "removeRiveSchema",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nDeselects a data schema.",
        "summary": "Deselect a data schema",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ifUnchangedSince",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/settings": {
      "patch": {
        "operationId": "updateRiveSettings",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveOperationResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nUpdates graphic settings, name and sports.",
        "summary": "Update graphic settings",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SettingsRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/images": {
      "post": {
        "operationId": "createRiveImageUpload",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveImageUploadResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreates a signed upload session for one image.\nUpload the exact bytes with a single PUT to `url`, and send `headers`.\nThen supply `fileId` to a Rive asset or an asset exposure of this theme.",
        "summary": "Create an image upload",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RiveImageUploadRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/preview": {
      "get": {
        "operationId": "getRiveGraphicPreview",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveGraphicPreviewResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns short-lived signed URLs that play the working draft.\nFetch `runtime.url` and each asset `url`, then render them with the Rive runtime.\nPass `scenario` to receive the demonstration data sequence of that name.",
        "summary": "Get a graphic preview",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "scenario",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/rive-graphics/{graphicId}/evaluate": {
      "post": {
        "operationId": "evaluateRiveGraphic",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiveEvaluateResponse"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nChecks every data binding and every user expression of the working draft.\nThe response `mode` says whether the server produced values or checked syntax and references only.\n`unresolved` counts the binding and user expression rows that failed.",
        "summary": "Evaluate graphic bindings",
        "tags": [
          "Rive graphics"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "graphicId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RiveEvaluateRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes": {
      "get": {
        "operationId": "ListThemes",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ThemeListItem"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nLists the themes your organization created. Public themes and themes LIGR linked to your\norganization are not in the list, because the theme routes cannot write to them.",
        "summary": "List themes",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [],
        "x-beta": "true"
      },
      "post": {
        "operationId": "CreateTheme",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "Your organization owns as many themes as it can create",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeLimitReachedError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreates a theme your organization owns. The theme appears on the Themes page of the dashboard\nand in the competition theme picker like any other theme, once a theme version is active.\nYour organization can own up to five themes.",
        "summary": "Create a theme",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateThemeRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}": {
      "delete": {
        "operationId": "DeleteTheme",
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "409": {
            "description": "A competition still uses the theme",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeInUseError"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nDeletes a theme your organization owns, with every graphic in it. A theme a competition still\nuses is refused with 409. Remove the theme from the competition first.",
        "summary": "Delete a theme",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      },
      "get": {
        "operationId": "GetTheme",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns one theme and its published versions. The response also lists every graphic in the\ntheme with the published versions of that graphic.",
        "summary": "Get a theme",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/versions/{version}": {
      "get": {
        "operationId": "GetThemeVersion",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThemeVersionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nReturns the frozen graphic selections in an existing theme version.",
        "summary": "Get a theme version",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:read"
            ]
          },
          {
            "api_key": [
              "themes:read"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "path",
            "name": "version",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/active-version": {
      "put": {
        "operationId": "SetThemeActiveVersion",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetThemeActiveVersionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nActivates an existing theme version without publishing a new snapshot.",
        "summary": "Activate a theme version",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetThemeActiveVersionRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v2/themes/{themeId}/versions": {
      "post": {
        "operationId": "PublishThemeVersion",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishThemeVersionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Theme not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "**Beta.** This operation can change between minor versions. See [Beta status](/graphics-sdk/#beta-status).\n\nCreates a theme version from the published graphic versions. Each graphic you do not list uses\nits latest published version, and the version leaves out a graphic that has no published\nversion. Set `activate` to make the new version live.",
        "summary": "Publish a theme version",
        "tags": [
          "Themes"
        ],
        "security": [
          {
            "bearer": [
              "themes:write"
            ]
          },
          {
            "api_key": [
              "themes:write"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The theme identifier",
            "in": "path",
            "name": "themeId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishThemeVersionRequestBody"
              }
            }
          }
        },
        "x-beta": "true"
      }
    },
    "/v1/venues": {
      "post": {
        "operationId": "CreateVenue",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Venue"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Venue not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Creates a venue in the API key's organization. Location fields require a nonblank address.\nOmit all location fields to create a venue with only its name and optional graphics name.",
        "summary": "Create a venue",
        "tags": [
          "Venues"
        ],
        "security": [
          {
            "bearer": [
              "venues:write"
            ]
          },
          {
            "api_key": [
              "venues:write"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVenueRequestBody"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "GetVenues",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VenueSearchResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Venue not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return a list of venues for the organization.",
        "summary": "List venues",
        "tags": [
          "Venues"
        ],
        "security": [
          {
            "bearer": [
              "venues:read"
            ]
          },
          {
            "api_key": [
              "venues:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "Only return venues from this data provider",
            "in": "query",
            "name": "providerName",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ProviderName"
            }
          },
          {
            "description": "Only return venues with these ids at the data provider. A comma-separated list of up to 100 ids. Needs `providerName`.",
            "in": "query",
            "name": "providerIds",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "format": "double",
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "double",
              "type": "number"
            }
          }
        ]
      }
    },
    "/v1/venues/{venueId}": {
      "get": {
        "operationId": "GetVenue",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/Venue"
                    },
                    {
                      "$ref": "#/components/schemas/VenueWithAllIncludes"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Request is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid api key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationError"
                }
              }
            }
          },
          "403": {
            "description": "Api key provides insufficient access for the request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizationError"
                }
              }
            }
          },
          "404": {
            "description": "Venue not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Api key has made too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error has occured. If problems persist please contact support",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnexpectedError"
                }
              }
            }
          }
        },
        "description": "Return the venue with the given ID.\nAccepts the `include` query parameter with code `t`, one level deep.",
        "summary": "Get a venue",
        "tags": [
          "Venues"
        ],
        "security": [
          {
            "bearer": [
              "venues:read"
            ]
          },
          {
            "api_key": [
              "venues:read"
            ]
          }
        ],
        "parameters": [
          {
            "description": "The venues identifier",
            "in": "path",
            "name": "venueId",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Id"
            }
          },
          {
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/VenueIncludeQueryParam"
            }
          }
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.ligr.live/rest",
      "description": "LIGR REST API"
    }
  ],
  "tags": [
    {
      "name": "Matches",
      "description": "Create, read, update and close matches. Version 1 and version 2 run side by side."
    },
    {
      "name": "Facts",
      "description": "Time-stamped match events such as a goal, a card or a point."
    },
    {
      "name": "Match summary",
      "description": "The computed score, periods and statistics folded from the facts of one match."
    },
    {
      "name": "Competitions",
      "description": "Leagues and tournaments. A competition owns teams, venues and matches."
    },
    {
      "name": "Teams",
      "description": "Teams and team rosters."
    },
    {
      "name": "Players",
      "description": "Players, team rosters and match lineups."
    },
    {
      "name": "Venues",
      "description": "Venues that belong to your organization."
    },
    {
      "name": "Officials",
      "description": "Match officials, such as referees and umpires."
    },
    {
      "name": "Overlays",
      "description": "The per-match graphics session. Read it, update it, and send graphics commands."
    },
    {
      "name": "Control room setup",
      "description": "Create and read control rooms, sections, and code or Rive graphic presets."
    },
    {
      "name": "Control room graphics",
      "description": "Fire a control room preset on an overlay, with variable overrides."
    },
    {
      "name": "Streams",
      "description": "Stream configuration, inputs, destinations, start and stop, the monitor operations and the overlay of a stream."
    },
    {
      "name": "Data sources",
      "description": "Push JSON or CSV into a theme data source for a competition."
    },
    {
      "name": "Themes",
      "description": "Beta. Create, list and delete the themes you own, read a theme, and publish a theme version."
    },
    {
      "name": "Code graphics",
      "description": "Beta. List, create, upload, bundle and publish HTML graphics inside a theme."
    },
    {
      "name": "Rive graphics",
      "description": "Beta. Prepare native Rive files, create graphics, publish versions, and download exact revision files."
    },
    {
      "name": "Schemas & scenarios",
      "description": "Sport data schemas and rehearsal scenarios."
    }
  ]
}
