Лицензия сервера корта
Подписанная лицензия для машины сервера корта клуба. Доступ — клубный токен.
Выдать лицензию серверу корта клуба #
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 | — | Успешный ответ; пример ниже |
| 401 | bad_club_token | Неверный клубный токен |
| 403 | fingerprint_revoked | Отпечаток машины отозван администратором клуба |
| 503 | license_key_not_configured | Ключ подписи лицензий в облаке не настроен |
| 503 | license_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": "<ключ дня>"}
}
}