Core objects
- Entitlement — the stable access key your app checks (e.g.
pro). What your code gates on. - Entitlement Grant — the derived result that makes an entitlement active for a subject. Never edited directly.
- Commercial entitlement state — whether the requested entitlement has an active derived grant, independent of installation recovery.
- Effective Access decision — the authoritative feature-gate union that
combines the requested entitlement, installation/device authorization, and
bounded offline evidence. Only
grantedunlocks. - Device recovery — a
device_blockedEffective Access state with a typed reason and recovery path; it is not an inactive purchase. - Access Source — verified normalization of a commerce object for the access domain.
- Access Pool — the capacity of a source; capacity 1 for a single subscription, N for a seat contract.
- Reservation — capacity held for an open invitation before it is claimed.
- Allocation — an assignment of pool capacity to an access subject.
Subjects
- App User — an end user of your product. The public product term.
- Organization — a group subject (e.g. a club) that receives distributed access.
- Access Subject — the recipient of access; an app user or organization.
- Billing Account — the tenant-scoped commercial identity. It can participate as payer, contract holder, sponsor, or previous payer and remains distinct from every access subject.
- Payer — the billing account that funds a purchase or contract.
- Contract Holder — the billing account that legally or operationally holds a contract. It may be the same row as the payer, but the role stays explicit.
- Licensee — the organization access subject that holds an organization license. A licensee relationship does not itself allocate capacity or grant an entitlement.
- Recipient — the app-user or organization subject receiving an allocation or benefiting from an entitlement grant.
- Store Lineage — a system-managed subject for portable Apple/Google ownership history. It is never silently merged with an app user.
- Lifecycle Event — one append-only, provider-neutral explanation of an evidenced business or support change. It never grants access.
- Participation — a role-bearing link from one lifecycle event to a subject or billing account, allowing one canonical event to appear in several customer views.
- Console / operator user — a user of the SubKit console and an actor in audit evidence, not an app user.
Catalog
- Product — a sellable thing; carries no store IDs or prices itself.
- Plan — a product’s mandatory term/capacity/entitlement configuration.
- Plan Version — an immutable published snapshot of a plan.
- Offering — the runtime paywall grouping an app renders.
- Store Binding — the link to a concrete Apple/Google product or offer.
Keys
- SDK key (
sk_sdk_…) — public, app-bound, used in mobile apps. Cannot mutate commerce or access. - Server key (
sk_srv_…) — capability-scoped, used only in trusted backends. - accessContext — a short-lived signed token binding reads to a provider-verified store environment.
Terms to use, and avoid
- Use “App User” as the product and technical term for an end user.
- License / Lizenz stays product and contract language, but is not a generic technical root object. Access is modeled as sources, pools, allocations, and grants — not as a root “license” record.
- Do not phrase app checks as “has a subscription/license”. Name entitlement X
in the Effective Access API and gate on its
granteddecision.