@openvtc/trust-tasks 0.19.3 → 0.19.4
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 +161 -0
- package/dist/_shared/components.d.ts +298 -0
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/vetting/_shared/0.1/identity-vetting.d.ts +11 -0
- package/dist/vetting/_shared/0.1/identity-vetting.d.ts.map +1 -0
- package/dist/vetting/_shared/0.1/identity-vetting.js +6 -0
- package/dist/vetting/_shared/0.1/identity-vetting.js.map +1 -0
- package/dist/vetting/_shared/0.1/vetting-card.d.ts +16 -0
- package/dist/vetting/_shared/0.1/vetting-card.d.ts.map +1 -0
- package/dist/vetting/_shared/0.1/vetting-card.js +6 -0
- package/dist/vetting/_shared/0.1/vetting-card.js.map +1 -0
- package/dist/vetting/_shared/0.1/vetting.d.ts +16 -0
- package/dist/vetting/_shared/0.1/vetting.d.ts.map +1 -0
- package/dist/vetting/_shared/0.1/vetting.js +6 -0
- package/dist/vetting/_shared/0.1/vetting.js.map +1 -0
- package/dist/vetting/decline/0.1/payload.d.ts +138 -0
- package/dist/vetting/decline/0.1/payload.d.ts.map +1 -0
- package/dist/vetting/decline/0.1/payload.js +81 -0
- package/dist/vetting/decline/0.1/payload.js.map +1 -0
- package/dist/vetting/request/0.1/payload.d.ts +1188 -0
- package/dist/vetting/request/0.1/payload.d.ts.map +1 -0
- package/dist/vetting/request/0.1/payload.js +596 -0
- package/dist/vetting/request/0.1/payload.js.map +1 -0
- package/dist/vetting/session/0.1/payload.d.ts +978 -0
- package/dist/vetting/session/0.1/payload.d.ts.map +1 -0
- package/dist/vetting/session/0.1/payload.js +570 -0
- package/dist/vetting/session/0.1/payload.js.map +1 -0
- package/dist/vtc/_shared/0.1/vetter-profile.d.ts +16 -0
- package/dist/vtc/_shared/0.1/vetter-profile.d.ts.map +1 -0
- package/dist/vtc/_shared/0.1/vetter-profile.js +6 -0
- package/dist/vtc/_shared/0.1/vetter-profile.js.map +1 -0
- package/dist/vtc/join-requests/manifest/0.2/payload.d.ts +1294 -0
- package/dist/vtc/join-requests/manifest/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/join-requests/manifest/0.2/payload.js +667 -0
- package/dist/vtc/join-requests/manifest/0.2/payload.js.map +1 -0
- package/dist/vtc/vetting/revoke-statement/0.1/payload.d.ts +299 -0
- package/dist/vtc/vetting/revoke-statement/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/vetting/revoke-statement/0.1/payload.js +172 -0
- package/dist/vtc/vetting/revoke-statement/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/vetters/grant/0.1/payload.d.ts +337 -0
- package/dist/vtc/vetting/vetters/grant/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/vetting/vetters/grant/0.1/payload.js +183 -0
- package/dist/vtc/vetting/vetters/grant/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/vetters/list/0.1/payload.d.ts +1257 -0
- package/dist/vtc/vetting/vetters/list/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/vetting/vetters/list/0.1/payload.js +597 -0
- package/dist/vtc/vetting/vetters/list/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/vetters/profile/0.1/payload.d.ts +970 -0
- package/dist/vtc/vetting/vetters/profile/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/vetting/vetters/profile/0.1/payload.js +463 -0
- package/dist/vtc/vetting/vetters/profile/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/vetters/resend/0.1/payload.d.ts +240 -0
- package/dist/vtc/vetting/vetters/resend/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/vetting/vetters/resend/0.1/payload.js +137 -0
- package/dist/vtc/vetting/vetters/resend/0.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +318 -0
- package/src/index.ts +13 -0
- package/src/vetting/_shared/0.1/identity-vetting.ts +11 -0
- package/src/vetting/_shared/0.1/vetting-card.ts +17 -0
- package/src/vetting/_shared/0.1/vetting.ts +17 -0
- package/src/vetting/decline/0.1/payload.ts +111 -0
- package/src/vetting/request/0.1/payload.ts +799 -0
- package/src/vetting/session/0.1/payload.ts +629 -0
- package/src/vtc/_shared/0.1/vetter-profile.ts +17 -0
- package/src/vtc/join-requests/manifest/0.2/payload.ts +815 -0
- package/src/vtc/vetting/revoke-statement/0.1/payload.ts +218 -0
- package/src/vtc/vetting/vetters/grant/0.1/payload.ts +237 -0
- package/src/vtc/vetting/vetters/list/0.1/payload.ts +816 -0
- package/src/vtc/vetting/vetters/profile/0.1/payload.ts +647 -0
- package/src/vtc/vetting/vetters/resend/0.1/payload.ts +174 -0
|
@@ -0,0 +1,816 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/vtc/vetting/vetters/list/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { CalendarDate, CountryCode, Ext, LanguageTag, PlaceName, VetterAcceptsDocumentation, VetterAvailability, VetterContactHint, VetterDisplayName, VetterEvent, VetterLocation, VetterMethods, VettingDocumentation, VettingMethod } from "../../../../../_shared/components.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* An authenticated applicant or member asks a community for its listed vetters, optionally filtered by language, location, method or event. Only active members with a live vetter grant and a profile stored with `listed: true` appear, and each entry carries only what the vetter published, their DID and their grant's expiry. Every filter is optional; filters combine with AND.
|
|
11
|
+
*/
|
|
12
|
+
export interface VTCVettingVettersListPayload {
|
|
13
|
+
/**
|
|
14
|
+
* Matches a vetter with a listed language tag equal to this one or beginning with it followed by `-`, case-insensitively: `de` matches `de` and `de-AT`.
|
|
15
|
+
*/
|
|
16
|
+
language?: LanguageTag;
|
|
17
|
+
country?: CountryCode;
|
|
18
|
+
region?: PlaceName;
|
|
19
|
+
city?: PlaceName;
|
|
20
|
+
method?: VettingMethod;
|
|
21
|
+
eventFrom?: CalendarDate;
|
|
22
|
+
eventTo?: CalendarDate;
|
|
23
|
+
/**
|
|
24
|
+
* Matches an event whose `name` contains this text, case-insensitively.
|
|
25
|
+
*/
|
|
26
|
+
eventName?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Most entries to return. Absent: 50.
|
|
29
|
+
*/
|
|
30
|
+
limit?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Opaque continuation token from a previous page's `nextCursor`, sent with the same filters.
|
|
33
|
+
*/
|
|
34
|
+
cursor?: string;
|
|
35
|
+
ext?: Ext;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* One page of listed vetters matching every filter sent.
|
|
39
|
+
*/
|
|
40
|
+
export interface VTCVettingVettersListResponsePayload {
|
|
41
|
+
/**
|
|
42
|
+
* The page, in the order Conformance defines. May be empty.
|
|
43
|
+
*
|
|
44
|
+
* @maxItems 100
|
|
45
|
+
*/
|
|
46
|
+
vetters: ListedVetter[];
|
|
47
|
+
/**
|
|
48
|
+
* Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page.
|
|
49
|
+
*/
|
|
50
|
+
nextCursor?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* One listed vetter: the published profile without `listed` and `ext`, the vetter's DID, the expiry of their live grant, and when the profile was stored. Nothing else about the member is disclosed.
|
|
54
|
+
*/
|
|
55
|
+
export interface ListedVetter {
|
|
56
|
+
/**
|
|
57
|
+
* The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to.
|
|
58
|
+
*/
|
|
59
|
+
vetterDid: string;
|
|
60
|
+
displayName?: VetterDisplayName;
|
|
61
|
+
/**
|
|
62
|
+
* @maxItems 16
|
|
63
|
+
*/
|
|
64
|
+
languages:
|
|
65
|
+
| []
|
|
66
|
+
| [LanguageTag]
|
|
67
|
+
| [LanguageTag, LanguageTag]
|
|
68
|
+
| [LanguageTag, LanguageTag, LanguageTag]
|
|
69
|
+
| [LanguageTag, LanguageTag, LanguageTag, LanguageTag]
|
|
70
|
+
| [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag]
|
|
71
|
+
| [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag]
|
|
72
|
+
| [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag]
|
|
73
|
+
| [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag]
|
|
74
|
+
| [
|
|
75
|
+
LanguageTag,
|
|
76
|
+
LanguageTag,
|
|
77
|
+
LanguageTag,
|
|
78
|
+
LanguageTag,
|
|
79
|
+
LanguageTag,
|
|
80
|
+
LanguageTag,
|
|
81
|
+
LanguageTag,
|
|
82
|
+
LanguageTag,
|
|
83
|
+
LanguageTag
|
|
84
|
+
]
|
|
85
|
+
| [
|
|
86
|
+
LanguageTag,
|
|
87
|
+
LanguageTag,
|
|
88
|
+
LanguageTag,
|
|
89
|
+
LanguageTag,
|
|
90
|
+
LanguageTag,
|
|
91
|
+
LanguageTag,
|
|
92
|
+
LanguageTag,
|
|
93
|
+
LanguageTag,
|
|
94
|
+
LanguageTag,
|
|
95
|
+
LanguageTag
|
|
96
|
+
]
|
|
97
|
+
| [
|
|
98
|
+
LanguageTag,
|
|
99
|
+
LanguageTag,
|
|
100
|
+
LanguageTag,
|
|
101
|
+
LanguageTag,
|
|
102
|
+
LanguageTag,
|
|
103
|
+
LanguageTag,
|
|
104
|
+
LanguageTag,
|
|
105
|
+
LanguageTag,
|
|
106
|
+
LanguageTag,
|
|
107
|
+
LanguageTag,
|
|
108
|
+
LanguageTag
|
|
109
|
+
]
|
|
110
|
+
| [
|
|
111
|
+
LanguageTag,
|
|
112
|
+
LanguageTag,
|
|
113
|
+
LanguageTag,
|
|
114
|
+
LanguageTag,
|
|
115
|
+
LanguageTag,
|
|
116
|
+
LanguageTag,
|
|
117
|
+
LanguageTag,
|
|
118
|
+
LanguageTag,
|
|
119
|
+
LanguageTag,
|
|
120
|
+
LanguageTag,
|
|
121
|
+
LanguageTag,
|
|
122
|
+
LanguageTag
|
|
123
|
+
]
|
|
124
|
+
| [
|
|
125
|
+
LanguageTag,
|
|
126
|
+
LanguageTag,
|
|
127
|
+
LanguageTag,
|
|
128
|
+
LanguageTag,
|
|
129
|
+
LanguageTag,
|
|
130
|
+
LanguageTag,
|
|
131
|
+
LanguageTag,
|
|
132
|
+
LanguageTag,
|
|
133
|
+
LanguageTag,
|
|
134
|
+
LanguageTag,
|
|
135
|
+
LanguageTag,
|
|
136
|
+
LanguageTag,
|
|
137
|
+
LanguageTag
|
|
138
|
+
]
|
|
139
|
+
| [
|
|
140
|
+
LanguageTag,
|
|
141
|
+
LanguageTag,
|
|
142
|
+
LanguageTag,
|
|
143
|
+
LanguageTag,
|
|
144
|
+
LanguageTag,
|
|
145
|
+
LanguageTag,
|
|
146
|
+
LanguageTag,
|
|
147
|
+
LanguageTag,
|
|
148
|
+
LanguageTag,
|
|
149
|
+
LanguageTag,
|
|
150
|
+
LanguageTag,
|
|
151
|
+
LanguageTag,
|
|
152
|
+
LanguageTag,
|
|
153
|
+
LanguageTag
|
|
154
|
+
]
|
|
155
|
+
| [
|
|
156
|
+
LanguageTag,
|
|
157
|
+
LanguageTag,
|
|
158
|
+
LanguageTag,
|
|
159
|
+
LanguageTag,
|
|
160
|
+
LanguageTag,
|
|
161
|
+
LanguageTag,
|
|
162
|
+
LanguageTag,
|
|
163
|
+
LanguageTag,
|
|
164
|
+
LanguageTag,
|
|
165
|
+
LanguageTag,
|
|
166
|
+
LanguageTag,
|
|
167
|
+
LanguageTag,
|
|
168
|
+
LanguageTag,
|
|
169
|
+
LanguageTag,
|
|
170
|
+
LanguageTag
|
|
171
|
+
]
|
|
172
|
+
| [
|
|
173
|
+
LanguageTag,
|
|
174
|
+
LanguageTag,
|
|
175
|
+
LanguageTag,
|
|
176
|
+
LanguageTag,
|
|
177
|
+
LanguageTag,
|
|
178
|
+
LanguageTag,
|
|
179
|
+
LanguageTag,
|
|
180
|
+
LanguageTag,
|
|
181
|
+
LanguageTag,
|
|
182
|
+
LanguageTag,
|
|
183
|
+
LanguageTag,
|
|
184
|
+
LanguageTag,
|
|
185
|
+
LanguageTag,
|
|
186
|
+
LanguageTag,
|
|
187
|
+
LanguageTag,
|
|
188
|
+
LanguageTag
|
|
189
|
+
];
|
|
190
|
+
location?: VetterLocation;
|
|
191
|
+
methods: VetterMethods;
|
|
192
|
+
acceptsDocumentation: VetterAcceptsDocumentation;
|
|
193
|
+
availability?: VetterAvailability;
|
|
194
|
+
contactHint?: VetterContactHint;
|
|
195
|
+
/**
|
|
196
|
+
* The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned.
|
|
197
|
+
*
|
|
198
|
+
* @maxItems 32
|
|
199
|
+
*/
|
|
200
|
+
events: VetterEvent[];
|
|
201
|
+
/**
|
|
202
|
+
* The `validUntil` of the vetter's live vetter role credential.
|
|
203
|
+
*/
|
|
204
|
+
grantValidUntil: string;
|
|
205
|
+
/**
|
|
206
|
+
* When the community stored this profile, as returned by vtc/vetting/vetters/profile.
|
|
207
|
+
*/
|
|
208
|
+
updatedAt: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
212
|
+
export type { CalendarDate, CountryCode, Ext, LanguageTag, PlaceName, VetterAcceptsDocumentation, VetterAvailability, VetterContactHint, VetterDisplayName, VetterEvent, VetterLocation, VetterMethods, VettingDocumentation, VettingMethod };
|
|
213
|
+
|
|
214
|
+
/** Trust Task type URI. */
|
|
215
|
+
export const TYPE_URI = "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1" as const;
|
|
216
|
+
|
|
217
|
+
/** Stable alias for this specification's request payload shape. */
|
|
218
|
+
export type Payload = VTCVettingVettersListPayload;
|
|
219
|
+
|
|
220
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
221
|
+
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1#response" as const;
|
|
222
|
+
|
|
223
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
224
|
+
export type Response = VTCVettingVettersListResponsePayload;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* This specification's payload schema, as a value.
|
|
228
|
+
*
|
|
229
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
230
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
231
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
232
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
233
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
234
|
+
*/
|
|
235
|
+
export const PAYLOAD_SCHEMA = {
|
|
236
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
237
|
+
"$id": "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1",
|
|
238
|
+
"title": "VTC Vetting — Vetters List — payload",
|
|
239
|
+
"description": "An authenticated applicant or member asks a community for its listed vetters, optionally filtered by language, location, method or event. Only active members with a live vetter grant and a profile stored with `listed: true` appear, and each entry carries only what the vetter published, their DID and their grant's expiry. Every filter is optional; filters combine with AND.",
|
|
240
|
+
"type": "object",
|
|
241
|
+
"additionalProperties": false,
|
|
242
|
+
"properties": {
|
|
243
|
+
"language": {
|
|
244
|
+
"$ref": "#/$defs/LanguageTag",
|
|
245
|
+
"description": "Matches a vetter with a listed language tag equal to this one or beginning with it followed by `-`, case-insensitively: `de` matches `de` and `de-AT`."
|
|
246
|
+
},
|
|
247
|
+
"country": {
|
|
248
|
+
"$ref": "#/$defs/CountryCode"
|
|
249
|
+
},
|
|
250
|
+
"region": {
|
|
251
|
+
"$ref": "#/$defs/PlaceName"
|
|
252
|
+
},
|
|
253
|
+
"city": {
|
|
254
|
+
"$ref": "#/$defs/PlaceName"
|
|
255
|
+
},
|
|
256
|
+
"method": {
|
|
257
|
+
"$ref": "#/$defs/VettingMethod"
|
|
258
|
+
},
|
|
259
|
+
"eventFrom": {
|
|
260
|
+
"$ref": "#/$defs/CalendarDate"
|
|
261
|
+
},
|
|
262
|
+
"eventTo": {
|
|
263
|
+
"$ref": "#/$defs/CalendarDate"
|
|
264
|
+
},
|
|
265
|
+
"eventName": {
|
|
266
|
+
"type": "string",
|
|
267
|
+
"minLength": 1,
|
|
268
|
+
"maxLength": 200,
|
|
269
|
+
"description": "Matches an event whose `name` contains this text, case-insensitively."
|
|
270
|
+
},
|
|
271
|
+
"limit": {
|
|
272
|
+
"type": "integer",
|
|
273
|
+
"minimum": 1,
|
|
274
|
+
"maximum": 100,
|
|
275
|
+
"description": "Most entries to return. Absent: 50."
|
|
276
|
+
},
|
|
277
|
+
"cursor": {
|
|
278
|
+
"type": "string",
|
|
279
|
+
"minLength": 1,
|
|
280
|
+
"maxLength": 512,
|
|
281
|
+
"description": "Opaque continuation token from a previous page's `nextCursor`, sent with the same filters."
|
|
282
|
+
},
|
|
283
|
+
"ext": {
|
|
284
|
+
"$ref": "#/$defs/Ext"
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"$defs": {
|
|
288
|
+
"ListedVetter": {
|
|
289
|
+
"title": "ListedVetter",
|
|
290
|
+
"description": "One listed vetter: the published profile without `listed` and `ext`, the vetter's DID, the expiry of their live grant, and when the profile was stored. Nothing else about the member is disclosed.",
|
|
291
|
+
"type": "object",
|
|
292
|
+
"additionalProperties": false,
|
|
293
|
+
"required": [
|
|
294
|
+
"vetterDid",
|
|
295
|
+
"languages",
|
|
296
|
+
"methods",
|
|
297
|
+
"acceptsDocumentation",
|
|
298
|
+
"events",
|
|
299
|
+
"grantValidUntil",
|
|
300
|
+
"updatedAt"
|
|
301
|
+
],
|
|
302
|
+
"properties": {
|
|
303
|
+
"vetterDid": {
|
|
304
|
+
"type": "string",
|
|
305
|
+
"pattern": "^did:",
|
|
306
|
+
"description": "The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to."
|
|
307
|
+
},
|
|
308
|
+
"displayName": {
|
|
309
|
+
"$ref": "#/$defs/VetterDisplayName"
|
|
310
|
+
},
|
|
311
|
+
"languages": {
|
|
312
|
+
"type": "array",
|
|
313
|
+
"maxItems": 16,
|
|
314
|
+
"uniqueItems": true,
|
|
315
|
+
"items": {
|
|
316
|
+
"$ref": "#/$defs/LanguageTag"
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"location": {
|
|
320
|
+
"$ref": "#/$defs/VetterLocation"
|
|
321
|
+
},
|
|
322
|
+
"methods": {
|
|
323
|
+
"$ref": "#/$defs/VetterMethods"
|
|
324
|
+
},
|
|
325
|
+
"acceptsDocumentation": {
|
|
326
|
+
"$ref": "#/$defs/VetterAcceptsDocumentation"
|
|
327
|
+
},
|
|
328
|
+
"availability": {
|
|
329
|
+
"$ref": "#/$defs/VetterAvailability"
|
|
330
|
+
},
|
|
331
|
+
"contactHint": {
|
|
332
|
+
"$ref": "#/$defs/VetterContactHint"
|
|
333
|
+
},
|
|
334
|
+
"events": {
|
|
335
|
+
"type": "array",
|
|
336
|
+
"maxItems": 32,
|
|
337
|
+
"items": {
|
|
338
|
+
"$ref": "#/$defs/VetterEvent"
|
|
339
|
+
},
|
|
340
|
+
"description": "The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned."
|
|
341
|
+
},
|
|
342
|
+
"grantValidUntil": {
|
|
343
|
+
"type": "string",
|
|
344
|
+
"format": "date-time",
|
|
345
|
+
"description": "The `validUntil` of the vetter's live vetter role credential."
|
|
346
|
+
},
|
|
347
|
+
"updatedAt": {
|
|
348
|
+
"type": "string",
|
|
349
|
+
"format": "date-time",
|
|
350
|
+
"description": "When the community stored this profile, as returned by vtc/vetting/vetters/profile."
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
"Response": {
|
|
355
|
+
"$anchor": "response",
|
|
356
|
+
"title": "VTC Vetting — Vetters List — response payload",
|
|
357
|
+
"description": "One page of listed vetters matching every filter sent.",
|
|
358
|
+
"type": "object",
|
|
359
|
+
"additionalProperties": false,
|
|
360
|
+
"required": [
|
|
361
|
+
"vetters"
|
|
362
|
+
],
|
|
363
|
+
"properties": {
|
|
364
|
+
"vetters": {
|
|
365
|
+
"type": "array",
|
|
366
|
+
"maxItems": 100,
|
|
367
|
+
"items": {
|
|
368
|
+
"$ref": "#/$defs/ListedVetter"
|
|
369
|
+
},
|
|
370
|
+
"description": "The page, in the order Conformance defines. May be empty."
|
|
371
|
+
},
|
|
372
|
+
"nextCursor": {
|
|
373
|
+
"type": "string",
|
|
374
|
+
"minLength": 1,
|
|
375
|
+
"maxLength": 512,
|
|
376
|
+
"description": "Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page."
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
"VetterEvent": {
|
|
381
|
+
"title": "VetterEvent",
|
|
382
|
+
"type": "object",
|
|
383
|
+
"additionalProperties": false,
|
|
384
|
+
"required": [
|
|
385
|
+
"name",
|
|
386
|
+
"startDate",
|
|
387
|
+
"endDate"
|
|
388
|
+
],
|
|
389
|
+
"properties": {
|
|
390
|
+
"name": {
|
|
391
|
+
"type": "string",
|
|
392
|
+
"minLength": 1,
|
|
393
|
+
"maxLength": 200,
|
|
394
|
+
"description": "The event's name, e.g. `Linux Plumbers Conference 2026`."
|
|
395
|
+
},
|
|
396
|
+
"startDate": {
|
|
397
|
+
"$ref": "#/$defs/CalendarDate"
|
|
398
|
+
},
|
|
399
|
+
"endDate": {
|
|
400
|
+
"$ref": "#/$defs/CalendarDate"
|
|
401
|
+
},
|
|
402
|
+
"location": {
|
|
403
|
+
"$ref": "#/$defs/VetterLocation"
|
|
404
|
+
},
|
|
405
|
+
"url": {
|
|
406
|
+
"type": "string",
|
|
407
|
+
"format": "uri",
|
|
408
|
+
"pattern": "^https://",
|
|
409
|
+
"maxLength": 2048,
|
|
410
|
+
"description": "OPTIONAL. The event's own https page."
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
"description": "An event the vetter will attend and vet at. `endDate` is on or after `startDate` and no more than 31 days after it; JSON Schema cannot compare two members, so the community checks both and refuses a violation with `malformedRequest`."
|
|
414
|
+
},
|
|
415
|
+
"VetterLocation": {
|
|
416
|
+
"title": "VetterLocation",
|
|
417
|
+
"type": "object",
|
|
418
|
+
"additionalProperties": false,
|
|
419
|
+
"required": [
|
|
420
|
+
"country"
|
|
421
|
+
],
|
|
422
|
+
"properties": {
|
|
423
|
+
"country": {
|
|
424
|
+
"$ref": "#/$defs/CountryCode"
|
|
425
|
+
},
|
|
426
|
+
"region": {
|
|
427
|
+
"$ref": "#/$defs/PlaceName"
|
|
428
|
+
},
|
|
429
|
+
"city": {
|
|
430
|
+
"$ref": "#/$defs/PlaceName"
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
"description": "Where a vetter can meet people, as coarse as the vetter chooses: a country, optionally a region, optionally a city. Never a street address."
|
|
434
|
+
},
|
|
435
|
+
"PlaceName": {
|
|
436
|
+
"title": "PlaceName",
|
|
437
|
+
"type": "string",
|
|
438
|
+
"minLength": 1,
|
|
439
|
+
"maxLength": 128,
|
|
440
|
+
"description": "A region or city name as the vetter writes it. Compared case-insensitively and otherwise exactly."
|
|
441
|
+
},
|
|
442
|
+
"CountryCode": {
|
|
443
|
+
"title": "CountryCode",
|
|
444
|
+
"type": "string",
|
|
445
|
+
"pattern": "^[A-Z]{2}$",
|
|
446
|
+
"description": "An ISO 3166-1 alpha-2 country code, upper case, e.g. `DE`."
|
|
447
|
+
},
|
|
448
|
+
"CalendarDate": {
|
|
449
|
+
"title": "CalendarDate",
|
|
450
|
+
"type": "string",
|
|
451
|
+
"format": "date",
|
|
452
|
+
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
|
|
453
|
+
"description": "A calendar date, `YYYY-MM-DD` (RFC 3339 full-date), with no time or zone. Compared as a UTC date."
|
|
454
|
+
},
|
|
455
|
+
"VetterContactHint": {
|
|
456
|
+
"title": "VetterContactHint",
|
|
457
|
+
"type": "string",
|
|
458
|
+
"minLength": 1,
|
|
459
|
+
"maxLength": 300,
|
|
460
|
+
"description": "Vetter-authored free text on how to obtain a ticket from them, e.g. `Find me at the OpenVTC booth`. A hint, not an address a request can be sent to: vetting/request still needs a ticket or an introduction the vetter accepts."
|
|
461
|
+
},
|
|
462
|
+
"VetterAvailability": {
|
|
463
|
+
"title": "VetterAvailability",
|
|
464
|
+
"type": "string",
|
|
465
|
+
"minLength": 1,
|
|
466
|
+
"maxLength": 500,
|
|
467
|
+
"description": "Vetter-authored free text on when they are available to vet. Attributed to the vetter."
|
|
468
|
+
},
|
|
469
|
+
"VetterAcceptsDocumentation": {
|
|
470
|
+
"title": "VetterAcceptsDocumentation",
|
|
471
|
+
"type": "array",
|
|
472
|
+
"maxItems": 16,
|
|
473
|
+
"uniqueItems": true,
|
|
474
|
+
"items": {
|
|
475
|
+
"$ref": "#/$defs/VettingDocumentation"
|
|
476
|
+
},
|
|
477
|
+
"description": "What documentation the vetter relies on, in the same tokens as vetting/request's `acceptsDocumentation` — `passport`, `nationalId`, `driverLicence`, `none`, or another lowerCamelCase class. The vetter's own choice; empty says nothing either way."
|
|
478
|
+
},
|
|
479
|
+
"VettingDocumentation": {
|
|
480
|
+
"title": "VettingDocumentation",
|
|
481
|
+
"type": "string",
|
|
482
|
+
"minLength": 1,
|
|
483
|
+
"maxLength": 64,
|
|
484
|
+
"pattern": "^[a-z][a-zA-Z0-9]*$",
|
|
485
|
+
"description": "A class of documentation, named in lowerCamelCase. Open rather than enumerated, because what documentation a vetter accepts is each vetter's own choice. Well-known values: `passport`, `nationalId`, `driverLicence`, and `none` — the vetter will attest without a document, which is the `priorAcquaintance` case. Only the class ever travels — never a document number, an image, an issuing authority or an expiry date. `none` states a policy (what a vetter accepts); a record of what was relied on expresses 'no document' as an empty list instead."
|
|
486
|
+
},
|
|
487
|
+
"VetterMethods": {
|
|
488
|
+
"title": "VetterMethods",
|
|
489
|
+
"type": "array",
|
|
490
|
+
"minItems": 1,
|
|
491
|
+
"maxItems": 3,
|
|
492
|
+
"uniqueItems": true,
|
|
493
|
+
"items": {
|
|
494
|
+
"$ref": "#/$defs/VettingMethod"
|
|
495
|
+
},
|
|
496
|
+
"description": "The methods the vetter offers, from `inPerson`, `video`, `priorAcquaintance`."
|
|
497
|
+
},
|
|
498
|
+
"VettingMethod": {
|
|
499
|
+
"title": "VettingMethod",
|
|
500
|
+
"type": "string",
|
|
501
|
+
"enum": [
|
|
502
|
+
"inPerson",
|
|
503
|
+
"video",
|
|
504
|
+
"priorAcquaintance"
|
|
505
|
+
],
|
|
506
|
+
"description": "How the vetter established that the person they checked is the person controlling the applicant's DID. `inPerson` — both people were physically together. `video` — a live, two-way video call. `priorAcquaintance` — the vetter has known or worked with this person over a period, and attests from that knowledge rather than from a document. A method is a description of what happened, not an assurance level: which methods count, and how many of each, is community policy."
|
|
507
|
+
},
|
|
508
|
+
"LanguageTag": {
|
|
509
|
+
"title": "LanguageTag",
|
|
510
|
+
"type": "string",
|
|
511
|
+
"minLength": 2,
|
|
512
|
+
"maxLength": 35,
|
|
513
|
+
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8})*$",
|
|
514
|
+
"description": "A BCP 47 language tag, e.g. `en`, `de-AT`. Compared case-insensitively."
|
|
515
|
+
},
|
|
516
|
+
"VetterDisplayName": {
|
|
517
|
+
"title": "VetterDisplayName",
|
|
518
|
+
"type": "string",
|
|
519
|
+
"minLength": 1,
|
|
520
|
+
"maxLength": 128,
|
|
521
|
+
"description": "The name the vetter chooses to be listed under. Self-asserted and unverified: it is not the name on any document, and a client MUST attribute it to the vetter."
|
|
522
|
+
},
|
|
523
|
+
"Ext": {
|
|
524
|
+
"title": "Ext",
|
|
525
|
+
"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.",
|
|
526
|
+
"type": "object",
|
|
527
|
+
"minProperties": 1,
|
|
528
|
+
"additionalProperties": true,
|
|
529
|
+
"propertyNames": {
|
|
530
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
} as const;
|
|
535
|
+
|
|
536
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
537
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
538
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
539
|
+
"$ref": "#/$defs/Response",
|
|
540
|
+
"$defs": {
|
|
541
|
+
"ListedVetter": {
|
|
542
|
+
"title": "ListedVetter",
|
|
543
|
+
"description": "One listed vetter: the published profile without `listed` and `ext`, the vetter's DID, the expiry of their live grant, and when the profile was stored. Nothing else about the member is disclosed.",
|
|
544
|
+
"type": "object",
|
|
545
|
+
"additionalProperties": false,
|
|
546
|
+
"required": [
|
|
547
|
+
"vetterDid",
|
|
548
|
+
"languages",
|
|
549
|
+
"methods",
|
|
550
|
+
"acceptsDocumentation",
|
|
551
|
+
"events",
|
|
552
|
+
"grantValidUntil",
|
|
553
|
+
"updatedAt"
|
|
554
|
+
],
|
|
555
|
+
"properties": {
|
|
556
|
+
"vetterDid": {
|
|
557
|
+
"type": "string",
|
|
558
|
+
"pattern": "^did:",
|
|
559
|
+
"description": "The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to."
|
|
560
|
+
},
|
|
561
|
+
"displayName": {
|
|
562
|
+
"$ref": "#/$defs/VetterDisplayName"
|
|
563
|
+
},
|
|
564
|
+
"languages": {
|
|
565
|
+
"type": "array",
|
|
566
|
+
"maxItems": 16,
|
|
567
|
+
"uniqueItems": true,
|
|
568
|
+
"items": {
|
|
569
|
+
"$ref": "#/$defs/LanguageTag"
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
"location": {
|
|
573
|
+
"$ref": "#/$defs/VetterLocation"
|
|
574
|
+
},
|
|
575
|
+
"methods": {
|
|
576
|
+
"$ref": "#/$defs/VetterMethods"
|
|
577
|
+
},
|
|
578
|
+
"acceptsDocumentation": {
|
|
579
|
+
"$ref": "#/$defs/VetterAcceptsDocumentation"
|
|
580
|
+
},
|
|
581
|
+
"availability": {
|
|
582
|
+
"$ref": "#/$defs/VetterAvailability"
|
|
583
|
+
},
|
|
584
|
+
"contactHint": {
|
|
585
|
+
"$ref": "#/$defs/VetterContactHint"
|
|
586
|
+
},
|
|
587
|
+
"events": {
|
|
588
|
+
"type": "array",
|
|
589
|
+
"maxItems": 32,
|
|
590
|
+
"items": {
|
|
591
|
+
"$ref": "#/$defs/VetterEvent"
|
|
592
|
+
},
|
|
593
|
+
"description": "The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned."
|
|
594
|
+
},
|
|
595
|
+
"grantValidUntil": {
|
|
596
|
+
"type": "string",
|
|
597
|
+
"format": "date-time",
|
|
598
|
+
"description": "The `validUntil` of the vetter's live vetter role credential."
|
|
599
|
+
},
|
|
600
|
+
"updatedAt": {
|
|
601
|
+
"type": "string",
|
|
602
|
+
"format": "date-time",
|
|
603
|
+
"description": "When the community stored this profile, as returned by vtc/vetting/vetters/profile."
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
},
|
|
607
|
+
"Response": {
|
|
608
|
+
"$anchor": "response",
|
|
609
|
+
"title": "VTC Vetting — Vetters List — response payload",
|
|
610
|
+
"description": "One page of listed vetters matching every filter sent.",
|
|
611
|
+
"type": "object",
|
|
612
|
+
"additionalProperties": false,
|
|
613
|
+
"required": [
|
|
614
|
+
"vetters"
|
|
615
|
+
],
|
|
616
|
+
"properties": {
|
|
617
|
+
"vetters": {
|
|
618
|
+
"type": "array",
|
|
619
|
+
"maxItems": 100,
|
|
620
|
+
"items": {
|
|
621
|
+
"$ref": "#/$defs/ListedVetter"
|
|
622
|
+
},
|
|
623
|
+
"description": "The page, in the order Conformance defines. May be empty."
|
|
624
|
+
},
|
|
625
|
+
"nextCursor": {
|
|
626
|
+
"type": "string",
|
|
627
|
+
"minLength": 1,
|
|
628
|
+
"maxLength": 512,
|
|
629
|
+
"description": "Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page."
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
"VetterEvent": {
|
|
634
|
+
"title": "VetterEvent",
|
|
635
|
+
"type": "object",
|
|
636
|
+
"additionalProperties": false,
|
|
637
|
+
"required": [
|
|
638
|
+
"name",
|
|
639
|
+
"startDate",
|
|
640
|
+
"endDate"
|
|
641
|
+
],
|
|
642
|
+
"properties": {
|
|
643
|
+
"name": {
|
|
644
|
+
"type": "string",
|
|
645
|
+
"minLength": 1,
|
|
646
|
+
"maxLength": 200,
|
|
647
|
+
"description": "The event's name, e.g. `Linux Plumbers Conference 2026`."
|
|
648
|
+
},
|
|
649
|
+
"startDate": {
|
|
650
|
+
"$ref": "#/$defs/CalendarDate"
|
|
651
|
+
},
|
|
652
|
+
"endDate": {
|
|
653
|
+
"$ref": "#/$defs/CalendarDate"
|
|
654
|
+
},
|
|
655
|
+
"location": {
|
|
656
|
+
"$ref": "#/$defs/VetterLocation"
|
|
657
|
+
},
|
|
658
|
+
"url": {
|
|
659
|
+
"type": "string",
|
|
660
|
+
"format": "uri",
|
|
661
|
+
"pattern": "^https://",
|
|
662
|
+
"maxLength": 2048,
|
|
663
|
+
"description": "OPTIONAL. The event's own https page."
|
|
664
|
+
}
|
|
665
|
+
},
|
|
666
|
+
"description": "An event the vetter will attend and vet at. `endDate` is on or after `startDate` and no more than 31 days after it; JSON Schema cannot compare two members, so the community checks both and refuses a violation with `malformedRequest`."
|
|
667
|
+
},
|
|
668
|
+
"VetterLocation": {
|
|
669
|
+
"title": "VetterLocation",
|
|
670
|
+
"type": "object",
|
|
671
|
+
"additionalProperties": false,
|
|
672
|
+
"required": [
|
|
673
|
+
"country"
|
|
674
|
+
],
|
|
675
|
+
"properties": {
|
|
676
|
+
"country": {
|
|
677
|
+
"$ref": "#/$defs/CountryCode"
|
|
678
|
+
},
|
|
679
|
+
"region": {
|
|
680
|
+
"$ref": "#/$defs/PlaceName"
|
|
681
|
+
},
|
|
682
|
+
"city": {
|
|
683
|
+
"$ref": "#/$defs/PlaceName"
|
|
684
|
+
}
|
|
685
|
+
},
|
|
686
|
+
"description": "Where a vetter can meet people, as coarse as the vetter chooses: a country, optionally a region, optionally a city. Never a street address."
|
|
687
|
+
},
|
|
688
|
+
"PlaceName": {
|
|
689
|
+
"title": "PlaceName",
|
|
690
|
+
"type": "string",
|
|
691
|
+
"minLength": 1,
|
|
692
|
+
"maxLength": 128,
|
|
693
|
+
"description": "A region or city name as the vetter writes it. Compared case-insensitively and otherwise exactly."
|
|
694
|
+
},
|
|
695
|
+
"CountryCode": {
|
|
696
|
+
"title": "CountryCode",
|
|
697
|
+
"type": "string",
|
|
698
|
+
"pattern": "^[A-Z]{2}$",
|
|
699
|
+
"description": "An ISO 3166-1 alpha-2 country code, upper case, e.g. `DE`."
|
|
700
|
+
},
|
|
701
|
+
"CalendarDate": {
|
|
702
|
+
"title": "CalendarDate",
|
|
703
|
+
"type": "string",
|
|
704
|
+
"format": "date",
|
|
705
|
+
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
|
|
706
|
+
"description": "A calendar date, `YYYY-MM-DD` (RFC 3339 full-date), with no time or zone. Compared as a UTC date."
|
|
707
|
+
},
|
|
708
|
+
"VetterContactHint": {
|
|
709
|
+
"title": "VetterContactHint",
|
|
710
|
+
"type": "string",
|
|
711
|
+
"minLength": 1,
|
|
712
|
+
"maxLength": 300,
|
|
713
|
+
"description": "Vetter-authored free text on how to obtain a ticket from them, e.g. `Find me at the OpenVTC booth`. A hint, not an address a request can be sent to: vetting/request still needs a ticket or an introduction the vetter accepts."
|
|
714
|
+
},
|
|
715
|
+
"VetterAvailability": {
|
|
716
|
+
"title": "VetterAvailability",
|
|
717
|
+
"type": "string",
|
|
718
|
+
"minLength": 1,
|
|
719
|
+
"maxLength": 500,
|
|
720
|
+
"description": "Vetter-authored free text on when they are available to vet. Attributed to the vetter."
|
|
721
|
+
},
|
|
722
|
+
"VetterAcceptsDocumentation": {
|
|
723
|
+
"title": "VetterAcceptsDocumentation",
|
|
724
|
+
"type": "array",
|
|
725
|
+
"maxItems": 16,
|
|
726
|
+
"uniqueItems": true,
|
|
727
|
+
"items": {
|
|
728
|
+
"$ref": "#/$defs/VettingDocumentation"
|
|
729
|
+
},
|
|
730
|
+
"description": "What documentation the vetter relies on, in the same tokens as vetting/request's `acceptsDocumentation` — `passport`, `nationalId`, `driverLicence`, `none`, or another lowerCamelCase class. The vetter's own choice; empty says nothing either way."
|
|
731
|
+
},
|
|
732
|
+
"VettingDocumentation": {
|
|
733
|
+
"title": "VettingDocumentation",
|
|
734
|
+
"type": "string",
|
|
735
|
+
"minLength": 1,
|
|
736
|
+
"maxLength": 64,
|
|
737
|
+
"pattern": "^[a-z][a-zA-Z0-9]*$",
|
|
738
|
+
"description": "A class of documentation, named in lowerCamelCase. Open rather than enumerated, because what documentation a vetter accepts is each vetter's own choice. Well-known values: `passport`, `nationalId`, `driverLicence`, and `none` — the vetter will attest without a document, which is the `priorAcquaintance` case. Only the class ever travels — never a document number, an image, an issuing authority or an expiry date. `none` states a policy (what a vetter accepts); a record of what was relied on expresses 'no document' as an empty list instead."
|
|
739
|
+
},
|
|
740
|
+
"VetterMethods": {
|
|
741
|
+
"title": "VetterMethods",
|
|
742
|
+
"type": "array",
|
|
743
|
+
"minItems": 1,
|
|
744
|
+
"maxItems": 3,
|
|
745
|
+
"uniqueItems": true,
|
|
746
|
+
"items": {
|
|
747
|
+
"$ref": "#/$defs/VettingMethod"
|
|
748
|
+
},
|
|
749
|
+
"description": "The methods the vetter offers, from `inPerson`, `video`, `priorAcquaintance`."
|
|
750
|
+
},
|
|
751
|
+
"VettingMethod": {
|
|
752
|
+
"title": "VettingMethod",
|
|
753
|
+
"type": "string",
|
|
754
|
+
"enum": [
|
|
755
|
+
"inPerson",
|
|
756
|
+
"video",
|
|
757
|
+
"priorAcquaintance"
|
|
758
|
+
],
|
|
759
|
+
"description": "How the vetter established that the person they checked is the person controlling the applicant's DID. `inPerson` — both people were physically together. `video` — a live, two-way video call. `priorAcquaintance` — the vetter has known or worked with this person over a period, and attests from that knowledge rather than from a document. A method is a description of what happened, not an assurance level: which methods count, and how many of each, is community policy."
|
|
760
|
+
},
|
|
761
|
+
"LanguageTag": {
|
|
762
|
+
"title": "LanguageTag",
|
|
763
|
+
"type": "string",
|
|
764
|
+
"minLength": 2,
|
|
765
|
+
"maxLength": 35,
|
|
766
|
+
"pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8})*$",
|
|
767
|
+
"description": "A BCP 47 language tag, e.g. `en`, `de-AT`. Compared case-insensitively."
|
|
768
|
+
},
|
|
769
|
+
"VetterDisplayName": {
|
|
770
|
+
"title": "VetterDisplayName",
|
|
771
|
+
"type": "string",
|
|
772
|
+
"minLength": 1,
|
|
773
|
+
"maxLength": 128,
|
|
774
|
+
"description": "The name the vetter chooses to be listed under. Self-asserted and unverified: it is not the name on any document, and a client MUST attribute it to the vetter."
|
|
775
|
+
},
|
|
776
|
+
"Ext": {
|
|
777
|
+
"title": "Ext",
|
|
778
|
+
"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.",
|
|
779
|
+
"type": "object",
|
|
780
|
+
"minProperties": 1,
|
|
781
|
+
"additionalProperties": true,
|
|
782
|
+
"propertyNames": {
|
|
783
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
} as const;
|
|
788
|
+
|
|
789
|
+
/**
|
|
790
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
791
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
792
|
+
* per-specification and cannot be derived from the document alone, and
|
|
793
|
+
* item 2 needs the schema this carries.
|
|
794
|
+
*/
|
|
795
|
+
export const SPEC = {
|
|
796
|
+
typeUri: TYPE_URI,
|
|
797
|
+
isBearer: false,
|
|
798
|
+
isProofRequired: false,
|
|
799
|
+
isRecipientRequired: true,
|
|
800
|
+
isIssuedAtRequired: false,
|
|
801
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
802
|
+
} as const;
|
|
803
|
+
|
|
804
|
+
/**
|
|
805
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
806
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
807
|
+
* parties (§7.3 item 5).
|
|
808
|
+
*/
|
|
809
|
+
export const RESPONSE_SPEC = {
|
|
810
|
+
typeUri: RESPONSE_TYPE_URI,
|
|
811
|
+
isBearer: false,
|
|
812
|
+
isProofRequired: false,
|
|
813
|
+
isRecipientRequired: true,
|
|
814
|
+
isIssuedAtRequired: false,
|
|
815
|
+
payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
|
|
816
|
+
} as const;
|