@openvtc/trust-tasks 0.26.23 → 0.26.25

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/_shared/components.d.ts +41 -1
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/rooms/keys/act/0.6/payload.d.ts +546 -0
  9. package/dist/rooms/keys/act/0.6/payload.d.ts.map +1 -0
  10. package/dist/rooms/keys/act/0.6/payload.js +305 -0
  11. package/dist/rooms/keys/act/0.6/payload.js.map +1 -0
  12. package/dist/vta/pcs/voter/read/0.1/payload.d.ts +489 -0
  13. package/dist/vta/pcs/voter/read/0.1/payload.d.ts.map +1 -0
  14. package/dist/vta/pcs/voter/read/0.1/payload.js +271 -0
  15. package/dist/vta/pcs/voter/read/0.1/payload.js.map +1 -0
  16. package/dist/vta/pcs/voter/register/0.1/payload.d.ts +233 -5
  17. package/dist/vta/pcs/voter/register/0.1/payload.d.ts.map +1 -1
  18. package/dist/vta/pcs/voter/register/0.1/payload.js +117 -2
  19. package/dist/vta/pcs/voter/register/0.1/payload.js.map +1 -1
  20. package/dist/vtc/_shared/0.1/community-room.d.ts +1 -1
  21. package/dist/vtc/_shared/0.1/community-room.d.ts.map +1 -1
  22. package/dist/vtc/groups/bindings/add/0.1/payload.d.ts +4 -4
  23. package/dist/vtc/groups/bindings/add/0.1/payload.js +2 -2
  24. package/dist/vtc/groups/bindings/add/0.1/payload.js.map +1 -1
  25. package/dist/vtc/groups/bindings/list/0.1/payload.d.ts +4 -4
  26. package/dist/vtc/groups/bindings/list/0.1/payload.js +2 -2
  27. package/dist/vtc/groups/bindings/list/0.1/payload.js.map +1 -1
  28. package/dist/vtc/rooms/offers/list/0.3/payload.d.ts +1058 -0
  29. package/dist/vtc/rooms/offers/list/0.3/payload.d.ts.map +1 -0
  30. package/dist/vtc/rooms/offers/list/0.3/payload.js +614 -0
  31. package/dist/vtc/rooms/offers/list/0.3/payload.js.map +1 -0
  32. package/package.json +1 -1
  33. package/src/_shared/components.ts +41 -1
  34. package/src/index.ts +3 -0
  35. package/src/rooms/keys/act/0.6/payload.ts +380 -0
  36. package/src/vta/pcs/voter/read/0.1/payload.ts +347 -0
  37. package/src/vta/pcs/voter/register/0.1/payload.ts +148 -3
  38. package/src/vtc/_shared/0.1/community-room.ts +1 -1
  39. package/src/vtc/groups/bindings/add/0.1/payload.ts +2 -2
  40. package/src/vtc/groups/bindings/list/0.1/payload.ts +2 -2
  41. package/src/vtc/rooms/offers/list/0.3/payload.ts +663 -0
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vta/pcs/voter/read/0.1/payload.schema.json
4
+ */
5
+
6
+ import type { Ext } from "../../../../../_shared/components.js";
7
+
8
+
9
+ /**
10
+ * A voter's client asks its VTA for a vtc/elections/list or vtc/elections/show request signed as the voter's membership DID, so the client can read the community's elections as the member without holding the member's key.
11
+ */
12
+ export interface VTAPCSVoterReadPayload {
13
+ /**
14
+ * The context the voter belongs to.
15
+ */
16
+ contextId: string;
17
+ /**
18
+ * The community's DID: the recipient of the signed request.
19
+ */
20
+ community: string;
21
+ /**
22
+ * The voter's membership DID at the community. MUST be a DID the engine holds an authentication key of that the caller may act as.
23
+ */
24
+ member: string;
25
+ /**
26
+ * Which read to sign: vtc/elections/list/0.1 or vtc/elections/show/0.1.
27
+ */
28
+ read: "list" | "show";
29
+ /**
30
+ * The request payload of that task, validated against its own schema.
31
+ */
32
+ payload: {};
33
+ ext?: Ext;
34
+ }
35
+ /**
36
+ * The signed read, to send to the community.
37
+ */
38
+ export interface VTAPCSVoterReadResponsePayload {
39
+ document: ReadDocument;
40
+ ext?: Ext;
41
+ }
42
+ /**
43
+ * A complete, signed vtc/elections/list/0.1 or vtc/elections/show/0.1 request document, ready to send to the community unchanged.
44
+ */
45
+ export interface ReadDocument {
46
+ id: string;
47
+ type: "https://trusttasks.org/spec/vtc/elections/list/0.1" | "https://trusttasks.org/spec/vtc/elections/show/0.1";
48
+ /**
49
+ * The request's `member`.
50
+ */
51
+ issuer: string;
52
+ /**
53
+ * The request's `community`.
54
+ */
55
+ recipient: string;
56
+ issuedAt: string;
57
+ expiresAt?: string;
58
+ /**
59
+ * The request's `payload`, exactly.
60
+ */
61
+ payload: {};
62
+ /**
63
+ * A Data Integrity proof by an `authentication` key of `issuer`.
64
+ */
65
+ proof: {};
66
+ }
67
+
68
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
69
+ export type { Ext };
70
+
71
+ /** Trust Task type URI. */
72
+ export const TYPE_URI = "https://trusttasks.org/spec/vta/pcs/voter/read/0.1" as const;
73
+
74
+ /** Stable alias for this specification's request payload shape. */
75
+ export type Payload = VTAPCSVoterReadPayload;
76
+
77
+ /** Trust Task response type URI (request type URI + "#response"). */
78
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vta/pcs/voter/read/0.1#response" as const;
79
+
80
+ /** Stable alias for this specification's success-response payload shape. */
81
+ export type Response = VTAPCSVoterReadResponsePayload;
82
+
83
+ /**
84
+ * This specification's payload schema, as a value.
85
+ *
86
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
87
+ * rather than only as a `.json` file because TypeScript types are erased
88
+ * at runtime: without a schema a consumer has nothing to validate, and
89
+ * every REQUIRED payload member is optional in practice. Cross-file
90
+ * `$ref`s are already inlined, so it needs no resolver.
91
+ */
92
+ export const PAYLOAD_SCHEMA = {
93
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
94
+ "$id": "https://trusttasks.org/spec/vta/pcs/voter/read/0.1",
95
+ "title": "VTA PCS — Voter Read — payload",
96
+ "description": "A voter's client asks its VTA for a vtc/elections/list or vtc/elections/show request signed as the voter's membership DID, so the client can read the community's elections as the member without holding the member's key.",
97
+ "type": "object",
98
+ "additionalProperties": false,
99
+ "required": [
100
+ "contextId",
101
+ "community",
102
+ "member",
103
+ "read",
104
+ "payload"
105
+ ],
106
+ "properties": {
107
+ "contextId": {
108
+ "type": "string",
109
+ "minLength": 1,
110
+ "maxLength": 256,
111
+ "description": "The context the voter belongs to."
112
+ },
113
+ "community": {
114
+ "type": "string",
115
+ "minLength": 1,
116
+ "maxLength": 2048,
117
+ "description": "The community's DID: the recipient of the signed request."
118
+ },
119
+ "member": {
120
+ "type": "string",
121
+ "minLength": 1,
122
+ "maxLength": 2048,
123
+ "pattern": "^did:",
124
+ "description": "The voter's membership DID at the community. MUST be a DID the engine holds an authentication key of that the caller may act as."
125
+ },
126
+ "read": {
127
+ "type": "string",
128
+ "enum": [
129
+ "list",
130
+ "show"
131
+ ],
132
+ "description": "Which read to sign: vtc/elections/list/0.1 or vtc/elections/show/0.1."
133
+ },
134
+ "payload": {
135
+ "type": "object",
136
+ "description": "The request payload of that task, validated against its own schema."
137
+ },
138
+ "ext": {
139
+ "$ref": "#/$defs/Ext"
140
+ }
141
+ },
142
+ "$defs": {
143
+ "ReadDocument": {
144
+ "title": "ReadDocument",
145
+ "description": "A complete, signed vtc/elections/list/0.1 or vtc/elections/show/0.1 request document, ready to send to the community unchanged.",
146
+ "type": "object",
147
+ "required": [
148
+ "id",
149
+ "type",
150
+ "issuer",
151
+ "recipient",
152
+ "issuedAt",
153
+ "payload",
154
+ "proof"
155
+ ],
156
+ "properties": {
157
+ "id": {
158
+ "type": "string",
159
+ "pattern": "^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
160
+ },
161
+ "type": {
162
+ "type": "string",
163
+ "enum": [
164
+ "https://trusttasks.org/spec/vtc/elections/list/0.1",
165
+ "https://trusttasks.org/spec/vtc/elections/show/0.1"
166
+ ]
167
+ },
168
+ "issuer": {
169
+ "type": "string",
170
+ "minLength": 1,
171
+ "maxLength": 2048,
172
+ "description": "The request's `member`."
173
+ },
174
+ "recipient": {
175
+ "type": "string",
176
+ "minLength": 1,
177
+ "maxLength": 2048,
178
+ "description": "The request's `community`."
179
+ },
180
+ "issuedAt": {
181
+ "type": "string",
182
+ "format": "date-time"
183
+ },
184
+ "expiresAt": {
185
+ "type": "string",
186
+ "format": "date-time"
187
+ },
188
+ "payload": {
189
+ "type": "object",
190
+ "description": "The request's `payload`, exactly."
191
+ },
192
+ "proof": {
193
+ "type": "object",
194
+ "description": "A Data Integrity proof by an `authentication` key of `issuer`."
195
+ }
196
+ }
197
+ },
198
+ "Response": {
199
+ "$anchor": "response",
200
+ "title": "VTA PCS — Voter Read — response payload",
201
+ "description": "The signed read, to send to the community.",
202
+ "type": "object",
203
+ "additionalProperties": false,
204
+ "required": [
205
+ "document"
206
+ ],
207
+ "properties": {
208
+ "document": {
209
+ "$ref": "#/$defs/ReadDocument"
210
+ },
211
+ "ext": {
212
+ "$ref": "#/$defs/Ext"
213
+ }
214
+ }
215
+ },
216
+ "Ext": {
217
+ "title": "Ext",
218
+ "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.",
219
+ "type": "object",
220
+ "minProperties": 1,
221
+ "additionalProperties": true,
222
+ "propertyNames": {
223
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
224
+ }
225
+ }
226
+ }
227
+ } as const;
228
+
229
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
230
+ export const RESPONSE_PAYLOAD_SCHEMA = {
231
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
232
+ "$ref": "#/$defs/Response",
233
+ "$defs": {
234
+ "ReadDocument": {
235
+ "title": "ReadDocument",
236
+ "description": "A complete, signed vtc/elections/list/0.1 or vtc/elections/show/0.1 request document, ready to send to the community unchanged.",
237
+ "type": "object",
238
+ "required": [
239
+ "id",
240
+ "type",
241
+ "issuer",
242
+ "recipient",
243
+ "issuedAt",
244
+ "payload",
245
+ "proof"
246
+ ],
247
+ "properties": {
248
+ "id": {
249
+ "type": "string",
250
+ "pattern": "^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
251
+ },
252
+ "type": {
253
+ "type": "string",
254
+ "enum": [
255
+ "https://trusttasks.org/spec/vtc/elections/list/0.1",
256
+ "https://trusttasks.org/spec/vtc/elections/show/0.1"
257
+ ]
258
+ },
259
+ "issuer": {
260
+ "type": "string",
261
+ "minLength": 1,
262
+ "maxLength": 2048,
263
+ "description": "The request's `member`."
264
+ },
265
+ "recipient": {
266
+ "type": "string",
267
+ "minLength": 1,
268
+ "maxLength": 2048,
269
+ "description": "The request's `community`."
270
+ },
271
+ "issuedAt": {
272
+ "type": "string",
273
+ "format": "date-time"
274
+ },
275
+ "expiresAt": {
276
+ "type": "string",
277
+ "format": "date-time"
278
+ },
279
+ "payload": {
280
+ "type": "object",
281
+ "description": "The request's `payload`, exactly."
282
+ },
283
+ "proof": {
284
+ "type": "object",
285
+ "description": "A Data Integrity proof by an `authentication` key of `issuer`."
286
+ }
287
+ }
288
+ },
289
+ "Response": {
290
+ "$anchor": "response",
291
+ "title": "VTA PCS — Voter Read — response payload",
292
+ "description": "The signed read, to send to the community.",
293
+ "type": "object",
294
+ "additionalProperties": false,
295
+ "required": [
296
+ "document"
297
+ ],
298
+ "properties": {
299
+ "document": {
300
+ "$ref": "#/$defs/ReadDocument"
301
+ },
302
+ "ext": {
303
+ "$ref": "#/$defs/Ext"
304
+ }
305
+ }
306
+ },
307
+ "Ext": {
308
+ "title": "Ext",
309
+ "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.",
310
+ "type": "object",
311
+ "minProperties": 1,
312
+ "additionalProperties": true,
313
+ "propertyNames": {
314
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
315
+ }
316
+ }
317
+ }
318
+ } as const;
319
+
320
+ /**
321
+ * SPEC.md §7.2 policy for the request variant, from this specification's
322
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
323
+ * per-specification and cannot be derived from the document alone, and
324
+ * item 2 needs the schema this carries.
325
+ */
326
+ export const SPEC = {
327
+ typeUri: TYPE_URI,
328
+ isBearer: false,
329
+ isProofRequired: true,
330
+ isRecipientRequired: true,
331
+ isIssuedAtRequired: true,
332
+ payloadSchema: PAYLOAD_SCHEMA,
333
+ } as const;
334
+
335
+ /**
336
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
337
+ * tracks the *issuer* party's requirement because a response swaps the
338
+ * parties (§7.3 item 5).
339
+ */
340
+ export const RESPONSE_SPEC = {
341
+ typeUri: RESPONSE_TYPE_URI,
342
+ isBearer: false,
343
+ isProofRequired: false,
344
+ isRecipientRequired: true,
345
+ isIssuedAtRequired: true,
346
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
347
+ } as const;
@@ -31,10 +31,14 @@ export interface VTAPCSVoterRegisterPayload {
31
31
  * The election's manifest, exactly as the community published it. The engine computes its digest itself.
32
32
  */
33
33
  manifest: Manifest;
34
+ /**
35
+ * The DID the election's roll admits the voter as — their membership DID at the community. When given, the engine also returns `ticketDocument`: the request to the community, signed as this DID. It MUST be a DID the engine holds an authentication key of that the caller may act as.
36
+ */
37
+ member?: string;
34
38
  ext?: Ext;
35
39
  }
36
40
  /**
37
- * Exactly the vtc/elections/tickets/issue/0.1 request payload, without its ext: what the client sends the community.
41
+ * Exactly the vtc/elections/tickets/issue/0.1 request payload, without its ext — and, when the request named `member`, that request as a document signed as the member.
38
42
  */
39
43
  export interface VTAPCSVoterRegisterResponsePayload {
40
44
  electionId: ElectionId;
@@ -43,6 +47,7 @@ export interface VTAPCSVoterRegisterResponsePayload {
43
47
  */
44
48
  manifestDigest: DigestMultibase;
45
49
  request: TicketRequest;
50
+ ticketDocument?: TicketDocument;
46
51
  ext?: Ext;
47
52
  }
48
53
  /**
@@ -66,6 +71,31 @@ export interface TicketRequest {
66
71
  proof: string;
67
72
  };
68
73
  }
74
+ /**
75
+ * A complete, signed vtc/elections/tickets/issue/0.1 request document, ready to send to the community unchanged. Its payload is validated by that specification's schema; the members fixed here are the ones this task guarantees.
76
+ */
77
+ export interface TicketDocument {
78
+ id: string;
79
+ type: "https://trusttasks.org/spec/vtc/elections/tickets/issue/0.1";
80
+ /**
81
+ * The request's `member`.
82
+ */
83
+ issuer: string;
84
+ /**
85
+ * The request's `community`.
86
+ */
87
+ recipient: string;
88
+ issuedAt: string;
89
+ expiresAt?: string;
90
+ /**
91
+ * The vtc/elections/tickets/issue/0.1 request payload: `electionId`, `manifestDigest` and `request`, exactly as this response carries them.
92
+ */
93
+ payload: {};
94
+ /**
95
+ * A Data Integrity proof by an `authentication` key of `issuer`.
96
+ */
97
+ proof: {};
98
+ }
69
99
 
70
100
  /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
71
101
  export type { BoardVisibility, ChoiceQuestion, DigestMultibase, ElectionId, Ext, Key, Manifest, Multibase, Question, QuestionOption, RankingQuestion, Revote, RollRule, ScoreQuestion, SecrecyLevel, TextQuestion, Trustees, VotingParameters };
@@ -125,6 +155,13 @@ export const PAYLOAD_SCHEMA = {
125
155
  "$ref": "#/$defs/Manifest",
126
156
  "description": "The election's manifest, exactly as the community published it. The engine computes its digest itself."
127
157
  },
158
+ "member": {
159
+ "type": "string",
160
+ "minLength": 1,
161
+ "maxLength": 2048,
162
+ "pattern": "^did:",
163
+ "description": "The DID the election's roll admits the voter as — their membership DID at the community. When given, the engine also returns `ticketDocument`: the request to the community, signed as this DID. It MUST be a DID the engine holds an authentication key of that the caller may act as."
164
+ },
128
165
  "ext": {
129
166
  "$ref": "#/$defs/Ext"
130
167
  }
@@ -184,7 +221,7 @@ export const PAYLOAD_SCHEMA = {
184
221
  "Response": {
185
222
  "$anchor": "response",
186
223
  "title": "VTA PCS — Voter Register — response payload",
187
- "description": "Exactly the vtc/elections/tickets/issue/0.1 request payload, without its ext: what the client sends the community.",
224
+ "description": "Exactly the vtc/elections/tickets/issue/0.1 request payload, without its ext — and, when the request named `member`, that request as a document signed as the member.",
188
225
  "type": "object",
189
226
  "additionalProperties": false,
190
227
  "required": [
@@ -203,11 +240,65 @@ export const PAYLOAD_SCHEMA = {
203
240
  "request": {
204
241
  "$ref": "#/$defs/TicketRequest"
205
242
  },
243
+ "ticketDocument": {
244
+ "$ref": "#/$defs/TicketDocument"
245
+ },
206
246
  "ext": {
207
247
  "$ref": "#/$defs/Ext"
208
248
  }
209
249
  }
210
250
  },
251
+ "TicketDocument": {
252
+ "title": "TicketDocument",
253
+ "description": "A complete, signed vtc/elections/tickets/issue/0.1 request document, ready to send to the community unchanged. Its payload is validated by that specification's schema; the members fixed here are the ones this task guarantees.",
254
+ "type": "object",
255
+ "required": [
256
+ "id",
257
+ "type",
258
+ "issuer",
259
+ "recipient",
260
+ "issuedAt",
261
+ "payload",
262
+ "proof"
263
+ ],
264
+ "properties": {
265
+ "id": {
266
+ "type": "string",
267
+ "pattern": "^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
268
+ },
269
+ "type": {
270
+ "const": "https://trusttasks.org/spec/vtc/elections/tickets/issue/0.1"
271
+ },
272
+ "issuer": {
273
+ "type": "string",
274
+ "minLength": 1,
275
+ "maxLength": 2048,
276
+ "description": "The request's `member`."
277
+ },
278
+ "recipient": {
279
+ "type": "string",
280
+ "minLength": 1,
281
+ "maxLength": 2048,
282
+ "description": "The request's `community`."
283
+ },
284
+ "issuedAt": {
285
+ "type": "string",
286
+ "format": "date-time"
287
+ },
288
+ "expiresAt": {
289
+ "type": "string",
290
+ "format": "date-time"
291
+ },
292
+ "payload": {
293
+ "type": "object",
294
+ "description": "The vtc/elections/tickets/issue/0.1 request payload: `electionId`, `manifestDigest` and `request`, exactly as this response carries them."
295
+ },
296
+ "proof": {
297
+ "type": "object",
298
+ "description": "A Data Integrity proof by an `authentication` key of `issuer`."
299
+ }
300
+ }
301
+ },
211
302
  "Ext": {
212
303
  "title": "Ext",
213
304
  "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.",
@@ -712,7 +803,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
712
803
  "Response": {
713
804
  "$anchor": "response",
714
805
  "title": "VTA PCS — Voter Register — response payload",
715
- "description": "Exactly the vtc/elections/tickets/issue/0.1 request payload, without its ext: what the client sends the community.",
806
+ "description": "Exactly the vtc/elections/tickets/issue/0.1 request payload, without its ext — and, when the request named `member`, that request as a document signed as the member.",
716
807
  "type": "object",
717
808
  "additionalProperties": false,
718
809
  "required": [
@@ -731,11 +822,65 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
731
822
  "request": {
732
823
  "$ref": "#/$defs/TicketRequest"
733
824
  },
825
+ "ticketDocument": {
826
+ "$ref": "#/$defs/TicketDocument"
827
+ },
734
828
  "ext": {
735
829
  "$ref": "#/$defs/Ext"
736
830
  }
737
831
  }
738
832
  },
833
+ "TicketDocument": {
834
+ "title": "TicketDocument",
835
+ "description": "A complete, signed vtc/elections/tickets/issue/0.1 request document, ready to send to the community unchanged. Its payload is validated by that specification's schema; the members fixed here are the ones this task guarantees.",
836
+ "type": "object",
837
+ "required": [
838
+ "id",
839
+ "type",
840
+ "issuer",
841
+ "recipient",
842
+ "issuedAt",
843
+ "payload",
844
+ "proof"
845
+ ],
846
+ "properties": {
847
+ "id": {
848
+ "type": "string",
849
+ "pattern": "^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
850
+ },
851
+ "type": {
852
+ "const": "https://trusttasks.org/spec/vtc/elections/tickets/issue/0.1"
853
+ },
854
+ "issuer": {
855
+ "type": "string",
856
+ "minLength": 1,
857
+ "maxLength": 2048,
858
+ "description": "The request's `member`."
859
+ },
860
+ "recipient": {
861
+ "type": "string",
862
+ "minLength": 1,
863
+ "maxLength": 2048,
864
+ "description": "The request's `community`."
865
+ },
866
+ "issuedAt": {
867
+ "type": "string",
868
+ "format": "date-time"
869
+ },
870
+ "expiresAt": {
871
+ "type": "string",
872
+ "format": "date-time"
873
+ },
874
+ "payload": {
875
+ "type": "object",
876
+ "description": "The vtc/elections/tickets/issue/0.1 request payload: `electionId`, `manifestDigest` and `request`, exactly as this response carries them."
877
+ },
878
+ "proof": {
879
+ "type": "object",
880
+ "description": "A Data Integrity proof by an `authentication` key of `issuer`."
881
+ }
882
+ }
883
+ },
739
884
  "Ext": {
740
885
  "title": "Ext",
741
886
  "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.",
@@ -14,4 +14,4 @@ export interface VTCSharedCommunityOwnedRoomDefinitions {
14
14
  * The definitions this shared schema publishes, hoisted to one declaration each.
15
15
  * See "../../../_shared/components.js".
16
16
  */
17
- export type { CommunityRoom, CommunityRoomV2, MemberAction, MemberActions, MemberState, Offer, OfferCredentials, OfferV2, Reason, RoomDescription, RoomLabel, RoomMember, RoomMembership, RoomTag, RoomTags } from "../../../_shared/components.js";
17
+ export type { CommunityRoom, CommunityRoomV2, MemberAction, MemberActions, MemberState, Offer, OfferCredentials, OfferV2, Reason, Renewal, RenewalCredentials, RoomDescription, RoomLabel, RoomMember, RoomMembership, RoomTag, RoomTags } from "../../../_shared/components.js";
@@ -244,7 +244,7 @@ export const PAYLOAD_SCHEMA = {
244
244
  },
245
245
  "RoomBindingSpec": {
246
246
  "title": "RoomBindingSpec",
247
- "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`; leaving removes them unless another source still covers them.",
247
+ "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`, renewed while they stay in the group (collected with vtc/rooms/offers/list at 0.3 or later); leaving removes them unless another source still covers them.",
248
248
  "type": "object",
249
249
  "additionalProperties": false,
250
250
  "required": [
@@ -478,7 +478,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
478
478
  },
479
479
  "RoomBindingSpec": {
480
480
  "title": "RoomBindingSpec",
481
- "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`; leaving removes them unless another source still covers them.",
481
+ "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`, renewed while they stay in the group (collected with vtc/rooms/offers/list at 0.3 or later); leaving removes them unless another source still covers them.",
482
482
  "type": "object",
483
483
  "additionalProperties": false,
484
484
  "required": [
@@ -235,7 +235,7 @@ export const PAYLOAD_SCHEMA = {
235
235
  },
236
236
  "RoomBindingSpec": {
237
237
  "title": "RoomBindingSpec",
238
- "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`; leaving removes them unless another source still covers them.",
238
+ "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`, renewed while they stay in the group (collected with vtc/rooms/offers/list at 0.3 or later); leaving removes them unless another source still covers them.",
239
239
  "type": "object",
240
240
  "additionalProperties": false,
241
241
  "required": [
@@ -473,7 +473,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
473
473
  },
474
474
  "RoomBindingSpec": {
475
475
  "title": "RoomBindingSpec",
476
- "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`; leaving removes them unless another source still covers them.",
476
+ "description": "Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`, renewed while they stay in the group (collected with vtc/rooms/offers/list at 0.3 or later); leaving removes them unless another source still covers them.",
477
477
  "type": "object",
478
478
  "additionalProperties": false,
479
479
  "required": [