Licensing Console
The Licensing section of the Admin Console lets you create policies, issue and manage keys, configure automation, and monitor usage — all without writing code.
Access it from the sidebar: Licensing → Policies | Keys | Floating Seats | Devices | Usage | Audit Log | Automation.
Policies
Policies define the rules for a license: what features are included, how many seats/devices are allowed, when it expires, and how validation works.
Creating a Policy
- Go to Licensing → Policies and click New Policy
- Step 1 — Enter a name (e.g. “Pro Plan”) and slug (e.g.
pro-plan) - Step 2 — Configure dimensions:
- Key Format — Customize the prefix, charset, segment count/length, and separator. A live preview shows the generated format (e.g.
VIG-XXXX-XXXX-XXXX-XXXX) - Seats — Enable to limit concurrent users. Set a default max
- Devices — Enable to limit activated devices. Set a default max
- Features — Enable to define a set of feature flags (e.g.
analytics, export, api-access) - Expiry — Enable to set a default expiry in days
- Key Format — Customize the prefix, charset, segment count/length, and separator. A live preview shows the generated format (e.g.
- Step 3 — Choose validation mode:
- Online — Every validation hits the API (best for SaaS)
- Hybrid — Online first, JWT fallback offline (best for desktop)
- Offline — JWT-only, no network needed (best for air-gapped environments)
Editing a Policy
From the policy list, click the ⋮ menu → Edit. You can change the name, validation mode, dimensions, offline grace period, and revocation TTL.
Viewing Policy Details
Click ⋮ → View to see the full policy detail page, including:
- Status, validation mode, and dimensions summary
- Policy configuration (offline grace, revocation TTL, default seats/devices/expiry)
- Key format preview
- All keys issued under this policy
Keys
Issuing a Key
- Go to Licensing → Keys and click Issue Key
- Select a policy
- Choose the licensee type (
USER,ORG,DEVICE) - Optionally enter a licensee ID and notes
- Click Issue Key
The key is generated using the format defined in the policy (e.g. VIG-A8BC-D3EF-G4HJ-K5LM).
Key List Features
- Search — Filter by key string or licensee ID
- Status filter — Show only Active, Suspended, Expired, or Revoked keys
- Expiry warnings — Keys expiring within 7 days show an amber “Expiring soon” badge
- CSV Export — Download the full key list as CSV
- Pagination — Navigate through large key sets
Key Actions
From the ⋮ menu on each key:
| Action | Description |
|---|---|
| View | Open the key detail page |
| Copy JWT | Copy the offline validation JWT token |
| Reissue | Generate a new key with updated features/seats (old key is revoked) |
| Suspend | Temporarily disable the key (can be reactivated) |
| Revoke | Permanently disable the key |
Key Detail Page
Click View to see the full key detail page with three tabs:
- Entitlements — Licensee info, features, expiry, seats, policy, creation date
- Seats — View assigned users, assign new seats, release seats
- Devices — View activated devices, remove devices
Validation Tester
Click Validate Key on the keys page to open the validation tester. Paste any key to test it against the API — see if it’s valid, and view its features, status, and expiry.
Usage
The Licensing → Usage page shows aggregate statistics:
- KPI cards: Total policies, total keys, active, revoked, suspended, expired
- Policy distribution: How many keys are issued per policy
- Recent keys: The latest issued keys with status badges
Floating Seats
The Licensing → Floating Seats page shows all active floating license leases in real-time.
- Auto-refreshes every 30 seconds
- Columns: User, License Key (masked, linked to key detail), Policy, Assigned At, Lease Expiry, Last Heartbeat
- Lease expiry badges: green (>15 min remaining), amber (<15 min), red (<5 min)
- Force Release button on each row to immediately terminate a floating lease (with confirmation dialog)
- Use this page to monitor concurrent usage and manually release stuck leases
Devices
The Licensing → Devices page shows all activated devices across every license key.
- Search by device name or fingerprint
- Filter by activation method (Online / Offline)
- Columns: Device (name or truncated fingerprint), Fingerprint (monospace), Method (badge), License Key (masked, linked), Policy, Activated At
- Pagination for large device registries
- Cross-key view: see all devices regardless of which key they belong to
Audit Log
The Licensing → Audit Log page shows a chronological history of all licensing events.
- Filter by action type (dropdown with 15 event types)
- Columns: Timestamp, Action (color-coded badge), Resource ID, Status, IP Address
- Expandable metadata rows: click the chevron to reveal the full JSON metadata for each event
- Action badge colors:
- Green:
LICENSE_ACTIVATED,LICENSE_CREATED,LICENSE_SEAT_ASSIGNED,LICENSE_CHECKOUT - Red:
LICENSE_REVOKED,LICENSE_DEACTIVATED,LICENSE_OFFLINE_DEACTIVATED - Amber:
LICENSE_SUSPENDED,LICENSE_REISSUED - Gray: all others (heartbeat, validation, usage)
- Green:
- Pagination (default 50 per page)
Automation
Automation rules connect payment events to license actions. When a customer pays, a key is automatically issued.
Creating a Rule
- Go to Licensing → Automation and click New Rule
- Enter a rule name
- Choose the provider (Stripe, PayPal, or Manual)
- Select the trigger event (e.g.
Checkout Completed) - Select the action (e.g.
Issue Key) - Optionally link a policy (required for
Issue Keyaction)
Supported Providers and Events
| Provider | Events |
|---|---|
| Stripe | Checkout Completed, Invoice Paid, Payment Succeeded |
| PayPal | PayPal Capture Completed |
| Manual | Manual Trigger |
Webhook Setup
For automation to work, you need to configure webhooks in your payment provider:
Stripe:
- Go to Stripe Dashboard → Developers → Webhooks
- Add endpoint:
https://your-auris-domain/api/licensing/webhooks/stripe - Select events:
checkout.session.completed,invoice.paid - Copy the signing secret to
STRIPE_LICENSING_WEBHOOK_SECRET
PayPal:
- Go to PayPal Developer Dashboard → Webhooks
- Add endpoint:
https://your-auris-domain/api/licensing/webhooks/paypal - Set
PAYPAL_LICENSING_WEBHOOK_SECRETandPAYPAL_LICENSING_WEBHOOK_ID