@openvtc/trust-tasks 0.19.3 → 0.19.5
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 +209 -0
- package/dist/_shared/components.d.ts +298 -0
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -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/vta/webvh/dids/realign-keys/1.0/payload.d.ts +484 -0
- package/dist/vta/webvh/dids/realign-keys/1.0/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/realign-keys/1.0/payload.js +259 -0
- package/dist/vta/webvh/dids/realign-keys/1.0/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 +14 -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/vta/webvh/dids/realign-keys/1.0/payload.ts +332 -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,1257 @@
|
|
|
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
|
+
import type { CalendarDate, CountryCode, Ext, LanguageTag, PlaceName, VetterAcceptsDocumentation, VetterAvailability, VetterContactHint, VetterDisplayName, VetterEvent, VetterLocation, VetterMethods, VettingDocumentation, VettingMethod } from "../../../../../_shared/components.js";
|
|
6
|
+
/**
|
|
7
|
+
* 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.
|
|
8
|
+
*/
|
|
9
|
+
export interface VTCVettingVettersListPayload {
|
|
10
|
+
/**
|
|
11
|
+
* 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`.
|
|
12
|
+
*/
|
|
13
|
+
language?: LanguageTag;
|
|
14
|
+
country?: CountryCode;
|
|
15
|
+
region?: PlaceName;
|
|
16
|
+
city?: PlaceName;
|
|
17
|
+
method?: VettingMethod;
|
|
18
|
+
eventFrom?: CalendarDate;
|
|
19
|
+
eventTo?: CalendarDate;
|
|
20
|
+
/**
|
|
21
|
+
* Matches an event whose `name` contains this text, case-insensitively.
|
|
22
|
+
*/
|
|
23
|
+
eventName?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Most entries to return. Absent: 50.
|
|
26
|
+
*/
|
|
27
|
+
limit?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Opaque continuation token from a previous page's `nextCursor`, sent with the same filters.
|
|
30
|
+
*/
|
|
31
|
+
cursor?: string;
|
|
32
|
+
ext?: Ext;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* One page of listed vetters matching every filter sent.
|
|
36
|
+
*/
|
|
37
|
+
export interface VTCVettingVettersListResponsePayload {
|
|
38
|
+
/**
|
|
39
|
+
* The page, in the order Conformance defines. May be empty.
|
|
40
|
+
*
|
|
41
|
+
* @maxItems 100
|
|
42
|
+
*/
|
|
43
|
+
vetters: ListedVetter[];
|
|
44
|
+
/**
|
|
45
|
+
* Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page.
|
|
46
|
+
*/
|
|
47
|
+
nextCursor?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 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.
|
|
51
|
+
*/
|
|
52
|
+
export interface ListedVetter {
|
|
53
|
+
/**
|
|
54
|
+
* The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to.
|
|
55
|
+
*/
|
|
56
|
+
vetterDid: string;
|
|
57
|
+
displayName?: VetterDisplayName;
|
|
58
|
+
/**
|
|
59
|
+
* @maxItems 16
|
|
60
|
+
*/
|
|
61
|
+
languages: [] | [LanguageTag] | [LanguageTag, LanguageTag] | [LanguageTag, LanguageTag, LanguageTag] | [LanguageTag, LanguageTag, LanguageTag, LanguageTag] | [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag] | [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag] | [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag] | [LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag, LanguageTag] | [
|
|
62
|
+
LanguageTag,
|
|
63
|
+
LanguageTag,
|
|
64
|
+
LanguageTag,
|
|
65
|
+
LanguageTag,
|
|
66
|
+
LanguageTag,
|
|
67
|
+
LanguageTag,
|
|
68
|
+
LanguageTag,
|
|
69
|
+
LanguageTag,
|
|
70
|
+
LanguageTag
|
|
71
|
+
] | [
|
|
72
|
+
LanguageTag,
|
|
73
|
+
LanguageTag,
|
|
74
|
+
LanguageTag,
|
|
75
|
+
LanguageTag,
|
|
76
|
+
LanguageTag,
|
|
77
|
+
LanguageTag,
|
|
78
|
+
LanguageTag,
|
|
79
|
+
LanguageTag,
|
|
80
|
+
LanguageTag,
|
|
81
|
+
LanguageTag
|
|
82
|
+
] | [
|
|
83
|
+
LanguageTag,
|
|
84
|
+
LanguageTag,
|
|
85
|
+
LanguageTag,
|
|
86
|
+
LanguageTag,
|
|
87
|
+
LanguageTag,
|
|
88
|
+
LanguageTag,
|
|
89
|
+
LanguageTag,
|
|
90
|
+
LanguageTag,
|
|
91
|
+
LanguageTag,
|
|
92
|
+
LanguageTag,
|
|
93
|
+
LanguageTag
|
|
94
|
+
] | [
|
|
95
|
+
LanguageTag,
|
|
96
|
+
LanguageTag,
|
|
97
|
+
LanguageTag,
|
|
98
|
+
LanguageTag,
|
|
99
|
+
LanguageTag,
|
|
100
|
+
LanguageTag,
|
|
101
|
+
LanguageTag,
|
|
102
|
+
LanguageTag,
|
|
103
|
+
LanguageTag,
|
|
104
|
+
LanguageTag,
|
|
105
|
+
LanguageTag,
|
|
106
|
+
LanguageTag
|
|
107
|
+
] | [
|
|
108
|
+
LanguageTag,
|
|
109
|
+
LanguageTag,
|
|
110
|
+
LanguageTag,
|
|
111
|
+
LanguageTag,
|
|
112
|
+
LanguageTag,
|
|
113
|
+
LanguageTag,
|
|
114
|
+
LanguageTag,
|
|
115
|
+
LanguageTag,
|
|
116
|
+
LanguageTag,
|
|
117
|
+
LanguageTag,
|
|
118
|
+
LanguageTag,
|
|
119
|
+
LanguageTag,
|
|
120
|
+
LanguageTag
|
|
121
|
+
] | [
|
|
122
|
+
LanguageTag,
|
|
123
|
+
LanguageTag,
|
|
124
|
+
LanguageTag,
|
|
125
|
+
LanguageTag,
|
|
126
|
+
LanguageTag,
|
|
127
|
+
LanguageTag,
|
|
128
|
+
LanguageTag,
|
|
129
|
+
LanguageTag,
|
|
130
|
+
LanguageTag,
|
|
131
|
+
LanguageTag,
|
|
132
|
+
LanguageTag,
|
|
133
|
+
LanguageTag,
|
|
134
|
+
LanguageTag,
|
|
135
|
+
LanguageTag
|
|
136
|
+
] | [
|
|
137
|
+
LanguageTag,
|
|
138
|
+
LanguageTag,
|
|
139
|
+
LanguageTag,
|
|
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
|
+
] | [
|
|
153
|
+
LanguageTag,
|
|
154
|
+
LanguageTag,
|
|
155
|
+
LanguageTag,
|
|
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
|
+
];
|
|
170
|
+
location?: VetterLocation;
|
|
171
|
+
methods: VetterMethods;
|
|
172
|
+
acceptsDocumentation: VetterAcceptsDocumentation;
|
|
173
|
+
availability?: VetterAvailability;
|
|
174
|
+
contactHint?: VetterContactHint;
|
|
175
|
+
/**
|
|
176
|
+
* The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned.
|
|
177
|
+
*
|
|
178
|
+
* @maxItems 32
|
|
179
|
+
*/
|
|
180
|
+
events: VetterEvent[];
|
|
181
|
+
/**
|
|
182
|
+
* The `validUntil` of the vetter's live vetter role credential.
|
|
183
|
+
*/
|
|
184
|
+
grantValidUntil: string;
|
|
185
|
+
/**
|
|
186
|
+
* When the community stored this profile, as returned by vtc/vetting/vetters/profile.
|
|
187
|
+
*/
|
|
188
|
+
updatedAt: string;
|
|
189
|
+
}
|
|
190
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
191
|
+
export type { CalendarDate, CountryCode, Ext, LanguageTag, PlaceName, VetterAcceptsDocumentation, VetterAvailability, VetterContactHint, VetterDisplayName, VetterEvent, VetterLocation, VetterMethods, VettingDocumentation, VettingMethod };
|
|
192
|
+
/** Trust Task type URI. */
|
|
193
|
+
export declare const TYPE_URI: "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1";
|
|
194
|
+
/** Stable alias for this specification's request payload shape. */
|
|
195
|
+
export type Payload = VTCVettingVettersListPayload;
|
|
196
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
197
|
+
export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1#response";
|
|
198
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
199
|
+
export type Response = VTCVettingVettersListResponsePayload;
|
|
200
|
+
/**
|
|
201
|
+
* This specification's payload schema, as a value.
|
|
202
|
+
*
|
|
203
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
204
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
205
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
206
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
207
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
208
|
+
*/
|
|
209
|
+
export declare const PAYLOAD_SCHEMA: {
|
|
210
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
211
|
+
readonly $id: "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1";
|
|
212
|
+
readonly title: "VTC Vetting — Vetters List — payload";
|
|
213
|
+
readonly 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.";
|
|
214
|
+
readonly type: "object";
|
|
215
|
+
readonly additionalProperties: false;
|
|
216
|
+
readonly properties: {
|
|
217
|
+
readonly language: {
|
|
218
|
+
readonly $ref: "#/$defs/LanguageTag";
|
|
219
|
+
readonly 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`.";
|
|
220
|
+
};
|
|
221
|
+
readonly country: {
|
|
222
|
+
readonly $ref: "#/$defs/CountryCode";
|
|
223
|
+
};
|
|
224
|
+
readonly region: {
|
|
225
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
226
|
+
};
|
|
227
|
+
readonly city: {
|
|
228
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
229
|
+
};
|
|
230
|
+
readonly method: {
|
|
231
|
+
readonly $ref: "#/$defs/VettingMethod";
|
|
232
|
+
};
|
|
233
|
+
readonly eventFrom: {
|
|
234
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
235
|
+
};
|
|
236
|
+
readonly eventTo: {
|
|
237
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
238
|
+
};
|
|
239
|
+
readonly eventName: {
|
|
240
|
+
readonly type: "string";
|
|
241
|
+
readonly minLength: 1;
|
|
242
|
+
readonly maxLength: 200;
|
|
243
|
+
readonly description: "Matches an event whose `name` contains this text, case-insensitively.";
|
|
244
|
+
};
|
|
245
|
+
readonly limit: {
|
|
246
|
+
readonly type: "integer";
|
|
247
|
+
readonly minimum: 1;
|
|
248
|
+
readonly maximum: 100;
|
|
249
|
+
readonly description: "Most entries to return. Absent: 50.";
|
|
250
|
+
};
|
|
251
|
+
readonly cursor: {
|
|
252
|
+
readonly type: "string";
|
|
253
|
+
readonly minLength: 1;
|
|
254
|
+
readonly maxLength: 512;
|
|
255
|
+
readonly description: "Opaque continuation token from a previous page's `nextCursor`, sent with the same filters.";
|
|
256
|
+
};
|
|
257
|
+
readonly ext: {
|
|
258
|
+
readonly $ref: "#/$defs/Ext";
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
readonly $defs: {
|
|
262
|
+
readonly ListedVetter: {
|
|
263
|
+
readonly title: "ListedVetter";
|
|
264
|
+
readonly 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.";
|
|
265
|
+
readonly type: "object";
|
|
266
|
+
readonly additionalProperties: false;
|
|
267
|
+
readonly required: readonly ["vetterDid", "languages", "methods", "acceptsDocumentation", "events", "grantValidUntil", "updatedAt"];
|
|
268
|
+
readonly properties: {
|
|
269
|
+
readonly vetterDid: {
|
|
270
|
+
readonly type: "string";
|
|
271
|
+
readonly pattern: "^did:";
|
|
272
|
+
readonly description: "The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to.";
|
|
273
|
+
};
|
|
274
|
+
readonly displayName: {
|
|
275
|
+
readonly $ref: "#/$defs/VetterDisplayName";
|
|
276
|
+
};
|
|
277
|
+
readonly languages: {
|
|
278
|
+
readonly type: "array";
|
|
279
|
+
readonly maxItems: 16;
|
|
280
|
+
readonly uniqueItems: true;
|
|
281
|
+
readonly items: {
|
|
282
|
+
readonly $ref: "#/$defs/LanguageTag";
|
|
283
|
+
};
|
|
284
|
+
};
|
|
285
|
+
readonly location: {
|
|
286
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
287
|
+
};
|
|
288
|
+
readonly methods: {
|
|
289
|
+
readonly $ref: "#/$defs/VetterMethods";
|
|
290
|
+
};
|
|
291
|
+
readonly acceptsDocumentation: {
|
|
292
|
+
readonly $ref: "#/$defs/VetterAcceptsDocumentation";
|
|
293
|
+
};
|
|
294
|
+
readonly availability: {
|
|
295
|
+
readonly $ref: "#/$defs/VetterAvailability";
|
|
296
|
+
};
|
|
297
|
+
readonly contactHint: {
|
|
298
|
+
readonly $ref: "#/$defs/VetterContactHint";
|
|
299
|
+
};
|
|
300
|
+
readonly events: {
|
|
301
|
+
readonly type: "array";
|
|
302
|
+
readonly maxItems: 32;
|
|
303
|
+
readonly items: {
|
|
304
|
+
readonly $ref: "#/$defs/VetterEvent";
|
|
305
|
+
};
|
|
306
|
+
readonly description: "The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned.";
|
|
307
|
+
};
|
|
308
|
+
readonly grantValidUntil: {
|
|
309
|
+
readonly type: "string";
|
|
310
|
+
readonly format: "date-time";
|
|
311
|
+
readonly description: "The `validUntil` of the vetter's live vetter role credential.";
|
|
312
|
+
};
|
|
313
|
+
readonly updatedAt: {
|
|
314
|
+
readonly type: "string";
|
|
315
|
+
readonly format: "date-time";
|
|
316
|
+
readonly description: "When the community stored this profile, as returned by vtc/vetting/vetters/profile.";
|
|
317
|
+
};
|
|
318
|
+
};
|
|
319
|
+
};
|
|
320
|
+
readonly Response: {
|
|
321
|
+
readonly $anchor: "response";
|
|
322
|
+
readonly title: "VTC Vetting — Vetters List — response payload";
|
|
323
|
+
readonly description: "One page of listed vetters matching every filter sent.";
|
|
324
|
+
readonly type: "object";
|
|
325
|
+
readonly additionalProperties: false;
|
|
326
|
+
readonly required: readonly ["vetters"];
|
|
327
|
+
readonly properties: {
|
|
328
|
+
readonly vetters: {
|
|
329
|
+
readonly type: "array";
|
|
330
|
+
readonly maxItems: 100;
|
|
331
|
+
readonly items: {
|
|
332
|
+
readonly $ref: "#/$defs/ListedVetter";
|
|
333
|
+
};
|
|
334
|
+
readonly description: "The page, in the order Conformance defines. May be empty.";
|
|
335
|
+
};
|
|
336
|
+
readonly nextCursor: {
|
|
337
|
+
readonly type: "string";
|
|
338
|
+
readonly minLength: 1;
|
|
339
|
+
readonly maxLength: 512;
|
|
340
|
+
readonly description: "Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page.";
|
|
341
|
+
};
|
|
342
|
+
};
|
|
343
|
+
};
|
|
344
|
+
readonly VetterEvent: {
|
|
345
|
+
readonly title: "VetterEvent";
|
|
346
|
+
readonly type: "object";
|
|
347
|
+
readonly additionalProperties: false;
|
|
348
|
+
readonly required: readonly ["name", "startDate", "endDate"];
|
|
349
|
+
readonly properties: {
|
|
350
|
+
readonly name: {
|
|
351
|
+
readonly type: "string";
|
|
352
|
+
readonly minLength: 1;
|
|
353
|
+
readonly maxLength: 200;
|
|
354
|
+
readonly description: "The event's name, e.g. `Linux Plumbers Conference 2026`.";
|
|
355
|
+
};
|
|
356
|
+
readonly startDate: {
|
|
357
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
358
|
+
};
|
|
359
|
+
readonly endDate: {
|
|
360
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
361
|
+
};
|
|
362
|
+
readonly location: {
|
|
363
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
364
|
+
};
|
|
365
|
+
readonly url: {
|
|
366
|
+
readonly type: "string";
|
|
367
|
+
readonly format: "uri";
|
|
368
|
+
readonly pattern: "^https://";
|
|
369
|
+
readonly maxLength: 2048;
|
|
370
|
+
readonly description: "OPTIONAL. The event's own https page.";
|
|
371
|
+
};
|
|
372
|
+
};
|
|
373
|
+
readonly 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`.";
|
|
374
|
+
};
|
|
375
|
+
readonly VetterLocation: {
|
|
376
|
+
readonly title: "VetterLocation";
|
|
377
|
+
readonly type: "object";
|
|
378
|
+
readonly additionalProperties: false;
|
|
379
|
+
readonly required: readonly ["country"];
|
|
380
|
+
readonly properties: {
|
|
381
|
+
readonly country: {
|
|
382
|
+
readonly $ref: "#/$defs/CountryCode";
|
|
383
|
+
};
|
|
384
|
+
readonly region: {
|
|
385
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
386
|
+
};
|
|
387
|
+
readonly city: {
|
|
388
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
389
|
+
};
|
|
390
|
+
};
|
|
391
|
+
readonly 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.";
|
|
392
|
+
};
|
|
393
|
+
readonly PlaceName: {
|
|
394
|
+
readonly title: "PlaceName";
|
|
395
|
+
readonly type: "string";
|
|
396
|
+
readonly minLength: 1;
|
|
397
|
+
readonly maxLength: 128;
|
|
398
|
+
readonly description: "A region or city name as the vetter writes it. Compared case-insensitively and otherwise exactly.";
|
|
399
|
+
};
|
|
400
|
+
readonly CountryCode: {
|
|
401
|
+
readonly title: "CountryCode";
|
|
402
|
+
readonly type: "string";
|
|
403
|
+
readonly pattern: "^[A-Z]{2}$";
|
|
404
|
+
readonly description: "An ISO 3166-1 alpha-2 country code, upper case, e.g. `DE`.";
|
|
405
|
+
};
|
|
406
|
+
readonly CalendarDate: {
|
|
407
|
+
readonly title: "CalendarDate";
|
|
408
|
+
readonly type: "string";
|
|
409
|
+
readonly format: "date";
|
|
410
|
+
readonly pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$";
|
|
411
|
+
readonly description: "A calendar date, `YYYY-MM-DD` (RFC 3339 full-date), with no time or zone. Compared as a UTC date.";
|
|
412
|
+
};
|
|
413
|
+
readonly VetterContactHint: {
|
|
414
|
+
readonly title: "VetterContactHint";
|
|
415
|
+
readonly type: "string";
|
|
416
|
+
readonly minLength: 1;
|
|
417
|
+
readonly maxLength: 300;
|
|
418
|
+
readonly 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.";
|
|
419
|
+
};
|
|
420
|
+
readonly VetterAvailability: {
|
|
421
|
+
readonly title: "VetterAvailability";
|
|
422
|
+
readonly type: "string";
|
|
423
|
+
readonly minLength: 1;
|
|
424
|
+
readonly maxLength: 500;
|
|
425
|
+
readonly description: "Vetter-authored free text on when they are available to vet. Attributed to the vetter.";
|
|
426
|
+
};
|
|
427
|
+
readonly VetterAcceptsDocumentation: {
|
|
428
|
+
readonly title: "VetterAcceptsDocumentation";
|
|
429
|
+
readonly type: "array";
|
|
430
|
+
readonly maxItems: 16;
|
|
431
|
+
readonly uniqueItems: true;
|
|
432
|
+
readonly items: {
|
|
433
|
+
readonly $ref: "#/$defs/VettingDocumentation";
|
|
434
|
+
};
|
|
435
|
+
readonly 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.";
|
|
436
|
+
};
|
|
437
|
+
readonly VettingDocumentation: {
|
|
438
|
+
readonly title: "VettingDocumentation";
|
|
439
|
+
readonly type: "string";
|
|
440
|
+
readonly minLength: 1;
|
|
441
|
+
readonly maxLength: 64;
|
|
442
|
+
readonly pattern: "^[a-z][a-zA-Z0-9]*$";
|
|
443
|
+
readonly 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.";
|
|
444
|
+
};
|
|
445
|
+
readonly VetterMethods: {
|
|
446
|
+
readonly title: "VetterMethods";
|
|
447
|
+
readonly type: "array";
|
|
448
|
+
readonly minItems: 1;
|
|
449
|
+
readonly maxItems: 3;
|
|
450
|
+
readonly uniqueItems: true;
|
|
451
|
+
readonly items: {
|
|
452
|
+
readonly $ref: "#/$defs/VettingMethod";
|
|
453
|
+
};
|
|
454
|
+
readonly description: "The methods the vetter offers, from `inPerson`, `video`, `priorAcquaintance`.";
|
|
455
|
+
};
|
|
456
|
+
readonly VettingMethod: {
|
|
457
|
+
readonly title: "VettingMethod";
|
|
458
|
+
readonly type: "string";
|
|
459
|
+
readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
|
|
460
|
+
readonly 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.";
|
|
461
|
+
};
|
|
462
|
+
readonly LanguageTag: {
|
|
463
|
+
readonly title: "LanguageTag";
|
|
464
|
+
readonly type: "string";
|
|
465
|
+
readonly minLength: 2;
|
|
466
|
+
readonly maxLength: 35;
|
|
467
|
+
readonly pattern: "^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8})*$";
|
|
468
|
+
readonly description: "A BCP 47 language tag, e.g. `en`, `de-AT`. Compared case-insensitively.";
|
|
469
|
+
};
|
|
470
|
+
readonly VetterDisplayName: {
|
|
471
|
+
readonly title: "VetterDisplayName";
|
|
472
|
+
readonly type: "string";
|
|
473
|
+
readonly minLength: 1;
|
|
474
|
+
readonly maxLength: 128;
|
|
475
|
+
readonly 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.";
|
|
476
|
+
};
|
|
477
|
+
readonly Ext: {
|
|
478
|
+
readonly title: "Ext";
|
|
479
|
+
readonly 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.";
|
|
480
|
+
readonly type: "object";
|
|
481
|
+
readonly minProperties: 1;
|
|
482
|
+
readonly additionalProperties: true;
|
|
483
|
+
readonly propertyNames: {
|
|
484
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
485
|
+
};
|
|
486
|
+
};
|
|
487
|
+
};
|
|
488
|
+
};
|
|
489
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
490
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
491
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
492
|
+
readonly $ref: "#/$defs/Response";
|
|
493
|
+
readonly $defs: {
|
|
494
|
+
readonly ListedVetter: {
|
|
495
|
+
readonly title: "ListedVetter";
|
|
496
|
+
readonly 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.";
|
|
497
|
+
readonly type: "object";
|
|
498
|
+
readonly additionalProperties: false;
|
|
499
|
+
readonly required: readonly ["vetterDid", "languages", "methods", "acceptsDocumentation", "events", "grantValidUntil", "updatedAt"];
|
|
500
|
+
readonly properties: {
|
|
501
|
+
readonly vetterDid: {
|
|
502
|
+
readonly type: "string";
|
|
503
|
+
readonly pattern: "^did:";
|
|
504
|
+
readonly description: "The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to.";
|
|
505
|
+
};
|
|
506
|
+
readonly displayName: {
|
|
507
|
+
readonly $ref: "#/$defs/VetterDisplayName";
|
|
508
|
+
};
|
|
509
|
+
readonly languages: {
|
|
510
|
+
readonly type: "array";
|
|
511
|
+
readonly maxItems: 16;
|
|
512
|
+
readonly uniqueItems: true;
|
|
513
|
+
readonly items: {
|
|
514
|
+
readonly $ref: "#/$defs/LanguageTag";
|
|
515
|
+
};
|
|
516
|
+
};
|
|
517
|
+
readonly location: {
|
|
518
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
519
|
+
};
|
|
520
|
+
readonly methods: {
|
|
521
|
+
readonly $ref: "#/$defs/VetterMethods";
|
|
522
|
+
};
|
|
523
|
+
readonly acceptsDocumentation: {
|
|
524
|
+
readonly $ref: "#/$defs/VetterAcceptsDocumentation";
|
|
525
|
+
};
|
|
526
|
+
readonly availability: {
|
|
527
|
+
readonly $ref: "#/$defs/VetterAvailability";
|
|
528
|
+
};
|
|
529
|
+
readonly contactHint: {
|
|
530
|
+
readonly $ref: "#/$defs/VetterContactHint";
|
|
531
|
+
};
|
|
532
|
+
readonly events: {
|
|
533
|
+
readonly type: "array";
|
|
534
|
+
readonly maxItems: 32;
|
|
535
|
+
readonly items: {
|
|
536
|
+
readonly $ref: "#/$defs/VetterEvent";
|
|
537
|
+
};
|
|
538
|
+
readonly description: "The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned.";
|
|
539
|
+
};
|
|
540
|
+
readonly grantValidUntil: {
|
|
541
|
+
readonly type: "string";
|
|
542
|
+
readonly format: "date-time";
|
|
543
|
+
readonly description: "The `validUntil` of the vetter's live vetter role credential.";
|
|
544
|
+
};
|
|
545
|
+
readonly updatedAt: {
|
|
546
|
+
readonly type: "string";
|
|
547
|
+
readonly format: "date-time";
|
|
548
|
+
readonly description: "When the community stored this profile, as returned by vtc/vetting/vetters/profile.";
|
|
549
|
+
};
|
|
550
|
+
};
|
|
551
|
+
};
|
|
552
|
+
readonly Response: {
|
|
553
|
+
readonly $anchor: "response";
|
|
554
|
+
readonly title: "VTC Vetting — Vetters List — response payload";
|
|
555
|
+
readonly description: "One page of listed vetters matching every filter sent.";
|
|
556
|
+
readonly type: "object";
|
|
557
|
+
readonly additionalProperties: false;
|
|
558
|
+
readonly required: readonly ["vetters"];
|
|
559
|
+
readonly properties: {
|
|
560
|
+
readonly vetters: {
|
|
561
|
+
readonly type: "array";
|
|
562
|
+
readonly maxItems: 100;
|
|
563
|
+
readonly items: {
|
|
564
|
+
readonly $ref: "#/$defs/ListedVetter";
|
|
565
|
+
};
|
|
566
|
+
readonly description: "The page, in the order Conformance defines. May be empty.";
|
|
567
|
+
};
|
|
568
|
+
readonly nextCursor: {
|
|
569
|
+
readonly type: "string";
|
|
570
|
+
readonly minLength: 1;
|
|
571
|
+
readonly maxLength: 512;
|
|
572
|
+
readonly description: "Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page.";
|
|
573
|
+
};
|
|
574
|
+
};
|
|
575
|
+
};
|
|
576
|
+
readonly VetterEvent: {
|
|
577
|
+
readonly title: "VetterEvent";
|
|
578
|
+
readonly type: "object";
|
|
579
|
+
readonly additionalProperties: false;
|
|
580
|
+
readonly required: readonly ["name", "startDate", "endDate"];
|
|
581
|
+
readonly properties: {
|
|
582
|
+
readonly name: {
|
|
583
|
+
readonly type: "string";
|
|
584
|
+
readonly minLength: 1;
|
|
585
|
+
readonly maxLength: 200;
|
|
586
|
+
readonly description: "The event's name, e.g. `Linux Plumbers Conference 2026`.";
|
|
587
|
+
};
|
|
588
|
+
readonly startDate: {
|
|
589
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
590
|
+
};
|
|
591
|
+
readonly endDate: {
|
|
592
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
593
|
+
};
|
|
594
|
+
readonly location: {
|
|
595
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
596
|
+
};
|
|
597
|
+
readonly url: {
|
|
598
|
+
readonly type: "string";
|
|
599
|
+
readonly format: "uri";
|
|
600
|
+
readonly pattern: "^https://";
|
|
601
|
+
readonly maxLength: 2048;
|
|
602
|
+
readonly description: "OPTIONAL. The event's own https page.";
|
|
603
|
+
};
|
|
604
|
+
};
|
|
605
|
+
readonly 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`.";
|
|
606
|
+
};
|
|
607
|
+
readonly VetterLocation: {
|
|
608
|
+
readonly title: "VetterLocation";
|
|
609
|
+
readonly type: "object";
|
|
610
|
+
readonly additionalProperties: false;
|
|
611
|
+
readonly required: readonly ["country"];
|
|
612
|
+
readonly properties: {
|
|
613
|
+
readonly country: {
|
|
614
|
+
readonly $ref: "#/$defs/CountryCode";
|
|
615
|
+
};
|
|
616
|
+
readonly region: {
|
|
617
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
618
|
+
};
|
|
619
|
+
readonly city: {
|
|
620
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
621
|
+
};
|
|
622
|
+
};
|
|
623
|
+
readonly 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.";
|
|
624
|
+
};
|
|
625
|
+
readonly PlaceName: {
|
|
626
|
+
readonly title: "PlaceName";
|
|
627
|
+
readonly type: "string";
|
|
628
|
+
readonly minLength: 1;
|
|
629
|
+
readonly maxLength: 128;
|
|
630
|
+
readonly description: "A region or city name as the vetter writes it. Compared case-insensitively and otherwise exactly.";
|
|
631
|
+
};
|
|
632
|
+
readonly CountryCode: {
|
|
633
|
+
readonly title: "CountryCode";
|
|
634
|
+
readonly type: "string";
|
|
635
|
+
readonly pattern: "^[A-Z]{2}$";
|
|
636
|
+
readonly description: "An ISO 3166-1 alpha-2 country code, upper case, e.g. `DE`.";
|
|
637
|
+
};
|
|
638
|
+
readonly CalendarDate: {
|
|
639
|
+
readonly title: "CalendarDate";
|
|
640
|
+
readonly type: "string";
|
|
641
|
+
readonly format: "date";
|
|
642
|
+
readonly pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$";
|
|
643
|
+
readonly description: "A calendar date, `YYYY-MM-DD` (RFC 3339 full-date), with no time or zone. Compared as a UTC date.";
|
|
644
|
+
};
|
|
645
|
+
readonly VetterContactHint: {
|
|
646
|
+
readonly title: "VetterContactHint";
|
|
647
|
+
readonly type: "string";
|
|
648
|
+
readonly minLength: 1;
|
|
649
|
+
readonly maxLength: 300;
|
|
650
|
+
readonly 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.";
|
|
651
|
+
};
|
|
652
|
+
readonly VetterAvailability: {
|
|
653
|
+
readonly title: "VetterAvailability";
|
|
654
|
+
readonly type: "string";
|
|
655
|
+
readonly minLength: 1;
|
|
656
|
+
readonly maxLength: 500;
|
|
657
|
+
readonly description: "Vetter-authored free text on when they are available to vet. Attributed to the vetter.";
|
|
658
|
+
};
|
|
659
|
+
readonly VetterAcceptsDocumentation: {
|
|
660
|
+
readonly title: "VetterAcceptsDocumentation";
|
|
661
|
+
readonly type: "array";
|
|
662
|
+
readonly maxItems: 16;
|
|
663
|
+
readonly uniqueItems: true;
|
|
664
|
+
readonly items: {
|
|
665
|
+
readonly $ref: "#/$defs/VettingDocumentation";
|
|
666
|
+
};
|
|
667
|
+
readonly 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.";
|
|
668
|
+
};
|
|
669
|
+
readonly VettingDocumentation: {
|
|
670
|
+
readonly title: "VettingDocumentation";
|
|
671
|
+
readonly type: "string";
|
|
672
|
+
readonly minLength: 1;
|
|
673
|
+
readonly maxLength: 64;
|
|
674
|
+
readonly pattern: "^[a-z][a-zA-Z0-9]*$";
|
|
675
|
+
readonly 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.";
|
|
676
|
+
};
|
|
677
|
+
readonly VetterMethods: {
|
|
678
|
+
readonly title: "VetterMethods";
|
|
679
|
+
readonly type: "array";
|
|
680
|
+
readonly minItems: 1;
|
|
681
|
+
readonly maxItems: 3;
|
|
682
|
+
readonly uniqueItems: true;
|
|
683
|
+
readonly items: {
|
|
684
|
+
readonly $ref: "#/$defs/VettingMethod";
|
|
685
|
+
};
|
|
686
|
+
readonly description: "The methods the vetter offers, from `inPerson`, `video`, `priorAcquaintance`.";
|
|
687
|
+
};
|
|
688
|
+
readonly VettingMethod: {
|
|
689
|
+
readonly title: "VettingMethod";
|
|
690
|
+
readonly type: "string";
|
|
691
|
+
readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
|
|
692
|
+
readonly 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.";
|
|
693
|
+
};
|
|
694
|
+
readonly LanguageTag: {
|
|
695
|
+
readonly title: "LanguageTag";
|
|
696
|
+
readonly type: "string";
|
|
697
|
+
readonly minLength: 2;
|
|
698
|
+
readonly maxLength: 35;
|
|
699
|
+
readonly pattern: "^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8})*$";
|
|
700
|
+
readonly description: "A BCP 47 language tag, e.g. `en`, `de-AT`. Compared case-insensitively.";
|
|
701
|
+
};
|
|
702
|
+
readonly VetterDisplayName: {
|
|
703
|
+
readonly title: "VetterDisplayName";
|
|
704
|
+
readonly type: "string";
|
|
705
|
+
readonly minLength: 1;
|
|
706
|
+
readonly maxLength: 128;
|
|
707
|
+
readonly 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.";
|
|
708
|
+
};
|
|
709
|
+
readonly Ext: {
|
|
710
|
+
readonly title: "Ext";
|
|
711
|
+
readonly 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
|
+
readonly type: "object";
|
|
713
|
+
readonly minProperties: 1;
|
|
714
|
+
readonly additionalProperties: true;
|
|
715
|
+
readonly propertyNames: {
|
|
716
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
717
|
+
};
|
|
718
|
+
};
|
|
719
|
+
};
|
|
720
|
+
};
|
|
721
|
+
/**
|
|
722
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
723
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
724
|
+
* per-specification and cannot be derived from the document alone, and
|
|
725
|
+
* item 2 needs the schema this carries.
|
|
726
|
+
*/
|
|
727
|
+
export declare const SPEC: {
|
|
728
|
+
readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1";
|
|
729
|
+
readonly isBearer: false;
|
|
730
|
+
readonly isProofRequired: false;
|
|
731
|
+
readonly isRecipientRequired: true;
|
|
732
|
+
readonly isIssuedAtRequired: false;
|
|
733
|
+
readonly payloadSchema: {
|
|
734
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
735
|
+
readonly $id: "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1";
|
|
736
|
+
readonly title: "VTC Vetting — Vetters List — payload";
|
|
737
|
+
readonly 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.";
|
|
738
|
+
readonly type: "object";
|
|
739
|
+
readonly additionalProperties: false;
|
|
740
|
+
readonly properties: {
|
|
741
|
+
readonly language: {
|
|
742
|
+
readonly $ref: "#/$defs/LanguageTag";
|
|
743
|
+
readonly 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`.";
|
|
744
|
+
};
|
|
745
|
+
readonly country: {
|
|
746
|
+
readonly $ref: "#/$defs/CountryCode";
|
|
747
|
+
};
|
|
748
|
+
readonly region: {
|
|
749
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
750
|
+
};
|
|
751
|
+
readonly city: {
|
|
752
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
753
|
+
};
|
|
754
|
+
readonly method: {
|
|
755
|
+
readonly $ref: "#/$defs/VettingMethod";
|
|
756
|
+
};
|
|
757
|
+
readonly eventFrom: {
|
|
758
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
759
|
+
};
|
|
760
|
+
readonly eventTo: {
|
|
761
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
762
|
+
};
|
|
763
|
+
readonly eventName: {
|
|
764
|
+
readonly type: "string";
|
|
765
|
+
readonly minLength: 1;
|
|
766
|
+
readonly maxLength: 200;
|
|
767
|
+
readonly description: "Matches an event whose `name` contains this text, case-insensitively.";
|
|
768
|
+
};
|
|
769
|
+
readonly limit: {
|
|
770
|
+
readonly type: "integer";
|
|
771
|
+
readonly minimum: 1;
|
|
772
|
+
readonly maximum: 100;
|
|
773
|
+
readonly description: "Most entries to return. Absent: 50.";
|
|
774
|
+
};
|
|
775
|
+
readonly cursor: {
|
|
776
|
+
readonly type: "string";
|
|
777
|
+
readonly minLength: 1;
|
|
778
|
+
readonly maxLength: 512;
|
|
779
|
+
readonly description: "Opaque continuation token from a previous page's `nextCursor`, sent with the same filters.";
|
|
780
|
+
};
|
|
781
|
+
readonly ext: {
|
|
782
|
+
readonly $ref: "#/$defs/Ext";
|
|
783
|
+
};
|
|
784
|
+
};
|
|
785
|
+
readonly $defs: {
|
|
786
|
+
readonly ListedVetter: {
|
|
787
|
+
readonly title: "ListedVetter";
|
|
788
|
+
readonly 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.";
|
|
789
|
+
readonly type: "object";
|
|
790
|
+
readonly additionalProperties: false;
|
|
791
|
+
readonly required: readonly ["vetterDid", "languages", "methods", "acceptsDocumentation", "events", "grantValidUntil", "updatedAt"];
|
|
792
|
+
readonly properties: {
|
|
793
|
+
readonly vetterDid: {
|
|
794
|
+
readonly type: "string";
|
|
795
|
+
readonly pattern: "^did:";
|
|
796
|
+
readonly description: "The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to.";
|
|
797
|
+
};
|
|
798
|
+
readonly displayName: {
|
|
799
|
+
readonly $ref: "#/$defs/VetterDisplayName";
|
|
800
|
+
};
|
|
801
|
+
readonly languages: {
|
|
802
|
+
readonly type: "array";
|
|
803
|
+
readonly maxItems: 16;
|
|
804
|
+
readonly uniqueItems: true;
|
|
805
|
+
readonly items: {
|
|
806
|
+
readonly $ref: "#/$defs/LanguageTag";
|
|
807
|
+
};
|
|
808
|
+
};
|
|
809
|
+
readonly location: {
|
|
810
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
811
|
+
};
|
|
812
|
+
readonly methods: {
|
|
813
|
+
readonly $ref: "#/$defs/VetterMethods";
|
|
814
|
+
};
|
|
815
|
+
readonly acceptsDocumentation: {
|
|
816
|
+
readonly $ref: "#/$defs/VetterAcceptsDocumentation";
|
|
817
|
+
};
|
|
818
|
+
readonly availability: {
|
|
819
|
+
readonly $ref: "#/$defs/VetterAvailability";
|
|
820
|
+
};
|
|
821
|
+
readonly contactHint: {
|
|
822
|
+
readonly $ref: "#/$defs/VetterContactHint";
|
|
823
|
+
};
|
|
824
|
+
readonly events: {
|
|
825
|
+
readonly type: "array";
|
|
826
|
+
readonly maxItems: 32;
|
|
827
|
+
readonly items: {
|
|
828
|
+
readonly $ref: "#/$defs/VetterEvent";
|
|
829
|
+
};
|
|
830
|
+
readonly description: "The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned.";
|
|
831
|
+
};
|
|
832
|
+
readonly grantValidUntil: {
|
|
833
|
+
readonly type: "string";
|
|
834
|
+
readonly format: "date-time";
|
|
835
|
+
readonly description: "The `validUntil` of the vetter's live vetter role credential.";
|
|
836
|
+
};
|
|
837
|
+
readonly updatedAt: {
|
|
838
|
+
readonly type: "string";
|
|
839
|
+
readonly format: "date-time";
|
|
840
|
+
readonly description: "When the community stored this profile, as returned by vtc/vetting/vetters/profile.";
|
|
841
|
+
};
|
|
842
|
+
};
|
|
843
|
+
};
|
|
844
|
+
readonly Response: {
|
|
845
|
+
readonly $anchor: "response";
|
|
846
|
+
readonly title: "VTC Vetting — Vetters List — response payload";
|
|
847
|
+
readonly description: "One page of listed vetters matching every filter sent.";
|
|
848
|
+
readonly type: "object";
|
|
849
|
+
readonly additionalProperties: false;
|
|
850
|
+
readonly required: readonly ["vetters"];
|
|
851
|
+
readonly properties: {
|
|
852
|
+
readonly vetters: {
|
|
853
|
+
readonly type: "array";
|
|
854
|
+
readonly maxItems: 100;
|
|
855
|
+
readonly items: {
|
|
856
|
+
readonly $ref: "#/$defs/ListedVetter";
|
|
857
|
+
};
|
|
858
|
+
readonly description: "The page, in the order Conformance defines. May be empty.";
|
|
859
|
+
};
|
|
860
|
+
readonly nextCursor: {
|
|
861
|
+
readonly type: "string";
|
|
862
|
+
readonly minLength: 1;
|
|
863
|
+
readonly maxLength: 512;
|
|
864
|
+
readonly description: "Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page.";
|
|
865
|
+
};
|
|
866
|
+
};
|
|
867
|
+
};
|
|
868
|
+
readonly VetterEvent: {
|
|
869
|
+
readonly title: "VetterEvent";
|
|
870
|
+
readonly type: "object";
|
|
871
|
+
readonly additionalProperties: false;
|
|
872
|
+
readonly required: readonly ["name", "startDate", "endDate"];
|
|
873
|
+
readonly properties: {
|
|
874
|
+
readonly name: {
|
|
875
|
+
readonly type: "string";
|
|
876
|
+
readonly minLength: 1;
|
|
877
|
+
readonly maxLength: 200;
|
|
878
|
+
readonly description: "The event's name, e.g. `Linux Plumbers Conference 2026`.";
|
|
879
|
+
};
|
|
880
|
+
readonly startDate: {
|
|
881
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
882
|
+
};
|
|
883
|
+
readonly endDate: {
|
|
884
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
885
|
+
};
|
|
886
|
+
readonly location: {
|
|
887
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
888
|
+
};
|
|
889
|
+
readonly url: {
|
|
890
|
+
readonly type: "string";
|
|
891
|
+
readonly format: "uri";
|
|
892
|
+
readonly pattern: "^https://";
|
|
893
|
+
readonly maxLength: 2048;
|
|
894
|
+
readonly description: "OPTIONAL. The event's own https page.";
|
|
895
|
+
};
|
|
896
|
+
};
|
|
897
|
+
readonly 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`.";
|
|
898
|
+
};
|
|
899
|
+
readonly VetterLocation: {
|
|
900
|
+
readonly title: "VetterLocation";
|
|
901
|
+
readonly type: "object";
|
|
902
|
+
readonly additionalProperties: false;
|
|
903
|
+
readonly required: readonly ["country"];
|
|
904
|
+
readonly properties: {
|
|
905
|
+
readonly country: {
|
|
906
|
+
readonly $ref: "#/$defs/CountryCode";
|
|
907
|
+
};
|
|
908
|
+
readonly region: {
|
|
909
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
910
|
+
};
|
|
911
|
+
readonly city: {
|
|
912
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
913
|
+
};
|
|
914
|
+
};
|
|
915
|
+
readonly 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.";
|
|
916
|
+
};
|
|
917
|
+
readonly PlaceName: {
|
|
918
|
+
readonly title: "PlaceName";
|
|
919
|
+
readonly type: "string";
|
|
920
|
+
readonly minLength: 1;
|
|
921
|
+
readonly maxLength: 128;
|
|
922
|
+
readonly description: "A region or city name as the vetter writes it. Compared case-insensitively and otherwise exactly.";
|
|
923
|
+
};
|
|
924
|
+
readonly CountryCode: {
|
|
925
|
+
readonly title: "CountryCode";
|
|
926
|
+
readonly type: "string";
|
|
927
|
+
readonly pattern: "^[A-Z]{2}$";
|
|
928
|
+
readonly description: "An ISO 3166-1 alpha-2 country code, upper case, e.g. `DE`.";
|
|
929
|
+
};
|
|
930
|
+
readonly CalendarDate: {
|
|
931
|
+
readonly title: "CalendarDate";
|
|
932
|
+
readonly type: "string";
|
|
933
|
+
readonly format: "date";
|
|
934
|
+
readonly pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$";
|
|
935
|
+
readonly description: "A calendar date, `YYYY-MM-DD` (RFC 3339 full-date), with no time or zone. Compared as a UTC date.";
|
|
936
|
+
};
|
|
937
|
+
readonly VetterContactHint: {
|
|
938
|
+
readonly title: "VetterContactHint";
|
|
939
|
+
readonly type: "string";
|
|
940
|
+
readonly minLength: 1;
|
|
941
|
+
readonly maxLength: 300;
|
|
942
|
+
readonly 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.";
|
|
943
|
+
};
|
|
944
|
+
readonly VetterAvailability: {
|
|
945
|
+
readonly title: "VetterAvailability";
|
|
946
|
+
readonly type: "string";
|
|
947
|
+
readonly minLength: 1;
|
|
948
|
+
readonly maxLength: 500;
|
|
949
|
+
readonly description: "Vetter-authored free text on when they are available to vet. Attributed to the vetter.";
|
|
950
|
+
};
|
|
951
|
+
readonly VetterAcceptsDocumentation: {
|
|
952
|
+
readonly title: "VetterAcceptsDocumentation";
|
|
953
|
+
readonly type: "array";
|
|
954
|
+
readonly maxItems: 16;
|
|
955
|
+
readonly uniqueItems: true;
|
|
956
|
+
readonly items: {
|
|
957
|
+
readonly $ref: "#/$defs/VettingDocumentation";
|
|
958
|
+
};
|
|
959
|
+
readonly 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.";
|
|
960
|
+
};
|
|
961
|
+
readonly VettingDocumentation: {
|
|
962
|
+
readonly title: "VettingDocumentation";
|
|
963
|
+
readonly type: "string";
|
|
964
|
+
readonly minLength: 1;
|
|
965
|
+
readonly maxLength: 64;
|
|
966
|
+
readonly pattern: "^[a-z][a-zA-Z0-9]*$";
|
|
967
|
+
readonly 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.";
|
|
968
|
+
};
|
|
969
|
+
readonly VetterMethods: {
|
|
970
|
+
readonly title: "VetterMethods";
|
|
971
|
+
readonly type: "array";
|
|
972
|
+
readonly minItems: 1;
|
|
973
|
+
readonly maxItems: 3;
|
|
974
|
+
readonly uniqueItems: true;
|
|
975
|
+
readonly items: {
|
|
976
|
+
readonly $ref: "#/$defs/VettingMethod";
|
|
977
|
+
};
|
|
978
|
+
readonly description: "The methods the vetter offers, from `inPerson`, `video`, `priorAcquaintance`.";
|
|
979
|
+
};
|
|
980
|
+
readonly VettingMethod: {
|
|
981
|
+
readonly title: "VettingMethod";
|
|
982
|
+
readonly type: "string";
|
|
983
|
+
readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
|
|
984
|
+
readonly 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.";
|
|
985
|
+
};
|
|
986
|
+
readonly LanguageTag: {
|
|
987
|
+
readonly title: "LanguageTag";
|
|
988
|
+
readonly type: "string";
|
|
989
|
+
readonly minLength: 2;
|
|
990
|
+
readonly maxLength: 35;
|
|
991
|
+
readonly pattern: "^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8})*$";
|
|
992
|
+
readonly description: "A BCP 47 language tag, e.g. `en`, `de-AT`. Compared case-insensitively.";
|
|
993
|
+
};
|
|
994
|
+
readonly VetterDisplayName: {
|
|
995
|
+
readonly title: "VetterDisplayName";
|
|
996
|
+
readonly type: "string";
|
|
997
|
+
readonly minLength: 1;
|
|
998
|
+
readonly maxLength: 128;
|
|
999
|
+
readonly 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.";
|
|
1000
|
+
};
|
|
1001
|
+
readonly Ext: {
|
|
1002
|
+
readonly title: "Ext";
|
|
1003
|
+
readonly 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.";
|
|
1004
|
+
readonly type: "object";
|
|
1005
|
+
readonly minProperties: 1;
|
|
1006
|
+
readonly additionalProperties: true;
|
|
1007
|
+
readonly propertyNames: {
|
|
1008
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1009
|
+
};
|
|
1010
|
+
};
|
|
1011
|
+
};
|
|
1012
|
+
};
|
|
1013
|
+
};
|
|
1014
|
+
/**
|
|
1015
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
1016
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
1017
|
+
* parties (§7.3 item 5).
|
|
1018
|
+
*/
|
|
1019
|
+
export declare const RESPONSE_SPEC: {
|
|
1020
|
+
readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/vetters/list/0.1#response";
|
|
1021
|
+
readonly isBearer: false;
|
|
1022
|
+
readonly isProofRequired: false;
|
|
1023
|
+
readonly isRecipientRequired: true;
|
|
1024
|
+
readonly isIssuedAtRequired: false;
|
|
1025
|
+
readonly payloadSchema: {
|
|
1026
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
1027
|
+
readonly $ref: "#/$defs/Response";
|
|
1028
|
+
readonly $defs: {
|
|
1029
|
+
readonly ListedVetter: {
|
|
1030
|
+
readonly title: "ListedVetter";
|
|
1031
|
+
readonly 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.";
|
|
1032
|
+
readonly type: "object";
|
|
1033
|
+
readonly additionalProperties: false;
|
|
1034
|
+
readonly required: readonly ["vetterDid", "languages", "methods", "acceptsDocumentation", "events", "grantValidUntil", "updatedAt"];
|
|
1035
|
+
readonly properties: {
|
|
1036
|
+
readonly vetterDid: {
|
|
1037
|
+
readonly type: "string";
|
|
1038
|
+
readonly pattern: "^did:";
|
|
1039
|
+
readonly description: "The vetter's member DID — the subject of their vetter role credential, and the DID a vetting/request is addressed to.";
|
|
1040
|
+
};
|
|
1041
|
+
readonly displayName: {
|
|
1042
|
+
readonly $ref: "#/$defs/VetterDisplayName";
|
|
1043
|
+
};
|
|
1044
|
+
readonly languages: {
|
|
1045
|
+
readonly type: "array";
|
|
1046
|
+
readonly maxItems: 16;
|
|
1047
|
+
readonly uniqueItems: true;
|
|
1048
|
+
readonly items: {
|
|
1049
|
+
readonly $ref: "#/$defs/LanguageTag";
|
|
1050
|
+
};
|
|
1051
|
+
};
|
|
1052
|
+
readonly location: {
|
|
1053
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
1054
|
+
};
|
|
1055
|
+
readonly methods: {
|
|
1056
|
+
readonly $ref: "#/$defs/VetterMethods";
|
|
1057
|
+
};
|
|
1058
|
+
readonly acceptsDocumentation: {
|
|
1059
|
+
readonly $ref: "#/$defs/VetterAcceptsDocumentation";
|
|
1060
|
+
};
|
|
1061
|
+
readonly availability: {
|
|
1062
|
+
readonly $ref: "#/$defs/VetterAvailability";
|
|
1063
|
+
};
|
|
1064
|
+
readonly contactHint: {
|
|
1065
|
+
readonly $ref: "#/$defs/VetterContactHint";
|
|
1066
|
+
};
|
|
1067
|
+
readonly events: {
|
|
1068
|
+
readonly type: "array";
|
|
1069
|
+
readonly maxItems: 32;
|
|
1070
|
+
readonly items: {
|
|
1071
|
+
readonly $ref: "#/$defs/VetterEvent";
|
|
1072
|
+
};
|
|
1073
|
+
readonly description: "The profile's events whose `endDate` is today (UTC) or later. Ended events are never returned.";
|
|
1074
|
+
};
|
|
1075
|
+
readonly grantValidUntil: {
|
|
1076
|
+
readonly type: "string";
|
|
1077
|
+
readonly format: "date-time";
|
|
1078
|
+
readonly description: "The `validUntil` of the vetter's live vetter role credential.";
|
|
1079
|
+
};
|
|
1080
|
+
readonly updatedAt: {
|
|
1081
|
+
readonly type: "string";
|
|
1082
|
+
readonly format: "date-time";
|
|
1083
|
+
readonly description: "When the community stored this profile, as returned by vtc/vetting/vetters/profile.";
|
|
1084
|
+
};
|
|
1085
|
+
};
|
|
1086
|
+
};
|
|
1087
|
+
readonly Response: {
|
|
1088
|
+
readonly $anchor: "response";
|
|
1089
|
+
readonly title: "VTC Vetting — Vetters List — response payload";
|
|
1090
|
+
readonly description: "One page of listed vetters matching every filter sent.";
|
|
1091
|
+
readonly type: "object";
|
|
1092
|
+
readonly additionalProperties: false;
|
|
1093
|
+
readonly required: readonly ["vetters"];
|
|
1094
|
+
readonly properties: {
|
|
1095
|
+
readonly vetters: {
|
|
1096
|
+
readonly type: "array";
|
|
1097
|
+
readonly maxItems: 100;
|
|
1098
|
+
readonly items: {
|
|
1099
|
+
readonly $ref: "#/$defs/ListedVetter";
|
|
1100
|
+
};
|
|
1101
|
+
readonly description: "The page, in the order Conformance defines. May be empty.";
|
|
1102
|
+
};
|
|
1103
|
+
readonly nextCursor: {
|
|
1104
|
+
readonly type: "string";
|
|
1105
|
+
readonly minLength: 1;
|
|
1106
|
+
readonly maxLength: 512;
|
|
1107
|
+
readonly description: "Present when more entries match; send it as `cursor`, with the same filters, for the next page. Absent on the last page.";
|
|
1108
|
+
};
|
|
1109
|
+
};
|
|
1110
|
+
};
|
|
1111
|
+
readonly VetterEvent: {
|
|
1112
|
+
readonly title: "VetterEvent";
|
|
1113
|
+
readonly type: "object";
|
|
1114
|
+
readonly additionalProperties: false;
|
|
1115
|
+
readonly required: readonly ["name", "startDate", "endDate"];
|
|
1116
|
+
readonly properties: {
|
|
1117
|
+
readonly name: {
|
|
1118
|
+
readonly type: "string";
|
|
1119
|
+
readonly minLength: 1;
|
|
1120
|
+
readonly maxLength: 200;
|
|
1121
|
+
readonly description: "The event's name, e.g. `Linux Plumbers Conference 2026`.";
|
|
1122
|
+
};
|
|
1123
|
+
readonly startDate: {
|
|
1124
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
1125
|
+
};
|
|
1126
|
+
readonly endDate: {
|
|
1127
|
+
readonly $ref: "#/$defs/CalendarDate";
|
|
1128
|
+
};
|
|
1129
|
+
readonly location: {
|
|
1130
|
+
readonly $ref: "#/$defs/VetterLocation";
|
|
1131
|
+
};
|
|
1132
|
+
readonly url: {
|
|
1133
|
+
readonly type: "string";
|
|
1134
|
+
readonly format: "uri";
|
|
1135
|
+
readonly pattern: "^https://";
|
|
1136
|
+
readonly maxLength: 2048;
|
|
1137
|
+
readonly description: "OPTIONAL. The event's own https page.";
|
|
1138
|
+
};
|
|
1139
|
+
};
|
|
1140
|
+
readonly 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`.";
|
|
1141
|
+
};
|
|
1142
|
+
readonly VetterLocation: {
|
|
1143
|
+
readonly title: "VetterLocation";
|
|
1144
|
+
readonly type: "object";
|
|
1145
|
+
readonly additionalProperties: false;
|
|
1146
|
+
readonly required: readonly ["country"];
|
|
1147
|
+
readonly properties: {
|
|
1148
|
+
readonly country: {
|
|
1149
|
+
readonly $ref: "#/$defs/CountryCode";
|
|
1150
|
+
};
|
|
1151
|
+
readonly region: {
|
|
1152
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
1153
|
+
};
|
|
1154
|
+
readonly city: {
|
|
1155
|
+
readonly $ref: "#/$defs/PlaceName";
|
|
1156
|
+
};
|
|
1157
|
+
};
|
|
1158
|
+
readonly 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.";
|
|
1159
|
+
};
|
|
1160
|
+
readonly PlaceName: {
|
|
1161
|
+
readonly title: "PlaceName";
|
|
1162
|
+
readonly type: "string";
|
|
1163
|
+
readonly minLength: 1;
|
|
1164
|
+
readonly maxLength: 128;
|
|
1165
|
+
readonly description: "A region or city name as the vetter writes it. Compared case-insensitively and otherwise exactly.";
|
|
1166
|
+
};
|
|
1167
|
+
readonly CountryCode: {
|
|
1168
|
+
readonly title: "CountryCode";
|
|
1169
|
+
readonly type: "string";
|
|
1170
|
+
readonly pattern: "^[A-Z]{2}$";
|
|
1171
|
+
readonly description: "An ISO 3166-1 alpha-2 country code, upper case, e.g. `DE`.";
|
|
1172
|
+
};
|
|
1173
|
+
readonly CalendarDate: {
|
|
1174
|
+
readonly title: "CalendarDate";
|
|
1175
|
+
readonly type: "string";
|
|
1176
|
+
readonly format: "date";
|
|
1177
|
+
readonly pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$";
|
|
1178
|
+
readonly description: "A calendar date, `YYYY-MM-DD` (RFC 3339 full-date), with no time or zone. Compared as a UTC date.";
|
|
1179
|
+
};
|
|
1180
|
+
readonly VetterContactHint: {
|
|
1181
|
+
readonly title: "VetterContactHint";
|
|
1182
|
+
readonly type: "string";
|
|
1183
|
+
readonly minLength: 1;
|
|
1184
|
+
readonly maxLength: 300;
|
|
1185
|
+
readonly 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.";
|
|
1186
|
+
};
|
|
1187
|
+
readonly VetterAvailability: {
|
|
1188
|
+
readonly title: "VetterAvailability";
|
|
1189
|
+
readonly type: "string";
|
|
1190
|
+
readonly minLength: 1;
|
|
1191
|
+
readonly maxLength: 500;
|
|
1192
|
+
readonly description: "Vetter-authored free text on when they are available to vet. Attributed to the vetter.";
|
|
1193
|
+
};
|
|
1194
|
+
readonly VetterAcceptsDocumentation: {
|
|
1195
|
+
readonly title: "VetterAcceptsDocumentation";
|
|
1196
|
+
readonly type: "array";
|
|
1197
|
+
readonly maxItems: 16;
|
|
1198
|
+
readonly uniqueItems: true;
|
|
1199
|
+
readonly items: {
|
|
1200
|
+
readonly $ref: "#/$defs/VettingDocumentation";
|
|
1201
|
+
};
|
|
1202
|
+
readonly 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.";
|
|
1203
|
+
};
|
|
1204
|
+
readonly VettingDocumentation: {
|
|
1205
|
+
readonly title: "VettingDocumentation";
|
|
1206
|
+
readonly type: "string";
|
|
1207
|
+
readonly minLength: 1;
|
|
1208
|
+
readonly maxLength: 64;
|
|
1209
|
+
readonly pattern: "^[a-z][a-zA-Z0-9]*$";
|
|
1210
|
+
readonly 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.";
|
|
1211
|
+
};
|
|
1212
|
+
readonly VetterMethods: {
|
|
1213
|
+
readonly title: "VetterMethods";
|
|
1214
|
+
readonly type: "array";
|
|
1215
|
+
readonly minItems: 1;
|
|
1216
|
+
readonly maxItems: 3;
|
|
1217
|
+
readonly uniqueItems: true;
|
|
1218
|
+
readonly items: {
|
|
1219
|
+
readonly $ref: "#/$defs/VettingMethod";
|
|
1220
|
+
};
|
|
1221
|
+
readonly description: "The methods the vetter offers, from `inPerson`, `video`, `priorAcquaintance`.";
|
|
1222
|
+
};
|
|
1223
|
+
readonly VettingMethod: {
|
|
1224
|
+
readonly title: "VettingMethod";
|
|
1225
|
+
readonly type: "string";
|
|
1226
|
+
readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
|
|
1227
|
+
readonly 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.";
|
|
1228
|
+
};
|
|
1229
|
+
readonly LanguageTag: {
|
|
1230
|
+
readonly title: "LanguageTag";
|
|
1231
|
+
readonly type: "string";
|
|
1232
|
+
readonly minLength: 2;
|
|
1233
|
+
readonly maxLength: 35;
|
|
1234
|
+
readonly pattern: "^[A-Za-z]{2,3}(-[A-Za-z0-9]{1,8})*$";
|
|
1235
|
+
readonly description: "A BCP 47 language tag, e.g. `en`, `de-AT`. Compared case-insensitively.";
|
|
1236
|
+
};
|
|
1237
|
+
readonly VetterDisplayName: {
|
|
1238
|
+
readonly title: "VetterDisplayName";
|
|
1239
|
+
readonly type: "string";
|
|
1240
|
+
readonly minLength: 1;
|
|
1241
|
+
readonly maxLength: 128;
|
|
1242
|
+
readonly 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.";
|
|
1243
|
+
};
|
|
1244
|
+
readonly Ext: {
|
|
1245
|
+
readonly title: "Ext";
|
|
1246
|
+
readonly 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.";
|
|
1247
|
+
readonly type: "object";
|
|
1248
|
+
readonly minProperties: 1;
|
|
1249
|
+
readonly additionalProperties: true;
|
|
1250
|
+
readonly propertyNames: {
|
|
1251
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1252
|
+
};
|
|
1253
|
+
};
|
|
1254
|
+
};
|
|
1255
|
+
};
|
|
1256
|
+
};
|
|
1257
|
+
//# sourceMappingURL=payload.d.ts.map
|