Each sponsor token grants access rights based on a defined access type, including:
Access Type | Description |
---|---|
timed |
Fixed expiration (e.g., 7 days from claim) |
day_pass |
Each use activates 24-hour access; multiple passes can be held |
credit |
Consumable points; each content item may cost a variable number |
permanent |
Unlocks access to specified content permanently |
membership |
Access scoped to active external memberships (e.g., Patreon, season tickets) |
counted |
A limited number of accesses, not tied to time or credits (e.g., 3 videos total) |
Each token may only support one access type, but a user may store multiple tokens of different types across sponsors.
{
"iss": "sponsor.artist.com",
"aud": "content.artist.com",
"sub": "token-holder-id", // Optional, or pseudonymous
"iat": 1715200000,
"exp": 1715804800, // for timed access
"scope": {
"content": ["artist-videos", "vip-photos"],
"type": "timed",
"duration": "7d"
},
"entitlement": {
"type": "timed"
},
"jti": "abc123"
}
"entitlement": {
"type": "day_pass",
"remaining": 5
}
"entitlement": {
"type": "credit",
"balance": 10,
"unit": "points",
"expires": "2025-12-31"
}
"entitlement": {
"type": "permanent"
}
"entitlement": {
"type": "membership",
"linkedMembership": "ticket-holder-2025"
}
"entitlement": {
"type": "counted",
"remainingUses": 3
}
The content can declare cost in metadata:
<meta name="sponsor-cost" content="3 points">
<meta name="sponsor-scope" content="team-videos">
Or in headers:
Sponsor-Cost: 3 points
Sponsor-Scope: team-videos
-
After a credit/day pass is used, the sponsor server can return an updated token or delta:
{ "updatedBalance": 7, "newToken": "<JWT>" }
- Support
jti
(token ID) revocation list. - Optionally store an anonymized record of used tokens.
- Extensions/apps should track token use locally to prevent double use across sites.
Use Case | Access Type |
---|---|
7-day content unlock after merch purchase | timed |
5 free 24-hour passes per month | day_pass |
Concert ticket grants 10 points for fan club content | credit |
One-time donation gives lifetime access to a zine archive | permanent |
Baseball season pass includes sponsor-based content | membership |
College donates 3 passes to premium game videos | counted |
Field | Purpose |
---|---|
type |
One of: timed , day_pass , credit , permanent , membership , counted |
duration |
For timed (e.g., 7d , 6mo ) |
balance |
For credits or passes |
unit |
For credits (e.g., "points" ) |
remainingUses |
For counted access |
linkedMembership |
External reference (e.g., ticket ID, membership tier) |
This model is compact, extensible, and works in both browser and app contexts.