Software Licenses Manager API - Overview
This API adds license codes to any software (desktop app, plugin, add-on, web service, game). It lets publishers create licenses, activate them on a device, deactivate, and administer everything easily — for their own product, isolated from every other publisher on the platform.
Technology & authorship
- Built in Python with FastAPI and PostgreSQL.
- Designed and maintained by XP-Flightdeck.
Three actors, not two
- Platform (us) — provisions publisher accounts, each with its own
X-Client-Token/X-Admin-Token, generated once and never stored in clear. - Publisher (game studio, SaaS, software vendor) — integrates the API into their own product, manages their own licenses via
/admin/*. One publisher's admin token can never see another publisher's data. - End user — the publisher's own customer. They never talk to this API directly: they receive a license key from the publisher and type it into the publisher's software, which calls
/activateon their behalf.
Who's it for, in priority order: 1. Game publishers (games, plugins, DLC, mods, assets) 2. SaaS publishers (web apps & cloud services) 3. Software publishers (desktop & on-premise)
What it’s for
- Protect premium features: only end users with a valid license can unlock them.
- Per-device limits: a publisher decides how many machines one of their user's licenses can run on.
- Pause / resume: temporarily disable a license and turn it back on later.
- Visibility: list licenses, see active devices, and key dates — scoped to your own publisher account.
- Security: activation responses are digitally signed (Ed25519, rotatable) to prevent tampering;
/activateis rate-limited per end user, not just per publisher.
Capabilities
0) Publisher provisioning (Platform)
The platform operator creates a publisher account, which receives a client_token and admin_token once. Everything below is scoped to that publisher.
1) License creation (Admin)
Generate unique keys with attributes (product/edition, activation quota per end user, feature flags).
Great for onboarding, bundles, trials, and replacements.
2) App-side activation
On first run, the publisher's app sends its end user's email, license key, and a device identifier.
The API validates and returns a signed token the app can keep as proof.
3) Device deactivation
When the end user changes machine, free a device slot to reuse the license elsewhere.
Can be triggered by the app or an admin.
4) Admin management & reporting
Search and list licenses (email, product, edition, status), paginated.
See active devices and activation history for support/compliance — and an append-only audit log of every admin action.
5) Enable / disable a license
Temporarily suspend a license (refund, abuse) or re-enable it.
Effect is immediate—no device changes needed.
6) Service health & key verification
A health endpoint confirms the API is responding. GET /public-keys exposes every signing key (active + retired) so tokens keep verifying across a key rotation.
Typical scenarios
- Desktop app / plugin with “Pro” features.
- Subscriptions with a limited number of devices (e.g., 2 machines).
- Trials (time-limited + activation quota).
Functionalities Integration
- Get provisioned as a publisher (platform operator creates your account).
- Create a license for your end user (admin tool or script).
- Activate on first run of your app.
- Store the signed token in the app.
- Deactivate the old device when your end user migrates.
Technical details (examples, formats) live in the Quick Guide and API Reference pages.