🔑 Issue licenses
A key is shown once, right here. Only a salted PBKDF2 hash is stored — it cannot be recovered later.
Copy `these now — they will not be shown again:
📋 Licenses
—
| Key | Plan | Customer | Seats | Expires | Status | Created |
|---|
🧾 Audit log
Every issue / activation / validation / admin change, newest first.
| When | Action | Result | Key | IP | Detail |
|---|
🔌 Add-on integration
Point the client at these endpoints. POST JSON, and store the returned token for offline checks.
POST https://license.theguardiansstudio.com/api/license/activate { "key": "GUAR-…", "fingerprint": "<machine id>", "label": "Workstation" }
POST https://license.theguardiansstudio.com/api/license/validate { "key": "GUAR-…", "fingerprint": "<machine id>" }
POST https://license.theguardiansstudio.com/api/license/deactivate { "key": "GUAR-…", "fingerprint": "<machine id>" }
POST https://license.theguardiansstudio.com/api/license/token/verify { "token": "<signed token>" } ← offline check
success → { "ok": true, "license": { … }, "token": "<signed>" }
failure → { "ok": false, "code": "SEAT_LIMIT" | "EXPIRED" | "REVOKED" | "UNKNOWN_KEY" | … }