@openvtc/trust-tasks 0.25.1 → 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 +18 -0
- package/dist/_shared/components.d.ts +304 -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 +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/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 +308 -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 +14 -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
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
3
|
* Source: specs/vtc/vetting/hidden/show/0.1/payload.schema.json
|
|
4
4
|
*/
|
|
5
|
-
import type { Ext } from "../../../../../_shared/components.js";
|
|
6
|
-
/**
|
|
7
|
-
* 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`).
|
|
8
|
-
*/
|
|
9
|
-
export type TickLength = string;
|
|
5
|
+
import type { Ext, PublishedConfig, PublishedEvent, StoredConfig, StoredEvent, TickLength, Tier } from "../../../../../_shared/components.js";
|
|
10
6
|
/**
|
|
11
7
|
* Read one criterion's stored hidden-vetting configuration, what it publishes, and the aggregate counts an administrator needs to run it. The outer document members are owned by the framework — SPEC §6.3.
|
|
12
8
|
*/
|
|
@@ -44,85 +40,6 @@ export interface VTCVettingHiddenShowResponsePayload {
|
|
|
44
40
|
requirementsDigest: string | null;
|
|
45
41
|
ext?: Ext;
|
|
46
42
|
}
|
|
47
|
-
/**
|
|
48
|
-
* The parameters exactly as the community stores them, including the helper key it never publishes.
|
|
49
|
-
*/
|
|
50
|
-
export interface StoredConfig {
|
|
51
|
-
/**
|
|
52
|
-
* The blind-signature suite in force, e.g. ps-ddh-bls12381.
|
|
53
|
-
*/
|
|
54
|
-
suite: string;
|
|
55
|
-
/**
|
|
56
|
-
* The helper verification key, multibase. A public value, published as helperKey.
|
|
57
|
-
*/
|
|
58
|
-
hvk: string;
|
|
59
|
-
/**
|
|
60
|
-
* The token verification key, multibase. Never the same key as hvk.
|
|
61
|
-
*/
|
|
62
|
-
tvk: string;
|
|
63
|
-
/**
|
|
64
|
-
* Live vetter class periods, current first, stored as the bare YYYY-MM period.
|
|
65
|
-
*/
|
|
66
|
-
livePeriods: string[];
|
|
67
|
-
liveTokenLabels: string[];
|
|
68
|
-
dripPerTick: number;
|
|
69
|
-
tickLength: TickLength;
|
|
70
|
-
events: StoredEvent[];
|
|
71
|
-
}
|
|
72
|
-
export interface StoredEvent {
|
|
73
|
-
eventId: string;
|
|
74
|
-
startDate: string;
|
|
75
|
-
endDate: string;
|
|
76
|
-
graceDays: number;
|
|
77
|
-
groupFloor: number;
|
|
78
|
-
tiers: Tier[];
|
|
79
|
-
/**
|
|
80
|
-
* Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).
|
|
81
|
-
*/
|
|
82
|
-
approvedBy?: string | null;
|
|
83
|
-
}
|
|
84
|
-
export interface Tier {
|
|
85
|
-
/**
|
|
86
|
-
* How the menu names it: desk, busy-desk.
|
|
87
|
-
*/
|
|
88
|
-
name: string;
|
|
89
|
-
/**
|
|
90
|
-
* How many tokens a tick under this tier yields.
|
|
91
|
-
*/
|
|
92
|
-
dripPerTick: number;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.
|
|
96
|
-
*/
|
|
97
|
-
export interface PublishedConfig {
|
|
98
|
-
suite: string;
|
|
99
|
-
/**
|
|
100
|
-
* The helper verification key, multibase — named for its role on the wire rather than for hvk.
|
|
101
|
-
*/
|
|
102
|
-
helperKey: string;
|
|
103
|
-
/**
|
|
104
|
-
* The token verification key, multibase — named for its role on the wire rather than for tvk.
|
|
105
|
-
*/
|
|
106
|
-
tokenKey: string;
|
|
107
|
-
/**
|
|
108
|
-
* Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.
|
|
109
|
-
*/
|
|
110
|
-
vetterLabels: string[];
|
|
111
|
-
tokenLabels: string[];
|
|
112
|
-
dripPerTick: number;
|
|
113
|
-
tickLength: TickLength;
|
|
114
|
-
events: PublishedEvent[];
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* The published shape drops approvedBy and graceDays: who approved is the community's own record, and a vetter is told closesAfter when its request is approved rather than being handed the raw grace period here.
|
|
118
|
-
*/
|
|
119
|
-
export interface PublishedEvent {
|
|
120
|
-
eventId: string;
|
|
121
|
-
startDate: string;
|
|
122
|
-
endDate: string;
|
|
123
|
-
groupFloor: number;
|
|
124
|
-
tiers: Tier[];
|
|
125
|
-
}
|
|
126
43
|
/**
|
|
127
44
|
* How one stored event stands today. Counts only — never which members asked.
|
|
128
45
|
*/
|
|
@@ -146,7 +63,7 @@ export interface EventStatus {
|
|
|
146
63
|
live: boolean;
|
|
147
64
|
}
|
|
148
65
|
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
149
|
-
export type { Ext };
|
|
66
|
+
export type { Ext, PublishedConfig, PublishedEvent, StoredConfig, StoredEvent, TickLength, Tier };
|
|
150
67
|
/** Trust Task type URI. */
|
|
151
68
|
export declare const TYPE_URI: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1";
|
|
152
69
|
/** Stable alias for this specification's request payload shape. */
|
|
@@ -183,60 +100,151 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
183
100
|
};
|
|
184
101
|
};
|
|
185
102
|
readonly $defs: {
|
|
186
|
-
readonly
|
|
187
|
-
readonly title: "
|
|
103
|
+
readonly EventStatus: {
|
|
104
|
+
readonly title: "EventStatus";
|
|
105
|
+
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
188
106
|
readonly type: "object";
|
|
189
107
|
readonly additionalProperties: false;
|
|
190
|
-
readonly required: readonly ["
|
|
108
|
+
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
191
109
|
readonly properties: {
|
|
192
|
-
readonly
|
|
110
|
+
readonly eventId: {
|
|
193
111
|
readonly type: "string";
|
|
194
112
|
readonly minLength: 1;
|
|
195
|
-
readonly description: "How the menu names it: desk, busy-desk.";
|
|
196
113
|
};
|
|
197
|
-
readonly
|
|
114
|
+
readonly groupFloor: {
|
|
198
115
|
readonly type: "integer";
|
|
199
116
|
readonly minimum: 1;
|
|
200
|
-
readonly description: "
|
|
117
|
+
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
118
|
+
};
|
|
119
|
+
readonly groupSize: {
|
|
120
|
+
readonly type: "integer";
|
|
121
|
+
readonly minimum: 0;
|
|
122
|
+
readonly 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.";
|
|
123
|
+
};
|
|
124
|
+
readonly approved: {
|
|
125
|
+
readonly type: "boolean";
|
|
126
|
+
readonly description: "Whether the stored event names an approver.";
|
|
127
|
+
};
|
|
128
|
+
readonly live: {
|
|
129
|
+
readonly type: "boolean";
|
|
130
|
+
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
201
131
|
};
|
|
202
132
|
};
|
|
203
133
|
};
|
|
204
|
-
readonly
|
|
205
|
-
readonly
|
|
134
|
+
readonly Response: {
|
|
135
|
+
readonly $anchor: "response";
|
|
136
|
+
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
206
137
|
readonly type: "object";
|
|
207
138
|
readonly additionalProperties: false;
|
|
208
|
-
readonly required: readonly ["
|
|
139
|
+
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
140
|
+
readonly dependentRequired: {
|
|
141
|
+
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
142
|
+
readonly published: readonly ["stored"];
|
|
143
|
+
readonly enrolledVetters: readonly ["stored"];
|
|
144
|
+
readonly eventStatus: readonly ["stored"];
|
|
145
|
+
};
|
|
209
146
|
readonly properties: {
|
|
210
|
-
readonly
|
|
147
|
+
readonly criterionId: {
|
|
211
148
|
readonly type: "string";
|
|
212
149
|
readonly minLength: 1;
|
|
150
|
+
readonly description: "The criterion read.";
|
|
213
151
|
};
|
|
214
|
-
readonly
|
|
152
|
+
readonly enabled: {
|
|
153
|
+
readonly type: "boolean";
|
|
154
|
+
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
155
|
+
};
|
|
156
|
+
readonly stored: {
|
|
157
|
+
readonly $ref: "#/$defs/StoredConfig";
|
|
158
|
+
};
|
|
159
|
+
readonly published: {
|
|
160
|
+
readonly $ref: "#/$defs/PublishedConfig";
|
|
161
|
+
};
|
|
162
|
+
readonly enrolledVetters: {
|
|
163
|
+
readonly type: "object";
|
|
164
|
+
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
165
|
+
readonly propertyNames: {
|
|
166
|
+
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
167
|
+
};
|
|
168
|
+
readonly additionalProperties: {
|
|
169
|
+
readonly type: "integer";
|
|
170
|
+
readonly minimum: 0;
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
readonly eventStatus: {
|
|
174
|
+
readonly type: "array";
|
|
175
|
+
readonly items: {
|
|
176
|
+
readonly $ref: "#/$defs/EventStatus";
|
|
177
|
+
};
|
|
178
|
+
readonly description: "One entry per stored event, in stored order.";
|
|
179
|
+
};
|
|
180
|
+
readonly requirementsDigest: {
|
|
181
|
+
readonly type: readonly ["string", "null"];
|
|
182
|
+
readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
|
|
183
|
+
};
|
|
184
|
+
readonly ext: {
|
|
185
|
+
readonly $ref: "#/$defs/Ext";
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
readonly Ext: {
|
|
190
|
+
readonly title: "Ext";
|
|
191
|
+
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.";
|
|
192
|
+
readonly type: "object";
|
|
193
|
+
readonly minProperties: 1;
|
|
194
|
+
readonly additionalProperties: true;
|
|
195
|
+
readonly propertyNames: {
|
|
196
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
readonly PublishedConfig: {
|
|
200
|
+
readonly title: "PublishedConfig";
|
|
201
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
202
|
+
readonly type: "object";
|
|
203
|
+
readonly additionalProperties: false;
|
|
204
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
|
|
205
|
+
readonly properties: {
|
|
206
|
+
readonly suite: {
|
|
215
207
|
readonly type: "string";
|
|
216
|
-
readonly
|
|
208
|
+
readonly minLength: 1;
|
|
217
209
|
};
|
|
218
|
-
readonly
|
|
210
|
+
readonly helperKey: {
|
|
219
211
|
readonly type: "string";
|
|
220
|
-
readonly
|
|
212
|
+
readonly minLength: 1;
|
|
213
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
221
214
|
};
|
|
222
|
-
readonly
|
|
223
|
-
readonly type: "
|
|
224
|
-
readonly
|
|
215
|
+
readonly tokenKey: {
|
|
216
|
+
readonly type: "string";
|
|
217
|
+
readonly minLength: 1;
|
|
218
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
225
219
|
};
|
|
226
|
-
readonly
|
|
220
|
+
readonly vetterLabels: {
|
|
221
|
+
readonly type: "array";
|
|
222
|
+
readonly items: {
|
|
223
|
+
readonly type: "string";
|
|
224
|
+
readonly minLength: 1;
|
|
225
|
+
};
|
|
226
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
227
|
+
};
|
|
228
|
+
readonly tokenLabels: {
|
|
229
|
+
readonly type: "array";
|
|
230
|
+
readonly items: {
|
|
231
|
+
readonly type: "string";
|
|
232
|
+
readonly minLength: 1;
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
readonly dripPerTick: {
|
|
227
236
|
readonly type: "integer";
|
|
228
237
|
readonly minimum: 1;
|
|
229
238
|
};
|
|
230
|
-
readonly
|
|
239
|
+
readonly tickLength: {
|
|
240
|
+
readonly $ref: "#/$defs/TickLength";
|
|
241
|
+
};
|
|
242
|
+
readonly events: {
|
|
231
243
|
readonly type: "array";
|
|
232
244
|
readonly items: {
|
|
233
|
-
readonly $ref: "#/$defs/
|
|
245
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
234
246
|
};
|
|
235
247
|
};
|
|
236
|
-
readonly approvedBy: {
|
|
237
|
-
readonly type: readonly ["string", "null"];
|
|
238
|
-
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
239
|
-
};
|
|
240
248
|
};
|
|
241
249
|
};
|
|
242
250
|
readonly PublishedEvent: {
|
|
@@ -270,6 +278,30 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
270
278
|
};
|
|
271
279
|
};
|
|
272
280
|
};
|
|
281
|
+
readonly Tier: {
|
|
282
|
+
readonly title: "Tier";
|
|
283
|
+
readonly type: "object";
|
|
284
|
+
readonly additionalProperties: false;
|
|
285
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
286
|
+
readonly properties: {
|
|
287
|
+
readonly name: {
|
|
288
|
+
readonly type: "string";
|
|
289
|
+
readonly minLength: 1;
|
|
290
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
291
|
+
};
|
|
292
|
+
readonly dripPerTick: {
|
|
293
|
+
readonly type: "integer";
|
|
294
|
+
readonly minimum: 1;
|
|
295
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
296
|
+
};
|
|
297
|
+
};
|
|
298
|
+
};
|
|
299
|
+
readonly TickLength: {
|
|
300
|
+
readonly title: "TickLength";
|
|
301
|
+
readonly type: "string";
|
|
302
|
+
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
303
|
+
readonly 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`).";
|
|
304
|
+
};
|
|
273
305
|
readonly StoredConfig: {
|
|
274
306
|
readonly title: "StoredConfig";
|
|
275
307
|
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
@@ -322,62 +354,56 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
322
354
|
};
|
|
323
355
|
};
|
|
324
356
|
};
|
|
325
|
-
readonly
|
|
326
|
-
readonly title: "
|
|
327
|
-
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
357
|
+
readonly StoredEvent: {
|
|
358
|
+
readonly title: "StoredEvent";
|
|
328
359
|
readonly type: "object";
|
|
329
360
|
readonly additionalProperties: false;
|
|
330
|
-
readonly required: readonly ["
|
|
361
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
331
362
|
readonly properties: {
|
|
332
|
-
readonly
|
|
363
|
+
readonly eventId: {
|
|
333
364
|
readonly type: "string";
|
|
334
365
|
readonly minLength: 1;
|
|
335
366
|
};
|
|
336
|
-
readonly
|
|
367
|
+
readonly startDate: {
|
|
337
368
|
readonly type: "string";
|
|
338
|
-
readonly
|
|
339
|
-
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
369
|
+
readonly format: "date";
|
|
340
370
|
};
|
|
341
|
-
readonly
|
|
371
|
+
readonly endDate: {
|
|
342
372
|
readonly type: "string";
|
|
343
|
-
readonly
|
|
344
|
-
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
345
|
-
};
|
|
346
|
-
readonly vetterLabels: {
|
|
347
|
-
readonly type: "array";
|
|
348
|
-
readonly items: {
|
|
349
|
-
readonly type: "string";
|
|
350
|
-
readonly minLength: 1;
|
|
351
|
-
};
|
|
352
|
-
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
373
|
+
readonly format: "date";
|
|
353
374
|
};
|
|
354
|
-
readonly
|
|
355
|
-
readonly type: "
|
|
356
|
-
readonly
|
|
357
|
-
readonly type: "string";
|
|
358
|
-
readonly minLength: 1;
|
|
359
|
-
};
|
|
375
|
+
readonly graceDays: {
|
|
376
|
+
readonly type: "integer";
|
|
377
|
+
readonly minimum: 0;
|
|
360
378
|
};
|
|
361
|
-
readonly
|
|
379
|
+
readonly groupFloor: {
|
|
362
380
|
readonly type: "integer";
|
|
363
381
|
readonly minimum: 1;
|
|
364
382
|
};
|
|
365
|
-
readonly
|
|
366
|
-
readonly $ref: "#/$defs/TickLength";
|
|
367
|
-
};
|
|
368
|
-
readonly events: {
|
|
383
|
+
readonly tiers: {
|
|
369
384
|
readonly type: "array";
|
|
370
385
|
readonly items: {
|
|
371
|
-
readonly $ref: "#/$defs/
|
|
386
|
+
readonly $ref: "#/$defs/Tier";
|
|
372
387
|
};
|
|
373
388
|
};
|
|
389
|
+
readonly approvedBy: {
|
|
390
|
+
readonly type: readonly ["string", "null"];
|
|
391
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
392
|
+
};
|
|
374
393
|
};
|
|
375
394
|
};
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
395
|
+
};
|
|
396
|
+
};
|
|
397
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
398
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
399
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
400
|
+
readonly $ref: "#/$defs/Response";
|
|
401
|
+
readonly $defs: {
|
|
402
|
+
readonly EventStatus: {
|
|
403
|
+
readonly title: "EventStatus";
|
|
404
|
+
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
405
|
+
readonly type: "object";
|
|
406
|
+
readonly additionalProperties: false;
|
|
381
407
|
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
382
408
|
readonly properties: {
|
|
383
409
|
readonly eventId: {
|
|
@@ -459,12 +485,6 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
459
485
|
};
|
|
460
486
|
};
|
|
461
487
|
};
|
|
462
|
-
readonly TickLength: {
|
|
463
|
-
readonly title: "TickLength";
|
|
464
|
-
readonly type: "string";
|
|
465
|
-
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
466
|
-
readonly 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`).";
|
|
467
|
-
};
|
|
468
488
|
readonly Ext: {
|
|
469
489
|
readonly title: "Ext";
|
|
470
490
|
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.";
|
|
@@ -475,67 +495,55 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
475
495
|
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
476
496
|
};
|
|
477
497
|
};
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
482
|
-
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
483
|
-
readonly $ref: "#/$defs/Response";
|
|
484
|
-
readonly $defs: {
|
|
485
|
-
readonly Tier: {
|
|
486
|
-
readonly title: "Tier";
|
|
498
|
+
readonly PublishedConfig: {
|
|
499
|
+
readonly title: "PublishedConfig";
|
|
500
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
487
501
|
readonly type: "object";
|
|
488
502
|
readonly additionalProperties: false;
|
|
489
|
-
readonly required: readonly ["
|
|
503
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
|
|
490
504
|
readonly properties: {
|
|
491
|
-
readonly
|
|
505
|
+
readonly suite: {
|
|
492
506
|
readonly type: "string";
|
|
493
507
|
readonly minLength: 1;
|
|
494
|
-
readonly description: "How the menu names it: desk, busy-desk.";
|
|
495
|
-
};
|
|
496
|
-
readonly dripPerTick: {
|
|
497
|
-
readonly type: "integer";
|
|
498
|
-
readonly minimum: 1;
|
|
499
|
-
readonly description: "How many tokens a tick under this tier yields.";
|
|
500
508
|
};
|
|
501
|
-
|
|
502
|
-
};
|
|
503
|
-
readonly StoredEvent: {
|
|
504
|
-
readonly title: "StoredEvent";
|
|
505
|
-
readonly type: "object";
|
|
506
|
-
readonly additionalProperties: false;
|
|
507
|
-
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
508
|
-
readonly properties: {
|
|
509
|
-
readonly eventId: {
|
|
509
|
+
readonly helperKey: {
|
|
510
510
|
readonly type: "string";
|
|
511
511
|
readonly minLength: 1;
|
|
512
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
512
513
|
};
|
|
513
|
-
readonly
|
|
514
|
+
readonly tokenKey: {
|
|
514
515
|
readonly type: "string";
|
|
515
|
-
readonly
|
|
516
|
+
readonly minLength: 1;
|
|
517
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
516
518
|
};
|
|
517
|
-
readonly
|
|
518
|
-
readonly type: "
|
|
519
|
-
readonly
|
|
519
|
+
readonly vetterLabels: {
|
|
520
|
+
readonly type: "array";
|
|
521
|
+
readonly items: {
|
|
522
|
+
readonly type: "string";
|
|
523
|
+
readonly minLength: 1;
|
|
524
|
+
};
|
|
525
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
520
526
|
};
|
|
521
|
-
readonly
|
|
522
|
-
readonly type: "
|
|
523
|
-
readonly
|
|
527
|
+
readonly tokenLabels: {
|
|
528
|
+
readonly type: "array";
|
|
529
|
+
readonly items: {
|
|
530
|
+
readonly type: "string";
|
|
531
|
+
readonly minLength: 1;
|
|
532
|
+
};
|
|
524
533
|
};
|
|
525
|
-
readonly
|
|
534
|
+
readonly dripPerTick: {
|
|
526
535
|
readonly type: "integer";
|
|
527
536
|
readonly minimum: 1;
|
|
528
537
|
};
|
|
529
|
-
readonly
|
|
538
|
+
readonly tickLength: {
|
|
539
|
+
readonly $ref: "#/$defs/TickLength";
|
|
540
|
+
};
|
|
541
|
+
readonly events: {
|
|
530
542
|
readonly type: "array";
|
|
531
543
|
readonly items: {
|
|
532
|
-
readonly $ref: "#/$defs/
|
|
544
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
533
545
|
};
|
|
534
546
|
};
|
|
535
|
-
readonly approvedBy: {
|
|
536
|
-
readonly type: readonly ["string", "null"];
|
|
537
|
-
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
538
|
-
};
|
|
539
547
|
};
|
|
540
548
|
};
|
|
541
549
|
readonly PublishedEvent: {
|
|
@@ -569,6 +577,30 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
569
577
|
};
|
|
570
578
|
};
|
|
571
579
|
};
|
|
580
|
+
readonly Tier: {
|
|
581
|
+
readonly title: "Tier";
|
|
582
|
+
readonly type: "object";
|
|
583
|
+
readonly additionalProperties: false;
|
|
584
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
585
|
+
readonly properties: {
|
|
586
|
+
readonly name: {
|
|
587
|
+
readonly type: "string";
|
|
588
|
+
readonly minLength: 1;
|
|
589
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
590
|
+
};
|
|
591
|
+
readonly dripPerTick: {
|
|
592
|
+
readonly type: "integer";
|
|
593
|
+
readonly minimum: 1;
|
|
594
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
595
|
+
};
|
|
596
|
+
};
|
|
597
|
+
};
|
|
598
|
+
readonly TickLength: {
|
|
599
|
+
readonly title: "TickLength";
|
|
600
|
+
readonly type: "string";
|
|
601
|
+
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
602
|
+
readonly 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`).";
|
|
603
|
+
};
|
|
572
604
|
readonly StoredConfig: {
|
|
573
605
|
readonly title: "StoredConfig";
|
|
574
606
|
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
@@ -621,159 +653,44 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
621
653
|
};
|
|
622
654
|
};
|
|
623
655
|
};
|
|
624
|
-
readonly
|
|
625
|
-
readonly title: "
|
|
626
|
-
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
656
|
+
readonly StoredEvent: {
|
|
657
|
+
readonly title: "StoredEvent";
|
|
627
658
|
readonly type: "object";
|
|
628
659
|
readonly additionalProperties: false;
|
|
629
|
-
readonly required: readonly ["
|
|
660
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
630
661
|
readonly properties: {
|
|
631
|
-
readonly
|
|
662
|
+
readonly eventId: {
|
|
632
663
|
readonly type: "string";
|
|
633
664
|
readonly minLength: 1;
|
|
634
665
|
};
|
|
635
|
-
readonly
|
|
666
|
+
readonly startDate: {
|
|
636
667
|
readonly type: "string";
|
|
637
|
-
readonly
|
|
638
|
-
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
668
|
+
readonly format: "date";
|
|
639
669
|
};
|
|
640
|
-
readonly
|
|
670
|
+
readonly endDate: {
|
|
641
671
|
readonly type: "string";
|
|
642
|
-
readonly
|
|
643
|
-
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
644
|
-
};
|
|
645
|
-
readonly vetterLabels: {
|
|
646
|
-
readonly type: "array";
|
|
647
|
-
readonly items: {
|
|
648
|
-
readonly type: "string";
|
|
649
|
-
readonly minLength: 1;
|
|
650
|
-
};
|
|
651
|
-
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
652
|
-
};
|
|
653
|
-
readonly tokenLabels: {
|
|
654
|
-
readonly type: "array";
|
|
655
|
-
readonly items: {
|
|
656
|
-
readonly type: "string";
|
|
657
|
-
readonly minLength: 1;
|
|
658
|
-
};
|
|
672
|
+
readonly format: "date";
|
|
659
673
|
};
|
|
660
|
-
readonly
|
|
674
|
+
readonly graceDays: {
|
|
661
675
|
readonly type: "integer";
|
|
662
|
-
readonly minimum:
|
|
663
|
-
};
|
|
664
|
-
readonly tickLength: {
|
|
665
|
-
readonly $ref: "#/$defs/TickLength";
|
|
666
|
-
};
|
|
667
|
-
readonly events: {
|
|
668
|
-
readonly type: "array";
|
|
669
|
-
readonly items: {
|
|
670
|
-
readonly $ref: "#/$defs/PublishedEvent";
|
|
671
|
-
};
|
|
672
|
-
};
|
|
673
|
-
};
|
|
674
|
-
};
|
|
675
|
-
readonly EventStatus: {
|
|
676
|
-
readonly title: "EventStatus";
|
|
677
|
-
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
678
|
-
readonly type: "object";
|
|
679
|
-
readonly additionalProperties: false;
|
|
680
|
-
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
681
|
-
readonly properties: {
|
|
682
|
-
readonly eventId: {
|
|
683
|
-
readonly type: "string";
|
|
684
|
-
readonly minLength: 1;
|
|
676
|
+
readonly minimum: 0;
|
|
685
677
|
};
|
|
686
678
|
readonly groupFloor: {
|
|
687
679
|
readonly type: "integer";
|
|
688
680
|
readonly minimum: 1;
|
|
689
|
-
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
690
|
-
};
|
|
691
|
-
readonly groupSize: {
|
|
692
|
-
readonly type: "integer";
|
|
693
|
-
readonly minimum: 0;
|
|
694
|
-
readonly 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.";
|
|
695
|
-
};
|
|
696
|
-
readonly approved: {
|
|
697
|
-
readonly type: "boolean";
|
|
698
|
-
readonly description: "Whether the stored event names an approver.";
|
|
699
|
-
};
|
|
700
|
-
readonly live: {
|
|
701
|
-
readonly type: "boolean";
|
|
702
|
-
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
703
|
-
};
|
|
704
|
-
};
|
|
705
|
-
};
|
|
706
|
-
readonly Response: {
|
|
707
|
-
readonly $anchor: "response";
|
|
708
|
-
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
709
|
-
readonly type: "object";
|
|
710
|
-
readonly additionalProperties: false;
|
|
711
|
-
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
712
|
-
readonly dependentRequired: {
|
|
713
|
-
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
714
|
-
readonly published: readonly ["stored"];
|
|
715
|
-
readonly enrolledVetters: readonly ["stored"];
|
|
716
|
-
readonly eventStatus: readonly ["stored"];
|
|
717
|
-
};
|
|
718
|
-
readonly properties: {
|
|
719
|
-
readonly criterionId: {
|
|
720
|
-
readonly type: "string";
|
|
721
|
-
readonly minLength: 1;
|
|
722
|
-
readonly description: "The criterion read.";
|
|
723
|
-
};
|
|
724
|
-
readonly enabled: {
|
|
725
|
-
readonly type: "boolean";
|
|
726
|
-
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
727
|
-
};
|
|
728
|
-
readonly stored: {
|
|
729
|
-
readonly $ref: "#/$defs/StoredConfig";
|
|
730
|
-
};
|
|
731
|
-
readonly published: {
|
|
732
|
-
readonly $ref: "#/$defs/PublishedConfig";
|
|
733
|
-
};
|
|
734
|
-
readonly enrolledVetters: {
|
|
735
|
-
readonly type: "object";
|
|
736
|
-
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
737
|
-
readonly propertyNames: {
|
|
738
|
-
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
739
|
-
};
|
|
740
|
-
readonly additionalProperties: {
|
|
741
|
-
readonly type: "integer";
|
|
742
|
-
readonly minimum: 0;
|
|
743
|
-
};
|
|
744
681
|
};
|
|
745
|
-
readonly
|
|
682
|
+
readonly tiers: {
|
|
746
683
|
readonly type: "array";
|
|
747
684
|
readonly items: {
|
|
748
|
-
readonly $ref: "#/$defs/
|
|
685
|
+
readonly $ref: "#/$defs/Tier";
|
|
749
686
|
};
|
|
750
|
-
readonly description: "One entry per stored event, in stored order.";
|
|
751
687
|
};
|
|
752
|
-
readonly
|
|
688
|
+
readonly approvedBy: {
|
|
753
689
|
readonly type: readonly ["string", "null"];
|
|
754
|
-
readonly description: "
|
|
755
|
-
};
|
|
756
|
-
readonly ext: {
|
|
757
|
-
readonly $ref: "#/$defs/Ext";
|
|
690
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
758
691
|
};
|
|
759
692
|
};
|
|
760
693
|
};
|
|
761
|
-
readonly TickLength: {
|
|
762
|
-
readonly title: "TickLength";
|
|
763
|
-
readonly type: "string";
|
|
764
|
-
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
765
|
-
readonly 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`).";
|
|
766
|
-
};
|
|
767
|
-
readonly Ext: {
|
|
768
|
-
readonly title: "Ext";
|
|
769
|
-
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.";
|
|
770
|
-
readonly type: "object";
|
|
771
|
-
readonly minProperties: 1;
|
|
772
|
-
readonly additionalProperties: true;
|
|
773
|
-
readonly propertyNames: {
|
|
774
|
-
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
775
|
-
};
|
|
776
|
-
};
|
|
777
694
|
};
|
|
778
695
|
};
|
|
779
696
|
/**
|
|
@@ -807,60 +724,151 @@ export declare const SPEC: {
|
|
|
807
724
|
};
|
|
808
725
|
};
|
|
809
726
|
readonly $defs: {
|
|
810
|
-
readonly
|
|
811
|
-
readonly title: "
|
|
727
|
+
readonly EventStatus: {
|
|
728
|
+
readonly title: "EventStatus";
|
|
729
|
+
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
812
730
|
readonly type: "object";
|
|
813
731
|
readonly additionalProperties: false;
|
|
814
|
-
readonly required: readonly ["
|
|
732
|
+
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
815
733
|
readonly properties: {
|
|
816
|
-
readonly
|
|
734
|
+
readonly eventId: {
|
|
817
735
|
readonly type: "string";
|
|
818
736
|
readonly minLength: 1;
|
|
819
|
-
readonly description: "How the menu names it: desk, busy-desk.";
|
|
820
737
|
};
|
|
821
|
-
readonly
|
|
738
|
+
readonly groupFloor: {
|
|
822
739
|
readonly type: "integer";
|
|
823
740
|
readonly minimum: 1;
|
|
824
|
-
readonly description: "
|
|
741
|
+
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
742
|
+
};
|
|
743
|
+
readonly groupSize: {
|
|
744
|
+
readonly type: "integer";
|
|
745
|
+
readonly minimum: 0;
|
|
746
|
+
readonly 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.";
|
|
747
|
+
};
|
|
748
|
+
readonly approved: {
|
|
749
|
+
readonly type: "boolean";
|
|
750
|
+
readonly description: "Whether the stored event names an approver.";
|
|
751
|
+
};
|
|
752
|
+
readonly live: {
|
|
753
|
+
readonly type: "boolean";
|
|
754
|
+
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
825
755
|
};
|
|
826
756
|
};
|
|
827
757
|
};
|
|
828
|
-
readonly
|
|
829
|
-
readonly
|
|
758
|
+
readonly Response: {
|
|
759
|
+
readonly $anchor: "response";
|
|
760
|
+
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
830
761
|
readonly type: "object";
|
|
831
762
|
readonly additionalProperties: false;
|
|
832
|
-
readonly required: readonly ["
|
|
763
|
+
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
764
|
+
readonly dependentRequired: {
|
|
765
|
+
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
766
|
+
readonly published: readonly ["stored"];
|
|
767
|
+
readonly enrolledVetters: readonly ["stored"];
|
|
768
|
+
readonly eventStatus: readonly ["stored"];
|
|
769
|
+
};
|
|
833
770
|
readonly properties: {
|
|
834
|
-
readonly
|
|
771
|
+
readonly criterionId: {
|
|
835
772
|
readonly type: "string";
|
|
836
773
|
readonly minLength: 1;
|
|
774
|
+
readonly description: "The criterion read.";
|
|
837
775
|
};
|
|
838
|
-
readonly
|
|
776
|
+
readonly enabled: {
|
|
777
|
+
readonly type: "boolean";
|
|
778
|
+
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
779
|
+
};
|
|
780
|
+
readonly stored: {
|
|
781
|
+
readonly $ref: "#/$defs/StoredConfig";
|
|
782
|
+
};
|
|
783
|
+
readonly published: {
|
|
784
|
+
readonly $ref: "#/$defs/PublishedConfig";
|
|
785
|
+
};
|
|
786
|
+
readonly enrolledVetters: {
|
|
787
|
+
readonly type: "object";
|
|
788
|
+
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
789
|
+
readonly propertyNames: {
|
|
790
|
+
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
791
|
+
};
|
|
792
|
+
readonly additionalProperties: {
|
|
793
|
+
readonly type: "integer";
|
|
794
|
+
readonly minimum: 0;
|
|
795
|
+
};
|
|
796
|
+
};
|
|
797
|
+
readonly eventStatus: {
|
|
798
|
+
readonly type: "array";
|
|
799
|
+
readonly items: {
|
|
800
|
+
readonly $ref: "#/$defs/EventStatus";
|
|
801
|
+
};
|
|
802
|
+
readonly description: "One entry per stored event, in stored order.";
|
|
803
|
+
};
|
|
804
|
+
readonly requirementsDigest: {
|
|
805
|
+
readonly type: readonly ["string", "null"];
|
|
806
|
+
readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
|
|
807
|
+
};
|
|
808
|
+
readonly ext: {
|
|
809
|
+
readonly $ref: "#/$defs/Ext";
|
|
810
|
+
};
|
|
811
|
+
};
|
|
812
|
+
};
|
|
813
|
+
readonly Ext: {
|
|
814
|
+
readonly title: "Ext";
|
|
815
|
+
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.";
|
|
816
|
+
readonly type: "object";
|
|
817
|
+
readonly minProperties: 1;
|
|
818
|
+
readonly additionalProperties: true;
|
|
819
|
+
readonly propertyNames: {
|
|
820
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
821
|
+
};
|
|
822
|
+
};
|
|
823
|
+
readonly PublishedConfig: {
|
|
824
|
+
readonly title: "PublishedConfig";
|
|
825
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
826
|
+
readonly type: "object";
|
|
827
|
+
readonly additionalProperties: false;
|
|
828
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
|
|
829
|
+
readonly properties: {
|
|
830
|
+
readonly suite: {
|
|
839
831
|
readonly type: "string";
|
|
840
|
-
readonly
|
|
832
|
+
readonly minLength: 1;
|
|
841
833
|
};
|
|
842
|
-
readonly
|
|
834
|
+
readonly helperKey: {
|
|
843
835
|
readonly type: "string";
|
|
844
|
-
readonly
|
|
836
|
+
readonly minLength: 1;
|
|
837
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
845
838
|
};
|
|
846
|
-
readonly
|
|
847
|
-
readonly type: "
|
|
848
|
-
readonly
|
|
839
|
+
readonly tokenKey: {
|
|
840
|
+
readonly type: "string";
|
|
841
|
+
readonly minLength: 1;
|
|
842
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
849
843
|
};
|
|
850
|
-
readonly
|
|
844
|
+
readonly vetterLabels: {
|
|
845
|
+
readonly type: "array";
|
|
846
|
+
readonly items: {
|
|
847
|
+
readonly type: "string";
|
|
848
|
+
readonly minLength: 1;
|
|
849
|
+
};
|
|
850
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
851
|
+
};
|
|
852
|
+
readonly tokenLabels: {
|
|
853
|
+
readonly type: "array";
|
|
854
|
+
readonly items: {
|
|
855
|
+
readonly type: "string";
|
|
856
|
+
readonly minLength: 1;
|
|
857
|
+
};
|
|
858
|
+
};
|
|
859
|
+
readonly dripPerTick: {
|
|
851
860
|
readonly type: "integer";
|
|
852
861
|
readonly minimum: 1;
|
|
853
862
|
};
|
|
854
|
-
readonly
|
|
863
|
+
readonly tickLength: {
|
|
864
|
+
readonly $ref: "#/$defs/TickLength";
|
|
865
|
+
};
|
|
866
|
+
readonly events: {
|
|
855
867
|
readonly type: "array";
|
|
856
868
|
readonly items: {
|
|
857
|
-
readonly $ref: "#/$defs/
|
|
869
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
858
870
|
};
|
|
859
871
|
};
|
|
860
|
-
readonly approvedBy: {
|
|
861
|
-
readonly type: readonly ["string", "null"];
|
|
862
|
-
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
863
|
-
};
|
|
864
872
|
};
|
|
865
873
|
};
|
|
866
874
|
readonly PublishedEvent: {
|
|
@@ -894,6 +902,30 @@ export declare const SPEC: {
|
|
|
894
902
|
};
|
|
895
903
|
};
|
|
896
904
|
};
|
|
905
|
+
readonly Tier: {
|
|
906
|
+
readonly title: "Tier";
|
|
907
|
+
readonly type: "object";
|
|
908
|
+
readonly additionalProperties: false;
|
|
909
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
910
|
+
readonly properties: {
|
|
911
|
+
readonly name: {
|
|
912
|
+
readonly type: "string";
|
|
913
|
+
readonly minLength: 1;
|
|
914
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
915
|
+
};
|
|
916
|
+
readonly dripPerTick: {
|
|
917
|
+
readonly type: "integer";
|
|
918
|
+
readonly minimum: 1;
|
|
919
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
920
|
+
};
|
|
921
|
+
};
|
|
922
|
+
};
|
|
923
|
+
readonly TickLength: {
|
|
924
|
+
readonly title: "TickLength";
|
|
925
|
+
readonly type: "string";
|
|
926
|
+
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
927
|
+
readonly 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`).";
|
|
928
|
+
};
|
|
897
929
|
readonly StoredConfig: {
|
|
898
930
|
readonly title: "StoredConfig";
|
|
899
931
|
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
@@ -946,57 +978,62 @@ export declare const SPEC: {
|
|
|
946
978
|
};
|
|
947
979
|
};
|
|
948
980
|
};
|
|
949
|
-
readonly
|
|
950
|
-
readonly title: "
|
|
951
|
-
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
981
|
+
readonly StoredEvent: {
|
|
982
|
+
readonly title: "StoredEvent";
|
|
952
983
|
readonly type: "object";
|
|
953
984
|
readonly additionalProperties: false;
|
|
954
|
-
readonly required: readonly ["
|
|
985
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
955
986
|
readonly properties: {
|
|
956
|
-
readonly
|
|
987
|
+
readonly eventId: {
|
|
957
988
|
readonly type: "string";
|
|
958
989
|
readonly minLength: 1;
|
|
959
990
|
};
|
|
960
|
-
readonly
|
|
991
|
+
readonly startDate: {
|
|
961
992
|
readonly type: "string";
|
|
962
|
-
readonly
|
|
963
|
-
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
993
|
+
readonly format: "date";
|
|
964
994
|
};
|
|
965
|
-
readonly
|
|
995
|
+
readonly endDate: {
|
|
966
996
|
readonly type: "string";
|
|
967
|
-
readonly
|
|
968
|
-
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
969
|
-
};
|
|
970
|
-
readonly vetterLabels: {
|
|
971
|
-
readonly type: "array";
|
|
972
|
-
readonly items: {
|
|
973
|
-
readonly type: "string";
|
|
974
|
-
readonly minLength: 1;
|
|
975
|
-
};
|
|
976
|
-
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
997
|
+
readonly format: "date";
|
|
977
998
|
};
|
|
978
|
-
readonly
|
|
979
|
-
readonly type: "
|
|
980
|
-
readonly
|
|
981
|
-
readonly type: "string";
|
|
982
|
-
readonly minLength: 1;
|
|
983
|
-
};
|
|
999
|
+
readonly graceDays: {
|
|
1000
|
+
readonly type: "integer";
|
|
1001
|
+
readonly minimum: 0;
|
|
984
1002
|
};
|
|
985
|
-
readonly
|
|
1003
|
+
readonly groupFloor: {
|
|
986
1004
|
readonly type: "integer";
|
|
987
1005
|
readonly minimum: 1;
|
|
988
1006
|
};
|
|
989
|
-
readonly
|
|
990
|
-
readonly $ref: "#/$defs/TickLength";
|
|
991
|
-
};
|
|
992
|
-
readonly events: {
|
|
1007
|
+
readonly tiers: {
|
|
993
1008
|
readonly type: "array";
|
|
994
1009
|
readonly items: {
|
|
995
|
-
readonly $ref: "#/$defs/
|
|
1010
|
+
readonly $ref: "#/$defs/Tier";
|
|
996
1011
|
};
|
|
997
1012
|
};
|
|
1013
|
+
readonly approvedBy: {
|
|
1014
|
+
readonly type: readonly ["string", "null"];
|
|
1015
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
1016
|
+
};
|
|
998
1017
|
};
|
|
999
1018
|
};
|
|
1019
|
+
};
|
|
1020
|
+
};
|
|
1021
|
+
};
|
|
1022
|
+
/**
|
|
1023
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
1024
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
1025
|
+
* parties (§7.3 item 5).
|
|
1026
|
+
*/
|
|
1027
|
+
export declare const RESPONSE_SPEC: {
|
|
1028
|
+
readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1#response";
|
|
1029
|
+
readonly isBearer: false;
|
|
1030
|
+
readonly isProofRequired: true;
|
|
1031
|
+
readonly isRecipientRequired: true;
|
|
1032
|
+
readonly isIssuedAtRequired: false;
|
|
1033
|
+
readonly payloadSchema: {
|
|
1034
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
1035
|
+
readonly $ref: "#/$defs/Response";
|
|
1036
|
+
readonly $defs: {
|
|
1000
1037
|
readonly EventStatus: {
|
|
1001
1038
|
readonly title: "EventStatus";
|
|
1002
1039
|
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
@@ -1083,12 +1120,6 @@ export declare const SPEC: {
|
|
|
1083
1120
|
};
|
|
1084
1121
|
};
|
|
1085
1122
|
};
|
|
1086
|
-
readonly TickLength: {
|
|
1087
|
-
readonly title: "TickLength";
|
|
1088
|
-
readonly type: "string";
|
|
1089
|
-
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
1090
|
-
readonly 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`).";
|
|
1091
|
-
};
|
|
1092
1123
|
readonly Ext: {
|
|
1093
1124
|
readonly title: "Ext";
|
|
1094
1125
|
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.";
|
|
@@ -1099,78 +1130,55 @@ export declare const SPEC: {
|
|
|
1099
1130
|
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1100
1131
|
};
|
|
1101
1132
|
};
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
/**
|
|
1106
|
-
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
1107
|
-
* tracks the *issuer* party's requirement because a response swaps the
|
|
1108
|
-
* parties (§7.3 item 5).
|
|
1109
|
-
*/
|
|
1110
|
-
export declare const RESPONSE_SPEC: {
|
|
1111
|
-
readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1#response";
|
|
1112
|
-
readonly isBearer: false;
|
|
1113
|
-
readonly isProofRequired: true;
|
|
1114
|
-
readonly isRecipientRequired: true;
|
|
1115
|
-
readonly isIssuedAtRequired: false;
|
|
1116
|
-
readonly payloadSchema: {
|
|
1117
|
-
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
1118
|
-
readonly $ref: "#/$defs/Response";
|
|
1119
|
-
readonly $defs: {
|
|
1120
|
-
readonly Tier: {
|
|
1121
|
-
readonly title: "Tier";
|
|
1133
|
+
readonly PublishedConfig: {
|
|
1134
|
+
readonly title: "PublishedConfig";
|
|
1135
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
1122
1136
|
readonly type: "object";
|
|
1123
1137
|
readonly additionalProperties: false;
|
|
1124
|
-
readonly required: readonly ["
|
|
1138
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
|
|
1125
1139
|
readonly properties: {
|
|
1126
|
-
readonly
|
|
1140
|
+
readonly suite: {
|
|
1127
1141
|
readonly type: "string";
|
|
1128
1142
|
readonly minLength: 1;
|
|
1129
|
-
readonly description: "How the menu names it: desk, busy-desk.";
|
|
1130
1143
|
};
|
|
1131
|
-
readonly
|
|
1132
|
-
readonly type: "integer";
|
|
1133
|
-
readonly minimum: 1;
|
|
1134
|
-
readonly description: "How many tokens a tick under this tier yields.";
|
|
1135
|
-
};
|
|
1136
|
-
};
|
|
1137
|
-
};
|
|
1138
|
-
readonly StoredEvent: {
|
|
1139
|
-
readonly title: "StoredEvent";
|
|
1140
|
-
readonly type: "object";
|
|
1141
|
-
readonly additionalProperties: false;
|
|
1142
|
-
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
1143
|
-
readonly properties: {
|
|
1144
|
-
readonly eventId: {
|
|
1144
|
+
readonly helperKey: {
|
|
1145
1145
|
readonly type: "string";
|
|
1146
1146
|
readonly minLength: 1;
|
|
1147
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
1147
1148
|
};
|
|
1148
|
-
readonly
|
|
1149
|
+
readonly tokenKey: {
|
|
1149
1150
|
readonly type: "string";
|
|
1150
|
-
readonly
|
|
1151
|
+
readonly minLength: 1;
|
|
1152
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
1151
1153
|
};
|
|
1152
|
-
readonly
|
|
1153
|
-
readonly type: "
|
|
1154
|
-
readonly
|
|
1154
|
+
readonly vetterLabels: {
|
|
1155
|
+
readonly type: "array";
|
|
1156
|
+
readonly items: {
|
|
1157
|
+
readonly type: "string";
|
|
1158
|
+
readonly minLength: 1;
|
|
1159
|
+
};
|
|
1160
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
1155
1161
|
};
|
|
1156
|
-
readonly
|
|
1157
|
-
readonly type: "
|
|
1158
|
-
readonly
|
|
1162
|
+
readonly tokenLabels: {
|
|
1163
|
+
readonly type: "array";
|
|
1164
|
+
readonly items: {
|
|
1165
|
+
readonly type: "string";
|
|
1166
|
+
readonly minLength: 1;
|
|
1167
|
+
};
|
|
1159
1168
|
};
|
|
1160
|
-
readonly
|
|
1169
|
+
readonly dripPerTick: {
|
|
1161
1170
|
readonly type: "integer";
|
|
1162
1171
|
readonly minimum: 1;
|
|
1163
1172
|
};
|
|
1164
|
-
readonly
|
|
1173
|
+
readonly tickLength: {
|
|
1174
|
+
readonly $ref: "#/$defs/TickLength";
|
|
1175
|
+
};
|
|
1176
|
+
readonly events: {
|
|
1165
1177
|
readonly type: "array";
|
|
1166
1178
|
readonly items: {
|
|
1167
|
-
readonly $ref: "#/$defs/
|
|
1179
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
1168
1180
|
};
|
|
1169
1181
|
};
|
|
1170
|
-
readonly approvedBy: {
|
|
1171
|
-
readonly type: readonly ["string", "null"];
|
|
1172
|
-
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
1173
|
-
};
|
|
1174
1182
|
};
|
|
1175
1183
|
};
|
|
1176
1184
|
readonly PublishedEvent: {
|
|
@@ -1204,6 +1212,30 @@ export declare const RESPONSE_SPEC: {
|
|
|
1204
1212
|
};
|
|
1205
1213
|
};
|
|
1206
1214
|
};
|
|
1215
|
+
readonly Tier: {
|
|
1216
|
+
readonly title: "Tier";
|
|
1217
|
+
readonly type: "object";
|
|
1218
|
+
readonly additionalProperties: false;
|
|
1219
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
1220
|
+
readonly properties: {
|
|
1221
|
+
readonly name: {
|
|
1222
|
+
readonly type: "string";
|
|
1223
|
+
readonly minLength: 1;
|
|
1224
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
1225
|
+
};
|
|
1226
|
+
readonly dripPerTick: {
|
|
1227
|
+
readonly type: "integer";
|
|
1228
|
+
readonly minimum: 1;
|
|
1229
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
1230
|
+
};
|
|
1231
|
+
};
|
|
1232
|
+
};
|
|
1233
|
+
readonly TickLength: {
|
|
1234
|
+
readonly title: "TickLength";
|
|
1235
|
+
readonly type: "string";
|
|
1236
|
+
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
1237
|
+
readonly 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`).";
|
|
1238
|
+
};
|
|
1207
1239
|
readonly StoredConfig: {
|
|
1208
1240
|
readonly title: "StoredConfig";
|
|
1209
1241
|
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
@@ -1256,159 +1288,44 @@ export declare const RESPONSE_SPEC: {
|
|
|
1256
1288
|
};
|
|
1257
1289
|
};
|
|
1258
1290
|
};
|
|
1259
|
-
readonly
|
|
1260
|
-
readonly title: "
|
|
1261
|
-
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
1291
|
+
readonly StoredEvent: {
|
|
1292
|
+
readonly title: "StoredEvent";
|
|
1262
1293
|
readonly type: "object";
|
|
1263
1294
|
readonly additionalProperties: false;
|
|
1264
|
-
readonly required: readonly ["
|
|
1295
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
1265
1296
|
readonly properties: {
|
|
1266
|
-
readonly
|
|
1297
|
+
readonly eventId: {
|
|
1267
1298
|
readonly type: "string";
|
|
1268
1299
|
readonly minLength: 1;
|
|
1269
1300
|
};
|
|
1270
|
-
readonly
|
|
1301
|
+
readonly startDate: {
|
|
1271
1302
|
readonly type: "string";
|
|
1272
|
-
readonly
|
|
1273
|
-
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
1303
|
+
readonly format: "date";
|
|
1274
1304
|
};
|
|
1275
|
-
readonly
|
|
1305
|
+
readonly endDate: {
|
|
1276
1306
|
readonly type: "string";
|
|
1277
|
-
readonly
|
|
1278
|
-
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
1279
|
-
};
|
|
1280
|
-
readonly vetterLabels: {
|
|
1281
|
-
readonly type: "array";
|
|
1282
|
-
readonly items: {
|
|
1283
|
-
readonly type: "string";
|
|
1284
|
-
readonly minLength: 1;
|
|
1285
|
-
};
|
|
1286
|
-
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
1287
|
-
};
|
|
1288
|
-
readonly tokenLabels: {
|
|
1289
|
-
readonly type: "array";
|
|
1290
|
-
readonly items: {
|
|
1291
|
-
readonly type: "string";
|
|
1292
|
-
readonly minLength: 1;
|
|
1293
|
-
};
|
|
1307
|
+
readonly format: "date";
|
|
1294
1308
|
};
|
|
1295
|
-
readonly
|
|
1309
|
+
readonly graceDays: {
|
|
1296
1310
|
readonly type: "integer";
|
|
1297
|
-
readonly minimum:
|
|
1298
|
-
};
|
|
1299
|
-
readonly tickLength: {
|
|
1300
|
-
readonly $ref: "#/$defs/TickLength";
|
|
1301
|
-
};
|
|
1302
|
-
readonly events: {
|
|
1303
|
-
readonly type: "array";
|
|
1304
|
-
readonly items: {
|
|
1305
|
-
readonly $ref: "#/$defs/PublishedEvent";
|
|
1306
|
-
};
|
|
1307
|
-
};
|
|
1308
|
-
};
|
|
1309
|
-
};
|
|
1310
|
-
readonly EventStatus: {
|
|
1311
|
-
readonly title: "EventStatus";
|
|
1312
|
-
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
1313
|
-
readonly type: "object";
|
|
1314
|
-
readonly additionalProperties: false;
|
|
1315
|
-
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
1316
|
-
readonly properties: {
|
|
1317
|
-
readonly eventId: {
|
|
1318
|
-
readonly type: "string";
|
|
1319
|
-
readonly minLength: 1;
|
|
1311
|
+
readonly minimum: 0;
|
|
1320
1312
|
};
|
|
1321
1313
|
readonly groupFloor: {
|
|
1322
1314
|
readonly type: "integer";
|
|
1323
1315
|
readonly minimum: 1;
|
|
1324
|
-
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
1325
|
-
};
|
|
1326
|
-
readonly groupSize: {
|
|
1327
|
-
readonly type: "integer";
|
|
1328
|
-
readonly minimum: 0;
|
|
1329
|
-
readonly 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.";
|
|
1330
|
-
};
|
|
1331
|
-
readonly approved: {
|
|
1332
|
-
readonly type: "boolean";
|
|
1333
|
-
readonly description: "Whether the stored event names an approver.";
|
|
1334
|
-
};
|
|
1335
|
-
readonly live: {
|
|
1336
|
-
readonly type: "boolean";
|
|
1337
|
-
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
1338
1316
|
};
|
|
1339
|
-
|
|
1340
|
-
};
|
|
1341
|
-
readonly Response: {
|
|
1342
|
-
readonly $anchor: "response";
|
|
1343
|
-
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
1344
|
-
readonly type: "object";
|
|
1345
|
-
readonly additionalProperties: false;
|
|
1346
|
-
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
1347
|
-
readonly dependentRequired: {
|
|
1348
|
-
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
1349
|
-
readonly published: readonly ["stored"];
|
|
1350
|
-
readonly enrolledVetters: readonly ["stored"];
|
|
1351
|
-
readonly eventStatus: readonly ["stored"];
|
|
1352
|
-
};
|
|
1353
|
-
readonly properties: {
|
|
1354
|
-
readonly criterionId: {
|
|
1355
|
-
readonly type: "string";
|
|
1356
|
-
readonly minLength: 1;
|
|
1357
|
-
readonly description: "The criterion read.";
|
|
1358
|
-
};
|
|
1359
|
-
readonly enabled: {
|
|
1360
|
-
readonly type: "boolean";
|
|
1361
|
-
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
1362
|
-
};
|
|
1363
|
-
readonly stored: {
|
|
1364
|
-
readonly $ref: "#/$defs/StoredConfig";
|
|
1365
|
-
};
|
|
1366
|
-
readonly published: {
|
|
1367
|
-
readonly $ref: "#/$defs/PublishedConfig";
|
|
1368
|
-
};
|
|
1369
|
-
readonly enrolledVetters: {
|
|
1370
|
-
readonly type: "object";
|
|
1371
|
-
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
1372
|
-
readonly propertyNames: {
|
|
1373
|
-
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
1374
|
-
};
|
|
1375
|
-
readonly additionalProperties: {
|
|
1376
|
-
readonly type: "integer";
|
|
1377
|
-
readonly minimum: 0;
|
|
1378
|
-
};
|
|
1379
|
-
};
|
|
1380
|
-
readonly eventStatus: {
|
|
1317
|
+
readonly tiers: {
|
|
1381
1318
|
readonly type: "array";
|
|
1382
1319
|
readonly items: {
|
|
1383
|
-
readonly $ref: "#/$defs/
|
|
1320
|
+
readonly $ref: "#/$defs/Tier";
|
|
1384
1321
|
};
|
|
1385
|
-
readonly description: "One entry per stored event, in stored order.";
|
|
1386
1322
|
};
|
|
1387
|
-
readonly
|
|
1323
|
+
readonly approvedBy: {
|
|
1388
1324
|
readonly type: readonly ["string", "null"];
|
|
1389
|
-
readonly description: "
|
|
1390
|
-
};
|
|
1391
|
-
readonly ext: {
|
|
1392
|
-
readonly $ref: "#/$defs/Ext";
|
|
1325
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
1393
1326
|
};
|
|
1394
1327
|
};
|
|
1395
1328
|
};
|
|
1396
|
-
readonly TickLength: {
|
|
1397
|
-
readonly title: "TickLength";
|
|
1398
|
-
readonly type: "string";
|
|
1399
|
-
readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
|
|
1400
|
-
readonly 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`).";
|
|
1401
|
-
};
|
|
1402
|
-
readonly Ext: {
|
|
1403
|
-
readonly title: "Ext";
|
|
1404
|
-
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.";
|
|
1405
|
-
readonly type: "object";
|
|
1406
|
-
readonly minProperties: 1;
|
|
1407
|
-
readonly additionalProperties: true;
|
|
1408
|
-
readonly propertyNames: {
|
|
1409
|
-
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1410
|
-
};
|
|
1411
|
-
};
|
|
1412
1329
|
};
|
|
1413
1330
|
};
|
|
1414
1331
|
};
|