Раздел: API · v2.0
Версия 2.0 1.4
Tura Arena

API и webhooks v2.0

Базовый URL: https://your-domain/api/v2. Все ответы — JSON; время в ISO 8601 UTC. В v1.4 доступен только legacy /api/v1 без webhooks v2.

Аутентификация

Personal access token создаётся в админке (Owner). Передавайте заголовок:

Authorization: Bearer tura_live_xxxxxxxx
Accept: application/json

OAuth2 authorization code flow поддерживается для сторонних приложений (overlay, bot). Scopes: read:matches, write:matches (только Referee), read:bracket.

Основные эндпоинты

МетодПутьОписание
GET/meТекущий пользователь и роли
GET/tournaments/{id}Метаданные турнира и стадии
GET/tournaments/{id}/bracketПолная сетка и слоты
GET/matches/{id}Матч, счёт, lobby, GSI snapshot
PATCH/matches/{id}/resultФиксация результата (Referee)
POST/matches/{id}/lobby/regenerateНовый lobby (Referee)

Webhooks

Подписка в админке: URL, secret, список событий. Тело подписывается заголовком X-Tura-Signature: sha256=....

СобытиеКогда
match.scheduledСлот получил время и команд
lobby.createdSteam lobby готов (без пароля в payload)
match.liveGSI или судья перевёл в live
match.finishedСерия завершена, сетка обновлена
bracket.updatedЛюбое изменение структуры сетки
{
  "id": "evt_01JABC",
  "type": "match.finished",
  "created_at": "2026-10-05T06:51:00Z",
  "data": {
    "match_id": "m_8841",
    "winner_team_id": "t_12",
    "score": "2-1"
  }
}

Коды ошибок

HTTPcodeСмысл
401unauthorizedНет или неверный token
403forbiddenНедостаточно scope/роли
409match_lockedМатч уже завершён
429rate_limitedСм. заголовок Retry-After
503steam_unavailableБот отключён, повторите позже

Лимиты

По умолчанию: 600 запросов/мин на token, burst 60. Webhook delivery — 5 попыток с exponential backoff. Idempotency-Key поддерживается для POST regenerate lobby.

OpenAPI 3.1 спецификация публикуется на /api/v2/openapi.json после установки (см. Установка).