Entitlements
Named capabilities and limits granted by a license (feature flags, module codes, numeric caps). Entitlement codes are technical identifiers — do not translate them in UI or code samples.
How packaging fits together
| Layer | Role |
|---|---|
| Policy | Technical rules (grace, lease, heartbeat, offline clamps) |
| License Plan (POL) | Packaging bound to a catalog product — not SaaS PlatformPlan |
| FeatureLimit | Backend-enforced caps on a Policy or Plan (code, max / unlimited) |
| License entitlements | Grants attached to a specific license (copied into signed leases on activate / refresh / offline) |
| Custom data slots | Fixed vendor fields on signed artifacts — not a replacement for entitlement codes (ADR-0026) |
Custom data (vendor slots)
v1 shape (locked): 2 strings (≤100 Unicode chars each), 2 booleans, 3 finite numbers. Values live on Management SoR and appear in signed lease / offline claims after the next activate, refresh, or offline response — never inside the human license key string.
Vendors edit slots in Vendor Console → license detail. Integrators read them only after JWS verify. Management also exposes GET / PUT /api/v1/licenses/{licenseId}/custom-data.
Console packaging surfaces
| Surface | What you see |
|---|---|
License plans (/plans) | List + create License Plan (code, name, policy, catalog product) |
| Product → Policy tab | Create-plan CTA (product prefilled) + FeatureLimit matrix for bound plans |
| License detail | Custom data editor (fixed slots) |
| Product → Keys | Read-only custom data summary on each key row |
| Floating | License-wide and feature-scoped seat pools (feature:{code}) — capacity and force-release |
Upgrade path (vendor SKU → more features)
- Customer buys / is assigned a higher License Plan (or additional entitlement grants).
- Management binds plan/policy and updates license entitlements / FeatureLimits.
- Next Runtime validate / refresh / offline response carries the new signed snapshot (including custom data when set).
- Client re-verifies JWS (Verify trust) and unlocks features.
Feature-floating (module seats)
Concurrent seats can be scoped to an entitlement / feature code (not only the whole license). Runtime checkout sends featureCode; Management and Vendor Console configure a separate pool with ScopeKey feature:{code}, isolated from the license-wide default pool (UC-FF-01, UC-FF-02; ADR-0036). The feature code must match a grant on the license.
Related
- Licensing Models · Plans · Policies · License Keys · Device Identity
- Verify trust (JWKS) · Core Concepts