AI PadelAPI documentation Back to site

Court server license

Signed license for a club court server machine. Access: the club token.

Base URL: https://your-server/api · Guide for this section: Court server and cloud

Issue a court server license #

POST/v1/license/court

Access: Club token Header X-Club-Token: <club token> — the club court server token.

A signed 30-day license for a court server machine. The Ed25519 signature covers the JSON bytes sent base64-encoded in payload; the court server verifies it with an embedded public key. The machine is recorded in the cloud before the revocation check, so the club admin sees every machine that called with the club token. The license carries the club modules per court and day keys for offline player pass checks.

Headers

NameTypeRequiredDescription
x-club-tokenstringyesCourt server club token

Request body application/json

FieldTypeRequiredDescription
fingerprintstringyesMachine fingerprint: sha256 as 64 hex characters
pattern ^[0-9a-f]{64}$
versionstringnoCourt server software version
length up to 40

Example request

curl -X POST "https://your-server/api/v1/license/court" \
  -H "X-Club-Token: <club token>" \
  -H "Content-Type: application/json" \
  -d '{"fingerprint": "<64 hex>", "version": "1.2137"}'

Responses

CodedetailMeaning
200—Success; example below
401bad_club_tokenInvalid club token
403fingerprint_revokedThe machine fingerprint was revoked by the club admin
503license_key_not_configuredThe license signing key is not configured in the cloud
503license_key_invalidThe license signing key cannot be read
422[…]Parameter or body validation error: detail is a list of errors

Example response

{
  "alg": "Ed25519",
  "payload": "<base64>",
  "signature": "<base64>",
  "license": {
    "v": 2,
    "club_id": "c1",
    "fingerprint": "<machine sha256>",
    "issued_at": 1759400000,
    "expires_at": 1761992000,
    "features": ["<module>"],
    "modules": {"<module>": ["<court>"]},
    "courts": 2,
    "pass_keys": {"2026-10-02": "<day key>"}
  }
}