Tennis — особенности данных
Теннис добавляет к Match отдельный объект tennis: TennisData и расширяет Score полями period1TieBreak–period5TieBreak и point. Точно так же работает таблица и для тенниса, и для настольного тенниса (см. Table Tennis), но tennis объект — только в большом теннисе.
Поля под теннис — в интерактивном дереве ниже. Вкладка Match — общая структура матча (поле tennis подсвечено), вкладка TennisData — детальная структура теннисного объекта (sets, momentum, pointByPoint). Источник — спека, авто-синхронизация; блоки кода иллюстративны.
Sport Schema Explorer
Выберите вид спорта — поля, специфичные для него, подсветятся и раскроются; неприменимые приглушатся. Поля без бейджей — общие для всех видов спорта.
MatchidintegerstatusstringstatusDescriptionstringnullabledateEventstringstartTimestampintegercurrentMatchMinuteintegercurrentMatchSecondintegerovertimeLengthintegertournamentTournamentBriefidintegernamestringtranslationsobjectimagestringcategoryCategoryBriefidintegernamestringtranslationsobjectimagestringroundInfoRoundInfonamestringroundintegerseasonSeasonBriefidintegernamestringyearstringvenueVenueidintegernullablenamestringnullabletranslationsobjectcapacityintegernullablecityobjectcountryobjectrefereeRefereeФутболidintegernullablenamestringyellowCardsintegerredCardsintegeryellowRedCardsintegergamesintegercountryobjecttranslationsobjecthomeTeamTeamWithLineupidintegernullablenamestringnullablefullNamestringnullabletranslationsobjectgenderstringnullablecountrystringnullablemanagerManagernullableimagestringlineupLineupnullableФутболХоккейБаскетболВолейболawayTeamTeamWithLineupidintegernullablenamestringnullablefullNamestringnullabletranslationsobjectgenderstringnullablecountrystringnullablemanagerManagernullableimagestringlineupLineupnullableФутболХоккейБаскетболВолейболhomeScoreScorecurrentintegerperiod1integerperiod2integerperiod3integernullableperiod4integernullableperiod5integernullableperiod6integernullableБаскетболНастольный теннисperiod7integernullableБаскетболНастольный теннисperiod1TieBreakintegernullableТеннисperiod2TieBreakintegernullableТеннисperiod3TieBreakintegernullableТеннисperiod4TieBreakintegernullableТеннисperiod5TieBreakintegernullableТеннисpenaltiesintegernullableФутболХоккейdisplaystringnullablepointstringnullableТеннисawayScoreScorecurrentintegerperiod1integerperiod2integerperiod3integernullableperiod4integernullableperiod5integernullableperiod6integernullableБаскетболНастольный теннисperiod7integernullableБаскетболНастольный теннисperiod1TieBreakintegernullableТеннисperiod2TieBreakintegernullableТеннисperiod3TieBreakintegernullableТеннисperiod4TieBreakintegernullableТеннисperiod5TieBreakintegernullableТеннисpenaltiesintegernullableФутболХоккейdisplaystringnullablepointstringnullableТеннисliveEventsLiveEvent[]ФутболХоккейБаскетболВолейболНастольный теннисtimeintegertimeSecondsintegertypestringclassstringteamstringplayerobjectplayerInobjectplayerOutobjectreasonstringfromstringhomeScoreintegerawayScoreintegerperiodintegernullabledescriptionstringplayerNamestringassist1Namestringassist2NamestringmanagerobjectrescindedbooleanplayerInNamestringplayerOutNamestringinjurybooleansequenceintegernullableconfirmedbooleannullableaddedTimeintegerlengthintegernullabletextstringisLivebooleanmatchStatisticsobject[]oddsBaseOddsMarket[]namestringgroupstringperiodstringisLivebooleansuspendedbooleanchoicesOddsChoice[]highlightsHighlight[]titlestringurlstringimagestringesportsEsportsDatanullableКиберспортbestOfintegernullablegamesEsportsGame[]tennisTennisDatanullableТеннисbestOfintegernullablegroundTypestringnullablefirstToServestringnullablehomePlayerSeedstringnullableawayPlayerSeedstringnullablesetsTennisSet[]nullablemomentumTennisMomentumItem[]nullablepointByPointTennisPointByPointSet[]nullablehasBkOddsobjectmelbetbooleanoddsBkBookmakerOddsnullablemelbetBookmakerOddsDataScore
homeScore: {
current: 3, // выигранные сеты
period1: 6, period2: 4, // геймы по сетам
period3: 7, period4: 5,
period5: 7,
period3TieBreak: 7, // очки тайбрейка (только если сет завершился тайбрейком)
period5TieBreak: 10,
point: "30", // текущий счёт в гейме live-матча
display: "3 (6-4, 4-6, 7-6, 5-7, 7-6)"
}
Score.point возможные значения live: "0", "15", "30", "40", "A" (преимущество). В тайбрейке Score.point отражает число очков (как "5", "6", и т. д.) либо может отсутствовать — реальный счёт тайбрейка лежит в periodNTieBreak.
Match.tennis: TennisData
tennis: {
bestOf: 5, // 3 или 5 (Grand Slam = 5)
groundType: "Clay", // "Hardcourt outdoor" | "Hardcourt indoor" | "Clay" | "Grass"
firstToServe: "home", // "home" | "away"
homePlayerSeed: 1, // посев игроков на турнире
awayPlayerSeed: 2,
sets: TennisSet[],
momentum: TennisMomentumItem[],
pointByPoint: TennisPointByPointSet[]? // только в /matches/{matchId}
}
tennis.sets[]
По каждому сыгранному / текущему сету:
{
setNumber: 3,
homeGames: 7,
awayGames: 6,
winner: "home", // null если сет ещё идёт
durationSeconds: 4140,
tiebreak: { homePoints: 7, awayPoints: 4 } // null если без тайбрейка
}
tennis.momentum[]
Momentum-график по геймам — удобно для линейной диаграммы доминирования:
{
set: 2,
game: 5,
value: -48, // -100..+100; знак указывает, кто доминирует
breakOccurred: true // в этом гейме был брейк подачи
}
tennis.pointByPoint[]
⚠️ Только в /v2/tennis/matches/{matchId}. В списке /v2/tennis/matches поле опускается полностью.
[
{
set: 1,
games: [
{
game: 1,
isTiebreak: false,
score: { homeGames: 0, awayGames: 0, serving: "home", wonBy: "home" },
points: [
{ homePoint: "0", awayPoint: "0", description: "normal",
homePointType: "winner", awayPointType: null },
{ homePoint: "15", awayPoint: "0", description: "ace",
homePointType: "ace", awayPointType: null },
{ homePoint: "30", awayPoint: "0", description: "normal",
homePointType: "winner", awayPointType: null },
// ...
]
}
]
}
]
Возможные значения description: normal, ace, doubleFault.
Возможные значения homePointType / awayPointType: winner, doubleFault, ace, loser, error.
Что в homeTeam / awayTeam
Теннис — индивидуальный спорт, но в API используется тот же TeamWithLineup-объект:
name/fullName/translation.ru(у команд — единственное числоtranslation) — имя теннисиста.country— страна игрока.lineup— обычно пустой / отсутствует (нет состава).manager— обычно отсутствует.
Live-данные через WebSocket
При subscribe на match:tennis:<matchId> приходят match_snapshot (с полной структурой, включая pointByPoint) и match_delta. В changes.added / changes.updated чаще всего:
- Новые элементы
tennis.sets[N](по мере завершения сета). - Новые точки
tennis.momentum[N]. - Новые розыгрыши в
tennis.pointByPoint[N].games[N].points[N]. homeScore.point/awayScore.point(живой счёт гейма).homeScore.periodN/awayScore.periodN.matchStatisticsгруппыPoints(см. пример из WebSocket → Snapshot vs Delta).
Букмекерские коэффициенты
Melbet поддерживает теннис, но рынки уже футбольных: 1×2 (без ничьей), хендикап по сетам/геймам, тотал геймов. Параметры with_bk_odds=true / bookmaker_ids=melbet работают как для остальных видов.
Связанные ссылки
- API Reference — выберите
sportSlug=tennisв каждой operation - Concepts → Matches
- WebSocket → Snapshot vs Delta