Media worked example
Status: informative. Document version 1.0-draft-1. Every file in this folder except this page is generated by packages/schema/src/examples/media.ts through pnpm --filter @autonym/schema generate, and pnpm check:generated fails if any differs. Do not edit them by hand.
All data here is synthetic. The person, the recipient and the identifiers are invented for this example, and the keys are the synthetic keys published with the test vectors.
The story
A person keeps a few media preferences in their record: viewing genres, two programmes they watched, reading genres and music genres. They also keep how they like an assistant to talk to them: brief answers, an informal tone, British English (person.json).
A recommendation service, https://recommender.example/client, asks for permission to suggest something to watch, read or listen to this evening. The person is shown three versions of the same request and approves each, so the example can compare them. They differ only in the disclosure level (A5.1):
| Grant | Level | What the service receives |
|---|---|---|
grants/l0.json |
L0 | Only the category of each key, for example viewing_context. It learns which kinds of preference exist, nothing more (rendering) |
grants/l1.json |
L1 | The genres, tone, language and verbosity themselves, which carry no identifier. Viewing history stays at its category (rendering) |
grants/l2.json |
L2 | The same as L1 for these keys, and the right to keep what it reads until the grant ends (rendering) |
Two things the example shows:
- The vocabulary decides what a level means for each key. The genre lists are identifier-free, so the vocabulary renders them in full from L1 upwards. Viewing history supports only L0 and L3 in the vocabulary, so even the L2 grant receives
viewing_contextfor both programmes. The compiler picks the highest level the key supports at or below the grant's ceiling (A5.2). - The compiler is the only renderer. Each rendering is the output of the A5 compiler over
person.jsonand the grant, signed as A5.4 describes. The test recompiles it and compares byte for byte.
All three grants are for the recommendation purpose (A6.2). None of them is for advertising, so the advertising rules of A6.7 are not exercised.
Receipts
Each read appends a receipt to the person's log (L0, L1, L2) before the response is returned (A9). A receipt names the provider, the grant, the client, the purpose and the read ID, and lists the internal entry references and levels returned. Those references are visible to the person only; the recipient sees the client-bound rent_ aliases in the rendering. request is the A9 canonical request: the domains sorted, with declared_only and min_confidence written out although the request omitted them. response_hash is the SHA-256 of the canonical rendering without its proof. The three receipts form one hash chain: each later one points at the previous receipt's hash. They are an excerpt of the person's log. A real log also holds the non-read events of A9 in the same chain, such as grant_created before the first read and grant_revoked, purge_issued and purge_acknowledged after it, so its first receipt would not have a null prev_hash.
Purge
Only the L2 grant may keep what it reads. The grant files show each grant as issued, before the reads and before this revocation. When the person ends the L2 grant, the provider issues a signed purge instruction (A10): purge/instruction.json holds the claims, and purge/instruction-token.json holds the signed token. A recipient receives it as a compact JWT, protected.payload.signature; the file stores the same three parts in the RFC 7515 flattened JSON form, because the repository's secret scanner rejects any committed compact JWT and allowlisting is not this example's decision. The recipient deletes its copy and returns a signed acknowledgement before the deadline (purge/ack.json). The acknowledgement proves only that the recipient signed an attestation that it purged; it does not prove that every copy has gone (A10). As A10 requires, the acknowledgement signature covers the canonical JSON of the acknowledgement without proof, by the A5.4 detached method.
Keys and signatures
The example is signed with the synthetic keys published with the test vectors in keys.json, private parts included, so anyone can check or reproduce the signatures. The active provider key signs the renderings, the receipts and the purge instruction; the recipient key signs the acknowledgement. The provider's key set in that file also holds a key that retired before these reads, so it signs nothing here. Each key's kid is the RFC 7638 thumbprint of its public key, as A5.4 requires. The keys belong to no real provider or recipient and must never be trusted outside the vectors and this example.
ES256 signatures are randomised. The generator therefore keeps an existing signature while it still verifies over the regenerated content, and signs afresh only when the content changes.
Identifiers
The pairwise handle, the rent_ aliases and the other identifiers have the right shape but are not derived. The A3.2 derivation is shown by the vectors in identity-framing.json.
Checks
packages/schema/test/media-example.test.ts checks that:
- every file validates against its schema;
- recompiling gives the same renderings, and their signatures verify;
- every rendering, receipt and the acknowledgement verifies from its published text with the reference verifier, as A5.4 describes, against the provider's and the recipient's key sets in
keys.json; - the example is signed with the published test-vector keys and holds no key of its own;
- L0 discloses no identifier for any programme title or genre list (a property test);
- receipts name the provider and reference the grants and the returned entries, and the hash chain and signatures verify;
- the purge acknowledgement matches its instruction.
The files
Every file of the example, as published in edition 1.0-draft-1.
person.json
{
"notice": "Synthetic person for the media worked example. No real data.",
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"recipient": {
"client_id": "https://recommender.example/client",
"handle": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"aliases": [
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM01",
"alias": "rent_mediaexamplealiasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM02",
"alias": "rent_mediaexamplealiasbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM03",
"alias": "rent_mediaexamplealiascaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM04",
"alias": "rent_mediaexamplealiasdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM05",
"alias": "rent_mediaexamplealiaseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM06",
"alias": "rent_mediaexamplealiasfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM07",
"alias": "rent_mediaexamplealiasgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM08",
"alias": "rent_mediaexamplealiashaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
]
},
"entries": [
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM01",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "viewing",
"key": "genre_affinity",
"value_type": "list",
"value": [
"documentary",
"science_fiction"
],
"context_kind": "preference",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
},
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM02",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "viewing",
"key": "watched_history",
"value_type": "structured",
"value": {
"title": "Synthetic nature series, episode 3",
"occurred_at": "2026-09-28T20:00:00Z",
"completed": true
},
"context_kind": "fact",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
},
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM03",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "viewing",
"key": "watched_history",
"value_type": "structured",
"value": {
"title": "Synthetic space drama, episode 1",
"occurred_at": "2026-09-30T21:00:00Z",
"completed": false
},
"context_kind": "fact",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
},
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM04",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "reading",
"key": "genres",
"value_type": "list",
"value": [
"mystery",
"science"
],
"context_kind": "preference",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
},
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM05",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "music",
"key": "genres",
"value_type": "list",
"value": [
"jazz",
"folk"
],
"context_kind": "preference",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
},
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM06",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "agent",
"key": "verbosity",
"value_type": "enum",
"value": "brief",
"context_kind": "preference",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
},
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM07",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "communication",
"key": "tone",
"value_type": "enum",
"value": "informal",
"context_kind": "preference",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
},
{
"id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM08",
"version": 1,
"profile_id": "prf_01JAB3K9Q7X2M5N8P0R1S4T6M0",
"domain": "communication",
"key": "preferred_language",
"value_type": "enum",
"value": "en-GB",
"context_kind": "preference",
"provenance": {
"kind": "declared",
"source_client_id": null,
"source_event_id": null,
"recorded_at": "2026-10-01T00:00:00Z",
"occurred_at": null,
"confidence": null,
"confirmed_at": "2026-10-01T00:00:00Z",
"evidence_refs": [],
"derived_from": []
},
"temporal": {
"valid_from": null,
"valid_until": null
},
"overlay": null,
"rendering_overrides": {},
"status": "active",
"created_at": "2026-10-01T00:00:00Z",
"updated_at": "2026-10-01T00:00:00Z",
"origin_host": "https://autonym.example"
}
]
}grants/l0.json
{
"id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G0",
"revision": 1,
"handle": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"client_id": "https://recommender.example/client",
"purpose": {
"category": "recommendation",
"text": "Suggest something to watch, read or listen to this evening"
},
"issued_at": "2026-10-02T18:00:00Z",
"expires_at": "2026-10-09T18:00:00Z",
"status": "active",
"kind": "read",
"read": [
{
"domain": "viewing",
"keys": null,
"max_level": "L0"
},
{
"domain": "reading",
"keys": null,
"max_level": "L0"
},
{
"domain": "music",
"keys": null,
"max_level": "L0"
},
{
"domain": "agent",
"keys": null,
"max_level": "L0"
},
{
"domain": "communication",
"keys": null,
"max_level": "L0"
}
],
"declared_only": false,
"min_confidence": 0,
"max_reads": 10,
"reads_used": 0,
"persist_until": null,
"allow_delegation": false,
"onward_share": false
}grants/l1.json
{
"id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G1",
"revision": 1,
"handle": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"client_id": "https://recommender.example/client",
"purpose": {
"category": "recommendation",
"text": "Suggest something to watch, read or listen to this evening"
},
"issued_at": "2026-10-02T18:00:00Z",
"expires_at": "2026-10-09T18:00:00Z",
"status": "active",
"kind": "read",
"read": [
{
"domain": "viewing",
"keys": null,
"max_level": "L1"
},
{
"domain": "reading",
"keys": null,
"max_level": "L1"
},
{
"domain": "music",
"keys": null,
"max_level": "L1"
},
{
"domain": "agent",
"keys": null,
"max_level": "L1"
},
{
"domain": "communication",
"keys": null,
"max_level": "L1"
}
],
"declared_only": false,
"min_confidence": 0,
"max_reads": 10,
"reads_used": 0,
"persist_until": null,
"allow_delegation": false,
"onward_share": false
}grants/l2.json
{
"id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G2",
"revision": 1,
"handle": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"client_id": "https://recommender.example/client",
"purpose": {
"category": "recommendation",
"text": "Suggest something to watch, read or listen to this evening"
},
"issued_at": "2026-10-02T18:00:00Z",
"expires_at": "2026-10-09T18:00:00Z",
"status": "active",
"kind": "read",
"read": [
{
"domain": "viewing",
"keys": null,
"max_level": "L2"
},
{
"domain": "reading",
"keys": null,
"max_level": "L2"
},
{
"domain": "music",
"keys": null,
"max_level": "L2"
},
{
"domain": "agent",
"keys": null,
"max_level": "L2"
},
{
"domain": "communication",
"keys": null,
"max_level": "L2"
}
],
"declared_only": false,
"min_confidence": 0,
"max_reads": 10,
"reads_used": 0,
"persist_until": "2026-10-09T18:00:00Z",
"allow_delegation": false,
"onward_share": false
}renderings/l0.json
{
"autonym_version": "1.0",
"provider": "https://autonym.example",
"audience": "https://autonym.example/v1",
"client_id": "https://recommender.example/client",
"handle": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"grant_id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G0",
"grant_revision": 1,
"read_id": "rd_01JAB3K9Q7X2M5N8P0R1S4T6R0",
"purpose": "recommendation",
"issued_at": "2026-10-02T19:00:00Z",
"valid_until": "2026-10-02T19:05:00Z",
"ttl_seconds": 300,
"persist_until": null,
"entries": [
{
"id": "rent_mediaexamplealiasfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "agent",
"key": "verbosity",
"level": "L0",
"value_type": "text",
"value": "agent_context",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiashaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "communication",
"key": "preferred_language",
"level": "L0",
"value_type": "text",
"value": "communication_context",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "communication",
"key": "tone",
"level": "L0",
"value_type": "text",
"value": "communication_context",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiaseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "music",
"key": "genres",
"level": "L0",
"value_type": "text",
"value": "music_context",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "reading",
"key": "genres",
"level": "L0",
"value_type": "text",
"value": "reading_context",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "genre_affinity",
"level": "L0",
"value_type": "text",
"value": "viewing_context",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "watched_history",
"level": "L0",
"value_type": "text",
"value": "viewing_context",
"context_kind": "fact",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiascaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "watched_history",
"level": "L0",
"value_type": "text",
"value": "viewing_context",
"context_kind": "fact",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
}
],
"proof": {
"type": "jws",
"alg": "ES256",
"kid": "mYO1BpXaL579Vtqrg7FdfvJt9y-uBrMaUE6_CW-DHWc",
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Im1ZTzFCcFhhTDU3OVZ0cXJnN0ZkZnZKdDl5LXVCck1hVUU2X0NXLURIV2MiLCJ0eXAiOiJhdXRvbnltLWRpc2Nsb3N1cmUrandzIn0..JzLJzIHiRKAVDWq3VToFmQAT3wWCC_hfvw9Qy9N-H1aC3UnlrEXumr2a_eZv0azWssnmragVBDyVfVLrqY_FTg"
}
}renderings/l1.json
{
"autonym_version": "1.0",
"provider": "https://autonym.example",
"audience": "https://autonym.example/v1",
"client_id": "https://recommender.example/client",
"handle": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"grant_id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G1",
"grant_revision": 1,
"read_id": "rd_01JAB3K9Q7X2M5N8P0R1S4T6R1",
"purpose": "recommendation",
"issued_at": "2026-10-02T20:00:00Z",
"valid_until": "2026-10-02T20:05:00Z",
"ttl_seconds": 300,
"persist_until": null,
"entries": [
{
"id": "rent_mediaexamplealiasfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "agent",
"key": "verbosity",
"level": "L1",
"value_type": "enum",
"value": "brief",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiashaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "communication",
"key": "preferred_language",
"level": "L1",
"value_type": "enum",
"value": "en-GB",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "communication",
"key": "tone",
"level": "L1",
"value_type": "enum",
"value": "informal",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiaseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "music",
"key": "genres",
"level": "L1",
"value_type": "list",
"value": [
"jazz",
"folk"
],
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "reading",
"key": "genres",
"level": "L1",
"value_type": "list",
"value": [
"mystery",
"science"
],
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "genre_affinity",
"level": "L1",
"value_type": "list",
"value": [
"documentary",
"science_fiction"
],
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "watched_history",
"level": "L0",
"value_type": "text",
"value": "viewing_context",
"context_kind": "fact",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiascaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "watched_history",
"level": "L0",
"value_type": "text",
"value": "viewing_context",
"context_kind": "fact",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
}
],
"proof": {
"type": "jws",
"alg": "ES256",
"kid": "mYO1BpXaL579Vtqrg7FdfvJt9y-uBrMaUE6_CW-DHWc",
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Im1ZTzFCcFhhTDU3OVZ0cXJnN0ZkZnZKdDl5LXVCck1hVUU2X0NXLURIV2MiLCJ0eXAiOiJhdXRvbnltLWRpc2Nsb3N1cmUrandzIn0..7ymhqgHJOswVVW0p4LpkW3BZ0kmGFGrXfO1GqOHHSLIXS99AckdyZ42YrJyp7DveQIyHz4JHNuczitRebioy5w"
}
}renderings/l2.json
{
"autonym_version": "1.0",
"provider": "https://autonym.example",
"audience": "https://autonym.example/v1",
"client_id": "https://recommender.example/client",
"handle": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"grant_id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G2",
"grant_revision": 1,
"read_id": "rd_01JAB3K9Q7X2M5N8P0R1S4T6R2",
"purpose": "recommendation",
"issued_at": "2026-10-02T21:00:00Z",
"valid_until": "2026-10-02T21:05:00Z",
"ttl_seconds": 300,
"persist_until": "2026-10-09T18:00:00Z",
"entries": [
{
"id": "rent_mediaexamplealiasfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "agent",
"key": "verbosity",
"level": "L2",
"value_type": "enum",
"value": "brief",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiashaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "communication",
"key": "preferred_language",
"level": "L2",
"value_type": "enum",
"value": "en-GB",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "communication",
"key": "tone",
"level": "L2",
"value_type": "enum",
"value": "informal",
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiaseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "music",
"key": "genres",
"level": "L2",
"value_type": "list",
"value": [
"jazz",
"folk"
],
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "reading",
"key": "genres",
"level": "L2",
"value_type": "list",
"value": [
"mystery",
"science"
],
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "genre_affinity",
"level": "L2",
"value_type": "list",
"value": [
"documentary",
"science_fiction"
],
"context_kind": "preference",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiasbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "watched_history",
"level": "L0",
"value_type": "text",
"value": "viewing_context",
"context_kind": "fact",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
},
{
"id": "rent_mediaexamplealiascaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"version": 1,
"domain": "viewing",
"key": "watched_history",
"level": "L0",
"value_type": "text",
"value": "viewing_context",
"context_kind": "fact",
"safety_critical": false,
"provenance": {
"kind": "declared",
"confirmed": true
},
"stale": false
}
],
"proof": {
"type": "jws",
"alg": "ES256",
"kid": "mYO1BpXaL579Vtqrg7FdfvJt9y-uBrMaUE6_CW-DHWc",
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Im1ZTzFCcFhhTDU3OVZ0cXJnN0ZkZnZKdDl5LXVCck1hVUU2X0NXLURIV2MiLCJ0eXAiOiJhdXRvbnltLWRpc2Nsb3N1cmUrandzIn0..WOuIWFq7Y5d0t-w8NC5uqOi3FsLUMJIrnAz26FCSIbb1HieikG6_XBbY1DPE7BlRWXorQhLZD4aCIIzs8zHy_Q"
}
}receipts/l0.json
{
"event_id": "evt_01JAB3K9Q7X2M5N8P0R1S4T6E0",
"provider": "https://autonym.example",
"read_id": "rd_01JAB3K9Q7X2M5N8P0R1S4T6R0",
"grant_id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G0",
"client_id": "https://recommender.example/client",
"at": "2026-10-02T19:00:00Z",
"purpose": "recommendation",
"surface": "rest",
"request": {
"domains": [
"agent",
"communication",
"music",
"reading",
"viewing"
],
"max_level": "L0",
"declared_only": false,
"min_confidence": 0
},
"returned": [
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM06",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM08",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM07",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM05",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM04",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM01",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM02",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM03",
"version": 1,
"level": "L0"
}
],
"response_hash": "sha256:14814de352c854929607b6eed2e4e56d79ea1a4616faa97569acf937a2c59fe3",
"prev_hash": null,
"hash": "sha256:f0870ebadee01d60d0d0bffc3b49f4eafb30dce14e49a7903a0c1d4ce4dcbed2",
"proof": {
"type": "jws",
"alg": "ES256",
"kid": "mYO1BpXaL579Vtqrg7FdfvJt9y-uBrMaUE6_CW-DHWc",
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Im1ZTzFCcFhhTDU3OVZ0cXJnN0ZkZnZKdDl5LXVCck1hVUU2X0NXLURIV2MiLCJ0eXAiOiJhdXRvbnltLXJlY2VpcHQrandzIn0..GKQ-F9lMbeD9sVTRiEDQSl0zZLNVQavJZQTku7MLmOQ47uoxI2Mp7hxwLjmGO8f3LAJo8d1OH2zCv4tlXYXfXQ"
}
}receipts/l1.json
{
"event_id": "evt_01JAB3K9Q7X2M5N8P0R1S4T6E1",
"provider": "https://autonym.example",
"read_id": "rd_01JAB3K9Q7X2M5N8P0R1S4T6R1",
"grant_id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G1",
"client_id": "https://recommender.example/client",
"at": "2026-10-02T20:00:00Z",
"purpose": "recommendation",
"surface": "rest",
"request": {
"domains": [
"agent",
"communication",
"music",
"reading",
"viewing"
],
"max_level": "L1",
"declared_only": false,
"min_confidence": 0
},
"returned": [
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM06",
"version": 1,
"level": "L1"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM08",
"version": 1,
"level": "L1"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM07",
"version": 1,
"level": "L1"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM05",
"version": 1,
"level": "L1"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM04",
"version": 1,
"level": "L1"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM01",
"version": 1,
"level": "L1"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM02",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM03",
"version": 1,
"level": "L0"
}
],
"response_hash": "sha256:0a6b78b7c375c6ec04456992d2adfcc3036a18b3a305cf1b6ef07466d8bdc4af",
"prev_hash": "sha256:f0870ebadee01d60d0d0bffc3b49f4eafb30dce14e49a7903a0c1d4ce4dcbed2",
"hash": "sha256:b88c3f2d947ceb76315f67dcfd66708835bf877f13e5e63d2195b117ff7f40d5",
"proof": {
"type": "jws",
"alg": "ES256",
"kid": "mYO1BpXaL579Vtqrg7FdfvJt9y-uBrMaUE6_CW-DHWc",
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Im1ZTzFCcFhhTDU3OVZ0cXJnN0ZkZnZKdDl5LXVCck1hVUU2X0NXLURIV2MiLCJ0eXAiOiJhdXRvbnltLXJlY2VpcHQrandzIn0..bRtUNQwK50NflN9st6W-rBco9erCKgBTjb-OVQrJ1pD7aHa9_-L0ttB71lsfeBoFjryr5EMMxvHxkYpKaOA1Rg"
}
}receipts/l2.json
{
"event_id": "evt_01JAB3K9Q7X2M5N8P0R1S4T6E2",
"provider": "https://autonym.example",
"read_id": "rd_01JAB3K9Q7X2M5N8P0R1S4T6R2",
"grant_id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G2",
"client_id": "https://recommender.example/client",
"at": "2026-10-02T21:00:00Z",
"purpose": "recommendation",
"surface": "rest",
"request": {
"domains": [
"agent",
"communication",
"music",
"reading",
"viewing"
],
"max_level": "L2",
"declared_only": false,
"min_confidence": 0
},
"returned": [
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM06",
"version": 1,
"level": "L2"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM08",
"version": 1,
"level": "L2"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM07",
"version": 1,
"level": "L2"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM05",
"version": 1,
"level": "L2"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM04",
"version": 1,
"level": "L2"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM01",
"version": 1,
"level": "L2"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM02",
"version": 1,
"level": "L0"
},
{
"entry_id": "ent_01JAB3K9Q7X2M5N8P0R1S4TM03",
"version": 1,
"level": "L0"
}
],
"response_hash": "sha256:ca098f987d1f18985d88e12231366e9934e0bf7a338e5a039484d024913ad9be",
"prev_hash": "sha256:b88c3f2d947ceb76315f67dcfd66708835bf877f13e5e63d2195b117ff7f40d5",
"hash": "sha256:1b1996878923be6d542de2d21bad57eeac60f3186500daf06eab4e8d6758aa60",
"proof": {
"type": "jws",
"alg": "ES256",
"kid": "mYO1BpXaL579Vtqrg7FdfvJt9y-uBrMaUE6_CW-DHWc",
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Im1ZTzFCcFhhTDU3OVZ0cXJnN0ZkZnZKdDl5LXVCck1hVUU2X0NXLURIV2MiLCJ0eXAiOiJhdXRvbnltLXJlY2VpcHQrandzIn0..CVl06QtIh7nxEreYAMYSwTC_xMbTkG20a1y5443jNUmi8V5aGg76GLWtwq7w-tC6DbjTiQ890Un5FLn8DBpfwg"
}
}purge/ack.json
{
"instruction_id": "pi_01JAB3K9Q7X2M5N8P0R1S4T6P0",
"attestation": "purged",
"at": "2026-10-03T15:00:00Z",
"note": "Deleted the stored genres and preferences received under this grant.",
"proof": {
"type": "jws",
"alg": "ES256",
"kid": "w7t35gDe7Lcp0DXE4NrgKar6duLgsJCrvmYyLuVjpIc",
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6Inc3dDM1Z0RlN0xjcDBEWEU0TnJnS2FyNmR1TGdzSkNydm1ZeUx1VmpwSWMiLCJ0eXAiOiJhdXRvbnltLXB1cmdlLWFjaytqd3MifQ..JxxuHsGBNmnusPrDp3nI10f00UbgoLiLHWL3TANOL7J0ZxTP8bEDB27cWjnDu1kMVf2J6bdC29Xpyx7Mfn6eVA"
}
}purge/instruction-token.json
{
"protected": "eyJhbGciOiJFUzI1NiIsImtpZCI6Im1ZTzFCcFhhTDU3OVZ0cXJnN0ZkZnZKdDl5LXVCck1hVUU2X0NXLURIV2MiLCJ0eXAiOiJhdXRvbnltLXB1cmdlK2p3dCJ9",
"payload": "eyJpc3MiOiJodHRwczovL2F1dG9ueW0uZXhhbXBsZSIsInN1YiI6ImF1dG9ueW06bWVkaWFleGFtcGxlaGFuZGxlYWFhYWFhYWFhYWFhYWFAYXV0b255bS5leGFtcGxlIiwiYXVkIjoiaHR0cHM6Ly9yZWNvbW1lbmRlci5leGFtcGxlL2NsaWVudCIsImp0aSI6InBpXzAxSkFCM0s5UTdYMk01TjhQMFIxUzRUNlAwIiwiaWF0IjoxNzkxMDE4MDAwLCJleHAiOjE3OTM2MTAwMDAsImF1dG9ueW1fZ3JhbnRfaWQiOiJncl8wMUpBQjNLOVE3WDJNNU44UDBSMVM0VDZHMiIsInJlYXNvbiI6ImdyYW50X2VuZGVkIiwic2NvcGUiOiJhbGwiLCJkZWFkbGluZSI6IjIwMjYtMTAtMTBUMDk6MDA6MDBaIn0",
"signature": "-HsEF7zQKDYfUYqtM1pWz1SL_ovYhARBwVJZlvhF9FWz1KvG2GdeymTAgieCIwec7ZwGN1IBcQDeADSFtoytiw"
}purge/instruction.json
{
"iss": "https://autonym.example",
"sub": "autonym:mediaexamplehandleaaaaaaaaaaaaaa@autonym.example",
"aud": "https://recommender.example/client",
"jti": "pi_01JAB3K9Q7X2M5N8P0R1S4T6P0",
"iat": 1791018000,
"exp": 1793610000,
"autonym_grant_id": "gr_01JAB3K9Q7X2M5N8P0R1S4T6G2",
"reason": "grant_ended",
"scope": "all",
"deadline": "2026-10-10T09:00:00Z"
}References to other standards and projects describe intended technical alignment only and do not imply endorsement or partnership.