@openvtc/trust-tasks 0.26.14 → 0.26.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +183 -0
- package/dist/_shared/components.d.ts +392 -1
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/_shared/0.1/personal-label.d.ts +16 -0
- package/dist/rooms/_shared/0.1/personal-label.d.ts.map +1 -0
- package/dist/rooms/_shared/0.1/personal-label.js +6 -0
- package/dist/rooms/_shared/0.1/personal-label.js.map +1 -0
- package/dist/rooms/_shared/0.1/room.d.ts +1 -1
- package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
- package/dist/rooms/blobs/get/0.1/payload.d.ts +4 -4
- package/dist/rooms/blobs/get/0.1/payload.js +2 -2
- package/dist/rooms/blobs/get/0.1/payload.js.map +1 -1
- package/dist/rooms/blobs/get/0.2/payload.d.ts +4 -4
- package/dist/rooms/blobs/get/0.2/payload.js +2 -2
- package/dist/rooms/blobs/get/0.2/payload.js.map +1 -1
- package/dist/rooms/blobs/upload/begin/0.1/payload.d.ts +4 -4
- package/dist/rooms/blobs/upload/begin/0.1/payload.js +2 -2
- package/dist/rooms/blobs/upload/begin/0.1/payload.js.map +1 -1
- package/dist/rooms/blobs/upload/begin/0.2/payload.d.ts +4 -4
- package/dist/rooms/blobs/upload/begin/0.2/payload.js +2 -2
- package/dist/rooms/blobs/upload/begin/0.2/payload.js.map +1 -1
- package/dist/rooms/epoch/chain/0.1/payload.d.ts +4 -4
- package/dist/rooms/epoch/chain/0.1/payload.js +2 -2
- package/dist/rooms/epoch/chain/0.1/payload.js.map +1 -1
- package/dist/rooms/epoch/commits/0.1/payload.d.ts +4 -4
- package/dist/rooms/epoch/commits/0.1/payload.js +2 -2
- package/dist/rooms/epoch/commits/0.1/payload.js.map +1 -1
- package/dist/rooms/epoch/mint/0.1/payload.d.ts +4 -4
- package/dist/rooms/epoch/mint/0.1/payload.js +2 -2
- package/dist/rooms/epoch/mint/0.1/payload.js.map +1 -1
- package/dist/rooms/epoch/prune/0.1/payload.d.ts +4 -4
- package/dist/rooms/epoch/prune/0.1/payload.js +2 -2
- package/dist/rooms/epoch/prune/0.1/payload.js.map +1 -1
- package/dist/rooms/info/0.1/payload.d.ts +4 -4
- package/dist/rooms/info/0.1/payload.js +2 -2
- package/dist/rooms/info/0.1/payload.js.map +1 -1
- package/dist/rooms/keys/act/0.4/payload.d.ts +546 -0
- package/dist/rooms/keys/act/0.4/payload.d.ts.map +1 -0
- package/dist/rooms/keys/act/0.4/payload.js +305 -0
- package/dist/rooms/keys/act/0.4/payload.js.map +1 -0
- package/dist/rooms/keys/label/0.1/payload.d.ts +757 -0
- package/dist/rooms/keys/label/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/keys/label/0.1/payload.js +388 -0
- package/dist/rooms/keys/label/0.1/payload.js.map +1 -0
- package/dist/rooms/keys/list/0.2/payload.d.ts +667 -0
- package/dist/rooms/keys/list/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/keys/list/0.2/payload.js +350 -0
- package/dist/rooms/keys/list/0.2/payload.js.map +1 -0
- package/dist/rooms/keys/present/0.2/payload.d.ts +4 -4
- package/dist/rooms/keys/present/0.2/payload.js +2 -2
- package/dist/rooms/keys/present/0.2/payload.js.map +1 -1
- package/dist/rooms/keys/profile/read/0.1/payload.d.ts +1652 -0
- package/dist/rooms/keys/profile/read/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/keys/profile/read/0.1/payload.js +649 -0
- package/dist/rooms/keys/profile/read/0.1/payload.js.map +1 -0
- package/dist/rooms/keys/profile/write/0.1/payload.d.ts +583 -0
- package/dist/rooms/keys/profile/write/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/keys/profile/write/0.1/payload.js +319 -0
- package/dist/rooms/keys/profile/write/0.1/payload.js.map +1 -0
- package/dist/rooms/owner/claim/0.1/payload.d.ts +4 -4
- package/dist/rooms/owner/claim/0.1/payload.js +2 -2
- package/dist/rooms/owner/claim/0.1/payload.js.map +1 -1
- package/dist/rooms/owner/group/remove/0.2/payload.d.ts +600 -0
- package/dist/rooms/owner/group/remove/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/owner/group/remove/0.2/payload.js +310 -0
- package/dist/rooms/owner/group/remove/0.2/payload.js.map +1 -0
- package/dist/rooms/owner/revoke/0.1/payload.d.ts +1481 -0
- package/dist/rooms/owner/revoke/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/owner/revoke/0.1/payload.js +811 -0
- package/dist/rooms/owner/revoke/0.1/payload.js.map +1 -0
- package/dist/rooms/owner/transfer/0.1/payload.d.ts +4 -4
- package/dist/rooms/owner/transfer/0.1/payload.js +2 -2
- package/dist/rooms/owner/transfer/0.1/payload.js.map +1 -1
- package/dist/rooms/records/curate/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/curate/0.1/payload.js +2 -2
- package/dist/rooms/records/curate/0.1/payload.js.map +1 -1
- package/dist/rooms/records/get/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/get/0.1/payload.js +2 -2
- package/dist/rooms/records/get/0.1/payload.js.map +1 -1
- package/dist/rooms/records/get/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/get/0.2/payload.js +2 -2
- package/dist/rooms/records/get/0.2/payload.js.map +1 -1
- package/dist/rooms/records/list/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.1/payload.js +2 -2
- package/dist/rooms/records/list/0.1/payload.js.map +1 -1
- package/dist/rooms/records/list/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.2/payload.js +2 -2
- package/dist/rooms/records/list/0.2/payload.js.map +1 -1
- package/dist/rooms/records/put/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.1/payload.js +2 -2
- package/dist/rooms/records/put/0.1/payload.js.map +1 -1
- package/dist/rooms/records/put/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.2/payload.js +2 -2
- package/dist/rooms/records/put/0.2/payload.js.map +1 -1
- package/dist/rooms/revocations/get/0.1/payload.d.ts +905 -0
- package/dist/rooms/revocations/get/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/revocations/get/0.1/payload.js +512 -0
- package/dist/rooms/revocations/get/0.1/payload.js.map +1 -0
- package/dist/rooms/revocations/put/0.1/payload.d.ts +1021 -0
- package/dist/rooms/revocations/put/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/revocations/put/0.1/payload.js +583 -0
- package/dist/rooms/revocations/put/0.1/payload.js.map +1 -0
- package/dist/rooms/usage/0.1/payload.d.ts +4 -4
- package/dist/rooms/usage/0.1/payload.js +2 -2
- package/dist/rooms/usage/0.1/payload.js.map +1 -1
- package/dist/vtc/_shared/0.1/community-room.d.ts +1 -1
- package/dist/vtc/_shared/0.1/community-room.d.ts.map +1 -1
- package/dist/vtc/community/theme/show/0.1/payload.d.ts +238 -0
- package/dist/vtc/community/theme/show/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/community/theme/show/0.1/payload.js +135 -0
- package/dist/vtc/community/theme/show/0.1/payload.js.map +1 -0
- package/dist/vtc/community/theme/update/0.1/payload.d.ts +286 -0
- package/dist/vtc/community/theme/update/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/community/theme/update/0.1/payload.js +157 -0
- package/dist/vtc/community/theme/update/0.1/payload.js.map +1 -0
- package/dist/vtc/rooms/community/create/0.1/payload.d.ts +4 -4
- package/dist/vtc/rooms/community/create/0.1/payload.js +2 -2
- package/dist/vtc/rooms/community/create/0.1/payload.js.map +1 -1
- package/dist/vtc/rooms/community/create/0.2/payload.d.ts +989 -0
- package/dist/vtc/rooms/community/create/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/community/create/0.2/payload.js +559 -0
- package/dist/vtc/rooms/community/create/0.2/payload.js.map +1 -0
- package/dist/vtc/rooms/community/create/0.3/payload.d.ts +1013 -0
- package/dist/vtc/rooms/community/create/0.3/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/community/create/0.3/payload.js +577 -0
- package/dist/vtc/rooms/community/create/0.3/payload.js.map +1 -0
- package/dist/vtc/rooms/community/get/0.1/payload.d.ts +4 -4
- package/dist/vtc/rooms/community/get/0.1/payload.js +2 -2
- package/dist/vtc/rooms/community/get/0.1/payload.js.map +1 -1
- package/dist/vtc/rooms/community/get/0.2/payload.d.ts +887 -0
- package/dist/vtc/rooms/community/get/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/community/get/0.2/payload.js +517 -0
- package/dist/vtc/rooms/community/get/0.2/payload.js.map +1 -0
- package/dist/vtc/rooms/community/list/0.1/payload.d.ts +4 -4
- package/dist/vtc/rooms/community/list/0.1/payload.js +2 -2
- package/dist/vtc/rooms/community/list/0.1/payload.js.map +1 -1
- package/dist/vtc/rooms/community/list/0.2/payload.d.ts +960 -0
- package/dist/vtc/rooms/community/list/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/community/list/0.2/payload.js +544 -0
- package/dist/vtc/rooms/community/list/0.2/payload.js.map +1 -0
- package/dist/vtc/rooms/community/members/remove/0.2/payload.d.ts +681 -0
- package/dist/vtc/rooms/community/members/remove/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/community/members/remove/0.2/payload.js +393 -0
- package/dist/vtc/rooms/community/members/remove/0.2/payload.js.map +1 -0
- package/dist/vtc/rooms/community/update/0.1/payload.d.ts +1013 -0
- package/dist/vtc/rooms/community/update/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/community/update/0.1/payload.js +573 -0
- package/dist/vtc/rooms/community/update/0.1/payload.js.map +1 -0
- package/dist/vtc/rooms/community/update/0.2/payload.d.ts +1037 -0
- package/dist/vtc/rooms/community/update/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/community/update/0.2/payload.js +593 -0
- package/dist/vtc/rooms/community/update/0.2/payload.js.map +1 -0
- package/dist/vtc/rooms/offers/list/0.1/payload.d.ts +4 -4
- package/dist/vtc/rooms/offers/list/0.1/payload.js +2 -2
- package/dist/vtc/rooms/offers/list/0.1/payload.js.map +1 -1
- package/dist/vtc/rooms/offers/list/0.2/payload.d.ts +736 -0
- package/dist/vtc/rooms/offers/list/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/offers/list/0.2/payload.js +430 -0
- package/dist/vtc/rooms/offers/list/0.2/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +426 -1
- package/src/index.ts +20 -0
- package/src/rooms/_shared/0.1/personal-label.ts +17 -0
- package/src/rooms/_shared/0.1/room.ts +1 -1
- package/src/rooms/blobs/get/0.1/payload.ts +2 -2
- package/src/rooms/blobs/get/0.2/payload.ts +2 -2
- package/src/rooms/blobs/upload/begin/0.1/payload.ts +2 -2
- package/src/rooms/blobs/upload/begin/0.2/payload.ts +2 -2
- package/src/rooms/epoch/chain/0.1/payload.ts +2 -2
- package/src/rooms/epoch/commits/0.1/payload.ts +2 -2
- package/src/rooms/epoch/mint/0.1/payload.ts +2 -2
- package/src/rooms/epoch/prune/0.1/payload.ts +2 -2
- package/src/rooms/info/0.1/payload.ts +2 -2
- package/src/rooms/keys/act/0.4/payload.ts +380 -0
- package/src/rooms/keys/label/0.1/payload.ts +474 -0
- package/src/rooms/keys/list/0.2/payload.ts +412 -0
- package/src/rooms/keys/present/0.2/payload.ts +2 -2
- package/src/rooms/keys/profile/read/0.1/payload.ts +1617 -0
- package/src/rooms/keys/profile/write/0.1/payload.ts +388 -0
- package/src/rooms/owner/claim/0.1/payload.ts +2 -2
- package/src/rooms/owner/group/remove/0.2/payload.ts +415 -0
- package/src/rooms/owner/revoke/0.1/payload.ts +954 -0
- package/src/rooms/owner/transfer/0.1/payload.ts +2 -2
- package/src/rooms/records/curate/0.1/payload.ts +2 -2
- package/src/rooms/records/get/0.1/payload.ts +2 -2
- package/src/rooms/records/get/0.2/payload.ts +2 -2
- package/src/rooms/records/list/0.1/payload.ts +2 -2
- package/src/rooms/records/list/0.2/payload.ts +2 -2
- package/src/rooms/records/put/0.1/payload.ts +2 -2
- package/src/rooms/records/put/0.2/payload.ts +2 -2
- package/src/rooms/revocations/get/0.1/payload.ts +562 -0
- package/src/rooms/revocations/put/0.1/payload.ts +637 -0
- package/src/rooms/usage/0.1/payload.ts +2 -2
- package/src/vtc/_shared/0.1/community-room.ts +1 -1
- package/src/vtc/community/theme/show/0.1/payload.ts +170 -0
- package/src/vtc/community/theme/update/0.1/payload.ts +204 -0
- package/src/vtc/rooms/community/create/0.1/payload.ts +2 -2
- package/src/vtc/rooms/community/create/0.2/payload.ts +613 -0
- package/src/vtc/rooms/community/create/0.3/payload.ts +635 -0
- package/src/vtc/rooms/community/get/0.1/payload.ts +2 -2
- package/src/vtc/rooms/community/get/0.2/payload.ts +549 -0
- package/src/vtc/rooms/community/list/0.1/payload.ts +2 -2
- package/src/vtc/rooms/community/list/0.2/payload.ts +591 -0
- package/src/vtc/rooms/community/members/remove/0.2/payload.ts +439 -0
- package/src/vtc/rooms/community/update/0.1/payload.ts +629 -0
- package/src/vtc/rooms/community/update/0.2/payload.ts +653 -0
- package/src/vtc/rooms/offers/list/0.1/payload.ts +2 -2
- package/src/vtc/rooms/offers/list/0.2/payload.ts +473 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/rooms/revocations/put/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAG/M;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,EAAE,qBAAqB,CAAC;IACpC;;OAEG;IACH,IAAI,EAAE,cAAc,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AACD;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,cAAc,CAAC;IACrB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,kHAAkH;AAClH,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAEtK,2BAA2B;AAC3B,eAAO,MAAM,QAAQ,EAAG,uDAAgE,CAAC;AAEzF,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAEjD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAG,gEAAyE,CAAC;AAE3G,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AAE1D;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0RjB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6P1B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC"}
|
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/rooms/revocations/put/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
/** Trust Task type URI. */
|
|
6
|
+
export const TYPE_URI = "https://trusttasks.org/spec/rooms/revocations/put/0.1";
|
|
7
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
8
|
+
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/rooms/revocations/put/0.1#response";
|
|
9
|
+
/**
|
|
10
|
+
* This specification's payload schema, as a value.
|
|
11
|
+
*
|
|
12
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
13
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
14
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
15
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
16
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
17
|
+
*/
|
|
18
|
+
export const PAYLOAD_SCHEMA = {
|
|
19
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
20
|
+
"$id": "https://trusttasks.org/spec/rooms/revocations/put/0.1",
|
|
21
|
+
"title": "Rooms Revocations Put — payload",
|
|
22
|
+
"description": "An administrator of a room delivers the room's signed RevocationList to its host, which refuses every withdrawn credential from the moment it accepts the list.",
|
|
23
|
+
"type": "object",
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"required": [
|
|
26
|
+
"roomId",
|
|
27
|
+
"presentation",
|
|
28
|
+
"list"
|
|
29
|
+
],
|
|
30
|
+
"properties": {
|
|
31
|
+
"roomId": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 1,
|
|
34
|
+
"maxLength": 512,
|
|
35
|
+
"description": "The room. MUST equal `list.roomId`."
|
|
36
|
+
},
|
|
37
|
+
"presentation": {
|
|
38
|
+
"$ref": "#/$defs/AuthorityPresentation",
|
|
39
|
+
"description": "Must confer the `admin` action at this room's scope, verified against the list the host already holds — not against the list being delivered. The list's authority is the room's signature on it; the presentation decides only who may make a host process one."
|
|
40
|
+
},
|
|
41
|
+
"list": {
|
|
42
|
+
"$ref": "#/$defs/RevocationList",
|
|
43
|
+
"description": "The room's signed, cumulative list. A host accepts it only under the rules of `RevocationList`: the room's own key, a higher sequence, and every live entry of the list it holds still present."
|
|
44
|
+
},
|
|
45
|
+
"ext": {
|
|
46
|
+
"$ref": "#/$defs/Ext",
|
|
47
|
+
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1."
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"$defs": {
|
|
51
|
+
"Response": {
|
|
52
|
+
"$anchor": "response",
|
|
53
|
+
"title": "Rooms Revocations Put — response payload",
|
|
54
|
+
"description": "Success response to rooms/revocations/put. Type https://trusttasks.org/spec/rooms/revocations/put/0.1#response. The list the host now holds and enforces, and the moment from which it does.",
|
|
55
|
+
"type": "object",
|
|
56
|
+
"additionalProperties": false,
|
|
57
|
+
"required": [
|
|
58
|
+
"roomId",
|
|
59
|
+
"head",
|
|
60
|
+
"inForceAt"
|
|
61
|
+
],
|
|
62
|
+
"properties": {
|
|
63
|
+
"roomId": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"minLength": 1,
|
|
66
|
+
"maxLength": 512
|
|
67
|
+
},
|
|
68
|
+
"head": {
|
|
69
|
+
"$ref": "#/$defs/RevocationHead",
|
|
70
|
+
"description": "The list the host holds after this request. Equal to the delivered list's head when it was accepted or was a repeat."
|
|
71
|
+
},
|
|
72
|
+
"inForceAt": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"format": "date-time",
|
|
75
|
+
"description": "When the host began refusing what the list withdraws. On a repeat, when it began refusing it the first time."
|
|
76
|
+
},
|
|
77
|
+
"ext": {
|
|
78
|
+
"$ref": "#/$defs/Ext"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"Ext": {
|
|
83
|
+
"title": "Ext",
|
|
84
|
+
"description": "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.",
|
|
85
|
+
"type": "object",
|
|
86
|
+
"minProperties": 1,
|
|
87
|
+
"additionalProperties": true,
|
|
88
|
+
"propertyNames": {
|
|
89
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"RevocationHead": {
|
|
93
|
+
"title": "RevocationHead",
|
|
94
|
+
"type": "object",
|
|
95
|
+
"additionalProperties": false,
|
|
96
|
+
"required": [
|
|
97
|
+
"sequence",
|
|
98
|
+
"digest"
|
|
99
|
+
],
|
|
100
|
+
"description": "Which `RevocationList` a party holds, without its entries: comparable between the room's key holder and a host, and between two hosts, without disclosing whom the room withdrew.",
|
|
101
|
+
"properties": {
|
|
102
|
+
"sequence": {
|
|
103
|
+
"type": "integer",
|
|
104
|
+
"minimum": 1,
|
|
105
|
+
"description": "The list's `sequence`."
|
|
106
|
+
},
|
|
107
|
+
"digest": {
|
|
108
|
+
"$ref": "#/$defs/DigestMultibase",
|
|
109
|
+
"description": "SHA-256 multihash of the list's RFC 8785 (JCS) canonicalization, `proof` included. Two parties holding one sequence with different digests have been given two lists the room signed at one sequence."
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"DigestMultibase": {
|
|
114
|
+
"title": "DigestMultibase",
|
|
115
|
+
"description": "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.",
|
|
116
|
+
"type": "string",
|
|
117
|
+
"minLength": 16,
|
|
118
|
+
"pattern": "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$",
|
|
119
|
+
"examples": [
|
|
120
|
+
"zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"RevocationList": {
|
|
124
|
+
"title": "RevocationList",
|
|
125
|
+
"type": "object",
|
|
126
|
+
"additionalProperties": false,
|
|
127
|
+
"required": [
|
|
128
|
+
"roomId",
|
|
129
|
+
"sequence",
|
|
130
|
+
"issuedAt",
|
|
131
|
+
"entries",
|
|
132
|
+
"proof"
|
|
133
|
+
],
|
|
134
|
+
"description": "The room's own statement of which credentials it has withdrawn before they expire — signed by the room, cumulative, and numbered, so that it means the same thing at every host it is delivered to.\n\n**Why the room signs it, and why it is cumulative.** A host authorizes from credentials the room issued and keeps no roster; a withdrawal kept only as a host's own state would make the room unmovable and the host part of the membership. A list the room signed is room state: it moves with the room, any host it is delivered to reaches the same decision, and nothing a host invents can be mistaken for it. It is cumulative — every list carries every entry still in force — so a host holding any one list holds the room's whole withdrawal state, and a host that missed a list loses nothing once it receives a later one.\n\n**Producing.** The room's key holder builds the object without `proof` and signs it with a W3C Data Integrity proof whose `verificationMethod` is a key the room's DID document lists for `assertionMethod` and whose `proofPurpose` is `assertionMethod`. A producer MUST support `eddsa-jcs-2022`. Each list's `sequence` is exactly one greater than the last list the room signed, and the producer MUST NOT sign two different lists at one `sequence`.\n\n**Accepting.** A host MUST refuse a list unless: (1) `roomId` is the room it is delivered for; (2) `proof` verifies with a key of `roomId` listed for `assertionMethod` — a list signed by any other key, however valid the signature, is not the room's; (3) `sequence` is greater than that of the list it holds, or equal with an identical list (a repeat, answered as accepted and changing nothing); (4) it is **append-only** against the list it holds: every entry of the held list appears in it unchanged, unless that entry's `until` has passed. A list that lowers the sequence is a rollback and one that drops a live entry is a reinstatement nobody signed for, and both are refused; two different lists at one `sequence` is the room's key equivocating, and the host keeps the list it holds.\n\n**Applying.** A credential is revoked by an accepted list when any entry matches it (see `RevocationEntry`). An entry whose `until` has passed MAY be discarded by a host and omitted from later lists; no other entry is ever dropped.\n\n**Size.** A list is bounded at 4096 entries. A room that would exceed it uses a `room` entry, which withdraws everything issued before it and lets the room re-issue to those who remain.",
|
|
135
|
+
"properties": {
|
|
136
|
+
"roomId": {
|
|
137
|
+
"type": "string",
|
|
138
|
+
"minLength": 1,
|
|
139
|
+
"maxLength": 512,
|
|
140
|
+
"description": "The room whose credentials this list withdraws, exactly as on the wire. Signed, so a list cannot be replayed against another room."
|
|
141
|
+
},
|
|
142
|
+
"sequence": {
|
|
143
|
+
"type": "integer",
|
|
144
|
+
"minimum": 1,
|
|
145
|
+
"description": "The list's position in the room's sequence: exactly one greater than the last list the room signed. A host accepts only a list whose sequence is above the one it holds, which is what stops a host, a relayer or an attacker holding an old list from rolling the room's withdrawals back."
|
|
146
|
+
},
|
|
147
|
+
"issuedAt": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"format": "date-time",
|
|
150
|
+
"description": "When the room signed this list."
|
|
151
|
+
},
|
|
152
|
+
"entries": {
|
|
153
|
+
"type": "array",
|
|
154
|
+
"maxItems": 4096,
|
|
155
|
+
"items": {
|
|
156
|
+
"$ref": "#/$defs/RevocationEntry"
|
|
157
|
+
},
|
|
158
|
+
"description": "Every withdrawal still in force, in the order the room made them. Empty is valid: a room that has revoked nothing, or whose every entry has lapsed, can still state its sequence."
|
|
159
|
+
},
|
|
160
|
+
"proof": {
|
|
161
|
+
"type": "object",
|
|
162
|
+
"description": "The room's Data Integrity proof over every other member, made with a key the room's DID document lists for `assertionMethod`."
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"RevocationEntry": {
|
|
167
|
+
"title": "RevocationEntry",
|
|
168
|
+
"description": "One withdrawal in a `RevocationList`, discriminated by `kind`.\n\n - `credential` withdraws one credential, named by its `id`. It matches the membership credential or any authority link whose `id` equals `credentialId`.\n - `subject` withdraws a party: every credential the room's chain gave them **before** `revokedAt`. It matches the membership credential or any authority link whose `credentialSubject` id **or** `issuer` is `subject` and whose `validFrom` is earlier than `revokedAt`. Matching the issuer as well as the subject withdraws what the party delegated before their removal, which no re-admission revives. A credential carrying no `validFrom` is treated as issued before every entry.\n - `room` withdraws every credential whose `validFrom` is earlier than `revokedAt`, whoever holds it. It is how a room resets access — after a compromise, or on a `private` room, where naming a party would disclose who was a member.\n\n**Keyed on time, so a party can come back.** A `subject` or `room` entry withdraws what was issued before it and nothing after, so a room that re-admits a removed party issues fresh credentials and they verify. A `credential` entry is permanent for that one credential, which nobody re-issues.\n\n**Tiers.** On a `private` room a host MUST refuse a list carrying a `credential` or `subject` entry: a presentation there withholds the credential and its subject, so such an entry is one the host cannot apply and a disclosure of who was in the room. Only `room` entries are permitted, and a host serving a `private` room MUST refuse any presentation for which it cannot establish that no credential in it has a `validFrom` earlier than the latest `room` entry's `revokedAt`.",
|
|
169
|
+
"oneOf": [
|
|
170
|
+
{
|
|
171
|
+
"$ref": "#/$defs/CredentialRevocation"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"$ref": "#/$defs/SubjectRevocation"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"$ref": "#/$defs/RoomRevocation"
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
"RoomRevocation": {
|
|
182
|
+
"title": "RoomRevocation",
|
|
183
|
+
"type": "object",
|
|
184
|
+
"additionalProperties": false,
|
|
185
|
+
"required": [
|
|
186
|
+
"kind",
|
|
187
|
+
"revokedAt"
|
|
188
|
+
],
|
|
189
|
+
"description": "Withdraws every credential whose `validFrom` is earlier than `revokedAt`, whoever holds it.",
|
|
190
|
+
"properties": {
|
|
191
|
+
"kind": {
|
|
192
|
+
"const": "room"
|
|
193
|
+
},
|
|
194
|
+
"revokedAt": {
|
|
195
|
+
"type": "string",
|
|
196
|
+
"format": "date-time",
|
|
197
|
+
"description": "When the room made this withdrawal."
|
|
198
|
+
},
|
|
199
|
+
"until": {
|
|
200
|
+
"type": "string",
|
|
201
|
+
"format": "date-time",
|
|
202
|
+
"description": "OPTIONAL. After this instant every credential the entry matches has expired anyway, so a host MAY discard the entry and the room MAY omit it from later lists. Absent means the entry is kept for as long as the room keeps a list."
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"SubjectRevocation": {
|
|
207
|
+
"title": "SubjectRevocation",
|
|
208
|
+
"type": "object",
|
|
209
|
+
"additionalProperties": false,
|
|
210
|
+
"required": [
|
|
211
|
+
"kind",
|
|
212
|
+
"subject",
|
|
213
|
+
"revokedAt"
|
|
214
|
+
],
|
|
215
|
+
"description": "Withdraws a party: every credential naming them as subject or issuer whose `validFrom` is earlier than `revokedAt`.",
|
|
216
|
+
"properties": {
|
|
217
|
+
"kind": {
|
|
218
|
+
"const": "subject"
|
|
219
|
+
},
|
|
220
|
+
"subject": {
|
|
221
|
+
"type": "string",
|
|
222
|
+
"pattern": "^did:",
|
|
223
|
+
"maxLength": 2048,
|
|
224
|
+
"description": "The party withdrawn. Never the room itself."
|
|
225
|
+
},
|
|
226
|
+
"revokedAt": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"format": "date-time",
|
|
229
|
+
"description": "When the room made this withdrawal."
|
|
230
|
+
},
|
|
231
|
+
"until": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"format": "date-time",
|
|
234
|
+
"description": "OPTIONAL. After this instant every credential the entry matches has expired anyway, so a host MAY discard the entry and the room MAY omit it from later lists. Absent means the entry is kept for as long as the room keeps a list."
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
"CredentialRevocation": {
|
|
239
|
+
"title": "CredentialRevocation",
|
|
240
|
+
"type": "object",
|
|
241
|
+
"additionalProperties": false,
|
|
242
|
+
"required": [
|
|
243
|
+
"kind",
|
|
244
|
+
"credentialId",
|
|
245
|
+
"revokedAt"
|
|
246
|
+
],
|
|
247
|
+
"description": "Withdraws one credential — a membership credential or any authority link — by its `id`.",
|
|
248
|
+
"properties": {
|
|
249
|
+
"kind": {
|
|
250
|
+
"const": "credential"
|
|
251
|
+
},
|
|
252
|
+
"credentialId": {
|
|
253
|
+
"type": "string",
|
|
254
|
+
"minLength": 1,
|
|
255
|
+
"maxLength": 2048,
|
|
256
|
+
"description": "The `id` of the credential withdrawn, as `rooms/owner/issue-authority` and `rooms/owner/issue-membership` return it, or as an attenuated credential carries it."
|
|
257
|
+
},
|
|
258
|
+
"revokedAt": {
|
|
259
|
+
"type": "string",
|
|
260
|
+
"format": "date-time",
|
|
261
|
+
"description": "When the room made this withdrawal."
|
|
262
|
+
},
|
|
263
|
+
"until": {
|
|
264
|
+
"type": "string",
|
|
265
|
+
"format": "date-time",
|
|
266
|
+
"description": "OPTIONAL. After this instant every credential the entry matches has expired anyway, so a host MAY discard the entry and the room MAY omit it from later lists. Absent means the entry is kept for as long as the room keeps a list."
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"AuthorityPresentation": {
|
|
271
|
+
"title": "AuthorityPresentation",
|
|
272
|
+
"type": "object",
|
|
273
|
+
"additionalProperties": false,
|
|
274
|
+
"required": [
|
|
275
|
+
"membership",
|
|
276
|
+
"authority"
|
|
277
|
+
],
|
|
278
|
+
"description": "What a party presents to act on a room. Carries the whole authority chain: a host MUST NOT dereference an authority credential's `parent` to fetch a link it was not given. Resolving over the network would make verification depend on availability, turn every identifier into a request the host can be induced to make against an address the holder chooses, and signal credential use to whoever hosts the identifier. A host MUST bind the presenter to the chain's leaf. A chain that verifies is evidence that authority was conferred on somebody; it is not evidence that the party presenting it is that somebody. The leaf's subject MUST equal the party the host authenticated for this request — an identity the transport established or a document `proof` proved, never one named in a payload. A host that omits this check authorizes every captured presentation, and the omission is silent, because the chain still verifies.\n\n**Every credential is its issuer's attestation, and only its issuer's.** For the membership credential and for every link of `authority`, a host MUST verify the credential's `proof` with a key that the credential's own `issuer` lists for `assertionMethod` in its DID document, and MUST refuse a credential whose proof names a verification method that is not its issuer's. A proof that verifies under some other party's key is that party's statement, not the issuer's, and confers nothing. The same binding holds for every other document a room signs, such as a `RevocationList`.\n\n**A chain that verifies may still be revoked.** A host that has accepted a `RevocationList` for the room (`rooms/revocations/put`) MUST, from the moment it accepted it, refuse every presentation in which the membership credential or any link of `authority` is revoked by that list, under every task and every version of every task it serves for the room. A chain from which any link is revoked is refused whole: a credential delegated from a revoked one confers nothing, however it was attenuated. The refusal is the same `permissionDenied` as any other failed presentation.",
|
|
279
|
+
"properties": {
|
|
280
|
+
"membership": {
|
|
281
|
+
"type": "string",
|
|
282
|
+
"description": "The presenter's membership credential for this room, or — on a `private` room — a zero-knowledge presentation of it. Serialized per the governing profile."
|
|
283
|
+
},
|
|
284
|
+
"authority": {
|
|
285
|
+
"type": "array",
|
|
286
|
+
"minItems": 1,
|
|
287
|
+
"maxItems": 8,
|
|
288
|
+
"items": {
|
|
289
|
+
"type": "string"
|
|
290
|
+
},
|
|
291
|
+
"description": "The authority chain, LEAF FIRST: the first element is the credential being relied on and the last MUST be one issued by the room itself. Every link the presenter relies on is present, because the host will not fetch one. Capped at 8: verification is linear in chain length and runs on every operation, so an unbounded chain is a denial-of-service surface against the host. The known uses need 2 to 3 — a person attenuating to an agent, and that agent to a sub-agent."
|
|
292
|
+
},
|
|
293
|
+
"subjectBinding": {
|
|
294
|
+
"type": "string",
|
|
295
|
+
"description": "REQUIRED on a `private` room, where the subject identifier is withheld: a proof that the membership credential and the authority chain's leaf describe the SAME subject. Without it two parties pool credentials — one contributes membership, the other authority — and the combination verifies as a single party holding both. A host MUST refuse a private-room presentation that omits this."
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
302
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
303
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
304
|
+
"$ref": "#/$defs/Response",
|
|
305
|
+
"$defs": {
|
|
306
|
+
"Response": {
|
|
307
|
+
"$anchor": "response",
|
|
308
|
+
"title": "Rooms Revocations Put — response payload",
|
|
309
|
+
"description": "Success response to rooms/revocations/put. Type https://trusttasks.org/spec/rooms/revocations/put/0.1#response. The list the host now holds and enforces, and the moment from which it does.",
|
|
310
|
+
"type": "object",
|
|
311
|
+
"additionalProperties": false,
|
|
312
|
+
"required": [
|
|
313
|
+
"roomId",
|
|
314
|
+
"head",
|
|
315
|
+
"inForceAt"
|
|
316
|
+
],
|
|
317
|
+
"properties": {
|
|
318
|
+
"roomId": {
|
|
319
|
+
"type": "string",
|
|
320
|
+
"minLength": 1,
|
|
321
|
+
"maxLength": 512
|
|
322
|
+
},
|
|
323
|
+
"head": {
|
|
324
|
+
"$ref": "#/$defs/RevocationHead",
|
|
325
|
+
"description": "The list the host holds after this request. Equal to the delivered list's head when it was accepted or was a repeat."
|
|
326
|
+
},
|
|
327
|
+
"inForceAt": {
|
|
328
|
+
"type": "string",
|
|
329
|
+
"format": "date-time",
|
|
330
|
+
"description": "When the host began refusing what the list withdraws. On a repeat, when it began refusing it the first time."
|
|
331
|
+
},
|
|
332
|
+
"ext": {
|
|
333
|
+
"$ref": "#/$defs/Ext"
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
"Ext": {
|
|
338
|
+
"title": "Ext",
|
|
339
|
+
"description": "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.",
|
|
340
|
+
"type": "object",
|
|
341
|
+
"minProperties": 1,
|
|
342
|
+
"additionalProperties": true,
|
|
343
|
+
"propertyNames": {
|
|
344
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
"RevocationHead": {
|
|
348
|
+
"title": "RevocationHead",
|
|
349
|
+
"type": "object",
|
|
350
|
+
"additionalProperties": false,
|
|
351
|
+
"required": [
|
|
352
|
+
"sequence",
|
|
353
|
+
"digest"
|
|
354
|
+
],
|
|
355
|
+
"description": "Which `RevocationList` a party holds, without its entries: comparable between the room's key holder and a host, and between two hosts, without disclosing whom the room withdrew.",
|
|
356
|
+
"properties": {
|
|
357
|
+
"sequence": {
|
|
358
|
+
"type": "integer",
|
|
359
|
+
"minimum": 1,
|
|
360
|
+
"description": "The list's `sequence`."
|
|
361
|
+
},
|
|
362
|
+
"digest": {
|
|
363
|
+
"$ref": "#/$defs/DigestMultibase",
|
|
364
|
+
"description": "SHA-256 multihash of the list's RFC 8785 (JCS) canonicalization, `proof` included. Two parties holding one sequence with different digests have been given two lists the room signed at one sequence."
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
"DigestMultibase": {
|
|
369
|
+
"title": "DigestMultibase",
|
|
370
|
+
"description": "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.",
|
|
371
|
+
"type": "string",
|
|
372
|
+
"minLength": 16,
|
|
373
|
+
"pattern": "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$",
|
|
374
|
+
"examples": [
|
|
375
|
+
"zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"
|
|
376
|
+
]
|
|
377
|
+
},
|
|
378
|
+
"RevocationList": {
|
|
379
|
+
"title": "RevocationList",
|
|
380
|
+
"type": "object",
|
|
381
|
+
"additionalProperties": false,
|
|
382
|
+
"required": [
|
|
383
|
+
"roomId",
|
|
384
|
+
"sequence",
|
|
385
|
+
"issuedAt",
|
|
386
|
+
"entries",
|
|
387
|
+
"proof"
|
|
388
|
+
],
|
|
389
|
+
"description": "The room's own statement of which credentials it has withdrawn before they expire — signed by the room, cumulative, and numbered, so that it means the same thing at every host it is delivered to.\n\n**Why the room signs it, and why it is cumulative.** A host authorizes from credentials the room issued and keeps no roster; a withdrawal kept only as a host's own state would make the room unmovable and the host part of the membership. A list the room signed is room state: it moves with the room, any host it is delivered to reaches the same decision, and nothing a host invents can be mistaken for it. It is cumulative — every list carries every entry still in force — so a host holding any one list holds the room's whole withdrawal state, and a host that missed a list loses nothing once it receives a later one.\n\n**Producing.** The room's key holder builds the object without `proof` and signs it with a W3C Data Integrity proof whose `verificationMethod` is a key the room's DID document lists for `assertionMethod` and whose `proofPurpose` is `assertionMethod`. A producer MUST support `eddsa-jcs-2022`. Each list's `sequence` is exactly one greater than the last list the room signed, and the producer MUST NOT sign two different lists at one `sequence`.\n\n**Accepting.** A host MUST refuse a list unless: (1) `roomId` is the room it is delivered for; (2) `proof` verifies with a key of `roomId` listed for `assertionMethod` — a list signed by any other key, however valid the signature, is not the room's; (3) `sequence` is greater than that of the list it holds, or equal with an identical list (a repeat, answered as accepted and changing nothing); (4) it is **append-only** against the list it holds: every entry of the held list appears in it unchanged, unless that entry's `until` has passed. A list that lowers the sequence is a rollback and one that drops a live entry is a reinstatement nobody signed for, and both are refused; two different lists at one `sequence` is the room's key equivocating, and the host keeps the list it holds.\n\n**Applying.** A credential is revoked by an accepted list when any entry matches it (see `RevocationEntry`). An entry whose `until` has passed MAY be discarded by a host and omitted from later lists; no other entry is ever dropped.\n\n**Size.** A list is bounded at 4096 entries. A room that would exceed it uses a `room` entry, which withdraws everything issued before it and lets the room re-issue to those who remain.",
|
|
390
|
+
"properties": {
|
|
391
|
+
"roomId": {
|
|
392
|
+
"type": "string",
|
|
393
|
+
"minLength": 1,
|
|
394
|
+
"maxLength": 512,
|
|
395
|
+
"description": "The room whose credentials this list withdraws, exactly as on the wire. Signed, so a list cannot be replayed against another room."
|
|
396
|
+
},
|
|
397
|
+
"sequence": {
|
|
398
|
+
"type": "integer",
|
|
399
|
+
"minimum": 1,
|
|
400
|
+
"description": "The list's position in the room's sequence: exactly one greater than the last list the room signed. A host accepts only a list whose sequence is above the one it holds, which is what stops a host, a relayer or an attacker holding an old list from rolling the room's withdrawals back."
|
|
401
|
+
},
|
|
402
|
+
"issuedAt": {
|
|
403
|
+
"type": "string",
|
|
404
|
+
"format": "date-time",
|
|
405
|
+
"description": "When the room signed this list."
|
|
406
|
+
},
|
|
407
|
+
"entries": {
|
|
408
|
+
"type": "array",
|
|
409
|
+
"maxItems": 4096,
|
|
410
|
+
"items": {
|
|
411
|
+
"$ref": "#/$defs/RevocationEntry"
|
|
412
|
+
},
|
|
413
|
+
"description": "Every withdrawal still in force, in the order the room made them. Empty is valid: a room that has revoked nothing, or whose every entry has lapsed, can still state its sequence."
|
|
414
|
+
},
|
|
415
|
+
"proof": {
|
|
416
|
+
"type": "object",
|
|
417
|
+
"description": "The room's Data Integrity proof over every other member, made with a key the room's DID document lists for `assertionMethod`."
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"RevocationEntry": {
|
|
422
|
+
"title": "RevocationEntry",
|
|
423
|
+
"description": "One withdrawal in a `RevocationList`, discriminated by `kind`.\n\n - `credential` withdraws one credential, named by its `id`. It matches the membership credential or any authority link whose `id` equals `credentialId`.\n - `subject` withdraws a party: every credential the room's chain gave them **before** `revokedAt`. It matches the membership credential or any authority link whose `credentialSubject` id **or** `issuer` is `subject` and whose `validFrom` is earlier than `revokedAt`. Matching the issuer as well as the subject withdraws what the party delegated before their removal, which no re-admission revives. A credential carrying no `validFrom` is treated as issued before every entry.\n - `room` withdraws every credential whose `validFrom` is earlier than `revokedAt`, whoever holds it. It is how a room resets access — after a compromise, or on a `private` room, where naming a party would disclose who was a member.\n\n**Keyed on time, so a party can come back.** A `subject` or `room` entry withdraws what was issued before it and nothing after, so a room that re-admits a removed party issues fresh credentials and they verify. A `credential` entry is permanent for that one credential, which nobody re-issues.\n\n**Tiers.** On a `private` room a host MUST refuse a list carrying a `credential` or `subject` entry: a presentation there withholds the credential and its subject, so such an entry is one the host cannot apply and a disclosure of who was in the room. Only `room` entries are permitted, and a host serving a `private` room MUST refuse any presentation for which it cannot establish that no credential in it has a `validFrom` earlier than the latest `room` entry's `revokedAt`.",
|
|
424
|
+
"oneOf": [
|
|
425
|
+
{
|
|
426
|
+
"$ref": "#/$defs/CredentialRevocation"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"$ref": "#/$defs/SubjectRevocation"
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"$ref": "#/$defs/RoomRevocation"
|
|
433
|
+
}
|
|
434
|
+
]
|
|
435
|
+
},
|
|
436
|
+
"RoomRevocation": {
|
|
437
|
+
"title": "RoomRevocation",
|
|
438
|
+
"type": "object",
|
|
439
|
+
"additionalProperties": false,
|
|
440
|
+
"required": [
|
|
441
|
+
"kind",
|
|
442
|
+
"revokedAt"
|
|
443
|
+
],
|
|
444
|
+
"description": "Withdraws every credential whose `validFrom` is earlier than `revokedAt`, whoever holds it.",
|
|
445
|
+
"properties": {
|
|
446
|
+
"kind": {
|
|
447
|
+
"const": "room"
|
|
448
|
+
},
|
|
449
|
+
"revokedAt": {
|
|
450
|
+
"type": "string",
|
|
451
|
+
"format": "date-time",
|
|
452
|
+
"description": "When the room made this withdrawal."
|
|
453
|
+
},
|
|
454
|
+
"until": {
|
|
455
|
+
"type": "string",
|
|
456
|
+
"format": "date-time",
|
|
457
|
+
"description": "OPTIONAL. After this instant every credential the entry matches has expired anyway, so a host MAY discard the entry and the room MAY omit it from later lists. Absent means the entry is kept for as long as the room keeps a list."
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
"SubjectRevocation": {
|
|
462
|
+
"title": "SubjectRevocation",
|
|
463
|
+
"type": "object",
|
|
464
|
+
"additionalProperties": false,
|
|
465
|
+
"required": [
|
|
466
|
+
"kind",
|
|
467
|
+
"subject",
|
|
468
|
+
"revokedAt"
|
|
469
|
+
],
|
|
470
|
+
"description": "Withdraws a party: every credential naming them as subject or issuer whose `validFrom` is earlier than `revokedAt`.",
|
|
471
|
+
"properties": {
|
|
472
|
+
"kind": {
|
|
473
|
+
"const": "subject"
|
|
474
|
+
},
|
|
475
|
+
"subject": {
|
|
476
|
+
"type": "string",
|
|
477
|
+
"pattern": "^did:",
|
|
478
|
+
"maxLength": 2048,
|
|
479
|
+
"description": "The party withdrawn. Never the room itself."
|
|
480
|
+
},
|
|
481
|
+
"revokedAt": {
|
|
482
|
+
"type": "string",
|
|
483
|
+
"format": "date-time",
|
|
484
|
+
"description": "When the room made this withdrawal."
|
|
485
|
+
},
|
|
486
|
+
"until": {
|
|
487
|
+
"type": "string",
|
|
488
|
+
"format": "date-time",
|
|
489
|
+
"description": "OPTIONAL. After this instant every credential the entry matches has expired anyway, so a host MAY discard the entry and the room MAY omit it from later lists. Absent means the entry is kept for as long as the room keeps a list."
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
},
|
|
493
|
+
"CredentialRevocation": {
|
|
494
|
+
"title": "CredentialRevocation",
|
|
495
|
+
"type": "object",
|
|
496
|
+
"additionalProperties": false,
|
|
497
|
+
"required": [
|
|
498
|
+
"kind",
|
|
499
|
+
"credentialId",
|
|
500
|
+
"revokedAt"
|
|
501
|
+
],
|
|
502
|
+
"description": "Withdraws one credential — a membership credential or any authority link — by its `id`.",
|
|
503
|
+
"properties": {
|
|
504
|
+
"kind": {
|
|
505
|
+
"const": "credential"
|
|
506
|
+
},
|
|
507
|
+
"credentialId": {
|
|
508
|
+
"type": "string",
|
|
509
|
+
"minLength": 1,
|
|
510
|
+
"maxLength": 2048,
|
|
511
|
+
"description": "The `id` of the credential withdrawn, as `rooms/owner/issue-authority` and `rooms/owner/issue-membership` return it, or as an attenuated credential carries it."
|
|
512
|
+
},
|
|
513
|
+
"revokedAt": {
|
|
514
|
+
"type": "string",
|
|
515
|
+
"format": "date-time",
|
|
516
|
+
"description": "When the room made this withdrawal."
|
|
517
|
+
},
|
|
518
|
+
"until": {
|
|
519
|
+
"type": "string",
|
|
520
|
+
"format": "date-time",
|
|
521
|
+
"description": "OPTIONAL. After this instant every credential the entry matches has expired anyway, so a host MAY discard the entry and the room MAY omit it from later lists. Absent means the entry is kept for as long as the room keeps a list."
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
},
|
|
525
|
+
"AuthorityPresentation": {
|
|
526
|
+
"title": "AuthorityPresentation",
|
|
527
|
+
"type": "object",
|
|
528
|
+
"additionalProperties": false,
|
|
529
|
+
"required": [
|
|
530
|
+
"membership",
|
|
531
|
+
"authority"
|
|
532
|
+
],
|
|
533
|
+
"description": "What a party presents to act on a room. Carries the whole authority chain: a host MUST NOT dereference an authority credential's `parent` to fetch a link it was not given. Resolving over the network would make verification depend on availability, turn every identifier into a request the host can be induced to make against an address the holder chooses, and signal credential use to whoever hosts the identifier. A host MUST bind the presenter to the chain's leaf. A chain that verifies is evidence that authority was conferred on somebody; it is not evidence that the party presenting it is that somebody. The leaf's subject MUST equal the party the host authenticated for this request — an identity the transport established or a document `proof` proved, never one named in a payload. A host that omits this check authorizes every captured presentation, and the omission is silent, because the chain still verifies.\n\n**Every credential is its issuer's attestation, and only its issuer's.** For the membership credential and for every link of `authority`, a host MUST verify the credential's `proof` with a key that the credential's own `issuer` lists for `assertionMethod` in its DID document, and MUST refuse a credential whose proof names a verification method that is not its issuer's. A proof that verifies under some other party's key is that party's statement, not the issuer's, and confers nothing. The same binding holds for every other document a room signs, such as a `RevocationList`.\n\n**A chain that verifies may still be revoked.** A host that has accepted a `RevocationList` for the room (`rooms/revocations/put`) MUST, from the moment it accepted it, refuse every presentation in which the membership credential or any link of `authority` is revoked by that list, under every task and every version of every task it serves for the room. A chain from which any link is revoked is refused whole: a credential delegated from a revoked one confers nothing, however it was attenuated. The refusal is the same `permissionDenied` as any other failed presentation.",
|
|
534
|
+
"properties": {
|
|
535
|
+
"membership": {
|
|
536
|
+
"type": "string",
|
|
537
|
+
"description": "The presenter's membership credential for this room, or — on a `private` room — a zero-knowledge presentation of it. Serialized per the governing profile."
|
|
538
|
+
},
|
|
539
|
+
"authority": {
|
|
540
|
+
"type": "array",
|
|
541
|
+
"minItems": 1,
|
|
542
|
+
"maxItems": 8,
|
|
543
|
+
"items": {
|
|
544
|
+
"type": "string"
|
|
545
|
+
},
|
|
546
|
+
"description": "The authority chain, LEAF FIRST: the first element is the credential being relied on and the last MUST be one issued by the room itself. Every link the presenter relies on is present, because the host will not fetch one. Capped at 8: verification is linear in chain length and runs on every operation, so an unbounded chain is a denial-of-service surface against the host. The known uses need 2 to 3 — a person attenuating to an agent, and that agent to a sub-agent."
|
|
547
|
+
},
|
|
548
|
+
"subjectBinding": {
|
|
549
|
+
"type": "string",
|
|
550
|
+
"description": "REQUIRED on a `private` room, where the subject identifier is withheld: a proof that the membership credential and the authority chain's leaf describe the SAME subject. Without it two parties pool credentials — one contributes membership, the other authority — and the combination verifies as a single party holding both. A host MUST refuse a private-room presentation that omits this."
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
/**
|
|
557
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
558
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
559
|
+
* per-specification and cannot be derived from the document alone, and
|
|
560
|
+
* item 2 needs the schema this carries.
|
|
561
|
+
*/
|
|
562
|
+
export const SPEC = {
|
|
563
|
+
typeUri: TYPE_URI,
|
|
564
|
+
isBearer: false,
|
|
565
|
+
isProofRequired: true,
|
|
566
|
+
isRecipientRequired: true,
|
|
567
|
+
isIssuedAtRequired: true,
|
|
568
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
569
|
+
};
|
|
570
|
+
/**
|
|
571
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
572
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
573
|
+
* parties (§7.3 item 5).
|
|
574
|
+
*/
|
|
575
|
+
export const RESPONSE_SPEC = {
|
|
576
|
+
typeUri: RESPONSE_TYPE_URI,
|
|
577
|
+
isBearer: false,
|
|
578
|
+
isProofRequired: true,
|
|
579
|
+
isRecipientRequired: true,
|
|
580
|
+
isIssuedAtRequired: true,
|
|
581
|
+
payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
|
|
582
|
+
};
|
|
583
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../../src/rooms/revocations/put/0.1/payload.ts"],"names":[],"mappings":"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"}
|