@openvtc/trust-tasks 0.25.0 → 0.25.2
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 +29 -0
- package/dist/_shared/components.d.ts +308 -2
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.d.ts +4 -4
- package/dist/device/list/0.1/payload.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.js +6 -2
- package/dist/device/list/0.1/payload.js.map +1 -1
- package/dist/device/list/0.2/payload.d.ts +4 -4
- package/dist/device/list/0.2/payload.d.ts.map +1 -1
- package/dist/device/list/0.2/payload.js +6 -2
- package/dist/device/list/0.2/payload.js.map +1 -1
- package/dist/device/register/0.1/payload.d.ts +4 -4
- package/dist/device/register/0.1/payload.d.ts.map +1 -1
- package/dist/device/register/0.1/payload.js +6 -2
- package/dist/device/register/0.1/payload.js.map +1 -1
- package/dist/device/register/0.2/payload.d.ts +4 -4
- package/dist/device/register/0.2/payload.d.ts.map +1 -1
- package/dist/device/register/0.2/payload.js +6 -2
- package/dist/device/register/0.2/payload.js.map +1 -1
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/provision/vta/_shared/0.1/vta.d.ts +16 -0
- package/dist/provision/vta/_shared/0.1/vta.d.ts.map +1 -0
- package/dist/provision/vta/_shared/0.1/vta.js +6 -0
- package/dist/provision/vta/_shared/0.1/vta.js.map +1 -0
- package/dist/provision/vta/claim/0.1/payload.d.ts +115 -0
- package/dist/provision/vta/claim/0.1/payload.d.ts.map +1 -0
- package/dist/provision/vta/claim/0.1/payload.js +69 -0
- package/dist/provision/vta/claim/0.1/payload.js.map +1 -0
- package/dist/provision/vta/redeem/0.1/payload.d.ts +371 -0
- package/dist/provision/vta/redeem/0.1/payload.d.ts.map +1 -0
- package/dist/provision/vta/redeem/0.1/payload.js +207 -0
- package/dist/provision/vta/redeem/0.1/payload.js.map +1 -0
- package/dist/vetting/_shared/0.1/hidden-vetting.d.ts +16 -0
- package/dist/vetting/_shared/0.1/hidden-vetting.d.ts.map +1 -0
- package/dist/vetting/_shared/0.1/hidden-vetting.js +6 -0
- package/dist/vetting/_shared/0.1/hidden-vetting.js.map +1 -0
- package/dist/vetting/attestation/0.1/payload.d.ts +94 -146
- package/dist/vetting/attestation/0.1/payload.d.ts.map +1 -1
- package/dist/vetting/attestation/0.1/payload.js +43 -43
- package/dist/vetting/attestation/0.1/payload.js.map +1 -1
- package/dist/vta/_shared/0.4/pcs-engine.d.ts +16 -0
- package/dist/vta/_shared/0.4/pcs-engine.d.ts.map +1 -0
- package/dist/vta/_shared/0.4/pcs-engine.js +6 -0
- package/dist/vta/_shared/0.4/pcs-engine.js.map +1 -0
- package/dist/vta/pcs/applications/create/0.1/payload.d.ts +1215 -0
- package/dist/vta/pcs/applications/create/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/applications/create/0.1/payload.js +724 -0
- package/dist/vta/pcs/applications/create/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/applications/delete/0.1/payload.d.ts +253 -0
- package/dist/vta/pcs/applications/delete/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/applications/delete/0.1/payload.js +146 -0
- package/dist/vta/pcs/applications/delete/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/applications/show/0.1/payload.d.ts +733 -0
- package/dist/vta/pcs/applications/show/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/applications/show/0.1/payload.js +450 -0
- package/dist/vta/pcs/applications/show/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/attest/0.1/payload.d.ts +1456 -0
- package/dist/vta/pcs/attest/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/attest/0.1/payload.js +876 -0
- package/dist/vta/pcs/attest/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/prove/0.1/payload.d.ts +1348 -0
- package/dist/vta/pcs/prove/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/prove/0.1/payload.js +804 -0
- package/dist/vta/pcs/prove/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/root-accept/0.1/payload.d.ts +1100 -0
- package/dist/vta/pcs/root-accept/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/root-accept/0.1/payload.js +634 -0
- package/dist/vta/pcs/root-accept/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/root-request/0.1/payload.d.ts +880 -0
- package/dist/vta/pcs/root-request/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/root-request/0.1/payload.js +496 -0
- package/dist/vta/pcs/root-request/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/tokens/abandon/0.1/payload.d.ts +612 -0
- package/dist/vta/pcs/tokens/abandon/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/tokens/abandon/0.1/payload.js +355 -0
- package/dist/vta/pcs/tokens/abandon/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/tokens/accept/0.1/payload.d.ts +1149 -0
- package/dist/vta/pcs/tokens/accept/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/tokens/accept/0.1/payload.js +657 -0
- package/dist/vta/pcs/tokens/accept/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/tokens/request/0.1/payload.d.ts +908 -0
- package/dist/vta/pcs/tokens/request/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/tokens/request/0.1/payload.js +508 -0
- package/dist/vta/pcs/tokens/request/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/verify-attestation/0.1/payload.d.ts +1423 -0
- package/dist/vta/pcs/verify-attestation/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/verify-attestation/0.1/payload.js +850 -0
- package/dist/vta/pcs/verify-attestation/0.1/payload.js.map +1 -0
- package/dist/vta/pcs/vetter/show/0.1/payload.d.ts +605 -0
- package/dist/vta/pcs/vetter/show/0.1/payload.d.ts.map +1 -0
- package/dist/vta/pcs/vetter/show/0.1/payload.js +351 -0
- package/dist/vta/pcs/vetter/show/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts +403 -486
- package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/vetting/hidden/publish/0.1/payload.js +240 -240
- package/dist/vtc/vetting/hidden/publish/0.1/payload.js.map +1 -1
- package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts +482 -565
- package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/vetting/hidden/show/0.1/payload.js +294 -294
- package/dist/vtc/vetting/hidden/show/0.1/payload.js.map +1 -1
- package/package.json +1 -1
- package/src/_shared/components.ts +312 -2
- package/src/device/list/0.1/payload.ts +6 -2
- package/src/device/list/0.2/payload.ts +6 -2
- package/src/device/register/0.1/payload.ts +6 -2
- package/src/device/register/0.2/payload.ts +6 -2
- package/src/index.ts +17 -0
- package/src/provision/vta/_shared/0.1/vta.ts +17 -0
- package/src/provision/vta/claim/0.1/payload.ts +88 -0
- package/src/provision/vta/redeem/0.1/payload.ts +255 -0
- package/src/vetting/_shared/0.1/hidden-vetting.ts +17 -0
- package/src/vetting/attestation/0.1/payload.ts +49 -101
- package/src/vta/_shared/0.4/pcs-engine.ts +17 -0
- package/src/vta/pcs/applications/create/0.1/payload.ts +768 -0
- package/src/vta/pcs/applications/delete/0.1/payload.ts +182 -0
- package/src/vta/pcs/applications/show/0.1/payload.ts +482 -0
- package/src/vta/pcs/attest/0.1/payload.ts +943 -0
- package/src/vta/pcs/prove/0.1/payload.ts +845 -0
- package/src/vta/pcs/root-accept/0.1/payload.ts +681 -0
- package/src/vta/pcs/root-request/0.1/payload.ts +559 -0
- package/src/vta/pcs/tokens/abandon/0.1/payload.ts +392 -0
- package/src/vta/pcs/tokens/accept/0.1/payload.ts +713 -0
- package/src/vta/pcs/tokens/request/0.1/payload.ts +581 -0
- package/src/vta/pcs/verify-attestation/0.1/payload.ts +888 -0
- package/src/vta/pcs/vetter/show/0.1/payload.ts +387 -0
- package/src/vtc/vetting/hidden/publish/0.1/payload.ts +247 -331
- package/src/vtc/vetting/hidden/show/0.1/payload.ts +295 -379
|
@@ -36,72 +36,182 @@ export const PAYLOAD_SCHEMA = {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"$defs": {
|
|
39
|
-
"
|
|
40
|
-
"title": "
|
|
39
|
+
"EventStatus": {
|
|
40
|
+
"title": "EventStatus",
|
|
41
|
+
"description": "How one stored event stands today. Counts only — never which members asked.",
|
|
41
42
|
"type": "object",
|
|
42
43
|
"additionalProperties": false,
|
|
43
44
|
"required": [
|
|
44
|
-
"
|
|
45
|
-
"
|
|
45
|
+
"eventId",
|
|
46
|
+
"groupFloor",
|
|
47
|
+
"groupSize",
|
|
48
|
+
"approved",
|
|
49
|
+
"live"
|
|
46
50
|
],
|
|
47
51
|
"properties": {
|
|
48
|
-
"
|
|
52
|
+
"eventId": {
|
|
49
53
|
"type": "string",
|
|
50
|
-
"minLength": 1
|
|
51
|
-
"description": "How the menu names it: desk, busy-desk."
|
|
54
|
+
"minLength": 1
|
|
52
55
|
},
|
|
53
|
-
"
|
|
56
|
+
"groupFloor": {
|
|
54
57
|
"type": "integer",
|
|
55
58
|
"minimum": 1,
|
|
56
|
-
"description": "
|
|
59
|
+
"description": "The smallest group this community will open the label for, as stored."
|
|
60
|
+
},
|
|
61
|
+
"groupSize": {
|
|
62
|
+
"type": "integer",
|
|
63
|
+
"minimum": 0,
|
|
64
|
+
"description": "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter."
|
|
65
|
+
},
|
|
66
|
+
"approved": {
|
|
67
|
+
"type": "boolean",
|
|
68
|
+
"description": "Whether the stored event names an approver."
|
|
69
|
+
},
|
|
70
|
+
"live": {
|
|
71
|
+
"type": "boolean",
|
|
72
|
+
"description": "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays."
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
75
|
},
|
|
60
|
-
"
|
|
61
|
-
"
|
|
76
|
+
"Response": {
|
|
77
|
+
"$anchor": "response",
|
|
78
|
+
"title": "VTC Vetting — Hidden — Show — response payload",
|
|
62
79
|
"type": "object",
|
|
63
80
|
"additionalProperties": false,
|
|
64
81
|
"required": [
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"graceDays",
|
|
69
|
-
"groupFloor",
|
|
70
|
-
"tiers"
|
|
82
|
+
"criterionId",
|
|
83
|
+
"enabled",
|
|
84
|
+
"requirementsDigest"
|
|
71
85
|
],
|
|
86
|
+
"dependentRequired": {
|
|
87
|
+
"stored": [
|
|
88
|
+
"published",
|
|
89
|
+
"enrolledVetters",
|
|
90
|
+
"eventStatus"
|
|
91
|
+
],
|
|
92
|
+
"published": [
|
|
93
|
+
"stored"
|
|
94
|
+
],
|
|
95
|
+
"enrolledVetters": [
|
|
96
|
+
"stored"
|
|
97
|
+
],
|
|
98
|
+
"eventStatus": [
|
|
99
|
+
"stored"
|
|
100
|
+
]
|
|
101
|
+
},
|
|
72
102
|
"properties": {
|
|
73
|
-
"
|
|
103
|
+
"criterionId": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"minLength": 1,
|
|
106
|
+
"description": "The criterion read."
|
|
107
|
+
},
|
|
108
|
+
"enabled": {
|
|
109
|
+
"type": "boolean",
|
|
110
|
+
"description": "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent."
|
|
111
|
+
},
|
|
112
|
+
"stored": {
|
|
113
|
+
"$ref": "#/$defs/StoredConfig"
|
|
114
|
+
},
|
|
115
|
+
"published": {
|
|
116
|
+
"$ref": "#/$defs/PublishedConfig"
|
|
117
|
+
},
|
|
118
|
+
"enrolledVetters": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"description": "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.",
|
|
121
|
+
"propertyNames": {
|
|
122
|
+
"pattern": "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$"
|
|
123
|
+
},
|
|
124
|
+
"additionalProperties": {
|
|
125
|
+
"type": "integer",
|
|
126
|
+
"minimum": 0
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"eventStatus": {
|
|
130
|
+
"type": "array",
|
|
131
|
+
"items": {
|
|
132
|
+
"$ref": "#/$defs/EventStatus"
|
|
133
|
+
},
|
|
134
|
+
"description": "One entry per stored event, in stored order."
|
|
135
|
+
},
|
|
136
|
+
"requirementsDigest": {
|
|
137
|
+
"type": [
|
|
138
|
+
"string",
|
|
139
|
+
"null"
|
|
140
|
+
],
|
|
141
|
+
"description": "The criterion's current requirementsDigest. Null only when its manifest entry carries none."
|
|
142
|
+
},
|
|
143
|
+
"ext": {
|
|
144
|
+
"$ref": "#/$defs/Ext"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"Ext": {
|
|
149
|
+
"title": "Ext",
|
|
150
|
+
"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.",
|
|
151
|
+
"type": "object",
|
|
152
|
+
"minProperties": 1,
|
|
153
|
+
"additionalProperties": true,
|
|
154
|
+
"propertyNames": {
|
|
155
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"PublishedConfig": {
|
|
159
|
+
"title": "PublishedConfig",
|
|
160
|
+
"description": "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.",
|
|
161
|
+
"type": "object",
|
|
162
|
+
"additionalProperties": false,
|
|
163
|
+
"required": [
|
|
164
|
+
"suite",
|
|
165
|
+
"helperKey",
|
|
166
|
+
"tokenKey",
|
|
167
|
+
"vetterLabels",
|
|
168
|
+
"tokenLabels",
|
|
169
|
+
"dripPerTick",
|
|
170
|
+
"tickLength",
|
|
171
|
+
"events"
|
|
172
|
+
],
|
|
173
|
+
"properties": {
|
|
174
|
+
"suite": {
|
|
74
175
|
"type": "string",
|
|
75
176
|
"minLength": 1
|
|
76
177
|
},
|
|
77
|
-
"
|
|
178
|
+
"helperKey": {
|
|
78
179
|
"type": "string",
|
|
79
|
-
"
|
|
180
|
+
"minLength": 1,
|
|
181
|
+
"description": "The helper verification key, multibase — named for its role on the wire rather than for hvk."
|
|
80
182
|
},
|
|
81
|
-
"
|
|
183
|
+
"tokenKey": {
|
|
82
184
|
"type": "string",
|
|
83
|
-
"
|
|
185
|
+
"minLength": 1,
|
|
186
|
+
"description": "The token verification key, multibase — named for its role on the wire rather than for tvk."
|
|
84
187
|
},
|
|
85
|
-
"
|
|
86
|
-
"type": "
|
|
87
|
-
"
|
|
188
|
+
"vetterLabels": {
|
|
189
|
+
"type": "array",
|
|
190
|
+
"items": {
|
|
191
|
+
"type": "string",
|
|
192
|
+
"minLength": 1
|
|
193
|
+
},
|
|
194
|
+
"description": "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period."
|
|
88
195
|
},
|
|
89
|
-
"
|
|
196
|
+
"tokenLabels": {
|
|
197
|
+
"type": "array",
|
|
198
|
+
"items": {
|
|
199
|
+
"type": "string",
|
|
200
|
+
"minLength": 1
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"dripPerTick": {
|
|
90
204
|
"type": "integer",
|
|
91
205
|
"minimum": 1
|
|
92
206
|
},
|
|
93
|
-
"
|
|
207
|
+
"tickLength": {
|
|
208
|
+
"$ref": "#/$defs/TickLength"
|
|
209
|
+
},
|
|
210
|
+
"events": {
|
|
94
211
|
"type": "array",
|
|
95
212
|
"items": {
|
|
96
|
-
"$ref": "#/$defs/
|
|
213
|
+
"$ref": "#/$defs/PublishedEvent"
|
|
97
214
|
}
|
|
98
|
-
},
|
|
99
|
-
"approvedBy": {
|
|
100
|
-
"type": [
|
|
101
|
-
"string",
|
|
102
|
-
"null"
|
|
103
|
-
],
|
|
104
|
-
"description": "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events)."
|
|
105
215
|
}
|
|
106
216
|
}
|
|
107
217
|
},
|
|
@@ -142,6 +252,33 @@ export const PAYLOAD_SCHEMA = {
|
|
|
142
252
|
}
|
|
143
253
|
}
|
|
144
254
|
},
|
|
255
|
+
"Tier": {
|
|
256
|
+
"title": "Tier",
|
|
257
|
+
"type": "object",
|
|
258
|
+
"additionalProperties": false,
|
|
259
|
+
"required": [
|
|
260
|
+
"name",
|
|
261
|
+
"dripPerTick"
|
|
262
|
+
],
|
|
263
|
+
"properties": {
|
|
264
|
+
"name": {
|
|
265
|
+
"type": "string",
|
|
266
|
+
"minLength": 1,
|
|
267
|
+
"description": "How the menu names it: desk, busy-desk."
|
|
268
|
+
},
|
|
269
|
+
"dripPerTick": {
|
|
270
|
+
"type": "integer",
|
|
271
|
+
"minimum": 1,
|
|
272
|
+
"description": "How many tokens a tick under this tier yields."
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"TickLength": {
|
|
277
|
+
"title": "TickLength",
|
|
278
|
+
"type": "string",
|
|
279
|
+
"pattern": "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$",
|
|
280
|
+
"description": "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`)."
|
|
281
|
+
},
|
|
145
282
|
"StoredConfig": {
|
|
146
283
|
"title": "StoredConfig",
|
|
147
284
|
"description": "The parameters exactly as the community stores them, including the helper key it never publishes.",
|
|
@@ -203,66 +340,61 @@ export const PAYLOAD_SCHEMA = {
|
|
|
203
340
|
}
|
|
204
341
|
}
|
|
205
342
|
},
|
|
206
|
-
"
|
|
207
|
-
"title": "
|
|
208
|
-
"description": "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.",
|
|
343
|
+
"StoredEvent": {
|
|
344
|
+
"title": "StoredEvent",
|
|
209
345
|
"type": "object",
|
|
210
346
|
"additionalProperties": false,
|
|
211
347
|
"required": [
|
|
212
|
-
"
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"
|
|
218
|
-
"tickLength",
|
|
219
|
-
"events"
|
|
348
|
+
"eventId",
|
|
349
|
+
"startDate",
|
|
350
|
+
"endDate",
|
|
351
|
+
"graceDays",
|
|
352
|
+
"groupFloor",
|
|
353
|
+
"tiers"
|
|
220
354
|
],
|
|
221
355
|
"properties": {
|
|
222
|
-
"
|
|
356
|
+
"eventId": {
|
|
223
357
|
"type": "string",
|
|
224
358
|
"minLength": 1
|
|
225
359
|
},
|
|
226
|
-
"
|
|
360
|
+
"startDate": {
|
|
227
361
|
"type": "string",
|
|
228
|
-
"
|
|
229
|
-
"description": "The helper verification key, multibase — named for its role on the wire rather than for hvk."
|
|
362
|
+
"format": "date"
|
|
230
363
|
},
|
|
231
|
-
"
|
|
364
|
+
"endDate": {
|
|
232
365
|
"type": "string",
|
|
233
|
-
"
|
|
234
|
-
"description": "The token verification key, multibase — named for its role on the wire rather than for tvk."
|
|
366
|
+
"format": "date"
|
|
235
367
|
},
|
|
236
|
-
"
|
|
237
|
-
"type": "
|
|
238
|
-
"
|
|
239
|
-
"type": "string",
|
|
240
|
-
"minLength": 1
|
|
241
|
-
},
|
|
242
|
-
"description": "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period."
|
|
368
|
+
"graceDays": {
|
|
369
|
+
"type": "integer",
|
|
370
|
+
"minimum": 0
|
|
243
371
|
},
|
|
244
|
-
"
|
|
372
|
+
"groupFloor": {
|
|
373
|
+
"type": "integer",
|
|
374
|
+
"minimum": 1
|
|
375
|
+
},
|
|
376
|
+
"tiers": {
|
|
245
377
|
"type": "array",
|
|
246
378
|
"items": {
|
|
247
|
-
"
|
|
248
|
-
"minLength": 1
|
|
379
|
+
"$ref": "#/$defs/Tier"
|
|
249
380
|
}
|
|
250
381
|
},
|
|
251
|
-
"
|
|
252
|
-
"type":
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
"
|
|
257
|
-
},
|
|
258
|
-
"events": {
|
|
259
|
-
"type": "array",
|
|
260
|
-
"items": {
|
|
261
|
-
"$ref": "#/$defs/PublishedEvent"
|
|
262
|
-
}
|
|
382
|
+
"approvedBy": {
|
|
383
|
+
"type": [
|
|
384
|
+
"string",
|
|
385
|
+
"null"
|
|
386
|
+
],
|
|
387
|
+
"description": "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events)."
|
|
263
388
|
}
|
|
264
389
|
}
|
|
265
|
-
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
394
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
395
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
396
|
+
"$ref": "#/$defs/Response",
|
|
397
|
+
"$defs": {
|
|
266
398
|
"EventStatus": {
|
|
267
399
|
"title": "EventStatus",
|
|
268
400
|
"description": "How one stored event stands today. Counts only — never which members asked.",
|
|
@@ -372,12 +504,6 @@ export const PAYLOAD_SCHEMA = {
|
|
|
372
504
|
}
|
|
373
505
|
}
|
|
374
506
|
},
|
|
375
|
-
"TickLength": {
|
|
376
|
-
"title": "TickLength",
|
|
377
|
-
"type": "string",
|
|
378
|
-
"pattern": "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$",
|
|
379
|
-
"description": "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`)."
|
|
380
|
-
},
|
|
381
507
|
"Ext": {
|
|
382
508
|
"title": "Ext",
|
|
383
509
|
"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.",
|
|
@@ -387,80 +513,64 @@ export const PAYLOAD_SCHEMA = {
|
|
|
387
513
|
"propertyNames": {
|
|
388
514
|
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
389
515
|
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
};
|
|
393
|
-
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
394
|
-
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
395
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
396
|
-
"$ref": "#/$defs/Response",
|
|
397
|
-
"$defs": {
|
|
398
|
-
"Tier": {
|
|
399
|
-
"title": "Tier",
|
|
400
|
-
"type": "object",
|
|
401
|
-
"additionalProperties": false,
|
|
402
|
-
"required": [
|
|
403
|
-
"name",
|
|
404
|
-
"dripPerTick"
|
|
405
|
-
],
|
|
406
|
-
"properties": {
|
|
407
|
-
"name": {
|
|
408
|
-
"type": "string",
|
|
409
|
-
"minLength": 1,
|
|
410
|
-
"description": "How the menu names it: desk, busy-desk."
|
|
411
|
-
},
|
|
412
|
-
"dripPerTick": {
|
|
413
|
-
"type": "integer",
|
|
414
|
-
"minimum": 1,
|
|
415
|
-
"description": "How many tokens a tick under this tier yields."
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
516
|
},
|
|
419
|
-
"
|
|
420
|
-
"title": "
|
|
517
|
+
"PublishedConfig": {
|
|
518
|
+
"title": "PublishedConfig",
|
|
519
|
+
"description": "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.",
|
|
421
520
|
"type": "object",
|
|
422
521
|
"additionalProperties": false,
|
|
423
522
|
"required": [
|
|
424
|
-
"
|
|
425
|
-
"
|
|
426
|
-
"
|
|
427
|
-
"
|
|
428
|
-
"
|
|
429
|
-
"
|
|
523
|
+
"suite",
|
|
524
|
+
"helperKey",
|
|
525
|
+
"tokenKey",
|
|
526
|
+
"vetterLabels",
|
|
527
|
+
"tokenLabels",
|
|
528
|
+
"dripPerTick",
|
|
529
|
+
"tickLength",
|
|
530
|
+
"events"
|
|
430
531
|
],
|
|
431
532
|
"properties": {
|
|
432
|
-
"
|
|
533
|
+
"suite": {
|
|
433
534
|
"type": "string",
|
|
434
535
|
"minLength": 1
|
|
435
536
|
},
|
|
436
|
-
"
|
|
537
|
+
"helperKey": {
|
|
437
538
|
"type": "string",
|
|
438
|
-
"
|
|
539
|
+
"minLength": 1,
|
|
540
|
+
"description": "The helper verification key, multibase — named for its role on the wire rather than for hvk."
|
|
439
541
|
},
|
|
440
|
-
"
|
|
542
|
+
"tokenKey": {
|
|
441
543
|
"type": "string",
|
|
442
|
-
"
|
|
544
|
+
"minLength": 1,
|
|
545
|
+
"description": "The token verification key, multibase — named for its role on the wire rather than for tvk."
|
|
443
546
|
},
|
|
444
|
-
"
|
|
445
|
-
"type": "
|
|
446
|
-
"
|
|
547
|
+
"vetterLabels": {
|
|
548
|
+
"type": "array",
|
|
549
|
+
"items": {
|
|
550
|
+
"type": "string",
|
|
551
|
+
"minLength": 1
|
|
552
|
+
},
|
|
553
|
+
"description": "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period."
|
|
447
554
|
},
|
|
448
|
-
"
|
|
555
|
+
"tokenLabels": {
|
|
556
|
+
"type": "array",
|
|
557
|
+
"items": {
|
|
558
|
+
"type": "string",
|
|
559
|
+
"minLength": 1
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
"dripPerTick": {
|
|
449
563
|
"type": "integer",
|
|
450
564
|
"minimum": 1
|
|
451
565
|
},
|
|
452
|
-
"
|
|
566
|
+
"tickLength": {
|
|
567
|
+
"$ref": "#/$defs/TickLength"
|
|
568
|
+
},
|
|
569
|
+
"events": {
|
|
453
570
|
"type": "array",
|
|
454
571
|
"items": {
|
|
455
|
-
"$ref": "#/$defs/
|
|
572
|
+
"$ref": "#/$defs/PublishedEvent"
|
|
456
573
|
}
|
|
457
|
-
},
|
|
458
|
-
"approvedBy": {
|
|
459
|
-
"type": [
|
|
460
|
-
"string",
|
|
461
|
-
"null"
|
|
462
|
-
],
|
|
463
|
-
"description": "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events)."
|
|
464
574
|
}
|
|
465
575
|
}
|
|
466
576
|
},
|
|
@@ -501,6 +611,33 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
501
611
|
}
|
|
502
612
|
}
|
|
503
613
|
},
|
|
614
|
+
"Tier": {
|
|
615
|
+
"title": "Tier",
|
|
616
|
+
"type": "object",
|
|
617
|
+
"additionalProperties": false,
|
|
618
|
+
"required": [
|
|
619
|
+
"name",
|
|
620
|
+
"dripPerTick"
|
|
621
|
+
],
|
|
622
|
+
"properties": {
|
|
623
|
+
"name": {
|
|
624
|
+
"type": "string",
|
|
625
|
+
"minLength": 1,
|
|
626
|
+
"description": "How the menu names it: desk, busy-desk."
|
|
627
|
+
},
|
|
628
|
+
"dripPerTick": {
|
|
629
|
+
"type": "integer",
|
|
630
|
+
"minimum": 1,
|
|
631
|
+
"description": "How many tokens a tick under this tier yields."
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
"TickLength": {
|
|
636
|
+
"title": "TickLength",
|
|
637
|
+
"type": "string",
|
|
638
|
+
"pattern": "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$",
|
|
639
|
+
"description": "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`)."
|
|
640
|
+
},
|
|
504
641
|
"StoredConfig": {
|
|
505
642
|
"title": "StoredConfig",
|
|
506
643
|
"description": "The parameters exactly as the community stores them, including the helper key it never publishes.",
|
|
@@ -562,190 +699,53 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
562
699
|
}
|
|
563
700
|
}
|
|
564
701
|
},
|
|
565
|
-
"
|
|
566
|
-
"title": "
|
|
567
|
-
"description": "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.",
|
|
702
|
+
"StoredEvent": {
|
|
703
|
+
"title": "StoredEvent",
|
|
568
704
|
"type": "object",
|
|
569
705
|
"additionalProperties": false,
|
|
570
706
|
"required": [
|
|
571
|
-
"
|
|
572
|
-
"
|
|
573
|
-
"
|
|
574
|
-
"
|
|
575
|
-
"
|
|
576
|
-
"
|
|
577
|
-
"tickLength",
|
|
578
|
-
"events"
|
|
707
|
+
"eventId",
|
|
708
|
+
"startDate",
|
|
709
|
+
"endDate",
|
|
710
|
+
"graceDays",
|
|
711
|
+
"groupFloor",
|
|
712
|
+
"tiers"
|
|
579
713
|
],
|
|
580
714
|
"properties": {
|
|
581
|
-
"
|
|
715
|
+
"eventId": {
|
|
582
716
|
"type": "string",
|
|
583
717
|
"minLength": 1
|
|
584
718
|
},
|
|
585
|
-
"
|
|
719
|
+
"startDate": {
|
|
586
720
|
"type": "string",
|
|
587
|
-
"
|
|
588
|
-
"description": "The helper verification key, multibase — named for its role on the wire rather than for hvk."
|
|
721
|
+
"format": "date"
|
|
589
722
|
},
|
|
590
|
-
"
|
|
723
|
+
"endDate": {
|
|
591
724
|
"type": "string",
|
|
592
|
-
"
|
|
593
|
-
"description": "The token verification key, multibase — named for its role on the wire rather than for tvk."
|
|
594
|
-
},
|
|
595
|
-
"vetterLabels": {
|
|
596
|
-
"type": "array",
|
|
597
|
-
"items": {
|
|
598
|
-
"type": "string",
|
|
599
|
-
"minLength": 1
|
|
600
|
-
},
|
|
601
|
-
"description": "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period."
|
|
602
|
-
},
|
|
603
|
-
"tokenLabels": {
|
|
604
|
-
"type": "array",
|
|
605
|
-
"items": {
|
|
606
|
-
"type": "string",
|
|
607
|
-
"minLength": 1
|
|
608
|
-
}
|
|
725
|
+
"format": "date"
|
|
609
726
|
},
|
|
610
|
-
"
|
|
727
|
+
"graceDays": {
|
|
611
728
|
"type": "integer",
|
|
612
|
-
"minimum":
|
|
613
|
-
},
|
|
614
|
-
"tickLength": {
|
|
615
|
-
"$ref": "#/$defs/TickLength"
|
|
616
|
-
},
|
|
617
|
-
"events": {
|
|
618
|
-
"type": "array",
|
|
619
|
-
"items": {
|
|
620
|
-
"$ref": "#/$defs/PublishedEvent"
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
},
|
|
625
|
-
"EventStatus": {
|
|
626
|
-
"title": "EventStatus",
|
|
627
|
-
"description": "How one stored event stands today. Counts only — never which members asked.",
|
|
628
|
-
"type": "object",
|
|
629
|
-
"additionalProperties": false,
|
|
630
|
-
"required": [
|
|
631
|
-
"eventId",
|
|
632
|
-
"groupFloor",
|
|
633
|
-
"groupSize",
|
|
634
|
-
"approved",
|
|
635
|
-
"live"
|
|
636
|
-
],
|
|
637
|
-
"properties": {
|
|
638
|
-
"eventId": {
|
|
639
|
-
"type": "string",
|
|
640
|
-
"minLength": 1
|
|
729
|
+
"minimum": 0
|
|
641
730
|
},
|
|
642
731
|
"groupFloor": {
|
|
643
732
|
"type": "integer",
|
|
644
|
-
"minimum": 1
|
|
645
|
-
"description": "The smallest group this community will open the label for, as stored."
|
|
646
|
-
},
|
|
647
|
-
"groupSize": {
|
|
648
|
-
"type": "integer",
|
|
649
|
-
"minimum": 0,
|
|
650
|
-
"description": "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter."
|
|
651
|
-
},
|
|
652
|
-
"approved": {
|
|
653
|
-
"type": "boolean",
|
|
654
|
-
"description": "Whether the stored event names an approver."
|
|
655
|
-
},
|
|
656
|
-
"live": {
|
|
657
|
-
"type": "boolean",
|
|
658
|
-
"description": "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays."
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
},
|
|
662
|
-
"Response": {
|
|
663
|
-
"$anchor": "response",
|
|
664
|
-
"title": "VTC Vetting — Hidden — Show — response payload",
|
|
665
|
-
"type": "object",
|
|
666
|
-
"additionalProperties": false,
|
|
667
|
-
"required": [
|
|
668
|
-
"criterionId",
|
|
669
|
-
"enabled",
|
|
670
|
-
"requirementsDigest"
|
|
671
|
-
],
|
|
672
|
-
"dependentRequired": {
|
|
673
|
-
"stored": [
|
|
674
|
-
"published",
|
|
675
|
-
"enrolledVetters",
|
|
676
|
-
"eventStatus"
|
|
677
|
-
],
|
|
678
|
-
"published": [
|
|
679
|
-
"stored"
|
|
680
|
-
],
|
|
681
|
-
"enrolledVetters": [
|
|
682
|
-
"stored"
|
|
683
|
-
],
|
|
684
|
-
"eventStatus": [
|
|
685
|
-
"stored"
|
|
686
|
-
]
|
|
687
|
-
},
|
|
688
|
-
"properties": {
|
|
689
|
-
"criterionId": {
|
|
690
|
-
"type": "string",
|
|
691
|
-
"minLength": 1,
|
|
692
|
-
"description": "The criterion read."
|
|
693
|
-
},
|
|
694
|
-
"enabled": {
|
|
695
|
-
"type": "boolean",
|
|
696
|
-
"description": "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent."
|
|
697
|
-
},
|
|
698
|
-
"stored": {
|
|
699
|
-
"$ref": "#/$defs/StoredConfig"
|
|
700
|
-
},
|
|
701
|
-
"published": {
|
|
702
|
-
"$ref": "#/$defs/PublishedConfig"
|
|
703
|
-
},
|
|
704
|
-
"enrolledVetters": {
|
|
705
|
-
"type": "object",
|
|
706
|
-
"description": "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.",
|
|
707
|
-
"propertyNames": {
|
|
708
|
-
"pattern": "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$"
|
|
709
|
-
},
|
|
710
|
-
"additionalProperties": {
|
|
711
|
-
"type": "integer",
|
|
712
|
-
"minimum": 0
|
|
713
|
-
}
|
|
733
|
+
"minimum": 1
|
|
714
734
|
},
|
|
715
|
-
"
|
|
735
|
+
"tiers": {
|
|
716
736
|
"type": "array",
|
|
717
737
|
"items": {
|
|
718
|
-
"$ref": "#/$defs/
|
|
719
|
-
}
|
|
720
|
-
"description": "One entry per stored event, in stored order."
|
|
738
|
+
"$ref": "#/$defs/Tier"
|
|
739
|
+
}
|
|
721
740
|
},
|
|
722
|
-
"
|
|
741
|
+
"approvedBy": {
|
|
723
742
|
"type": [
|
|
724
743
|
"string",
|
|
725
744
|
"null"
|
|
726
745
|
],
|
|
727
|
-
"description": "
|
|
728
|
-
},
|
|
729
|
-
"ext": {
|
|
730
|
-
"$ref": "#/$defs/Ext"
|
|
746
|
+
"description": "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events)."
|
|
731
747
|
}
|
|
732
748
|
}
|
|
733
|
-
},
|
|
734
|
-
"TickLength": {
|
|
735
|
-
"title": "TickLength",
|
|
736
|
-
"type": "string",
|
|
737
|
-
"pattern": "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$",
|
|
738
|
-
"description": "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`)."
|
|
739
|
-
},
|
|
740
|
-
"Ext": {
|
|
741
|
-
"title": "Ext",
|
|
742
|
-
"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.",
|
|
743
|
-
"type": "object",
|
|
744
|
-
"minProperties": 1,
|
|
745
|
-
"additionalProperties": true,
|
|
746
|
-
"propertyNames": {
|
|
747
|
-
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
748
|
-
}
|
|
749
749
|
}
|
|
750
750
|
}
|
|
751
751
|
};
|