AI ПаделДокументация API На сайт

Матчи

Матчи игрока, карточка матча с хайлайтами, ручной ввод и исправление счёта, отметка розыгрыша. Доступ — токен игрока.

Базовый адрес: https://адрес-вашего-сервера/api · Руководство по разделу: Трансляции и повторы

Мои матчи #

GET/v1/matches/my

Доступ: Токен игрока Заголовок Authorization: Bearer <токен игрока> — токен по SMS-входу.

Последние 50 матчей игрока в формате карточки, без сеток движения. Счёт всегда «мой : соперников».

Заголовки

ИмяТипОбязательноОписание
AuthorizationстрокадаBearer <токен игрока>

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

curl -X GET "https://адрес-вашего-сервера/api/v1/matches/my" \
  -H "Authorization: Bearer <токен игрока>"

Ответы

КодdetailЗначение
200—Успешный ответ; пример ниже
401no_tokenНет токена в заголовке Authorization
401invalid_tokenТокен просрочен или подделан — обновите его через /v1/auth/refresh

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

{
  "items": [
    {
      "id": "8c0f4a52-2d1e-4b7a-9f63-1a5e7d9b3c20",
      "clubId": "c1",
      "club": "Флэйм Падел",
      "date": "Чт 02.10",
      "time": "18:00",
      "teammates": "Вы + Олег",
      "opponents": "Анна + Мария",
      "upcoming": false,
      "sets": [{"a": 6, "b": 4}, {"a": 3, "b": 6}, {"a": 7, "b": 5}],
      "won": true,
      "verified": true,
      "ratingDelta": 12,
      "voided": false,
      "voidReason": "",
      "ai": null,
      "moments": [],
      "verticals": [],
      "movement": null
    }
  ]
}

Карточка матча #

GET/v1/matches/{match_id}

Доступ: Токен игрока Заголовок Authorization: Bearer <токен игрока> — токен по SMS-входу.

Полная карточка матча: счёт, AI-статистика, хайлайты по моментам с ракурсами и вертикальными копиями, движение. Только для участников матча, остальным — 404. Ссылки на видео подписываются на каждый запрос и живут минуты; пустой url значит, что видео ещё едет в хранилище (ready=false).

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

ИмяТипОбязательноОписание
match_idстрока (uuid)даИдентификатор матча

Заголовки

ИмяТипОбязательноОписание
AuthorizationстрокадаBearer <токен игрока>

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

curl -X GET "https://адрес-вашего-сервера/api/v1/matches/8c0f4a52-2d1e-4b7a-9f63-1a5e7d9b3c20" \
  -H "Authorization: Bearer <токен игрока>"

Ответы

КодdetailЗначение
200—Успешный ответ
401no_tokenНет токена в заголовке Authorization
401invalid_tokenТокен просрочен или подделан — обновите его через /v1/auth/refresh
404match_not_foundМатч не найден, чужого клуба или вы не участник
422[…]Ошибка проверки параметров или тела: detail — список ошибок

Ручной ввод счёта #

POST/v1/matches/manual

Доступ: Токен игрока Заголовок Authorization: Bearer <токен игрока> — токен по SMS-входу.

Игрок вводит счёт матча сам. Автор должен быть участником; нужны игроки обеих команд. Такой матч весит в рейтинге вдвое меньше и не отмечается как подтверждённый камерами.

Заголовки

ИмяТипОбязательноОписание
AuthorizationстрокадаBearer <токен игрока>

Тело запроса application/json

ПолеТипОбязательноОписание
club_idстрокадаКлуб
dayстрокадаДата YYYY-MM-DD
timeстрокадаВремя HH:MM
setsстрокадаСчёт по сетам «команда1:команда2» через запятую
шаблон ^\d+:\d+(,\d+:\d+)*$
playersмассив [объект]даСостав: 2–4 игрока, автор среди них
элементов от 2; элементов до 4
players[].user_idстрока (uuid)даИгрок
players[].teamцелоедаКоманда: 1 или 2
не меньше 1; не больше 2

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

curl -X POST "https://адрес-вашего-сервера/api/v1/matches/manual" \
  -H "Authorization: Bearer <токен игрока>" \
  -H "Content-Type: application/json" \
  -d '{
  "club_id": "c1",
  "day": "2026-10-02",
  "time": "18:00",
  "sets": "6:4,6:3",
  "players": [
    {"user_id": "3d6e9a10-5b2c-4f8e-a1d7-6c4b2e0f9a83", "team": 1},
    {"user_id": "a52e7c14-90bd-4e3f-8c61-7d2f0b9e4a15", "team": 2}
  ]
}'

Ответы

КодdetailЗначение
200—Успешный ответ; пример ниже
401no_tokenНет токена в заголовке Authorization
401invalid_tokenТокен просрочен или подделан — обновите его через /v1/auth/refresh
404club_not_foundКлуб не найден
403author_must_playАвтор должен быть участником матча
400both_teams_requiredНужны игроки обеих команд
400bad_day_or_timeНеверная дата или время (YYYY-MM-DD и HH:MM)
400draw_not_allowedНичья по сетам не допускается
404player_not_found: …Игрок не найден (в тексте — его идентификатор или телефон)
422[…]Ошибка проверки параметров или тела: detail — список ошибок

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

{
  "matchId": "8c0f4a52-2d1e-4b7a-9f63-1a5e7d9b3c20",
  "winnerTeam": 1,
  "ratingDeltas": {
    "3d6e9a10-5b2c-4f8e-a1d7-6c4b2e0f9a83": 6,
    "a52e7c14-90bd-4e3f-8c61-7d2f0b9e4a15": -6
  }
}

Судья исправляет счёт #

POST/v1/matches/{match_id}/score-correction

Доступ: Учётка панели клуба Заголовок Authorization: Bearer <токен> учётки с ролью судьи, администратора или владельца; клуб матча должен совпадать с клубом учётки.

Судья, администратор клуба или владелец сети исправляет счёт: прежние изменения рейтинга откатываются, новые применяются. Клуб матча должен совпадать с клубом учётки (кроме владельца сети).

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

ИмяТипОбязательноОписание
match_idстрока (uuid)даИдентификатор матча

Заголовки

ИмяТипОбязательноОписание
AuthorizationстрокадаBearer <токен учётки персонала>

Тело запроса application/json

ПолеТипОбязательноОписание
setsстрокадаИсправленный счёт по сетам
шаблон ^\d+:\d+(,\d+:\d+)*$

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

curl -X POST "https://адрес-вашего-сервера/api/v1/matches/8c0f4a52-2d1e-4b7a-9f63-1a5e7d9b3c20/score-correction" \
  -H "Authorization: Bearer <токен учётки персонала>" \
  -H "Content-Type: application/json" \
  -d '{"sets": "4:6,6:3,5:7"}'

Ответы

КодdetailЗначение
200—Успешный ответ; пример ниже
401no_tokenНет токена в заголовке Authorization
401invalid_tokenТокен просрочен или подделан — обновите его через /v1/auth/refresh
403role_required: …Нет нужной роли (в тексте — список ролей)
403staff_club_not_setУ учётки не задан клуб
403other_clubМатч другого клуба
404match_not_foundМатч не найден, чужого клуба или вы не участник
400draw_not_allowedНичья по сетам не допускается
422[…]Ошибка проверки параметров или тела: detail — список ошибок

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

{
  "ok": true,
  "winnerTeam": 2,
  "ratingDeltas": {
    "3d6e9a10-5b2c-4f8e-a1d7-6c4b2e0f9a83": -11,
    "a52e7c14-90bd-4e3f-8c61-7d2f0b9e4a15": 11
  }
}

Отметить розыгрыш для нарезки #

POST/v1/matches/mark

Доступ: Токен игрока Заголовок Authorization: Bearer <токен игрока> — токен по SMS-входу.

Игрок отмечает только что сыгранный розыгрыш для нарезки. Корт берётся из идущей брони игрока (±15 минут); без брони нужно указать club_id и court. Отметка уходит на сервер корта в ответе на его отчёт о здоровье.

Заголовки

ИмяТипОбязательноОписание
AuthorizationстрокадаBearer <токен игрока>

Тело запроса application/json

ПолеТипОбязательноОписание
club_idстрока, или nullнетКлуб — если нет идущей брони
courtстрока, или nullнетКорт — если нет идущей брони

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

curl -X POST "https://адрес-вашего-сервера/api/v1/matches/mark" \
  -H "Authorization: Bearer <токен игрока>" \
  -H "Content-Type: application/json" \
  -d '{}'

Ответы

КодdetailЗначение
200—Успешный ответ; пример ниже
401no_tokenНет токена в заголовке Authorization
401invalid_tokenТокен просрочен или подделан — обновите его через /v1/auth/refresh
409no_active_bookingНет идущей брони и не указан корт
404club_not_foundКлуб не найден
422[…]Ошибка проверки параметров или тела: detail — список ошибок

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

{"ok": true, "id": "0d4e8f21-6a3b-4c7d-9e1f-2a5b8c0d3e47", "court": "Корт 4"}

Текстовый разбор матча #

GET/v1/matches/{match_id}/review

Доступ: Токен игрока Заголовок Authorization: Bearer <токен игрока> — токен по SMS-входу.

Текстовый AI-разбор игры для участника. status: ready (text заполнен), no_data (нет статистики), disabled (разбор выключен), failed (не получился).

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

ИмяТипОбязательноОписание
match_idстрока (uuid)даИдентификатор матча

Заголовки

ИмяТипОбязательноОписание
AuthorizationстрокадаBearer <токен игрока>

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

curl -X GET "https://адрес-вашего-сервера/api/v1/matches/8c0f4a52-2d1e-4b7a-9f63-1a5e7d9b3c20/review" \
  -H "Authorization: Bearer <токен игрока>"

Ответы

КодdetailЗначение
200—Успешный ответ; пример ниже
401no_tokenНет токена в заголовке Authorization
401invalid_tokenТокен просрочен или подделан — обновите его через /v1/auth/refresh
404match_not_foundМатч не найден, чужого клуба или вы не участник
422[…]Ошибка проверки параметров или тела: detail — список ошибок

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

{"status": "ready", "text": "Вы чаще выигрывали розыгрыши у сетки…", "cached": true}

Ссылка на клип для публикации #

POST/v1/matches/{match_id}/clips/{clip_id}/share

Доступ: Токен игрока Заголовок Authorization: Bearer <токен игрока> — токен по SMS-входу.

Участник матча получает публичную ссылку на страницу клипа (с превью для соцсетей).

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

ИмяТипОбязательноОписание
match_idстрока (uuid)даИдентификатор матча
clip_idстрока (uuid)даИдентификатор клипа

Заголовки

ИмяТипОбязательноОписание
AuthorizationстрокадаBearer <токен игрока>

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

curl -X POST "https://адрес-вашего-сервера/api/v1/matches/8c0f4a52-2d1e-4b7a-9f63-1a5e7d9b3c20/clips/f0c3a8e1-4d27-4b96-a5e3-9c18d2b7f604/share" \
  -H "Authorization: Bearer <токен игрока>"

Ответы

КодdetailЗначение
200—Успешный ответ; пример ниже
401no_tokenНет токена в заголовке Authorization
401invalid_tokenТокен просрочен или подделан — обновите его через /v1/auth/refresh
404match_not_foundМатч не найден, чужого клуба или вы не участник
404clip_not_foundКлип не найден в этом матче
422[…]Ошибка проверки параметров или тела: detail — список ошибок

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

{"url": "https://адрес-вашего-сервера/card/clip/<токен>", "title": "Момент матча"}