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

Лицензия сервера корта

Подписанная лицензия для машины сервера корта клуба. Доступ — клубный токен.

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

Выдать лицензию серверу корта клуба #

POST/v1/license/court

Доступ: Клубный токен Заголовок X-Club-Token: <клубный токен> — токен сервера корта клуба.

Подписанная лицензия для машины сервера корта на 30 дней. Подпись Ed25519 ставится на байты JSON, которые приходят в payload строкой base64; сервер корта проверяет её вшитым открытым ключом. Машина учитывается в облаке до проверки отзыва, поэтому администратор клуба видит все машины, обращавшиеся с токеном клуба. В лицензии — модули клуба по кортам и ключи дней для офлайн-проверки пропусков игроков.

Заголовки

ИмяТипОбязательноОписание
x-club-tokenстрокадаКлубный токен сервера корта

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

ПолеТипОбязательноОписание
fingerprintстрокадаОтпечаток машины: sha256 в 64 шестнадцатеричных символах
шаблон ^[0-9a-f]{64}$
versionстроканетВерсия программы сервера корта
длина до 40

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

curl -X POST "https://адрес-вашего-сервера/api/v1/license/court" \
  -H "X-Club-Token: <клубный токен>" \
  -H "Content-Type: application/json" \
  -d '{"fingerprint": "<64 hex>", "version": "1.2137"}'

Ответы

КодdetailЗначение
200—Успешный ответ; пример ниже
401bad_club_tokenНеверный клубный токен
403fingerprint_revokedОтпечаток машины отозван администратором клуба
503license_key_not_configuredКлюч подписи лицензий в облаке не настроен
503license_key_invalidКлюч подписи лицензий не читается
422[…]Ошибка проверки параметров или тела: detail — список ошибок

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

{
  "alg": "Ed25519",
  "payload": "<base64>",
  "signature": "<base64>",
  "license": {
    "v": 2,
    "club_id": "c1",
    "fingerprint": "<sha256 машины>",
    "issued_at": 1759400000,
    "expires_at": 1761992000,
    "features": ["<модуль>"],
    "modules": {"<модуль>": ["<корт>"]},
    "courts": 2,
    "pass_keys": {"2026-10-02": "<ключ дня>"}
  }
}