{
  "openapi": "3.1.0",
  "info": {
    "title": "API-SPORT.ru — Sport Events API",
    "description": "API для получения информации о спортивных событиях, командах, игроках и турнирах. Поддерживаются различные виды спорта (футбол, хоккей, баскетбол, теннис и другие) с детальной информацией о матчах, событиях, составах и статистике.\n\n**История изменений (changelog):** [docs.api-sport.ru/changelog](https://docs.api-sport.ru/changelog)",
    "version": "2.0.9",
    "contact": {
      "name": "API-SPORT.ru - Support",
      "url": "https://t.me/apisportbot"
    }
  },
  "servers": [
    {
      "url": "https://api.api-sport.ru",
      "description": "Сервер API"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "tags": [
    {
      "name": "Общее",
      "description": "Общие endpoints API"
    },
    {
      "name": "Категории",
      "description": "Работа с категориями турниров (страны/регионы)"
    },
    {
      "name": "Матчи",
      "description": "Получение информации о матчах и их событиях"
    },
    {
      "name": "Поиск",
      "description": "Полнотекстовый мультиязычный поиск по игрокам, командам и турнирам"
    },
    {
      "name": "Игроки",
      "description": "Информация об игроках"
    },
    {
      "name": "Команды",
      "description": "Информация о командах и их составах"
    },
    {
      "name": "Турниры",
      "description": "Информация о турнирах и сезонах"
    }
  ],
  "paths": {
    "/v2/sport": {
      "get": {
        "summary": "Получить список видов спорта",
        "description": "Возвращает список всех доступных видов спорта с их базовыми путями API",
        "tags": [
          "Общее"
        ],
        "operationId": "getSports",
        "responses": {
          "200": {
            "description": "Список видов спорта",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Sport"
                  }
                },
                "example": [
                  {
                    "id": 1,
                    "name": "Football",
                    "slug": "football",
                    "apiBasePath": "/v2/football/",
                    "translations": {
                      "ru": "Футбол"
                    }
                  },
                  {
                    "id": 4,
                    "name": "Ice hockey",
                    "slug": "ice-hockey",
                    "apiBasePath": "/v2/ice-hockey/",
                    "translations": {
                      "ru": "Хоккей"
                    }
                  },
                  {
                    "id": 2,
                    "name": "Basketball",
                    "slug": "basketball",
                    "apiBasePath": "/v2/basketball/",
                    "translations": {
                      "ru": "Баскетбол"
                    }
                  },
                  {
                    "id": 5,
                    "name": "Tennis",
                    "slug": "tennis",
                    "apiBasePath": "/v2/tennis/",
                    "translations": {
                      "ru": "Теннис"
                    }
                  },
                  {
                    "id": 20,
                    "name": "Table tennis",
                    "slug": "table-tennis",
                    "apiBasePath": "/v2/table-tennis/",
                    "translations": {
                      "ru": "Настольный теннис"
                    }
                  },
                  {
                    "id": 23,
                    "name": "Volleyball",
                    "slug": "volleyball",
                    "apiBasePath": "/v2/volleyball/",
                    "translations": {
                      "ru": "Волейбол"
                    }
                  },
                  {
                    "id": 72,
                    "name": "E-sports",
                    "slug": "esports",
                    "apiBasePath": "/v2/esports/",
                    "translations": {
                      "ru": "Киберспорт"
                    }
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Неавторизован",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/{sportSlug}/categories": {
      "get": {
        "summary": "Получить список категорий турниров",
        "description": "Возвращает список всех категорий (стран/регионов) с количеством турниров в каждой для указанного вида спорта",
        "tags": [
          "Категории"
        ],
        "operationId": "getCategories",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "Список категорий",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "categories": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Category"
                      }
                    },
                    "defaultTournaments": {
                      "$ref": "#/components/schemas/DefaultTournaments"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Неавторизован"
          }
        }
      }
    },
    "/v2/{sportSlug}/categories/{categoryId}": {
      "get": {
        "summary": "Получить турниры в категории",
        "description": "Возвращает список всех турниров в указанной категории с их сезонами для указанного вида спорта",
        "tags": [
          "Категории"
        ],
        "operationId": "getTournamentsByCategory",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "categoryId",
            "in": "path",
            "required": true,
            "description": "ID категории",
            "schema": {
              "type": "integer",
              "example": 57
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Список турниров в категории",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tournaments": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tournament"
                      }
                    },
                    "defaultTournaments": {
                      "$ref": "#/components/schemas/DefaultTournaments"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректный ID категории"
          },
          "401": {
            "description": "Неавторизован"
          }
        }
      }
    },
    "/v2/{sportSlug}/matches": {
      "get": {
        "summary": "Получить список матчей",
        "description": "Возвращает список матчей с возможностью фильтрации по различным параметрам для указанного вида спорта. По умолчанию возвращает матчи на сегодня.\n\n**Киберспорт (sportSlug=esports):** для киберспортивных матчей (CS2, Dota 2, League of Legends) в каждом матче присутствует дополнительное поле `esports`, содержащее:\n- Формат серии (Best of N) и список отдельных игр (карт)\n- Индивидуальную статистику каждого игрока за каждую игру (KDA, ADR, gold и др.)\n- Выбранных героев/чемпионов и их баны (Dota 2, LoL)\n- Раунды с исходами и сторонами (CS2)\n- Командную статистику: башни, бараки и др. (Dota 2), драконы, ингибиторы и др. (LoL)\n\n**Теннис (sportSlug=tennis):** для теннисных матчей в каждом матче присутствует дополнительное поле `tennis`, содержащее:\n- Формат серии (Best of 3/5), тип покрытия, посев игроков\n- Кто подаёт первым\n- Детализация по сетам: геймы, победитель, длительность, тайбрейк\n- Momentum-график по геймам (значение импульса, брейки подачи)\n- Point-by-point (только при запросе одного матча по matchId) — каждое очко с типом (эйс, двойная ошибка, виннер, ошибка)\n\n**Словарь всех возможных типов букмекерских коэффициентов:**\n\n<a target=\"_blank\" href=\"/v2/BkOddsDict.json\">Скачать BkOddsDict.json</a>",
        "tags": [
          "Матчи"
        ],
        "operationId": "getMatches",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "date",
            "in": "query",
            "description": "Дата матчей в формате YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2025-09-03"
            }
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Список ID матчей через запятую (максимум 100)",
            "schema": {
              "type": "string",
              "example": "14570728,14586240"
            }
          },
          {
            "name": "tournament_id",
            "in": "query",
            "description": "ID турнира для фильтрации (можно список через запятую)",
            "schema": {
              "type": "string",
              "example": "25182,77142"
            }
          },
          {
            "name": "season_id",
            "in": "query",
            "description": "ID сезона для фильтрации",
            "schema": {
              "type": "integer",
              "example": 72514
            }
          },
          {
            "name": "team_id",
            "in": "query",
            "description": "ID команды (матчи с участием команды)",
            "schema": {
              "type": "integer",
              "example": 195801
            }
          },
          {
            "name": "category_ids",
            "in": "query",
            "description": "Список ID категорий через запятую",
            "schema": {
              "type": "string",
              "example": "57,254"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Статус матча",
            "schema": {
              "type": "string",
              "enum": [
                "notstarted",
                "inprogress",
                "finished",
                "canceled",
                "postponed",
                "interrupted",
                "suspended",
                "delayed",
                "willcontinue"
              ],
              "example": "inprogress"
            }
          },
          {
            "name": "exclude_amateur",
            "in": "query",
            "description": "Исключить любительские матчи и низшие лиги. Передайте true для активации (РЕКОМЕНДУЕТСЯ использовать в каждом запросе, в будущем будет включен по умолчанию)",
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ],
              "example": "true"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Номер страницы (от 1 до 100). Если не указан, возвращаются все результаты без пагинации (максимум 6000 матчей)",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 1,
              "example": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "description": "Количество матчей на странице (от 1 до 500). Если не указан, возвращаются 500 матчей",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 500,
              "example": 50
            }
          },
          {
            "name": "has_bk_odds",
            "in": "query",
            "description": "Фильтр: только матчи с букмекерскими коэффициентами. Передайте true для активации. Можно комбинировать с bookmaker_ids для фильтрации по конкретным букмекерам",
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ],
              "example": "true"
            }
          },
          {
            "name": "with_bk_odds",
            "in": "query",
            "description": "Добавить букмекерские коэффициенты в ответ. Передайте true для активации. При включении каждый матч будет содержать поле oddsBk с детальными коэффициентами по рынкам. Можно комбинировать с bookmaker_ids",
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ],
              "example": "true"
            }
          },
          {
            "name": "bookmaker_ids",
            "in": "query",
            "description": "Список ID букмекеров через запятую. Используется совместно с has_bk_odds и/или with_bk_odds для ограничения данных конкретными букмекерами. Возвращает ошибку 400 при указании невалидных ID. Доступные значения: melbet",
            "schema": {
              "type": "string",
              "example": "melbet"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Список матчей",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "totalMatches": {
                      "type": "integer",
                      "description": "Общее количество матчей"
                    },
                    "page": {
                      "type": "integer",
                      "description": "Текущая страница (присутствует только при использовании пагинации)"
                    },
                    "pageSize": {
                      "type": "integer",
                      "description": "Размер страницы (присутствует только при использовании пагинации)"
                    },
                    "totalPages": {
                      "type": "integer",
                      "description": "Общее количество страниц (присутствует только при использовании пагинации)"
                    },
                    "matches": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Match"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректные параметры запроса"
          },
          "401": {
            "description": "Неавторизован"
          },
          "500": {
            "description": "Внутренняя ошибка сервера"
          }
        }
      }
    },
    "/v2/{sportSlug}/matches/{matchId}": {
      "get": {
        "summary": "Получить детали матча",
        "description": "Возвращает полную информацию о конкретном матче включая составы команд для указанного вида спорта.\n\n**Киберспорт (sportSlug=esports):** для киберспортивных матчей (CS2, Dota 2, League of Legends) в ответе присутствует дополнительное поле `esports` с детальной информацией по каждой игре серии, статистикой игроков, раундами (CS2) и банами героев/чемпионов (Dota 2, LoL).\n\n**Теннис (sportSlug=tennis):** для теннисных матчей в ответе присутствует дополнительное поле `tennis` с детальной информацией по сетам (геймы, тайбрейки, длительность), посевом игроков, подачей, momentum-графиком и point-by-point данными (каждое очко с типом розыгрыша: эйс, двойная ошибка, виннер).",
        "tags": [
          "Матчи"
        ],
        "operationId": "getMatchById",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "matchId",
            "in": "path",
            "required": true,
            "description": "ID матча",
            "schema": {
              "type": "integer",
              "example": 14570728
            }
          },
          {
            "name": "with_bk_odds",
            "in": "query",
            "description": "Добавить букмекерские коэффициенты в ответ. Передайте true для активации. При включении матч будет содержать поле oddsBk с детальными коэффициентами по рынкам. Можно комбинировать с bookmaker_ids",
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ],
              "example": "true"
            }
          },
          {
            "name": "bookmaker_ids",
            "in": "query",
            "description": "Список ID букмекеров через запятую. Используется совместно с with_bk_odds для ограничения данных конкретными букмекерами. Возвращает ошибку 400 при указании невалидных ID. Доступные значения: melbet",
            "schema": {
              "type": "string",
              "example": "melbet"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Детали матча",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Match"
                }
              }
            }
          },
          "400": {
            "description": "Некорректный ID матча"
          },
          "401": {
            "description": "Неавторизован"
          },
          "404": {
            "description": "Матч не найден"
          }
        }
      }
    },
    "/v2/{sportSlug}/matches/{matchId}/events": {
      "get": {
        "summary": "Получить события матча",
        "description": "Возвращает хронологический список всех событий произошедших в матче (голы, карточки, замены и т.д.) для указанного вида спорта",
        "tags": [
          "Матчи"
        ],
        "operationId": "getMatchEvents",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "matchId",
            "in": "path",
            "required": true,
            "description": "ID матча",
            "schema": {
              "type": "integer",
              "example": 14570728
            }
          }
        ],
        "responses": {
          "200": {
            "description": "События матча",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "matchId": {
                      "type": "integer",
                      "description": "ID матча"
                    },
                    "totalEvents": {
                      "type": "integer",
                      "description": "Общее количество событий"
                    },
                    "events": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/LiveEvent"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректный ID матча"
          },
          "401": {
            "description": "Неавторизован"
          }
        }
      }
    },
    "/v2/{sportSlug}/matches/{date}/tournaments": {
      "get": {
        "summary": "Получить турниры по дате",
        "description": "Возвращает список уникальных турниров для заданной даты с количеством матчей и статистикой по статусам. Поддерживает фильтрацию по турнирам, сезонам, категориям и командам.",
        "tags": [
          "Матчи"
        ],
        "operationId": "getTournamentsByDate",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "date",
            "in": "path",
            "required": true,
            "description": "Дата в формате YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-03-10"
            }
          },
          {
            "name": "exclude_amateur",
            "in": "query",
            "description": "Исключить любительские и низшие лиги - true",
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ],
              "example": "true"
            }
          },
          {
            "name": "tournament_id",
            "in": "query",
            "description": "ID турнира или несколько ID через запятую для фильтрации",
            "schema": {
              "type": "string",
              "example": "17,35"
            }
          },
          {
            "name": "season_id",
            "in": "query",
            "description": "ID сезона для фильтрации",
            "schema": {
              "type": "integer",
              "example": 61627
            }
          },
          {
            "name": "category_ids",
            "in": "query",
            "description": "ID категорий через запятую для фильтрации",
            "schema": {
              "type": "string",
              "example": "1,7,30"
            }
          },
          {
            "name": "team_id",
            "in": "query",
            "description": "ID команды — фильтрует матчи с участием этой команды (домашние и выездные)",
            "schema": {
              "type": "integer",
              "example": 2697
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Список турниров с количеством матчей и статистикой по статусам",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string",
                      "format": "date",
                      "description": "Дата запроса",
                      "example": "2026-03-10"
                    },
                    "totalTournaments": {
                      "type": "integer",
                      "description": "Общее количество турниров",
                      "example": 45
                    },
                    "totalMatches": {
                      "type": "integer",
                      "description": "Общее количество матчей за эту дату",
                      "example": 230
                    },
                    "tournaments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "ID турнира",
                            "example": 853
                          },
                          "name": {
                            "type": "string",
                            "description": "Название турнира",
                            "example": "Club Friendly Games"
                          },
                          "translations": {
                            "type": "object",
                            "properties": {
                              "ru": {
                                "type": "string",
                                "description": "Название на русском",
                                "example": "Товарищеские матчи"
                              }
                            }
                          },
                          "category": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "ID категории",
                                "example": 1468
                              },
                              "name": {
                                "type": "string",
                                "description": "Название категории",
                                "example": "World"
                              },
                              "translations": {
                                "type": "object",
                                "description": "Переводы названия категории",
                                "properties": {
                                  "ru": {
                                    "type": "string",
                                    "example": "Мир"
                                  }
                                }
                              },
                              "image": {
                                "type": "string",
                                "nullable": true,
                                "description": "URL изображения категории"
                              }
                            }
                          },
                          "image": {
                            "type": "string",
                            "description": "URL изображения турнира",
                            "example": "https://images.api-sport.ru/unique-tournament-853"
                          },
                          "matchesCount": {
                            "type": "integer",
                            "description": "Количество матчей в турнире за эту дату",
                            "example": 15
                          },
                          "statusBreakdown": {
                            "type": "object",
                            "description": "Статистика матчей по статусам",
                            "properties": {
                              "notstarted": {
                                "type": "integer",
                                "description": "Не начавшиеся матчи",
                                "example": 5
                              },
                              "inprogress": {
                                "type": "integer",
                                "description": "Матчи в процессе",
                                "example": 2
                              },
                              "finished": {
                                "type": "integer",
                                "description": "Завершённые матчи",
                                "example": 6
                              },
                              "canceled": {
                                "type": "integer",
                                "description": "Отменённые матчи",
                                "example": 0
                              },
                              "postponed": {
                                "type": "integer",
                                "description": "Отложенные матчи",
                                "example": 1
                              },
                              "interrupted": {
                                "type": "integer",
                                "description": "Прерванные матчи",
                                "example": 0
                              },
                              "suspended": {
                                "type": "integer",
                                "description": "Приостановленные матчи",
                                "example": 0
                              },
                              "delayed": {
                                "type": "integer",
                                "description": "Задержанные матчи",
                                "example": 1
                              },
                              "willcontinue": {
                                "type": "integer",
                                "description": "Матчи, которые будут продолжены",
                                "example": 0
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректный формат даты"
          },
          "401": {
            "description": "Неавторизован"
          }
        }
      }
    },
    "/v2/{sportSlug}/matches/{yearMonth}/calendar": {
      "get": {
        "summary": "Календарь матчей за месяц",
        "description": "Возвращает сводку по каждому дню указанного месяца: количество матчей и количество уникальных турниров. Включает все дни месяца, даже без матчей (с нулевыми значениями). Поддерживает фильтрацию по турнирам, сезонам, категориям и командам.",
        "tags": [
          "Матчи"
        ],
        "operationId": "getCalendarByMonth",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "yearMonth",
            "in": "path",
            "required": true,
            "description": "Год и месяц в формате YYYY-MM",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$",
              "example": "2026-03"
            }
          },
          {
            "name": "exclude_amateur",
            "in": "query",
            "description": "Исключить любительские и низшие лиги - true",
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ],
              "example": "true"
            }
          },
          {
            "name": "tournament_id",
            "in": "query",
            "description": "ID турнира или несколько ID через запятую для фильтрации",
            "schema": {
              "type": "string",
              "example": "17,35"
            }
          },
          {
            "name": "season_id",
            "in": "query",
            "description": "ID сезона для фильтрации",
            "schema": {
              "type": "integer",
              "example": 61627
            }
          },
          {
            "name": "category_ids",
            "in": "query",
            "description": "ID категорий через запятую для фильтрации",
            "schema": {
              "type": "string",
              "example": "1,7,30"
            }
          },
          {
            "name": "team_id",
            "in": "query",
            "description": "ID команды — фильтрует матчи с участием этой команды (домашние и выездные)",
            "schema": {
              "type": "integer",
              "example": 2697
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Сводка матчей по дням месяца (календарь событий)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "month": {
                      "type": "string",
                      "description": "Запрошенный месяц",
                      "example": "2026-03"
                    },
                    "totalDays": {
                      "type": "integer",
                      "description": "Количество дней в месяце",
                      "example": 31
                    },
                    "days": {
                      "type": "array",
                      "description": "Массив дней месяца (включая дни без матчей)",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": {
                            "type": "string",
                            "format": "date",
                            "description": "Дата дня",
                            "example": "2026-03-01"
                          },
                          "totalTournaments": {
                            "type": "integer",
                            "description": "Количество уникальных турниров в этот день",
                            "example": 45
                          },
                          "totalMatches": {
                            "type": "integer",
                            "description": "Количество матчей в этот день",
                            "example": 230
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректный формат месяца"
          },
          "401": {
            "description": "Неавторизован"
          }
        }
      }
    },
    "/v2/{sportSlug}/players": {
      "get": {
        "summary": "Получить список игроков",
        "description": "Возвращает список игроков по их ID, по ID команды или по текстовому запросу для указанного вида спорта. Обязателен один из параметров: ids, team_id или q",
        "tags": [
          "Игроки"
        ],
        "operationId": "getPlayers",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Список ID игроков через запятую (максимум 100)",
            "schema": {
              "type": "string",
              "example": "123456,789012"
            }
          },
          {
            "name": "team_id",
            "in": "query",
            "description": "ID команды для получения всех её игроков",
            "schema": {
              "type": "integer",
              "example": 195801
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Полнотекстовый поиск по имени игрока (мультиязычный: английский, русский). Минимум 1 символ",
            "schema": {
              "type": "string",
              "example": "Messi"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Максимальное количество результатов поиска (только с параметром q)",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Смещение для пагинации результатов поиска (только с параметром q, максимум 500)",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 500,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Список игроков",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "totalPlayers": {
                      "type": "integer",
                      "description": "Общее количество игроков"
                    },
                    "players": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Player"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректные параметры или отсутствуют обязательные параметры"
          },
          "401": {
            "description": "Неавторизован"
          },
          "500": {
            "description": "Внутренняя ошибка сервера"
          }
        }
      }
    },
    "/v2/{sportSlug}/teams": {
      "get": {
        "summary": "Получить список команд",
        "description": "Возвращает список команд по их ID или по текстовому запросу вместе с составами игроков для указанного вида спорта. Обязателен один из параметров: ids или q",
        "tags": [
          "Команды"
        ],
        "operationId": "getTeams",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Список ID команд через запятую (максимум 100)",
            "schema": {
              "type": "string",
              "example": "195801,195800"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Полнотекстовый поиск по названию команды (мультиязычный: английский, русский). Минимум 1 символ",
            "schema": {
              "type": "string",
              "example": "Barcelona"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Максимальное количество результатов поиска (только с параметром q)",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Смещение для пагинации результатов поиска (только с параметром q, максимум 500)",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 500,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Список команд с игроками",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "totalTeams": {
                      "type": "integer",
                      "description": "Общее количество команд"
                    },
                    "teams": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Team"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректные или отсутствующие параметры"
          },
          "401": {
            "description": "Неавторизован"
          },
          "500": {
            "description": "Внутренняя ошибка сервера"
          }
        }
      }
    },
    "/v2/{sportSlug}/search": {
      "get": {
        "summary": "Полнотекстовый поиск",
        "description": "Мультиязычный поиск по игрокам, командам и турнирам. Поддерживает русский и английский языки. Результаты ранжируются по релевантности и популярности.",
        "tags": [
          "Поиск"
        ],
        "operationId": "search",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Поисковый запрос (мин. 1 символ). Поддерживает русский и английский",
            "schema": {
              "type": "string",
              "example": "Messi"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Типы сущностей для поиска через запятую. По умолчанию ищет по всем типам",
            "schema": {
              "type": "string",
              "enum": [
                "player",
                "team",
                "tournament"
              ],
              "example": "player,team"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Максимальное количество результатов на тип сущности",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Смещение для пагинации (максимум 500)",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 500,
              "default": 0
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "Фильтр по стране (ISO Alpha-2 код)",
            "schema": {
              "type": "string",
              "example": "ES"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Результаты поиска",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Отсутствует обязательный параметр q или некорректный тип"
          },
          "401": {
            "description": "Неавторизован"
          },
          "500": {
            "description": "Внутренняя ошибка сервера"
          }
        }
      }
    },
    "/v2/{sportSlug}/tournaments": {
      "get": {
        "summary": "Получить список турниров",
        "description": "Возвращает список турниров по их ID или по текстовому запросу для указанного вида спорта. Обязателен один из параметров: ids или q",
        "tags": [
          "Турниры"
        ],
        "operationId": "getTournaments",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Список ID турниров через запятую (максимум 100)",
            "schema": {
              "type": "string",
              "example": "7,17,23"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Полнотекстовый поиск по названию турнира (мультиязычный: английский, русский). Минимум 1 символ",
            "schema": {
              "type": "string",
              "example": "Champions League"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Максимальное количество результатов поиска (только с параметром q)",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Смещение для пагинации результатов поиска (только с параметром q, максимум 500)",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 500,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Список турниров",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "totalTournaments": {
                      "type": "integer",
                      "description": "Общее количество турниров"
                    },
                    "tournaments": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tournament"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Отсутствуют обязательные параметры"
          },
          "401": {
            "description": "Неавторизован"
          },
          "500": {
            "description": "Внутренняя ошибка сервера"
          }
        }
      }
    },
    "/v2/{sportSlug}/tournament/{tournamentId}": {
      "get": {
        "summary": "Получить информацию о турнире",
        "description": "Возвращает детальную информацию о турнире включая связанные турниры и дивизионы для указанного вида спорта",
        "tags": [
          "Турниры"
        ],
        "operationId": "getTournamentById",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "tournamentId",
            "in": "path",
            "required": true,
            "description": "ID турнира",
            "schema": {
              "type": "integer",
              "example": 25182
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Информация о турнире",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tournament"
                }
              }
            }
          },
          "400": {
            "description": "Некорректный ID турнира"
          },
          "401": {
            "description": "Неавторизован"
          },
          "404": {
            "description": "Турнир не найден"
          }
        }
      }
    },
    "/v2/{sportSlug}/tournament/{tournamentId}/seasons": {
      "get": {
        "summary": "Получить сезоны турнира",
        "description": "Возвращает список всех сезонов для указанного турнира отсортированных по году для указанного вида спорта",
        "tags": [
          "Турниры"
        ],
        "operationId": "getTournamentSeasons",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "tournamentId",
            "in": "path",
            "required": true,
            "description": "ID турнира",
            "schema": {
              "type": "integer",
              "example": 25182
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Список сезонов",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "seasons": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Season"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Некорректный ID турнира"
          },
          "401": {
            "description": "Неавторизован"
          }
        }
      }
    },
    "/v2/{sportSlug}/tournament/{tournamentId}/seasons/{seasonId}": {
      "get": {
        "summary": "Получить детали сезона",
        "description": "Возвращает детальную информацию о конкретном сезоне турнира: туры, группы, плей-офф, турнирные таблицы (standings) и сетки плей-офф (cupTrees).",
        "tags": [
          "Турниры"
        ],
        "operationId": "getSeasonDetails",
        "parameters": [
          {
            "$ref": "#/components/parameters/sportSlug"
          },
          {
            "name": "tournamentId",
            "in": "path",
            "required": true,
            "description": "ID турнира",
            "schema": {
              "type": "integer",
              "example": 25182
            }
          },
          {
            "name": "seasonId",
            "in": "path",
            "required": true,
            "description": "ID сезона",
            "schema": {
              "type": "integer",
              "example": 72514
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Детали сезона",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeasonDetails"
                }
              }
            }
          },
          "400": {
            "description": "Некорректные ID параметры"
          },
          "401": {
            "description": "Неавторизован"
          },
          "404": {
            "description": "Сезон не найден"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "API ключ для авторизации запросов"
      }
    },
    "parameters": {
      "sportSlug": {
        "name": "sportSlug",
        "in": "path",
        "required": true,
        "description": "Слаг вида спорта. Получите список доступных видов спорта через /v2/sport",
        "schema": {
          "type": "string",
          "enum": [
            "football",
            "ice-hockey",
            "basketball",
            "tennis",
            "table-tennis",
            "volleyball",
            "esports"
          ],
          "example": "football"
        }
      }
    },
    "schemas": {
      "SearchResponse": {
        "type": "object",
        "description": "Ответ полнотекстового поиска",
        "properties": {
          "query": {
            "type": "string",
            "description": "Поисковый запрос",
            "example": "Messi"
          },
          "results": {
            "type": "object",
            "properties": {
              "players": {
                "$ref": "#/components/schemas/SearchResultGroup"
              },
              "teams": {
                "$ref": "#/components/schemas/SearchResultGroup"
              },
              "tournaments": {
                "$ref": "#/components/schemas/SearchResultGroup"
              }
            }
          }
        }
      },
      "SearchResultGroup": {
        "type": "object",
        "description": "Группа результатов поиска по типу сущности",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Количество найденных результатов"
          },
          "items": {
            "type": "array",
            "description": "Массив найденных сущностей (Player, Team или Tournament)",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "Sport": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор вида спорта",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "Название вида спорта на английском",
            "example": "Football"
          },
          "slug": {
            "type": "string",
            "description": "URL-совместимое название",
            "example": "football"
          },
          "apiBasePath": {
            "type": "string",
            "description": "Базовый путь API для данного вида спорта",
            "example": "/v2/football/"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "description": "Название на русском языке",
                "example": "Футбол"
              }
            }
          }
        }
      },
      "Category": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор категории",
            "example": 57
          },
          "name": {
            "type": "string",
            "description": "Название категории",
            "example": "Uruguay"
          },
          "tournamentsCount": {
            "type": "integer",
            "description": "Количество турниров в категории",
            "example": 15
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "description": "Перевод на русский",
                "example": "Уругвай"
              }
            }
          },
          "image": {
            "type": "string",
            "description": "URL изображения категории",
            "example": "/images/category-57"
          }
        }
      },
      "Tournament": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор турнира",
            "example": 25182
          },
          "name": {
            "type": "string",
            "description": "Название турнира",
            "example": "Tercera Division, Reserves"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "description": "Название на русском",
                "example": "Третий дивизион, Резерв"
              }
            }
          },
          "category": {
            "$ref": "#/components/schemas/CategoryBrief"
          },
          "sportId": {
            "type": "integer",
            "description": "ID вида спорта",
            "example": 1
          },
          "hasGroups": {
            "type": "boolean",
            "description": "Есть ли групповой этап",
            "example": false
          },
          "hasRounds": {
            "type": "boolean",
            "description": "Есть ли раунды",
            "example": true
          },
          "hasPlayoffs": {
            "type": "boolean",
            "description": "Есть ли плей-офф",
            "example": false
          },
          "image": {
            "type": "string",
            "description": "URL изображения турнира",
            "example": "/images/unique-tournament-25182"
          },
          "linkedTournaments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TournamentLink"
            }
          },
          "lowerDivisions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TournamentLink"
            }
          },
          "upperDivisions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TournamentLink"
            }
          }
        }
      },
      "TournamentLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID связанного турнира"
          },
          "name": {
            "type": "string",
            "description": "Название связанного турнира"
          }
        }
      },
      "CategoryBrief": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID категории"
          },
          "name": {
            "type": "string",
            "description": "Название категории"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string"
              }
            }
          },
          "image": {
            "type": "string",
            "description": "URL изображения"
          }
        }
      },
      "Season": {
        "type": "object",
        "description": "Краткая информация о сезоне (используется в списке сезонов и вложениях). Полные детали сезона — в схеме SeasonDetails.",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор сезона",
            "example": 72514
          },
          "name": {
            "type": "string",
            "description": "Название сезона",
            "example": "Tercera Division, Reserves 2025"
          },
          "year": {
            "type": "string",
            "description": "Год сезона",
            "example": "2025"
          },
          "sportId": {
            "type": "integer",
            "description": "ID вида спорта"
          },
          "translations": {
            "type": "object",
            "description": "Переводы названия сезона",
            "properties": {
              "ru": {
                "type": "string",
                "nullable": true,
                "description": "Русское название сезона"
              }
            }
          }
        }
      },
      "SeasonDetails": {
        "type": "object",
        "description": "Детальная информация о сезоне: туры, группы, плей-офф, турнирные таблицы (standings) и сетки плей-офф (cupTrees). Возвращается эндпоинтом GET /v2/{sportSlug}/tournament/{tournamentId}/seasons/{seasonId}.",
        "allOf": [
          {
            "$ref": "#/components/schemas/Season"
          },
          {
            "type": "object",
            "properties": {
              "rounds": {
                "type": "object",
                "description": "Туры сезона",
                "properties": {
                  "currentRound": {
                    "$ref": "#/components/schemas/RoundInfo"
                  },
                  "rounds": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/RoundInfo"
                    }
                  }
                }
              },
              "groups": {
                "type": "array",
                "description": "Группы сезона (для групповых стадий)",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Название группы",
                      "example": "Group A"
                    }
                  }
                }
              },
              "playoffs": {
                "type": "array",
                "description": "Информация о плей-офф",
                "items": {
                  "type": "object"
                }
              },
              "cupTrees": {
                "type": "array",
                "description": "Сетки плей-офф (турнирные деревья). Заполнено, если у сезона есть плей-офф; пусто, если данных нет.",
                "items": {
                  "$ref": "#/components/schemas/CupTree"
                }
              },
              "standings": {
                "type": "array",
                "description": "Турнирные таблицы. Лига — одна таблица, групповой этап — несколько (по одной на группу). Пусто, если для сезона нет таблиц.",
                "items": {
                  "$ref": "#/components/schemas/StandingsTable"
                }
              }
            }
          }
        ]
      },
      "TeamColors": {
        "type": "object",
        "description": "Фирменные цвета команды для отрисовки.",
        "properties": {
          "primary": {
            "type": "string",
            "nullable": true,
            "description": "Основной цвет",
            "example": "#ef0107"
          },
          "secondary": {
            "type": "string",
            "nullable": true,
            "description": "Дополнительный цвет"
          },
          "text": {
            "type": "string",
            "nullable": true,
            "description": "Цвет текста на форме"
          }
        }
      },
      "Promotion": {
        "type": "object",
        "description": "Зона турнирной таблицы (повышение / вылет / плей-офф).",
        "properties": {
          "text": {
            "type": "string",
            "nullable": true,
            "description": "Английская метка зоны",
            "example": "Promotion"
          }
        }
      },
      "StandingsTeam": {
        "type": "object",
        "description": "Команда в строке турнирной таблицы.",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "ID команды"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Название команды"
          },
          "image": {
            "type": "string",
            "nullable": true,
            "description": "URL логотипа команды"
          },
          "country": {
            "type": "object",
            "description": "Страна команды",
            "properties": {
              "name": {
                "type": "string",
                "nullable": true,
                "description": "Название страны"
              }
            }
          },
          "national": {
            "type": "boolean",
            "description": "Сборная (true) или клуб (false)"
          },
          "ranking": {
            "type": "integer",
            "nullable": true,
            "description": "Место в рейтинге (например, ФИФА). Присутствует только у сборных, иначе null."
          },
          "teamColors": {
            "nullable": true,
            "description": "Фирменные цвета; null, если не заданы.",
            "$ref": "#/components/schemas/TeamColors"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "nullable": true,
                "description": "Русское название команды"
              }
            }
          }
        }
      },
      "StandingsRow": {
        "type": "object",
        "description": "Строка турнирной таблицы (одна команда).",
        "properties": {
          "position": {
            "type": "integer",
            "nullable": true,
            "description": "Место в таблице"
          },
          "team": {
            "$ref": "#/components/schemas/StandingsTeam"
          },
          "matches": {
            "type": "integer",
            "nullable": true,
            "description": "Сыграно матчей"
          },
          "wins": {
            "type": "integer",
            "nullable": true,
            "description": "Победы"
          },
          "draws": {
            "type": "integer",
            "nullable": true,
            "description": "Ничьи"
          },
          "losses": {
            "type": "integer",
            "nullable": true,
            "description": "Поражения"
          },
          "scoresFor": {
            "type": "integer",
            "nullable": true,
            "description": "Забито"
          },
          "scoresAgainst": {
            "type": "integer",
            "nullable": true,
            "description": "Пропущено"
          },
          "goalDifference": {
            "type": "integer",
            "nullable": true,
            "description": "Разница мячей (вычислено: scoresFor − scoresAgainst)"
          },
          "scoreDiffFormatted": {
            "type": "string",
            "nullable": true,
            "description": "Сырая строка разницы мячей",
            "example": "+19"
          },
          "points": {
            "type": "integer",
            "nullable": true,
            "description": "Очки"
          },
          "promotion": {
            "nullable": true,
            "description": "Зона таблицы (повышение/вылет/плей-офф); null вне зон.",
            "$ref": "#/components/schemas/Promotion"
          }
        }
      },
      "StandingsTable": {
        "type": "object",
        "description": "Турнирная таблица: лига целиком или одна группа.",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Ярлык таблицы",
            "example": "Premier League 25/26"
          },
          "updatedAt": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Время последнего обновления (Unix, мс)"
          },
          "rows": {
            "type": "array",
            "description": "Строки таблицы",
            "items": {
              "$ref": "#/components/schemas/StandingsRow"
            }
          }
        }
      },
      "CupTeam": {
        "type": "object",
        "description": "Команда в сетке плей-офф.",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "ID команды"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Название команды"
          },
          "image": {
            "type": "string",
            "nullable": true,
            "description": "URL логотипа команды"
          },
          "teamColors": {
            "nullable": true,
            "description": "Фирменные цвета; null, если не заданы.",
            "$ref": "#/components/schemas/TeamColors"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "nullable": true,
                "description": "Русское название команды"
              }
            }
          }
        }
      },
      "CupTreeParticipant": {
        "type": "object",
        "description": "Сторона пары в сетке плей-офф (команда или незаполненный слот).",
        "properties": {
          "order": {
            "type": "integer",
            "nullable": true,
            "description": "Сторона пары: 1 = домашняя, 2 = гостевая"
          },
          "winner": {
            "type": "boolean",
            "description": "Прошла ли сторона дальше"
          },
          "team": {
            "nullable": true,
            "description": "Команда стороны; null для незаполненного слота (тогда заполнено поле slot).",
            "$ref": "#/components/schemas/CupTeam"
          },
          "slot": {
            "type": "string",
            "nullable": true,
            "description": "Ярлык-заглушка слота, когда команда ещё неизвестна",
            "example": "W97"
          },
          "sourceBlockId": {
            "type": "integer",
            "nullable": true,
            "description": "Локальный blockId (1..N) пары прошлого раунда, откуда пришла команда"
          },
          "score": {
            "type": "integer",
            "nullable": true,
            "description": "Числовой счёт/агрегат"
          },
          "penalties": {
            "type": "integer",
            "nullable": true,
            "description": "Счёт по пенальти (если была серия)"
          },
          "scoreText": {
            "type": "string",
            "nullable": true,
            "description": "Сырой текст счёта как в источнике",
            "example": "2 (3)"
          }
        }
      },
      "CupTreeTie": {
        "type": "object",
        "description": "Пара (противостояние) внутри раунда сетки плей-офф.",
        "properties": {
          "blockId": {
            "type": "integer",
            "nullable": true,
            "description": "Собственный id узла сетки (1..N); цель для sourceBlockId"
          },
          "order": {
            "type": "integer",
            "nullable": true,
            "description": "Позиция пары внутри раунда"
          },
          "status": {
            "type": "string",
            "enum": [
              "finished",
              "inprogress",
              "notstarted"
            ],
            "description": "Статус пары"
          },
          "isBye": {
            "type": "boolean",
            "description": "Автоматический проход без игры"
          },
          "isThirdPlace": {
            "type": "boolean",
            "description": "Матч за 3-е место"
          },
          "hasNextRound": {
            "type": "boolean",
            "description": "Ведёт ли пара в следующий раунд"
          },
          "startTimestamp": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Время старта пары (Unix, мс)"
          },
          "result": {
            "type": "string",
            "nullable": true,
            "description": "Сырой агрегат-результат",
            "example": "4:5"
          },
          "participants": {
            "type": "array",
            "description": "Стороны пары",
            "items": {
              "$ref": "#/components/schemas/CupTreeParticipant"
            }
          },
          "matches": {
            "type": "array",
            "description": "Матчи (ноги) пары",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "ID матча"
                },
                "leg": {
                  "type": "integer",
                  "description": "Номер ноги (1..N)"
                }
              }
            }
          }
        }
      },
      "CupTreeRound": {
        "type": "object",
        "description": "Раунд сетки плей-офф.",
        "properties": {
          "order": {
            "type": "integer",
            "description": "Порядковый номер раунда"
          },
          "name": {
            "type": "string",
            "description": "Английское название раунда (вычислено по размеру сетки)",
            "example": "Quarter-finals"
          },
          "description": {
            "type": "string",
            "description": "Описание раунда"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "description": "Русское название раунда",
                "example": "1/4 финала"
              }
            }
          },
          "ties": {
            "type": "array",
            "description": "Пары раунда",
            "items": {
              "$ref": "#/components/schemas/CupTreeTie"
            }
          }
        }
      },
      "CupTree": {
        "type": "object",
        "description": "Турнирная сетка плей-офф (дерево).",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "ID сетки"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Название сетки",
            "example": "Knockout stage"
          },
          "currentRound": {
            "type": "integer",
            "nullable": true,
            "description": "Текущий активный раунд"
          },
          "totalRounds": {
            "type": "integer",
            "description": "Всего раундов (вычислено)"
          },
          "rounds": {
            "type": "array",
            "description": "Раунды сетки",
            "items": {
              "$ref": "#/components/schemas/CupTreeRound"
            }
          }
        }
      },
      "Match": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор матча",
            "example": 14570728
          },
          "status": {
            "type": "string",
            "description": "Статус матча",
            "enum": [
              "notstarted",
              "inprogress",
              "finished",
              "canceled",
              "postponed",
              "interrupted",
              "suspended",
              "delayed",
              "willcontinue"
            ],
            "example": "inprogress"
          },
          "statusDescription": {
            "type": "string",
            "nullable": true,
            "description": "Человекочитаемое описание статуса матча",
            "example": "1st half"
          },
          "dateEvent": {
            "type": "string",
            "format": "date",
            "description": "Дата события",
            "example": "2025-09-03"
          },
          "startTimestamp": {
            "type": "integer",
            "description": "Время начала матча в миллисекундах",
            "example": 1756836000000
          },
          "currentMatchMinute": {
            "type": "integer",
            "description": "Текущая минута матча",
            "example": 30
          },
          "currentMatchSecond": {
            "type": "integer",
            "description": "Текущая секунда матча (в пределах минуты)",
            "example": 12
          },
          "overtimeLength": {
            "type": "integer",
            "description": "Добавленное время в секундах. Присутствует только когда оно есть.",
            "example": 180
          },
          "tournament": {
            "$ref": "#/components/schemas/TournamentBrief"
          },
          "category": {
            "$ref": "#/components/schemas/CategoryBrief"
          },
          "roundInfo": {
            "$ref": "#/components/schemas/RoundInfo"
          },
          "season": {
            "$ref": "#/components/schemas/SeasonBrief"
          },
          "venue": {
            "$ref": "#/components/schemas/Venue"
          },
          "referee": {
            "x-sports": [
              "football"
            ],
            "$ref": "#/components/schemas/Referee"
          },
          "homeTeam": {
            "$ref": "#/components/schemas/TeamWithLineup"
          },
          "awayTeam": {
            "$ref": "#/components/schemas/TeamWithLineup"
          },
          "homeScore": {
            "$ref": "#/components/schemas/Score"
          },
          "awayScore": {
            "$ref": "#/components/schemas/Score"
          },
          "liveEvents": {
            "x-sports": [
              "football",
              "ice-hockey",
              "basketball",
              "volleyball",
              "table-tennis"
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LiveEvent"
            }
          },
          "matchStatistics": {
            "type": "array",
            "description": "Статистика матча",
            "example": [
              {
                "period": "ALL",
                "groups": [
                  {
                    "groupName": "Match overview",
                    "statisticsItems": [
                      {
                        "name": "Ball possession",
                        "home": "54%",
                        "away": "46%",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 54,
                        "awayValue": 46,
                        "renderType": 2,
                        "key": "ballPossession"
                      },
                      {
                        "name": "Big chances",
                        "home": "1",
                        "away": "2",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "bigChanceCreated"
                      },
                      {
                        "name": "Total shots",
                        "home": "9",
                        "away": "9",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 9,
                        "awayValue": 9,
                        "renderType": 1,
                        "key": "totalShotsOnGoal"
                      },
                      {
                        "name": "Goalkeeper saves",
                        "home": "2",
                        "away": "4",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "goalkeeperSaves"
                      },
                      {
                        "name": "Corner kicks",
                        "home": "1",
                        "away": "4",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "cornerKicks"
                      },
                      {
                        "name": "Fouls",
                        "home": "18",
                        "away": "22",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 18,
                        "awayValue": 22,
                        "renderType": 1,
                        "key": "fouls"
                      },
                      {
                        "name": "Passes",
                        "home": "405",
                        "away": "330",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 405,
                        "awayValue": 330,
                        "renderType": 1,
                        "key": "passes"
                      },
                      {
                        "name": "Tackles",
                        "home": "11",
                        "away": "9",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 11,
                        "awayValue": 9,
                        "renderType": 1,
                        "key": "totalTackle"
                      },
                      {
                        "name": "Free kicks",
                        "home": "22",
                        "away": "17",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 22,
                        "awayValue": 17,
                        "renderType": 1,
                        "key": "freeKicks"
                      },
                      {
                        "name": "Yellow cards",
                        "home": "4",
                        "away": "3",
                        "compareCode": 1,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "yellowCards"
                      }
                    ]
                  },
                  {
                    "groupName": "Shots",
                    "statisticsItems": [
                      {
                        "name": "Total shots",
                        "home": "9",
                        "away": "9",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 9,
                        "awayValue": 9,
                        "renderType": 1,
                        "key": "totalShotsOnGoal"
                      },
                      {
                        "name": "Shots on target",
                        "home": "5",
                        "away": "3",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 5,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "shotsOnGoal"
                      },
                      {
                        "name": "Hit woodwork",
                        "home": "1",
                        "away": "0",
                        "compareCode": 1,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "hitWoodwork"
                      },
                      {
                        "name": "Shots off target",
                        "home": "4",
                        "away": "6",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 6,
                        "renderType": 1,
                        "key": "shotsOffGoal"
                      },
                      {
                        "name": "Blocked shots",
                        "home": "0",
                        "away": "0",
                        "compareCode": 3,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "blockedScoringAttempt"
                      },
                      {
                        "name": "Shots inside box",
                        "home": "7",
                        "away": "4",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 7,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "totalShotsInsideBox"
                      },
                      {
                        "name": "Shots outside box",
                        "home": "2",
                        "away": "5",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 5,
                        "renderType": 1,
                        "key": "totalShotsOutsideBox"
                      }
                    ]
                  },
                  {
                    "groupName": "Attack",
                    "statisticsItems": [
                      {
                        "name": "Big chances scored",
                        "home": "1",
                        "away": "1",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "bigChanceScored"
                      },
                      {
                        "name": "Big chances missed",
                        "home": "0",
                        "away": "1",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "bigChanceMissed"
                      },
                      {
                        "name": "Touches in penalty area",
                        "home": "20",
                        "away": "19",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 20,
                        "awayValue": 19,
                        "renderType": 1,
                        "key": "touchesInOppBox"
                      },
                      {
                        "name": "Fouled in final third",
                        "home": "3",
                        "away": "2",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 3,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "fouledFinalThird"
                      },
                      {
                        "name": "Offsides",
                        "home": "6",
                        "away": "4",
                        "compareCode": 1,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 6,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "offsides"
                      }
                    ]
                  },
                  {
                    "groupName": "Passes",
                    "statisticsItems": [
                      {
                        "name": "Accurate passes",
                        "home": "270",
                        "away": "208",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 270,
                        "awayValue": 208,
                        "renderType": 1,
                        "key": "accuratePasses"
                      },
                      {
                        "name": "Throw-ins",
                        "home": "17",
                        "away": "23",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 17,
                        "awayValue": 23,
                        "renderType": 1,
                        "key": "throwIns"
                      },
                      {
                        "name": "Final third entries",
                        "home": "87",
                        "away": "73",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 87,
                        "awayValue": 73,
                        "renderType": 1,
                        "key": "finalThirdEntries"
                      },
                      {
                        "name": "Final third phase",
                        "home": "70/135 (52%)",
                        "away": "46/98 (47%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 70,
                        "awayValue": 46,
                        "homeTotal": 135,
                        "awayTotal": 98,
                        "renderType": 3,
                        "key": "finalThirdPhaseStatistic"
                      },
                      {
                        "name": "Long balls",
                        "home": "32/95 (34%)",
                        "away": "21/86 (24%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 32,
                        "awayValue": 21,
                        "homeTotal": 95,
                        "awayTotal": 86,
                        "renderType": 3,
                        "key": "accurateLongBalls"
                      },
                      {
                        "name": "Crosses",
                        "home": "4/7 (57%)",
                        "away": "4/18 (22%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 4,
                        "awayValue": 4,
                        "homeTotal": 7,
                        "awayTotal": 18,
                        "renderType": 3,
                        "key": "accurateCross"
                      }
                    ]
                  },
                  {
                    "groupName": "Duels",
                    "statisticsItems": [
                      {
                        "name": "Duels",
                        "home": "57%",
                        "away": "43%",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 57,
                        "awayValue": 43,
                        "renderType": 2,
                        "key": "duelWonPercent"
                      },
                      {
                        "name": "Dispossessed",
                        "home": "6",
                        "away": "7",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 6,
                        "awayValue": 7,
                        "renderType": 1,
                        "key": "dispossessed"
                      },
                      {
                        "name": "Ground duels",
                        "home": "36/68 (53%)",
                        "away": "32/68 (47%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 36,
                        "awayValue": 32,
                        "homeTotal": 68,
                        "awayTotal": 68,
                        "renderType": 3,
                        "key": "groundDuelsPercentage"
                      },
                      {
                        "name": "Aerial duels",
                        "home": "43/70 (61%)",
                        "away": "27/70 (39%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 43,
                        "awayValue": 27,
                        "homeTotal": 70,
                        "awayTotal": 70,
                        "renderType": 3,
                        "key": "aerialDuelsPercentage"
                      },
                      {
                        "name": "Dribbles",
                        "home": "4/7 (57%)",
                        "away": "5/9 (56%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 4,
                        "awayValue": 5,
                        "homeTotal": 7,
                        "awayTotal": 9,
                        "renderType": 3,
                        "key": "dribblesPercentage"
                      }
                    ]
                  },
                  {
                    "groupName": "Defending",
                    "statisticsItems": [
                      {
                        "name": "Tackles won",
                        "home": "64%",
                        "away": "78%",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 7,
                        "awayValue": 7,
                        "homeTotal": 11,
                        "awayTotal": 9,
                        "renderType": 4,
                        "key": "wonTacklePercent"
                      },
                      {
                        "name": "Total tackles",
                        "home": "11",
                        "away": "9",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 11,
                        "awayValue": 9,
                        "renderType": 1,
                        "key": "totalTackle"
                      },
                      {
                        "name": "Interceptions",
                        "home": "2",
                        "away": "11",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 11,
                        "renderType": 1,
                        "key": "interceptionWon"
                      },
                      {
                        "name": "Recoveries",
                        "home": "36",
                        "away": "40",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 36,
                        "awayValue": 40,
                        "renderType": 1,
                        "key": "ballRecovery"
                      },
                      {
                        "name": "Clearances",
                        "home": "28",
                        "away": "32",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 28,
                        "awayValue": 32,
                        "renderType": 1,
                        "key": "totalClearance"
                      }
                    ]
                  },
                  {
                    "groupName": "Goalkeeping",
                    "statisticsItems": [
                      {
                        "name": "Total saves",
                        "home": "2",
                        "away": "4",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "goalkeeperSaves"
                      },
                      {
                        "name": "Punches",
                        "home": "1",
                        "away": "0",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "punches"
                      },
                      {
                        "name": "Goal kicks",
                        "home": "7",
                        "away": "8",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 7,
                        "awayValue": 8,
                        "renderType": 1,
                        "key": "goalKicks"
                      },
                      {
                        "name": "Penalty saves",
                        "home": "1",
                        "away": "0",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "penaltySaves"
                      }
                    ]
                  }
                ]
              },
              {
                "period": "1ST",
                "groups": [
                  {
                    "groupName": "Match overview",
                    "statisticsItems": [
                      {
                        "name": "Ball possession",
                        "home": "53%",
                        "away": "47%",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 53,
                        "awayValue": 47,
                        "renderType": 2,
                        "key": "ballPossession"
                      },
                      {
                        "name": "Big chances",
                        "home": "1",
                        "away": "0",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "bigChanceCreated"
                      },
                      {
                        "name": "Total shots",
                        "home": "6",
                        "away": "6",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 6,
                        "awayValue": 6,
                        "renderType": 1,
                        "key": "totalShotsOnGoal"
                      },
                      {
                        "name": "Goalkeeper saves",
                        "home": "1",
                        "away": "3",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "goalkeeperSaves"
                      },
                      {
                        "name": "Corner kicks",
                        "home": "1",
                        "away": "3",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "cornerKicks"
                      },
                      {
                        "name": "Fouls",
                        "home": "5",
                        "away": "6",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 5,
                        "awayValue": 6,
                        "renderType": 1,
                        "key": "fouls"
                      },
                      {
                        "name": "Passes",
                        "home": "219",
                        "away": "189",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 219,
                        "awayValue": 189,
                        "renderType": 1,
                        "key": "passes"
                      },
                      {
                        "name": "Tackles",
                        "home": "4",
                        "away": "2",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "totalTackle"
                      },
                      {
                        "name": "Free kicks",
                        "home": "6",
                        "away": "5",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 6,
                        "awayValue": 5,
                        "renderType": 1,
                        "key": "freeKicks"
                      },
                      {
                        "name": "Yellow cards",
                        "home": "0",
                        "away": "0",
                        "compareCode": 3,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "yellowCards"
                      }
                    ]
                  },
                  {
                    "groupName": "Shots",
                    "statisticsItems": [
                      {
                        "name": "Total shots",
                        "home": "6",
                        "away": "6",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 6,
                        "awayValue": 6,
                        "renderType": 1,
                        "key": "totalShotsOnGoal"
                      },
                      {
                        "name": "Shots on target",
                        "home": "4",
                        "away": "1",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "shotsOnGoal"
                      },
                      {
                        "name": "Hit woodwork",
                        "home": "1",
                        "away": "0",
                        "compareCode": 1,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "hitWoodwork"
                      },
                      {
                        "name": "Shots off target",
                        "home": "2",
                        "away": "5",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 5,
                        "renderType": 1,
                        "key": "shotsOffGoal"
                      },
                      {
                        "name": "Blocked shots",
                        "home": "0",
                        "away": "0",
                        "compareCode": 3,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "blockedScoringAttempt"
                      },
                      {
                        "name": "Shots inside box",
                        "home": "5",
                        "away": "2",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 5,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "totalShotsInsideBox"
                      },
                      {
                        "name": "Shots outside box",
                        "home": "1",
                        "away": "4",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "totalShotsOutsideBox"
                      }
                    ]
                  },
                  {
                    "groupName": "Attack",
                    "statisticsItems": [
                      {
                        "name": "Big chances scored",
                        "home": "1",
                        "away": "0",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "bigChanceScored"
                      },
                      {
                        "name": "Big chances missed",
                        "home": "0",
                        "away": "0",
                        "compareCode": 3,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "bigChanceMissed"
                      },
                      {
                        "name": "Fouled in final third",
                        "home": "0",
                        "away": "1",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "fouledFinalThird"
                      },
                      {
                        "name": "Offsides",
                        "home": "4",
                        "away": "1",
                        "compareCode": 1,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "offsides"
                      }
                    ]
                  },
                  {
                    "groupName": "Passes",
                    "statisticsItems": [
                      {
                        "name": "Accurate passes",
                        "home": "153",
                        "away": "126",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 153,
                        "awayValue": 126,
                        "renderType": 1,
                        "key": "accuratePasses"
                      },
                      {
                        "name": "Throw-ins",
                        "home": "12",
                        "away": "12",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 12,
                        "awayValue": 12,
                        "renderType": 1,
                        "key": "throwIns"
                      },
                      {
                        "name": "Final third entries",
                        "home": "41",
                        "away": "34",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 41,
                        "awayValue": 34,
                        "renderType": 1,
                        "key": "finalThirdEntries"
                      },
                      {
                        "name": "Long balls",
                        "home": "18/44 (41%)",
                        "away": "8/41 (20%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 18,
                        "awayValue": 8,
                        "homeTotal": 44,
                        "awayTotal": 41,
                        "renderType": 3,
                        "key": "accurateLongBalls"
                      },
                      {
                        "name": "Crosses",
                        "home": "3/3 (100%)",
                        "away": "3/12 (25%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 3,
                        "awayValue": 3,
                        "homeTotal": 3,
                        "awayTotal": 12,
                        "renderType": 3,
                        "key": "accurateCross"
                      }
                    ]
                  },
                  {
                    "groupName": "Duels",
                    "statisticsItems": [
                      {
                        "name": "Duels",
                        "home": "59%",
                        "away": "41%",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 59,
                        "awayValue": 41,
                        "renderType": 2,
                        "key": "duelWonPercent"
                      },
                      {
                        "name": "Dispossessed",
                        "home": "2",
                        "away": "3",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "dispossessed"
                      },
                      {
                        "name": "Ground duels",
                        "home": "12/24 (50%)",
                        "away": "12/24 (50%)",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 12,
                        "awayValue": 12,
                        "homeTotal": 24,
                        "awayTotal": 24,
                        "renderType": 3,
                        "key": "groundDuelsPercentage"
                      },
                      {
                        "name": "Aerial duels",
                        "home": "22/34 (65%)",
                        "away": "12/34 (35%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 22,
                        "awayValue": 12,
                        "homeTotal": 34,
                        "awayTotal": 34,
                        "renderType": 3,
                        "key": "aerialDuelsPercentage"
                      },
                      {
                        "name": "Dribbles",
                        "home": "2/2 (100%)",
                        "away": "5/6 (83%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 2,
                        "awayValue": 5,
                        "homeTotal": 2,
                        "awayTotal": 6,
                        "renderType": 3,
                        "key": "dribblesPercentage"
                      }
                    ]
                  },
                  {
                    "groupName": "Defending",
                    "statisticsItems": [
                      {
                        "name": "Tackles won",
                        "home": "50%",
                        "away": "100%",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 2,
                        "awayValue": 2,
                        "homeTotal": 4,
                        "awayTotal": 2,
                        "renderType": 4,
                        "key": "wonTacklePercent"
                      },
                      {
                        "name": "Total tackles",
                        "home": "4",
                        "away": "2",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "totalTackle"
                      },
                      {
                        "name": "Interceptions",
                        "home": "2",
                        "away": "7",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 7,
                        "renderType": 1,
                        "key": "interceptionWon"
                      },
                      {
                        "name": "Recoveries",
                        "home": "22",
                        "away": "22",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 22,
                        "awayValue": 22,
                        "renderType": 1,
                        "key": "ballRecovery"
                      },
                      {
                        "name": "Clearances",
                        "home": "11",
                        "away": "15",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 11,
                        "awayValue": 15,
                        "renderType": 1,
                        "key": "totalClearance"
                      }
                    ]
                  },
                  {
                    "groupName": "Goalkeeping",
                    "statisticsItems": [
                      {
                        "name": "Total saves",
                        "home": "1",
                        "away": "3",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "goalkeeperSaves"
                      },
                      {
                        "name": "Goal kicks",
                        "home": "5",
                        "away": "2",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 5,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "goalKicks"
                      }
                    ]
                  }
                ]
              },
              {
                "period": "2ND",
                "groups": [
                  {
                    "groupName": "Match overview",
                    "statisticsItems": [
                      {
                        "name": "Ball possession",
                        "home": "56%",
                        "away": "44%",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 56,
                        "awayValue": 44,
                        "renderType": 2,
                        "key": "ballPossession"
                      },
                      {
                        "name": "Big chances",
                        "home": "0",
                        "away": "2",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "bigChanceCreated"
                      },
                      {
                        "name": "Total shots",
                        "home": "3",
                        "away": "3",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 3,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "totalShotsOnGoal"
                      },
                      {
                        "name": "Goalkeeper saves",
                        "home": "1",
                        "away": "1",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "goalkeeperSaves"
                      },
                      {
                        "name": "Corner kicks",
                        "home": "0",
                        "away": "1",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "cornerKicks"
                      },
                      {
                        "name": "Fouls",
                        "home": "13",
                        "away": "16",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 13,
                        "awayValue": 16,
                        "renderType": 1,
                        "key": "fouls"
                      },
                      {
                        "name": "Passes",
                        "home": "186",
                        "away": "141",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 186,
                        "awayValue": 141,
                        "renderType": 1,
                        "key": "passes"
                      },
                      {
                        "name": "Tackles",
                        "home": "7",
                        "away": "7",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 7,
                        "awayValue": 7,
                        "renderType": 1,
                        "key": "totalTackle"
                      },
                      {
                        "name": "Free kicks",
                        "home": "16",
                        "away": "12",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 16,
                        "awayValue": 12,
                        "renderType": 1,
                        "key": "freeKicks"
                      },
                      {
                        "name": "Yellow cards",
                        "home": "4",
                        "away": "3",
                        "compareCode": 1,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "yellowCards"
                      }
                    ]
                  },
                  {
                    "groupName": "Shots",
                    "statisticsItems": [
                      {
                        "name": "Total shots",
                        "home": "3",
                        "away": "3",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 3,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "totalShotsOnGoal"
                      },
                      {
                        "name": "Shots on target",
                        "home": "1",
                        "away": "2",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "shotsOnGoal"
                      },
                      {
                        "name": "Hit woodwork",
                        "home": "0",
                        "away": "0",
                        "compareCode": 3,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "hitWoodwork"
                      },
                      {
                        "name": "Shots off target",
                        "home": "2",
                        "away": "1",
                        "compareCode": 1,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "shotsOffGoal"
                      },
                      {
                        "name": "Blocked shots",
                        "home": "0",
                        "away": "0",
                        "compareCode": 3,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 0,
                        "renderType": 1,
                        "key": "blockedScoringAttempt"
                      },
                      {
                        "name": "Shots inside box",
                        "home": "2",
                        "away": "2",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 2,
                        "renderType": 1,
                        "key": "totalShotsInsideBox"
                      },
                      {
                        "name": "Shots outside box",
                        "home": "1",
                        "away": "1",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "totalShotsOutsideBox"
                      }
                    ]
                  },
                  {
                    "groupName": "Attack",
                    "statisticsItems": [
                      {
                        "name": "Big chances scored",
                        "home": "0",
                        "away": "1",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "bigChanceScored"
                      },
                      {
                        "name": "Big chances missed",
                        "home": "0",
                        "away": "1",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "bigChanceMissed"
                      },
                      {
                        "name": "Fouled in final third",
                        "home": "3",
                        "away": "1",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 3,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "fouledFinalThird"
                      },
                      {
                        "name": "Offsides",
                        "home": "2",
                        "away": "3",
                        "compareCode": 2,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 3,
                        "renderType": 1,
                        "key": "offsides"
                      }
                    ]
                  },
                  {
                    "groupName": "Passes",
                    "statisticsItems": [
                      {
                        "name": "Accurate passes",
                        "home": "117",
                        "away": "82",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 117,
                        "awayValue": 82,
                        "renderType": 1,
                        "key": "accuratePasses"
                      },
                      {
                        "name": "Throw-ins",
                        "home": "5",
                        "away": "11",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 5,
                        "awayValue": 11,
                        "renderType": 1,
                        "key": "throwIns"
                      },
                      {
                        "name": "Final third entries",
                        "home": "46",
                        "away": "39",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 46,
                        "awayValue": 39,
                        "renderType": 1,
                        "key": "finalThirdEntries"
                      },
                      {
                        "name": "Long balls",
                        "home": "14/51 (27%)",
                        "away": "13/45 (29%)",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 14,
                        "awayValue": 13,
                        "homeTotal": 51,
                        "awayTotal": 45,
                        "renderType": 3,
                        "key": "accurateLongBalls"
                      },
                      {
                        "name": "Crosses",
                        "home": "1/4 (25%)",
                        "away": "1/6 (17%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 1,
                        "awayValue": 1,
                        "homeTotal": 4,
                        "awayTotal": 6,
                        "renderType": 3,
                        "key": "accurateCross"
                      }
                    ]
                  },
                  {
                    "groupName": "Duels",
                    "statisticsItems": [
                      {
                        "name": "Duels",
                        "home": "56%",
                        "away": "44%",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 56,
                        "awayValue": 44,
                        "renderType": 2,
                        "key": "duelWonPercent"
                      },
                      {
                        "name": "Dispossessed",
                        "home": "4",
                        "away": "4",
                        "compareCode": 3,
                        "statisticsType": "negative",
                        "valueType": "event",
                        "homeValue": 4,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "dispossessed"
                      },
                      {
                        "name": "Ground duels",
                        "home": "24/44 (55%)",
                        "away": "20/44 (45%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 24,
                        "awayValue": 20,
                        "homeTotal": 44,
                        "awayTotal": 44,
                        "renderType": 3,
                        "key": "groundDuelsPercentage"
                      },
                      {
                        "name": "Aerial duels",
                        "home": "21/36 (58%)",
                        "away": "15/36 (42%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 21,
                        "awayValue": 15,
                        "homeTotal": 36,
                        "awayTotal": 36,
                        "renderType": 3,
                        "key": "aerialDuelsPercentage"
                      },
                      {
                        "name": "Dribbles",
                        "home": "2/5 (40%)",
                        "away": "0/3 (0%)",
                        "compareCode": 1,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 2,
                        "awayValue": 0,
                        "homeTotal": 5,
                        "awayTotal": 3,
                        "renderType": 3,
                        "key": "dribblesPercentage"
                      }
                    ]
                  },
                  {
                    "groupName": "Defending",
                    "statisticsItems": [
                      {
                        "name": "Tackles won",
                        "home": "71%",
                        "away": "71%",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "team",
                        "homeValue": 5,
                        "awayValue": 5,
                        "homeTotal": 7,
                        "awayTotal": 7,
                        "renderType": 4,
                        "key": "wonTacklePercent"
                      },
                      {
                        "name": "Total tackles",
                        "home": "7",
                        "away": "7",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 7,
                        "awayValue": 7,
                        "renderType": 1,
                        "key": "totalTackle"
                      },
                      {
                        "name": "Interceptions",
                        "home": "0",
                        "away": "4",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 0,
                        "awayValue": 4,
                        "renderType": 1,
                        "key": "interceptionWon"
                      },
                      {
                        "name": "Recoveries",
                        "home": "14",
                        "away": "18",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 14,
                        "awayValue": 18,
                        "renderType": 1,
                        "key": "ballRecovery"
                      },
                      {
                        "name": "Clearances",
                        "home": "17",
                        "away": "17",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 17,
                        "awayValue": 17,
                        "renderType": 1,
                        "key": "totalClearance"
                      }
                    ]
                  },
                  {
                    "groupName": "Goalkeeping",
                    "statisticsItems": [
                      {
                        "name": "Total saves",
                        "home": "1",
                        "away": "1",
                        "compareCode": 3,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 1,
                        "awayValue": 1,
                        "renderType": 1,
                        "key": "goalkeeperSaves"
                      },
                      {
                        "name": "Goal kicks",
                        "home": "2",
                        "away": "6",
                        "compareCode": 2,
                        "statisticsType": "positive",
                        "valueType": "event",
                        "homeValue": 2,
                        "awayValue": 6,
                        "renderType": 1,
                        "key": "goalKicks"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          "oddsBase": {
            "type": "array",
            "description": "Доступные коэффициенты для матча",
            "items": {
              "$ref": "#/components/schemas/OddsMarket"
            }
          },
          "highlights": {
            "type": "array",
            "description": "Видео / хайлайты матча",
            "items": {
              "$ref": "#/components/schemas/Highlight"
            }
          },
          "esports": {
            "x-sports": [
              "esports"
            ],
            "nullable": true,
            "description": "Детальные данные по киберспортивному матчу. Присутствует только для матчей с sportSlug=esports (CS2, Dota 2, League of Legends). Содержит информацию о каждой игре серии, индивидуальную статистику игроков, раунды (CS2), баны героев/чемпионов (Dota 2, LoL) и командную статистику.",
            "$ref": "#/components/schemas/EsportsData"
          },
          "tennis": {
            "x-sports": [
              "tennis"
            ],
            "nullable": true,
            "description": "Детальные данные по теннисному матчу. Присутствует только для матчей с sportSlug=tennis. Содержит информацию о сетах (геймы, тайбрейки, длительность, победитель), подаче, посеве игроков, типе покрытия и momentum-графике. При запросе одного матча (/matches/{matchId}) также включает point-by-point данные с детализацией каждого очка.",
            "$ref": "#/components/schemas/TennisData"
          },
          "hasBkOdds": {
            "type": "object",
            "description": "Наличие букмекерских коэффициентов по каждому букмекеру. Всегда присутствует в ответе",
            "properties": {
              "melbet": {
                "type": "boolean",
                "description": "Есть ли коэффициенты букмекера Melbet для данного матча",
                "example": true
              }
            },
            "example": {
              "melbet": true
            }
          },
          "oddsBk": {
            "nullable": true,
            "description": "Букмекерские коэффициенты. Присутствует только при with_bk_odds=true. Ключи объекта — идентификаторы букмекеров (например 'melbet'). Если with_bk_odds не указан, поле отсутствует",
            "allOf": [
              {
                "$ref": "#/components/schemas/BookmakerOdds"
              }
            ]
          }
        }
      },
      "TournamentBrief": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID турнира"
          },
          "name": {
            "type": "string",
            "description": "Название турнира"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string"
              }
            }
          },
          "image": {
            "type": "string",
            "description": "URL изображения турнира"
          }
        }
      },
      "SeasonBrief": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "year": {
            "type": "string"
          }
        }
      },
      "RoundInfo": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Название раунда",
            "example": "1/8"
          },
          "round": {
            "type": "integer",
            "description": "Номер раунда",
            "example": 5
          }
        }
      },
      "TeamWithLineup": {
        "type": "object",
        "description": "Команда в составе матча: базовые поля плюс состав на матч (lineup).",
        "allOf": [
          {
            "$ref": "#/components/schemas/MatchTeam"
          },
          {
            "type": "object",
            "properties": {
              "lineup": {
                "x-sports": [
                  "football",
                  "ice-hockey",
                  "basketball",
                  "volleyball"
                ],
                "nullable": true,
                "description": "Состав команды на матч; null, если состав недоступен.",
                "$ref": "#/components/schemas/Lineup"
              }
            }
          }
        ]
      },
      "MatchTeam": {
        "type": "object",
        "description": "Команда в составе матча (базовые поля).",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "Уникальный идентификатор команды"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Название команды"
          },
          "fullName": {
            "type": "string",
            "nullable": true,
            "description": "Полное название команды"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "nullable": true,
                "description": "Название на русском"
              }
            }
          },
          "gender": {
            "type": "string",
            "nullable": true,
            "enum": [
              "M",
              "F"
            ],
            "description": "Пол команды"
          },
          "country": {
            "type": "string",
            "nullable": true,
            "description": "Название страны"
          },
          "manager": {
            "$ref": "#/components/schemas/Manager",
            "nullable": true,
            "description": "Тренер команды; null, если не задан."
          },
          "image": {
            "type": "string",
            "description": "URL изображения команды"
          }
        }
      },
      "Team": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор команды"
          },
          "name": {
            "type": "string",
            "description": "Название команды"
          },
          "fullName": {
            "type": "string",
            "description": "Полное название команды"
          },
          "translation": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "description": "Название на русском"
              }
            }
          },
          "sportId": {
            "type": "integer",
            "description": "ID вида спорта"
          },
          "country": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Название страны"
              }
            }
          },
          "gender": {
            "type": "string",
            "description": "Пол команды",
            "enum": [
              "M",
              "F"
            ]
          },
          "venue": {
            "$ref": "#/components/schemas/Venue"
          },
          "manager": {
            "$ref": "#/components/schemas/Manager"
          },
          "image": {
            "type": "string",
            "description": "URL изображения команды"
          },
          "players": {
            "type": "array",
            "description": "Список игроков команды.",
            "items": {
              "$ref": "#/components/schemas/Player"
            }
          },
          "primaryUniqueTournament": {
            "type": "object",
            "nullable": true,
            "description": "Основной турнир команды; null, если не задан.",
            "properties": {
              "id": {
                "type": "integer",
                "description": "ID турнира"
              },
              "name": {
                "type": "string",
                "description": "Название турнира"
              },
              "translations": {
                "type": "object",
                "properties": {
                  "ru": {
                    "type": "string",
                    "nullable": true,
                    "description": "Название турнира на русском"
                  }
                }
              }
            }
          }
        }
      },
      "Manager": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "ID тренера"
          },
          "name": {
            "type": "string",
            "description": "Имя тренера"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "nullable": true,
                "description": "Имя тренера на русском"
              }
            }
          }
        }
      },
      "Lineup": {
        "type": "object",
        "properties": {
          "players": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "ID игрока"
                },
                "name": {
                  "type": "string",
                  "nullable": true,
                  "description": "Имя игрока"
                },
                "teamId": {
                  "type": "integer",
                  "nullable": true,
                  "description": "ID команды игрока"
                },
                "position": {
                  "type": "string",
                  "description": "Позиция игрока"
                },
                "statistics": {
                  "type": "object",
                  "description": "Статистика игрока"
                },
                "shirtNumber": {
                  "type": "integer",
                  "description": "Номер на футболке"
                },
                "captain": {
                  "type": "boolean",
                  "description": "Является ли капитаном"
                },
                "substitute": {
                  "type": "boolean",
                  "description": "Является ли запасным"
                },
                "translations": {
                  "type": "object",
                  "properties": {
                    "ru": {
                      "type": "string",
                      "nullable": true,
                      "description": "Имя игрока на русском"
                    }
                  }
                },
                "image": {
                  "type": "string",
                  "description": "URL изображения игрока"
                }
              }
            }
          },
          "formation": {
            "x-sports": [
              "football"
            ],
            "type": "string",
            "description": "Схема игры",
            "example": "4-4-2"
          },
          "missingPlayers": {
            "x-sports": [
              "football",
              "ice-hockey",
              "basketball",
              "volleyball"
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MissingPlayer"
            },
            "description": "Травмы и дисквалификации — отсутствующие игроки. Карточные причины (код 11/12/13) — только для футбола. Полный словарь причин: [страница](/concepts/missing-players-dictionary)."
          }
        }
      },
      "Score": {
        "type": "object",
        "properties": {
          "current": {
            "type": "integer",
            "description": "Текущий счет",
            "example": 3
          },
          "period1": {
            "type": "integer",
            "x-sport-notes": "Значение зависит от вида спорта: тайм (футбол), период (хоккей), четверть (баскетбол), геймы в сете (теннис, наст. теннис), очки в партии (волейбол), счёт в карте (киберспорт)",
            "description": "Счет в первом тайме",
            "example": 2
          },
          "period2": {
            "type": "integer",
            "description": "Счет во втором тайме / геймы во 2-м сете (теннис)",
            "example": 1
          },
          "period3": {
            "type": "integer",
            "nullable": true,
            "description": "Счет в третьем периоде / геймы в 3-м сете (теннис)"
          },
          "period4": {
            "type": "integer",
            "nullable": true,
            "description": "Счет в четвертом периоде / геймы в 4-м сете (теннис, Grand Slam)"
          },
          "period5": {
            "type": "integer",
            "nullable": true,
            "description": "Счет в пятом периоде / геймы в 5-м сете (теннис, Grand Slam)"
          },
          "period6": {
            "x-sports": [
              "basketball",
              "table-tennis"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Счёт в 6-м периоде: 2-й овертайм (баскетбол) или геймы в 6-м сете (наст. теннис, best-of-7). При множественных овертаймах возможны и дальнейшие периоды (period7+) — редко."
          },
          "period7": {
            "x-sports": [
              "basketball",
              "table-tennis"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Счёт в 7-м периоде: 3-й овертайм (баскетбол) или геймы в 7-м сете (наст. теннис, best-of-7)."
          },
          "period1TieBreak": {
            "x-sports": [
              "tennis"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Очки в тайбрейке 1-го сета (только теннис, только если был тайбрейк)"
          },
          "period2TieBreak": {
            "x-sports": [
              "tennis"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Очки в тайбрейке 2-го сета (только теннис, только если был тайбрейк)"
          },
          "period3TieBreak": {
            "x-sports": [
              "tennis"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Очки в тайбрейке 3-го сета (только теннис, только если был тайбрейк)",
            "example": 7
          },
          "period4TieBreak": {
            "x-sports": [
              "tennis"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Очки в тайбрейке 4-го сета (только теннис, только если был тайбрейк)"
          },
          "period5TieBreak": {
            "x-sports": [
              "tennis"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Очки в тайбрейке 5-го сета (только теннис, только если был тайбрейк)"
          },
          "penalties": {
            "x-sports": [
              "football",
              "ice-hockey"
            ],
            "type": "integer",
            "nullable": true,
            "description": "Счёт по послематчевым пенальти. Присутствует только если была серия пенальти.",
            "example": 4
          },
          "display": {
            "type": "string",
            "nullable": true,
            "description": "Текстовое представление счёта, как отдаёт источник (например, \"2-2 (5-4 pen.)\" в футболе или \"3 (6-4, 4-6, 7-6)\" в теннисе)."
          },
          "point": {
            "x-sports": [
              "tennis"
            ],
            "type": "string",
            "nullable": true,
            "description": "Текущее очко в теннисном гейме (для live-матчей). Значения: \"0\", \"15\", \"30\", \"40\", \"A\" (advantage) для обычных геймов, или числа \"0\"-\"7\"+ для тайбрейков",
            "example": "40"
          }
        }
      },
      "Venue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "ID стадиона"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Название стадиона"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "nullable": true,
                "description": "Название стадиона на русском"
              }
            }
          },
          "capacity": {
            "type": "integer",
            "nullable": true,
            "description": "Вместимость"
          },
          "city": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "nullable": true,
                "description": "Город"
              },
              "translations": {
                "type": "object",
                "properties": {
                  "ru": {
                    "type": "string",
                    "nullable": true,
                    "description": "Город на русском"
                  }
                }
              }
            }
          },
          "country": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "nullable": true,
                "description": "Страна"
              }
            }
          }
        }
      },
      "Referee": {
        "type": "object",
        "description": "Информация об арбитре матча (на данный момент доступно для футбола)",
        "properties": {
          "id": {
            "type": "integer",
            "nullable": true,
            "description": "ID арбитра"
          },
          "name": {
            "type": "string",
            "description": "Имя арбитра",
            "example": "Anthony Taylor"
          },
          "yellowCards": {
            "type": "integer",
            "description": "Количество жёлтых карточек показанных арбитром (статистика)",
            "example": 156
          },
          "redCards": {
            "type": "integer",
            "description": "Количество красных карточек показанных арбитром (статистика)",
            "example": 12
          },
          "yellowRedCards": {
            "type": "integer",
            "description": "Количество вторых жёлтых карточек показанных арбитром (статистика)",
            "example": 8
          },
          "games": {
            "type": "integer",
            "description": "Количество игр проведённых арбитром (статистика)",
            "example": 245
          },
          "country": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Страна арбитра",
                "example": "England"
              }
            }
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "description": "Имя арбитра на русском языке",
                "example": "Энтони Тейлор"
              }
            }
          }
        }
      },
      "Player": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор игрока"
          },
          "teamId": {
            "type": "integer",
            "description": "ID команды игрока"
          },
          "name": {
            "type": "string",
            "description": "Полное имя игрока"
          },
          "shortName": {
            "type": "string",
            "description": "Короткое имя"
          },
          "translations": {
            "type": "object",
            "properties": {
              "ru": {
                "type": "string",
                "description": "Имя на русском"
              }
            }
          },
          "gender": {
            "type": "string",
            "description": "Пол",
            "enum": [
              "M",
              "F"
            ]
          },
          "height": {
            "type": "number",
            "description": "Рост в сантиметрах"
          },
          "country": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Страна игрока"
              }
            }
          },
          "position": {
            "type": "string",
            "description": "Позиция на поле",
            "enum": [
              "G",
              "D",
              "M",
              "F"
            ]
          },
          "shirtNumber": {
            "type": "integer",
            "description": "Номер на футболке"
          },
          "preferredFoot": {
            "type": "string",
            "description": "Рабочая нога",
            "enum": [
              "left",
              "right",
              "both"
            ]
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Дата рождения"
          },
          "dateOfBirthTimestamp": {
            "type": "integer",
            "description": "Дата рождения в миллисекундах"
          },
          "contractUntilTimestamp": {
            "type": "integer",
            "description": "Контракт до (в миллисекундах)"
          },
          "proposedMarketValueEUR": {
            "type": "number",
            "description": "Рыночная стоимость в EUR"
          },
          "image": {
            "type": "string",
            "description": "URL изображения игрока"
          }
        }
      },
      "LiveEvent": {
        "type": "object",
        "description": "Событие матча. Набор полей зависит от type. Подтипы goal/card/substitution/inGamePenalty/penaltyShootout/varDecision/injuryTime/period наиболее характерны для футбола; в других видах спорта набор типов беднее.",
        "properties": {
          "time": {
            "type": "integer",
            "description": "Время события в минутах"
          },
          "timeSeconds": {
            "type": "integer",
            "description": "Время события в секундах"
          },
          "type": {
            "type": "string",
            "description": "Тип события",
            "enum": [
              "card",
              "goal",
              "substitution",
              "inGamePenalty",
              "penaltyShootout",
              "varDecision",
              "injuryTime",
              "period"
            ]
          },
          "class": {
            "type": "string",
            "description": "Класс события"
          },
          "team": {
            "type": "string",
            "description": "Команда события",
            "enum": [
              "home",
              "away"
            ]
          },
          "player": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "playerIn": {
            "type": "object",
            "description": "Игрок входящий (для замен)",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "playerOut": {
            "type": "object",
            "description": "Игрок выходящий (для замен)",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "reason": {
            "type": "string",
            "description": "Причина события"
          },
          "from": {
            "type": "string",
            "description": "Откуда (например, penalty для гола)"
          },
          "homeScore": {
            "type": "integer",
            "description": "Счет хозяев после события"
          },
          "awayScore": {
            "type": "integer",
            "description": "Счет гостей после события"
          },
          "period": {
            "type": "integer",
            "nullable": true,
            "description": "Номер периода/тайма, к которому относится событие"
          },
          "description": {
            "type": "string",
            "description": "Текстовое описание события (если есть)"
          },
          "playerName": {
            "type": "string",
            "description": "Имя игрока, связанного с событием (дублирует player.name для удобства)"
          },
          "assist1Name": {
            "type": "string",
            "description": "Имя игрока, сделавшего первый ассист (голы)"
          },
          "assist2Name": {
            "type": "string",
            "description": "Имя игрока, сделавшего второй ассист (голы)"
          },
          "manager": {
            "type": "object",
            "description": "Тренер/официальное лицо — для карточки, показанной не игроку (type=card)",
            "properties": {
              "id": {
                "type": "integer"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "rescinded": {
            "type": "boolean",
            "description": "Карточка отменена (type=card)"
          },
          "playerInName": {
            "type": "string",
            "description": "Имя вышедшего на замену игрока (type=substitution)"
          },
          "playerOutName": {
            "type": "string",
            "description": "Имя заменённого игрока (type=substitution)"
          },
          "injury": {
            "type": "boolean",
            "description": "Замена из-за травмы (type=substitution)"
          },
          "sequence": {
            "type": "integer",
            "nullable": true,
            "description": "Порядковый номер удара в серии пенальти (type=penaltyShootout)"
          },
          "confirmed": {
            "type": "boolean",
            "nullable": true,
            "description": "Подтверждено ли решение VAR (type=varDecision)"
          },
          "addedTime": {
            "type": "integer",
            "description": "Добавленное время в минутах (type=injuryTime / varDecision)"
          },
          "length": {
            "type": "integer",
            "nullable": true,
            "description": "Длительность добавленного времени (type=injuryTime)"
          },
          "text": {
            "type": "string",
            "description": "Текст метки периода, напр. начало/конец тайма (type=period)"
          },
          "isLive": {
            "type": "boolean",
            "description": "Идёт ли период в данный момент (type=period)"
          }
        }
      },
      "DefaultTournament": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор турнира",
            "example": 7
          },
          "categoryId": {
            "type": "integer",
            "description": "ID категории турнира",
            "example": 1465
          },
          "name": {
            "type": "string",
            "description": "Название турнира",
            "example": "UEFA Champions League"
          }
        }
      },
      "DefaultTournaments": {
        "type": "object",
        "description": "Объект с дефолтными турнирами по языкам",
        "additionalProperties": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/DefaultTournament"
          }
        },
        "example": {
          "ru": [
            {
              "id": 7,
              "categoryId": 1465,
              "name": "UEFA Champions League"
            },
            {
              "id": 17,
              "categoryId": 1,
              "name": "Premier League"
            }
          ]
        }
      },
      "OddsChoice": {
        "type": "object",
        "description": "Вариант ставки с коэффициентами",
        "properties": {
          "name": {
            "type": "string",
            "description": "Название варианта ставки",
            "example": "1"
          },
          "decimal": {
            "type": "number",
            "description": "Текущий коэффициент в десятичном формате",
            "example": 1.61
          },
          "initialDecimal": {
            "type": "number",
            "description": "Начальный коэффициент в десятичном формате",
            "example": 1.35
          },
          "winning": {
            "type": "boolean",
            "description": "Является ли вариант выигрышным",
            "example": false
          },
          "change": {
            "type": "integer",
            "description": "Изменение коэффициента (-1: понижение, 0: без изменений, 1: повышение)",
            "enum": [
              -1,
              0,
              1
            ],
            "example": 1
          }
        }
      },
      "OddsMarket": {
        "type": "object",
        "description": "Рынок ставок (betting market) с вариантами коэффициентов",
        "properties": {
          "name": {
            "type": "string",
            "description": "Название рынка ставок",
            "example": "Full time"
          },
          "group": {
            "type": "string",
            "description": "Группа ставки",
            "example": "1X2"
          },
          "period": {
            "type": "string",
            "description": "Период матча для ставки",
            "example": "Full-time"
          },
          "isLive": {
            "type": "boolean",
            "description": "Доступна ли ставка в live режиме",
            "example": false
          },
          "suspended": {
            "type": "boolean",
            "description": "Приостановлена ли ставка",
            "example": false
          },
          "choices": {
            "type": "array",
            "description": "Варианты ставок с коэффициентами",
            "items": {
              "$ref": "#/components/schemas/OddsChoice"
            }
          }
        }
      },
      "Highlight": {
        "type": "object",
        "description": "Видео/хайлайт матча",
        "properties": {
          "title": {
            "type": "string",
            "description": "Название видео/хайлайта",
            "example": "Alianza Valledupar 1 - 0 La Equidad"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL видео (обычно YouTube)",
            "example": "https://youtu.be/H_9b2BSCNK4"
          },
          "image": {
            "type": "string",
            "format": "uri",
            "description": "URL изображения превью видео",
            "example": "https://i.ytimg.com/vi/H_9b2BSCNK4/hqdefault.jpg"
          }
        }
      },
      "EsportsData": {
        "type": "object",
        "description": "Корневой объект с данными киберспортивного матча. Содержит формат серии и массив отдельных игр (карт) с детальной статистикой.",
        "properties": {
          "bestOf": {
            "type": "integer",
            "nullable": true,
            "description": "Формат серии — максимальное количество игр (например, 1, 3 или 5). Best of 3 означает, что для победы нужно выиграть 2 игры из 3.",
            "example": 3
          },
          "games": {
            "type": "array",
            "description": "Список отдельных игр (карт) в серии. Каждая игра содержит счёт, статистику игроков, раунды (CS2) или баны (Dota 2/LoL).",
            "items": {
              "$ref": "#/components/schemas/EsportsGame"
            }
          }
        }
      },
      "EsportsGame": {
        "type": "object",
        "description": "Одна игра (карта/map) в киберспортивной серии. Для CS2 содержит информацию о карте и раундах, для Dota 2/LoL — о героях/чемпионах и банах.",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Уникальный идентификатор игры",
            "example": 548805
          },
          "gameNumber": {
            "type": "integer",
            "description": "Порядковый номер игры в серии (начинается с 1)",
            "example": 1
          },
          "status": {
            "type": "string",
            "description": "Текущий статус игры",
            "enum": [
              "notstarted",
              "inprogress",
              "finished"
            ],
            "example": "finished"
          },
          "winnerCode": {
            "type": "integer",
            "nullable": true,
            "description": "Код команды-победителя игры: 1 — домашняя команда (home), 2 — гостевая команда (away). null, если игра ещё не завершена.",
            "example": 1
          },
          "durationSeconds": {
            "type": "integer",
            "nullable": true,
            "description": "Длительность игры в секундах. null, если игра ещё не завершена.",
            "example": 2340
          },
          "startTimestamp": {
            "type": "integer",
            "description": "Время начала игры в миллисекундах (Unix timestamp * 1000)",
            "example": 1773129756000
          },
          "homeScore": {
            "$ref": "#/components/schemas/Score",
            "description": "Счёт домашней команды в данной игре. Для CS2 — количество выигранных раундов (с разбивкой по половинам в period1/period2). Для Dota 2/LoL — количество убийств."
          },
          "awayScore": {
            "$ref": "#/components/schemas/Score",
            "description": "Счёт гостевой команды в данной игре. Для CS2 — количество выигранных раундов. Для Dota 2/LoL — количество убийств."
          },
          "map": {
            "type": "string",
            "nullable": true,
            "description": "Название карты (только CS2). Примеры: Dust2, Inferno, Mirage, Ancient, Nuke, Anubis, Vertigo. Для Dota 2 и LoL всегда null.",
            "example": "Dust2"
          },
          "homeTeamStartingSide": {
            "type": "string",
            "nullable": true,
            "description": "Стартовая сторона домашней команды. Зависит от игры: CS2 — T (Terrorists) или CT (Counter-Terrorists); Dota 2 — Radiant или Dire; LoL — Blue или Red.",
            "enum": [
              "T",
              "CT",
              "Radiant",
              "Dire",
              "Blue",
              "Red"
            ],
            "example": "T"
          },
          "homeTeamPlayers": {
            "type": "array",
            "description": "Игроки домашней команды с индивидуальной статистикой за данную игру. Набор полей статистики зависит от типа игры (CS2, Dota 2 или LoL).",
            "items": {
              "$ref": "#/components/schemas/EsportsPlayer"
            }
          },
          "awayTeamPlayers": {
            "type": "array",
            "description": "Игроки гостевой команды с индивидуальной статистикой за данную игру.",
            "items": {
              "$ref": "#/components/schemas/EsportsPlayer"
            }
          },
          "statistics": {
            "type": "object",
            "nullable": true,
            "description": "Командная статистика за игру. Для Dota 2: faction, kills, towersDestroyed/Remaining, barracksDestroyed/Remaining, firstBlood. Для LoL: color, kills, goldEarned, towerKills, inhibitorKills, dragonKills (с разбивкой по типам), nashorKills. Для CS2 обычно null (данные в rounds).",
            "properties": {
              "home": {
                "$ref": "#/components/schemas/EsportsTeamStatistics"
              },
              "away": {
                "$ref": "#/components/schemas/EsportsTeamStatistics"
              }
            }
          },
          "rounds": {
            "nullable": true,
            "description": "Информация о раундах — только для CS2. Содержит детали каждого раунда: исход, победитель, сторона домашней команды. Для Dota 2 и LoL всегда null.",
            "$ref": "#/components/schemas/EsportsRounds"
          },
          "bans": {
            "nullable": true,
            "description": "Забаненные герои/чемпионы — только для Dota 2 и LoL. Содержит списки банов для каждой команды. Для CS2 всегда null.",
            "$ref": "#/components/schemas/EsportsBans"
          }
        }
      },
      "EsportsPlayer": {
        "type": "object",
        "description": "Игрок с индивидуальной статистикой за одну игру киберспортивной серии. Базовые поля (player, kills, deaths, assists) присутствуют всегда. Остальные поля зависят от типа игры.",
        "properties": {
          "player": {
            "type": "object",
            "description": "Информация об игроке",
            "properties": {
              "id": {
                "type": "integer",
                "description": "Уникальный идентификатор игрока",
                "example": 1072879
              },
              "name": {
                "type": "string",
                "nullable": true,
                "description": "Настоящее имя игрока (имя + фамилия). Если настоящее имя недоступно — используется игровой ник.",
                "example": "Danil Kryshkovets"
              },
              "nickName": {
                "type": "string",
                "nullable": true,
                "description": "Игровой ник (никнейм) игрока",
                "example": "gpk"
              },
              "shortName": {
                "type": "string",
                "description": "Сокращённое игровое имя игрока",
                "example": "gpk"
              },
              "position": {
                "type": "string",
                "nullable": true,
                "description": "Код позиции/роли игрока. Dota 2: hc (Hard Carry), mid (Midlane), off (Offlane), ss (Soft Support), hs (Hard Support). LoL: top (Top), jun (Jungle), mid (Mid), adc (ADC), sup (Support). CS2: null (позиции не применяются).",
                "example": "mid"
              },
              "positionName": {
                "type": "string",
                "nullable": true,
                "description": "Человекочитаемое название позиции/роли. Примеры: Midlane, Hard Carry, Offlane, Soft Support, Hard Support, Top, Jungle, ADC, Support. null для CS2.",
                "example": "Midlane"
              },
              "translations": {
                "type": "object",
                "description": "Переводы имени игрока",
                "properties": {
                  "ru": {
                    "type": "string",
                    "nullable": true,
                    "description": "Настоящее имя игрока на русском"
                  }
                }
              },
              "image": {
                "type": "string",
                "nullable": true,
                "description": "URL изображения (аватара) игрока",
                "example": "https://images.api-sport.ru/sportimages/player-1072879"
              }
            }
          },
          "kills": {
            "type": "integer",
            "description": "Количество убийств игрока за игру (все типы игр)",
            "example": 9
          },
          "deaths": {
            "type": "integer",
            "description": "Количество смертей игрока за игру (все типы игр)",
            "example": 0
          },
          "assists": {
            "type": "integer",
            "description": "Количество ассистов игрока за игру (все типы игр)",
            "example": 11
          },
          "adr": {
            "type": "number",
            "description": "Average Damage per Round — средний урон за раунд (только CS2)",
            "example": 74.2
          },
          "kast": {
            "type": "integer",
            "description": "Процент раундов, в которых игрок совершил Kill, Assist, Survived или был Trade-killed (только CS2)",
            "example": 66
          },
          "kdDiff": {
            "type": "integer",
            "description": "Разница между убийствами и смертями Kill-Death Difference (только CS2)",
            "example": -1
          },
          "firstKillsDiff": {
            "type": "integer",
            "description": "Разница первых убийств: сколько раз игрок сделал первое убийство в раунде минус сколько раз умер первым (только CS2)",
            "example": 2
          },
          "flashAssists": {
            "type": "integer",
            "description": "Количество ассистов с помощью ослепляющих гранат (только CS2)",
            "example": 0
          },
          "headshots": {
            "type": "integer",
            "description": "Количество убийств в голову (только CS2)",
            "example": 7
          },
          "character": {
            "type": "object",
            "nullable": true,
            "description": "Выбранный герой (Dota 2) или чемпион (LoL). Отсутствует для CS2.",
            "properties": {
              "name": {
                "type": "string",
                "description": "Имя героя/чемпиона",
                "example": "Void Spirit"
              },
              "slug": {
                "type": "string",
                "description": "URL-совместимый идентификатор героя/чемпиона",
                "example": "void-spirit"
              }
            }
          },
          "denies": {
            "type": "integer",
            "description": "Количество добиваний союзных крипов (только Dota 2)",
            "example": 19
          },
          "goldPerMin": {
            "type": "integer",
            "description": "Золото в минуту (только Dota 2)",
            "example": 638
          },
          "xpPerMin": {
            "type": "integer",
            "description": "Опыт в минуту (только Dota 2)",
            "example": 778
          },
          "lastHits": {
            "type": "integer",
            "description": "Количество добиваний вражеских крипов (только Dota 2)",
            "example": 354
          },
          "netWorth": {
            "type": "integer",
            "description": "Общая стоимость инвентаря и золота игрока (только Dota 2)",
            "example": 26260
          },
          "heroLevel": {
            "type": "integer",
            "description": "Уровень героя на момент окончания игры (только Dota 2)",
            "example": 23
          },
          "goldEarned": {
            "type": "integer",
            "description": "Общее количество заработанного золота (только LoL)",
            "example": 14134
          },
          "level": {
            "type": "integer",
            "description": "Уровень чемпиона на момент окончания игры (только LoL)",
            "example": 17
          },
          "minionsKilled": {
            "type": "integer",
            "description": "Количество убитых миньонов/крипов (только LoL)",
            "example": 234
          },
          "role": {
            "type": "string",
            "description": "Роль игрока в команде (только LoL). Значения: top, jun, mid, adc, sup",
            "example": "jun"
          }
        }
      },
      "EsportsTeamStatistics": {
        "type": "object",
        "description": "Командная статистика за одну игру. Набор полей зависит от типа игры. Dota 2: faction (Radiant/Dire), kills, towersDestroyed, towersRemaining, barracksDestroyed, barracksRemaining, firstBlood. LoL: color (Blue/Red), kills, goldEarned, towerKills, inhibitorKills, dragonKills, nashorKills, elderDrakeKills и отдельные типы драконов (chemtechDrakeKills, cloudDrakeKills, hextechDrakeKills, infernalDrakeKills, mountainDrakeKills, oceanDrakeKills). Для CS2 statistics обычно null.",
        "properties": {
          "faction": {
            "type": "string",
            "nullable": true,
            "description": "Фракция команды (только Dota 2): Radiant или Dire",
            "enum": [
              "Radiant",
              "Dire"
            ],
            "example": "Radiant"
          },
          "color": {
            "type": "string",
            "nullable": true,
            "description": "Цвет/сторона команды (только LoL): Blue или Red",
            "enum": [
              "Blue",
              "Red"
            ],
            "example": "Blue"
          },
          "kills": {
            "type": "integer",
            "description": "Общее количество убийств команды",
            "example": 27
          },
          "firstBlood": {
            "type": "boolean",
            "description": "Совершила ли команда первое убийство в игре (только Dota 2)",
            "example": false
          },
          "towersDestroyed": {
            "type": "integer",
            "description": "Количество разрушенных вражеских башен (только Dota 2)",
            "example": 3
          },
          "towersRemaining": {
            "type": "integer",
            "description": "Количество оставшихся своих башен (только Dota 2)",
            "example": 8
          },
          "barracksDestroyed": {
            "type": "integer",
            "description": "Количество разрушенных вражеских бараков (только Dota 2)",
            "example": 0
          },
          "barracksRemaining": {
            "type": "integer",
            "description": "Количество оставшихся своих бараков (только Dota 2)",
            "example": 6
          },
          "goldEarned": {
            "type": "integer",
            "description": "Общее золото команды (только LoL)",
            "example": 56802
          },
          "towerKills": {
            "type": "integer",
            "description": "Количество уничтоженных башен (только LoL)",
            "example": 4
          },
          "inhibitorKills": {
            "type": "integer",
            "description": "Количество уничтоженных ингибиторов (только LoL)",
            "example": 0
          },
          "dragonKills": {
            "type": "integer",
            "description": "Общее количество убитых драконов (только LoL)",
            "example": 1
          },
          "nashorKills": {
            "type": "integer",
            "description": "Количество убийств Барона Нашора (только LoL)",
            "example": 0
          },
          "elderDrakeKills": {
            "type": "integer",
            "description": "Количество убийств Старшего дракона (только LoL)",
            "example": 0
          },
          "chemtechDrakeKills": {
            "type": "integer",
            "description": "Количество убийств Химтех-дракона (только LoL)",
            "example": 0
          },
          "cloudDrakeKills": {
            "type": "integer",
            "description": "Количество убийств Воздушного дракона (только LoL)",
            "example": 0
          },
          "hextechDrakeKills": {
            "type": "integer",
            "description": "Количество убийств Хекстек-дракона (только LoL)",
            "example": 0
          },
          "infernalDrakeKills": {
            "type": "integer",
            "description": "Количество убийств Огненного дракона (только LoL)",
            "example": 1
          },
          "mountainDrakeKills": {
            "type": "integer",
            "description": "Количество убийств Горного дракона (только LoL)",
            "example": 0
          },
          "oceanDrakeKills": {
            "type": "integer",
            "description": "Количество убийств Водного дракона (только LoL)",
            "example": 0
          }
        }
      },
      "EsportsRounds": {
        "type": "object",
        "description": "Информация о раундах в игре CS2. Содержит детали каждого раунда основного времени и овертайма (если был).",
        "properties": {
          "roundsInAHalf": {
            "type": "integer",
            "nullable": true,
            "description": "Количество раундов в одной половине (обычно 12 для CS2 MR12)",
            "example": 12
          },
          "normaltime": {
            "type": "array",
            "description": "Массив раундов основного времени",
            "items": {
              "$ref": "#/components/schemas/EsportsRound"
            }
          },
          "overtime": {
            "type": "array",
            "nullable": true,
            "description": "Массив раундов овертайма. null, если овертайма не было.",
            "items": {
              "$ref": "#/components/schemas/EsportsRound"
            }
          },
          "overtimeChunkSize": {
            "type": "integer",
            "nullable": true,
            "description": "Количество раундов в одном блоке овертайма (обычно 6 для CS2). null, если овертайма не было.",
            "example": 6
          }
        }
      },
      "EsportsRound": {
        "type": "object",
        "description": "Один раунд в игре CS2",
        "properties": {
          "roundNumber": {
            "type": "integer",
            "description": "Порядковый номер раунда (начинается с 1)",
            "example": 1
          },
          "outcome": {
            "type": "string",
            "nullable": true,
            "description": "Исход раунда: elimination — все игроки противника убиты; defuse — бомба обезврежена; explosion — бомба взорвалась; timeout — время раунда истекло",
            "enum": [
              "elimination",
              "defuse",
              "explosion",
              "timeout"
            ],
            "example": "elimination"
          },
          "winnerCode": {
            "type": "integer",
            "nullable": true,
            "description": "Код команды-победителя раунда: 1 — домашняя команда (home), 2 — гостевая команда (away)",
            "example": 1
          },
          "homeTeamSide": {
            "type": "string",
            "nullable": true,
            "description": "Сторона домашней команды в данном раунде: T (Terrorists) или CT (Counter-Terrorists). Меняется после первой половины.",
            "enum": [
              "T",
              "CT"
            ],
            "example": "T"
          }
        }
      },
      "EsportsBans": {
        "type": "object",
        "description": "Забаненные герои (Dota 2) или чемпионы (LoL) для каждой команды. Баны определяются в фазе драфта перед началом игры.",
        "properties": {
          "home": {
            "type": "array",
            "description": "Список героев/чемпионов, забаненных домашней командой",
            "items": {
              "$ref": "#/components/schemas/EsportsCharacter"
            }
          },
          "away": {
            "type": "array",
            "description": "Список героев/чемпионов, забаненных гостевой командой",
            "items": {
              "$ref": "#/components/schemas/EsportsCharacter"
            }
          }
        }
      },
      "EsportsCharacter": {
        "type": "object",
        "description": "Герой (Dota 2) или чемпион (LoL)",
        "properties": {
          "name": {
            "type": "string",
            "description": "Имя героя/чемпиона",
            "example": "Batrider"
          },
          "slug": {
            "type": "string",
            "description": "URL-совместимый идентификатор (slug) героя/чемпиона",
            "example": "batrider"
          }
        }
      },
      "TennisData": {
        "type": "object",
        "description": "Корневой объект с данными теннисного матча. Содержит информацию о формате серии, покрытии, подаче, посеве игроков, детализацию по сетам, momentum-график и (при запросе одного матча) point-by-point данные.",
        "properties": {
          "bestOf": {
            "type": "integer",
            "nullable": true,
            "description": "Формат матча — максимальное количество сетов (3 или 5). Best of 3 — для WTA и большинства ATP турниров, Best of 5 — для мужских Grand Slam.",
            "example": 3
          },
          "groundType": {
            "type": "string",
            "nullable": true,
            "description": "Тип покрытия корта",
            "example": "Hardcourt outdoor",
            "enum": [
              "Hardcourt outdoor",
              "Hardcourt indoor",
              "Clay",
              "Grass"
            ]
          },
          "firstToServe": {
            "type": "string",
            "nullable": true,
            "description": "Кто подаёт первым в матче",
            "enum": [
              "home",
              "away"
            ],
            "example": "home"
          },
          "homePlayerSeed": {
            "type": "string",
            "nullable": true,
            "description": "Посев (seed) домашнего игрока в турнире. Посев определяет рейтинг игрока в сетке турнира.",
            "example": "25"
          },
          "awayPlayerSeed": {
            "type": "string",
            "nullable": true,
            "description": "Посев (seed) гостевого игрока в турнире",
            "example": "18"
          },
          "sets": {
            "type": "array",
            "nullable": true,
            "description": "Детализация по сыгранным сетам. Каждый элемент содержит количество геймов, победителя, длительность и данные тайбрейка (если был).",
            "items": {
              "$ref": "#/components/schemas/TennisSet"
            }
          },
          "momentum": {
            "type": "array",
            "nullable": true,
            "description": "График импульса (momentum) матча. Показывает доминирование одного из игроков в каждом гейме. Положительные значения — доминирование домашнего игрока, отрицательные — гостевого.",
            "items": {
              "$ref": "#/components/schemas/TennisMomentumItem"
            }
          },
          "pointByPoint": {
            "type": "array",
            "nullable": true,
            "description": "Подробные данные по каждому очку матча, сгруппированные по сетам и геймам. Доступно только при запросе одного матча (/matches/{matchId}). Содержит тип каждого розыгрыша (эйс, двойная ошибка, виннер) и текущий счёт.",
            "items": {
              "$ref": "#/components/schemas/TennisPointByPointSet"
            }
          }
        }
      },
      "TennisSet": {
        "type": "object",
        "description": "Информация об одном сете теннисного матча",
        "properties": {
          "setNumber": {
            "type": "integer",
            "description": "Номер сета (1-5)",
            "example": 3
          },
          "homeGames": {
            "type": "integer",
            "description": "Количество геймов, выигранных домашним игроком в этом сете",
            "example": 7
          },
          "awayGames": {
            "type": "integer",
            "description": "Количество геймов, выигранных гостевым игроком в этом сете",
            "example": 6
          },
          "winner": {
            "type": "string",
            "nullable": true,
            "description": "Победитель сета. null если сет ещё не завершён",
            "enum": [
              "home",
              "away"
            ],
            "example": "home"
          },
          "durationSeconds": {
            "type": "integer",
            "nullable": true,
            "description": "Длительность сета в секундах",
            "example": 3423
          },
          "tiebreak": {
            "nullable": true,
            "description": "Данные тайбрейка. Присутствует только если в сете был тайбрейк (обычно при счёте 6-6). Тайбрейк — специальный гейм, в котором очки считаются последовательно (1, 2, 3...) до 7 с разницей минимум 2.",
            "$ref": "#/components/schemas/TennisTiebreak"
          }
        }
      },
      "TennisTiebreak": {
        "type": "object",
        "description": "Результат тайбрейка в сете",
        "properties": {
          "homePoints": {
            "type": "integer",
            "description": "Очки домашнего игрока в тайбрейке",
            "example": 7
          },
          "awayPoints": {
            "type": "integer",
            "description": "Очки гостевого игрока в тайбрейке",
            "example": 4
          }
        }
      },
      "TennisMomentumItem": {
        "type": "object",
        "description": "Одна точка на графике импульса (momentum) матча. Каждая точка соответствует одному гейму.",
        "properties": {
          "set": {
            "type": "integer",
            "description": "Номер сета",
            "example": 1
          },
          "game": {
            "type": "integer",
            "description": "Номер гейма в сете",
            "example": 9
          },
          "value": {
            "type": "number",
            "description": "Значение импульса. Положительное значение — доминирование домашнего игрока (home), отрицательное — гостевого (away). Диапазон примерно от -100 до +100. Чем больше абсолютное значение, тем увереннее была победа в гейме.",
            "example": -17.48
          },
          "breakOccurred": {
            "type": "boolean",
            "description": "Был ли брейк подачи в этом гейме. Брейк — ситуация когда принимающий игрок выиграл гейм на подаче соперника.",
            "example": true
          }
        }
      },
      "TennisPointByPointSet": {
        "type": "object",
        "description": "Данные point-by-point для одного сета",
        "properties": {
          "set": {
            "type": "integer",
            "description": "Номер сета",
            "example": 3
          },
          "games": {
            "type": "array",
            "description": "Массив геймов в сете (в обратном хронологическом порядке — от последнего к первому)",
            "items": {
              "$ref": "#/components/schemas/TennisGame"
            }
          }
        }
      },
      "TennisGame": {
        "type": "object",
        "description": "Один гейм теннисного матча с детализацией по очкам",
        "properties": {
          "game": {
            "type": "integer",
            "description": "Номер гейма в сете",
            "example": 13
          },
          "isTiebreak": {
            "type": "boolean",
            "description": "Является ли этот гейм тайбрейком. В тайбрейке используется другая система подсчёта очков (1, 2, 3... вместо 15, 30, 40).",
            "example": true
          },
          "score": {
            "nullable": true,
            "description": "Счёт по геймам в сете после завершения данного гейма, а также информация о подающем и победителе",
            "$ref": "#/components/schemas/TennisGameScore"
          },
          "points": {
            "type": "array",
            "description": "Массив очков в гейме в хронологическом порядке. Каждое очко содержит текущий счёт и тип розыгрыша.",
            "items": {
              "$ref": "#/components/schemas/TennisPoint"
            }
          }
        }
      },
      "TennisGameScore": {
        "type": "object",
        "description": "Счёт в сете после завершения гейма и информация о подающем/победителе",
        "properties": {
          "homeGames": {
            "type": "integer",
            "description": "Геймы домашнего игрока в сете после этого гейма",
            "example": 7
          },
          "awayGames": {
            "type": "integer",
            "description": "Геймы гостевого игрока в сете после этого гейма",
            "example": 6
          },
          "serving": {
            "type": "string",
            "nullable": true,
            "description": "Кто подавал в этом гейме",
            "enum": [
              "home",
              "away"
            ],
            "example": "home"
          },
          "wonBy": {
            "type": "string",
            "nullable": true,
            "description": "Кто выиграл этот гейм",
            "enum": [
              "home",
              "away"
            ],
            "example": "home"
          }
        }
      },
      "TennisPoint": {
        "type": "object",
        "description": "Одно очко в теннисном гейме. Содержит текущий счёт после розыгрыша и тип розыгрыша.",
        "properties": {
          "homePoint": {
            "type": "string",
            "nullable": true,
            "description": "Очко домашнего игрока после розыгрыша. В обычном гейме: \"0\", \"15\", \"30\", \"40\", \"A\" (advantage). В тайбрейке: \"0\", \"1\", \"2\", ... (последовательные числа).",
            "example": "40"
          },
          "awayPoint": {
            "type": "string",
            "nullable": true,
            "description": "Очко гостевого игрока после розыгрыша",
            "example": "30"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "Тип розыгрыша",
            "enum": [
              "normal",
              "ace",
              "doubleFault"
            ],
            "example": "ace"
          },
          "homePointType": {
            "type": "string",
            "nullable": true,
            "description": "Результат розыгрыша для домашнего игрока. winner — игрок выиграл очко активным ударом; ace — выиграл очко подачей навылет; error — соперник допустил ошибку; doubleFault — двойная ошибка при подаче; loser — игрок проиграл очко.",
            "enum": [
              "winner",
              "doubleFault",
              "ace",
              "loser",
              "error"
            ],
            "example": "ace"
          },
          "awayPointType": {
            "type": "string",
            "nullable": true,
            "description": "Результат розыгрыша для гостевого игрока",
            "enum": [
              "winner",
              "doubleFault",
              "ace",
              "loser",
              "error"
            ],
            "example": "loser"
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Описание ошибки"
          },
          "message": {
            "type": "string",
            "description": "Дополнительная информация об ошибке"
          }
        }
      },
      "BkTranslatedName": {
        "type": "object",
        "description": "Мультиязычное название",
        "properties": {
          "en": {
            "type": "string",
            "description": "Название на английском",
            "example": "Match Winner"
          },
          "ru": {
            "type": "string",
            "description": "Название на русском",
            "example": "Победа в матче"
          }
        }
      },
      "BkOddsLine": {
        "type": "object",
        "description": "Линия ставки с аргументом (для рынков с параметром, например тотал 2.5)",
        "properties": {
          "dateUpdateMs": {
            "type": "integer",
            "nullable": true,
            "description": "Время обновления коэффициента в миллисекундах",
            "example": 1234567890
          },
          "factor": {
            "type": "number",
            "description": "Коэффициент ставки",
            "example": 1.95
          },
          "argument": {
            "type": "number",
            "description": "Аргумент/параметр ставки (например значение тотала или гандикапа)",
            "example": 2.5
          }
        }
      },
      "BkOddsStake": {
        "type": "object",
        "description": "Исход ставки. Для рынков без аргумента содержит name и factor. Для рынков с аргументом (hasArgument=true) содержит name и массив lines",
        "properties": {
          "name": {
            "description": "Мультиязычное название исхода",
            "allOf": [
              {
                "$ref": "#/components/schemas/BkTranslatedName"
              }
            ]
          },
          "factor": {
            "type": "number",
            "description": "Коэффициент ставки (для рынков без аргумента, т.е. hasArgument=false)",
            "example": 1.85
          },
          "lines": {
            "type": "array",
            "description": "Массив линий с разными аргументами (для рынков с аргументом, hasArgument=true). Отсортирован по argument по возрастанию",
            "items": {
              "$ref": "#/components/schemas/BkOddsLine"
            }
          }
        }
      },
      "BkOddsMarket": {
        "type": "object",
        "description": "Рынок букмекерских ставок (например 'Исход матча', 'Тотал голов')",
        "properties": {
          "name": {
            "description": "Мультиязычное название рынка",
            "allOf": [
              {
                "$ref": "#/components/schemas/BkTranslatedName"
              }
            ]
          },
          "hasArgument": {
            "type": "boolean",
            "description": "Есть ли у рынка аргумент/параметр (например значение тотала). Если true — исходы содержат lines вместо factor",
            "example": false
          },
          "stakeKeys": {
            "type": "array",
            "description": "Упорядоченный список ключей исходов",
            "items": {
              "type": "string"
            },
            "example": [
              "home_win",
              "draw",
              "away_win"
            ]
          },
          "stakes": {
            "type": "object",
            "description": "Исходы ставок. Ключи — слаги исходов (например 'home_win', 'over', 'under'). Значение каждого ключа — объект BkOddsStake",
            "properties": {
              "home_win": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BkOddsStake"
                  }
                ],
                "description": "Пример исхода (ключ динамический)"
              }
            },
            "example": {
              "home_win": {
                "name": {
                  "en": "Home Win",
                  "ru": "Победа хозяев"
                },
                "factor": 1.85
              },
              "draw": {
                "name": {
                  "en": "Draw",
                  "ru": "Ничья"
                },
                "factor": 3.4
              },
              "away_win": {
                "name": {
                  "en": "Away Win",
                  "ru": "Победа гостей"
                },
                "factor": 4.2
              }
            }
          }
        }
      },
      "BookmakerOddsData": {
        "type": "object",
        "description": "Данные коэффициентов одного букмекера",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Слаг-идентификатор букмекера",
            "example": "melbet"
          },
          "name": {
            "description": "Название букмекера на разных языках",
            "allOf": [
              {
                "$ref": "#/components/schemas/BkTranslatedName"
              }
            ],
            "example": {
              "en": "Melbet",
              "ru": "Мелбет"
            }
          },
          "updatedAt": {
            "type": "integer",
            "nullable": true,
            "description": "Время последнего обновления коэффициентов (timestamp в миллисекундах)",
            "example": 1234567890000
          },
          "isBettingActive": {
            "type": "boolean",
            "description": "Активны ли ставки в данный момент",
            "example": true
          },
          "markets": {
            "type": "object",
            "description": "Рынки ставок. Ключи — слаги рынков (например 'match_result', 'total_goals', 'handicap'). Значение каждого ключа — объект BkOddsMarket",
            "properties": {
              "match_result": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BkOddsMarket"
                  }
                ],
                "description": "Пример рынка (ключ динамический)"
              }
            },
            "example": {
              "match_result": {
                "name": {
                  "en": "Match Result",
                  "ru": "Исход матча"
                },
                "hasArgument": false,
                "stakeKeys": [
                  "home_win",
                  "draw",
                  "away_win"
                ],
                "stakes": {}
              }
            }
          }
        }
      },
      "MissingPlayer": {
        "type": "object",
        "description": "Отсутствующий игрок (травма, болезнь или дисквалификация). Справочник причин и уточнений: [Словарь причин](/concepts/missing-players-dictionary).",
        "properties": {
          "player": {
            "type": "object",
            "description": "Данные отсутствующего игрока",
            "properties": {
              "id": {
                "type": "integer",
                "nullable": true,
                "description": "ID игрока"
              },
              "name": {
                "type": "string",
                "nullable": true,
                "description": "Имя игрока"
              },
              "position": {
                "type": "string",
                "nullable": true,
                "description": "Позиция игрока"
              },
              "shirtNumber": {
                "type": "string",
                "nullable": true,
                "description": "Игровой номер (строка)"
              },
              "translations": {
                "type": "object",
                "properties": {
                  "ru": {
                    "type": "string",
                    "nullable": true,
                    "description": "Имя игрока на русском"
                  }
                }
              },
              "image": {
                "type": "string",
                "description": "URL изображения игрока"
              }
            }
          },
          "type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "missing",
              "doubtful"
            ],
            "description": "Статус: missing — точно не сыграет; doubtful — под вопросом"
          },
          "reason": {
            "type": "object",
            "description": "Причина отсутствия",
            "properties": {
              "code": {
                "type": "integer",
                "nullable": true,
                "description": "Код причины: 0 — другое, 1 — травма, 2 — болезнь, 3 — дисквалификация, 4 — недоступен, 11 — перебор жёлтых карточек (только футбол), 12 — вторая жёлтая → красная (только футбол), 13 — красная карточка (только футбол), 21 — в аренде"
              },
              "name": {
                "type": "string",
                "nullable": true,
                "description": "Кодовое имя причины: Injured, Ill, Suspended, Absent, Other, YellowCard, YellowRedCard, RedCard, OnLoan"
              },
              "categoryKey": {
                "type": "string",
                "description": "Ключ категории причины (для сопоставления со словарём)"
              },
              "translations": {
                "type": "object",
                "nullable": true,
                "description": "Перевод причины",
                "properties": {
                  "ru": {
                    "type": "string",
                    "description": "Причина на русском"
                  },
                  "es": {
                    "type": "string",
                    "description": "Причина на испанском"
                  }
                }
              }
            }
          },
          "description": {
            "type": "object",
            "nullable": true,
            "description": "Уточнение причины (часть тела или диагноз); null, если уточнения нет",
            "properties": {
              "raw": {
                "type": "string",
                "description": "Исходный текст уточнения (на английском), например \"Muscle Injury\""
              },
              "key": {
                "type": "string",
                "nullable": true,
                "description": "Ключ перевода уточнения (для сопоставления со словарём)"
              },
              "translations": {
                "type": "object",
                "nullable": true,
                "description": "Перевод уточнения",
                "properties": {
                  "ru": {
                    "type": "string",
                    "description": "Уточнение на русском"
                  },
                  "es": {
                    "type": "string",
                    "description": "Уточнение на испанском"
                  }
                }
              }
            }
          },
          "expectedEndDateMs": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Ожидаемая дата возвращения игрока, Unix-timestamp в миллисекундах; null, если неизвестно"
          }
        }
      },
      "BookmakerOdds": {
        "type": "object",
        "description": "Букмекерские коэффициенты. Ключи объекта — идентификаторы букмекеров. Пустой объект {} если коэффициенты отсутствуют. Постепенно будут добавлены другие букмекеры",
        "properties": {
          "melbet": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BookmakerOddsData"
              }
            ],
            "description": "Коэффициенты букмекера Melbet"
          }
        },
        "example": {
          "melbet": {
            "slug": "melbet",
            "name": {
              "en": "Melbet",
              "ru": "Мелбет"
            },
            "updatedAt": 1234567890000,
            "isBettingActive": true,
            "markets": {
              "match_result": {
                "name": {
                  "en": "Match Result",
                  "ru": "Исход матча"
                },
                "hasArgument": false,
                "stakeKeys": [
                  "home_win",
                  "draw",
                  "away_win"
                ],
                "stakes": {
                  "home_win": {
                    "name": {
                      "en": "Home Win",
                      "ru": "Победа хозяев"
                    },
                    "factor": 1.85
                  },
                  "draw": {
                    "name": {
                      "en": "Draw",
                      "ru": "Ничья"
                    },
                    "factor": 3.4
                  },
                  "away_win": {
                    "name": {
                      "en": "Away Win",
                      "ru": "Победа гостей"
                    },
                    "factor": 4.2
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "⚽ Спортивные события - REST API",
      "tags": [
        "Общее",
        "Категории",
        "Матчи",
        "Поиск",
        "Игроки",
        "Команды",
        "Турниры"
      ]
    }
  ]
}