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.created | Steam lobby готов (без пароля в payload) |
match.live | GSI или судья перевёл в 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"
}
}
Коды ошибок
| HTTP | code | Смысл |
|---|---|---|
| 401 | unauthorized | Нет или неверный token |
| 403 | forbidden | Недостаточно scope/роли |
| 409 | match_locked | Матч уже завершён |
| 429 | rate_limited | См. заголовок Retry-After |
| 503 | steam_unavailable | Бот отключён, повторите позже |
Лимиты
По умолчанию: 600 запросов/мин на token, burst 60. Webhook delivery — 5 попыток с exponential backoff. Idempotency-Key поддерживается для POST regenerate lobby.
OpenAPI 3.1 спецификация публикуется на
/api/v2/openapi.json после установки (см. Установка).