Документация API

Демо-интерфейс API Feed Сервис коэффициентов Лиги ВТБ

Конечные точки

Список матчей

GET /v1/odds

Возвращает JSON-массив текущих коэффициентов на баскетбольные матчи Лиги ВТБ. Данные предварительно кешируются на сервере и обновляются автоматически.

Параметры запроса

Параметр Тип Описание
langstringНеобязательный. Значения: ru или en. Если указан, все локализованные поля (homeTeamName, awayTeamName, displayHomeLabel, displayAwayLabel, totalHomeLabel, totalAwayLabel) возвращаются как строки вместо объектов. Без параметра — полный объект с ключами ru и en.
Примечание: Сервис непрерывно опрашивает источники данных и отдаёт закешированные результаты. Каждый запрос возвращает актуальный снимок данных.

Ответ

Формат

Content-Type: application/json

Возвращает массив объектов матчей. Если матчей нет, возвращается пустой массив [].

Поля ответа

Поле Тип Описание
betIdnumberИдентификатор ставки Winline для данного матча
matchIdnumberИдентификатор матча Лиги ВТБ
matchStatusstring"scheduled" или "in_progress"
leaguestringИдентификатор лиги: "wbc" (WINLINE Basket Cup) или "vtb" (Единая лига ВТБ)
homeTeamIdnumberID команды ВТБ для хозяев
homeTeamNameobjectЛокализованное название команды хозяев с ключами ru и en
homeTeamLogostringURL логотипа команды хозяев
awayTeamIdnumberID команды ВТБ для гостей
awayTeamNameobjectЛокализованное название команды гостей с ключами ru и en
awayTeamLogostringURL логотипа команды гостей
homeWinnumber | nullКоэффициент на победу хозяев
awayWinnumber | nullКоэффициент на победу гостей
spreadHomeValuenumber | nullЗначение форы для хозяев (напр. -3.5)
spreadHomeOddsnumber | nullКоэффициент на фору хозяев
spreadAwayValuenumber | nullЗначение форы для гостей (напр. +3.5)
spreadAwayOddsnumber | nullКоэффициент на фору гостей
totalOverValuenumber | nullЗначение линии тотала (напр. 165.5)
totalOverOddsnumber | nullКоэффициент на тотал больше
totalUnderValuenumber | nullЗначение линии тотала (то же, что и больше)
totalUnderOddsnumber | nullКоэффициент на тотал меньше
displayHomenumber | nullОсновной отображаемый коэффициент для хозяев (каскадный)
displayHomeLabelobjectЛокализованная метка с ключами ru и en
displayAwaynumber | nullОсновной отображаемый коэффициент для гостей (каскадный)
displayAwayLabelobjectЛокализованная метка с ключами ru и en
totalHomenumber | nullДополнительный: коэффициент тотала больше
totalHomeLabelobjectЛокализованная метка для тотала больше
totalAwaynumber | nullДополнительный: коэффициент тотала меньше
totalAwayLabelobjectЛокализованная метка для тотала меньше
urlstring | nullСсылка на страницу матча на Winline (null, если недоступна)

Каскад отображаемых полей

Поля displayHome/displayAway показывают наиболее релевантную пару коэффициентов, выбранную по приоритету:

  1. 1. Исход (homeWin / awayWin) — Метки: П1 / П2 (1 / 2). Оба коэффициента должны быть ≥ 1.1.
  2. 2. Фора (spreadHomeOdds / spreadAwayOdds) — Метки: Ф1(значение) / Ф2(значение) (H1 / H2)
  3. 3. Тотал (totalOverOdds / totalUnderOdds) — Метки: ТБ(значение) / ТМ(значение) (TO / TU)
  4. 4. Нет данных — Значения null, метки — пустые строки

Пример ответа

[
  {
    "betId": 1234567,
    "matchId": 98765,
    "matchStatus": "scheduled",
    "league": "vtb",
    "homeTeamId": 101,
    "homeTeamName": { "ru": "ЦСКА", "en": "CSKA" },
    "homeTeamLogo": "https://vtb-league.com/media/logos/cska.png",
    "awayTeamId": 202,
    "awayTeamName": { "ru": "Зенит", "en": "Zenit" },
    "awayTeamLogo": "https://vtb-league.com/media/logos/zenit.png",
    "homeWin": 1.45,
    "awayWin": 2.80,
    "spreadHomeValue": -5.5,
    "spreadHomeOdds": 1.90,
    "spreadAwayValue": 5.5,
    "spreadAwayOdds": 1.90,
    "totalOverValue": 165.5,
    "totalOverOdds": 1.85,
    "totalUnderValue": 165.5,
    "totalUnderOdds": 1.95,
    "displayHome": 1.45,
    "displayHomeLabel": { "ru": "П1", "en": "1" },
    "displayAway": 2.80,
    "displayAwayLabel": { "ru": "П2", "en": "2" },
    "totalHome": 1.85,
    "totalHomeLabel": { "ru": "ТБ(165.5)", "en": "TO(165.5)" },
    "totalAway": 1.95,
    "totalAwayLabel": { "ru": "ТМ(165.5)", "en": "TU(165.5)" },
    "url": "https://winline.ru/match/1234567"
  }
]

Один матч

GET /v1/odds/games/:matchId

Возвращает один JSON-объект с коэффициентами для конкретного матча. Если матч не найден, возвращает HTTP 404.

Параметры пути

Параметр Тип Описание
matchIdnumberОбязательный. Идентификатор матча Лиги ВТБ (поле matchId из ответа /v1/odds).

Параметры запроса

Параметр Тип Описание
langstringНеобязательный. Значения: ru или en. Работает так же, как в /v1/odds.

Ответ

Content-Type: application/json

Возвращает один объект матча (не массив). Поля ответа идентичны элементу массива из /v1/odds.

Пример запроса

GET /v1/odds/games/98765?lang=ru

Пример ответа (200)

{
  "betId": 1234567,
  "matchId": 98765,
  "matchStatus": "scheduled",
  "league": "vtb",
  "homeTeamName": "ЦСКА",
  "awayTeamName": "Зенит",
  "homeWin": 1.45,
  "awayWin": 2.80,
  "displayHome": 1.45,
  "displayHomeLabel": "П1",
  "displayAway": 2.80,
  "displayAwayLabel": "П2",
  ...
}

Ответ при ошибке (404)

{
  "error": "Match not found"
}

Проверка состояния

GET /health

Возвращает статус работоспособности сервиса. Полезно для мониторинга и проверки деплоя.

{
  "status": "ok"
}

Сценарии ошибок

Сценарий Поведение
API ВТБ недоступенПредыдущий кеш матчей сохраняется. Коэффициенты продолжают отдаваться из последнего успешного запроса.
API Winline недоступенПредыдущий кеш коэффициентов сохраняется. Матчи отдаются с последними известными коэффициентами.
Оба API недоступныСервис продолжает возвращать закешированные данные, пока кеш не устареет.
Матчи не найденыВозвращается пустой массив [] с HTTP 200.
Матч не найден по ID/v1/odds/games/:matchId возвращает HTTP 404 с { "error": "Match not found" }.
Матч без коэффициентов WinlineМатч включается в ответ со всеми полями коэффициентов, установленными в null.
Одна из лиг ВТБ не отвечаетМатчи другой лиги по-прежнему возвращаются (мягкая деградация).
Примечание: Сервис никогда не возвращает HTTP-коды ошибок при сбоях источников данных. Он всегда возвращает 200 с лучшими доступными закешированными данными.

Источники данных и интервалы обновления

API Лиги ВТБ
60с
Информация о матчах, команды, статус
Winline Прематч
30с
Коэффициенты до начала игры
Winline Лайв
Коэффициенты в реальном времени (приоритет)

Поток данных

Сервис объединяет данные из трёх независимо опрашиваемых источников:

Когда для матча существуют и прематч, и лайв-коэффициенты, лайв-коэффициенты имеют приоритет. Матчи с лайв-коэффициентами отображаются первыми в массиве ответа.

CORS

Все эндпоинты возвращают заголовок Access-Control-Allow-Origin: *, разрешая запросы с любого источника.