@openvtc/trust-tasks 0.25.1 → 0.26.0
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 +46 -0
- package/dist/_shared/components.d.ts +314 -3
- 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/_shared/0.1/room-storage.d.ts +1 -1
- package/dist/vtc/_shared/0.1/room-storage.d.ts.map +1 -1
- package/dist/vtc/storage/configs/create/0.1/payload.d.ts +50 -10
- package/dist/vtc/storage/configs/create/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/create/0.1/payload.js +24 -2
- package/dist/vtc/storage/configs/create/0.1/payload.js.map +1 -1
- package/dist/vtc/storage/configs/get/0.1/payload.d.ts +66 -10
- package/dist/vtc/storage/configs/get/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/get/0.1/payload.js +32 -2
- package/dist/vtc/storage/configs/get/0.1/payload.js.map +1 -1
- package/dist/vtc/storage/configs/list/0.1/payload.d.ts +66 -10
- package/dist/vtc/storage/configs/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/list/0.1/payload.js +32 -2
- package/dist/vtc/storage/configs/list/0.1/payload.js.map +1 -1
- package/dist/vtc/storage/configs/update/0.1/payload.d.ts +50 -10
- package/dist/vtc/storage/configs/update/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/update/0.1/payload.js +24 -2
- package/dist/vtc/storage/configs/update/0.1/payload.js.map +1 -1
- package/dist/vtc/storage/credentials/set/0.1/payload.d.ts +46 -2
- package/dist/vtc/storage/credentials/set/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/credentials/set/0.1/payload.js +22 -0
- package/dist/vtc/storage/credentials/set/0.1/payload.js.map +1 -1
- 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 +318 -3
- 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/_shared/0.1/room-storage.ts +1 -1
- package/src/vtc/storage/configs/create/0.1/payload.ts +26 -4
- package/src/vtc/storage/configs/get/0.1/payload.ts +34 -4
- package/src/vtc/storage/configs/list/0.1/payload.ts +34 -4
- package/src/vtc/storage/configs/update/0.1/payload.ts +26 -4
- package/src/vtc/storage/credentials/set/0.1/payload.ts +24 -2
- package/src/vtc/vetting/hidden/publish/0.1/payload.ts +247 -331
- package/src/vtc/vetting/hidden/show/0.1/payload.ts +295 -379
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/vta/pcs/vetter/show/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Ext, Multibase, TokenDraw, VetterSummary } from "../../../../../_shared/components.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A vetter's client reads back its VTA's vetter engine for a community: identifier, enrolled labels, token counts and draws in flight — never its key, credentials or tokens.
|
|
11
|
+
*/
|
|
12
|
+
export interface VTAPCSVetterShowPayload {
|
|
13
|
+
/**
|
|
14
|
+
* The context the engine belongs to. Its key is derived from this context's base.
|
|
15
|
+
*/
|
|
16
|
+
contextId: string;
|
|
17
|
+
/**
|
|
18
|
+
* The community's DID: the helper whose parameters the engine runs under.
|
|
19
|
+
*/
|
|
20
|
+
community: string;
|
|
21
|
+
ext?: Ext;
|
|
22
|
+
}
|
|
23
|
+
export interface VTAPCSVetterShowResponsePayload {
|
|
24
|
+
vetter: VetterSummary;
|
|
25
|
+
ext?: Ext;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
29
|
+
export type { Ext, Multibase, TokenDraw, VetterSummary };
|
|
30
|
+
|
|
31
|
+
/** Trust Task type URI. */
|
|
32
|
+
export const TYPE_URI = "https://trusttasks.org/spec/vta/pcs/vetter/show/0.1" as const;
|
|
33
|
+
|
|
34
|
+
/** Stable alias for this specification's request payload shape. */
|
|
35
|
+
export type Payload = VTAPCSVetterShowPayload;
|
|
36
|
+
|
|
37
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
38
|
+
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vta/pcs/vetter/show/0.1#response" as const;
|
|
39
|
+
|
|
40
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
41
|
+
export type Response = VTAPCSVetterShowResponsePayload;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* This specification's payload schema, as a value.
|
|
45
|
+
*
|
|
46
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
47
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
48
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
49
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
50
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
51
|
+
*/
|
|
52
|
+
export const PAYLOAD_SCHEMA = {
|
|
53
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
54
|
+
"$id": "https://trusttasks.org/spec/vta/pcs/vetter/show/0.1",
|
|
55
|
+
"title": "VTA PCS — Vetter — Show — payload",
|
|
56
|
+
"description": "A vetter's client reads back its VTA's vetter engine for a community: identifier, enrolled labels, token counts and draws in flight — never its key, credentials or tokens.",
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": false,
|
|
59
|
+
"required": [
|
|
60
|
+
"contextId",
|
|
61
|
+
"community"
|
|
62
|
+
],
|
|
63
|
+
"properties": {
|
|
64
|
+
"contextId": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"minLength": 1,
|
|
67
|
+
"description": "The context the engine belongs to. Its key is derived from this context's base."
|
|
68
|
+
},
|
|
69
|
+
"community": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"minLength": 1,
|
|
72
|
+
"description": "The community's DID: the helper whose parameters the engine runs under."
|
|
73
|
+
},
|
|
74
|
+
"ext": {
|
|
75
|
+
"$ref": "#/$defs/Ext"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"$defs": {
|
|
79
|
+
"Response": {
|
|
80
|
+
"$anchor": "response",
|
|
81
|
+
"title": "VTA PCS — Vetter — Show — response payload",
|
|
82
|
+
"type": "object",
|
|
83
|
+
"additionalProperties": false,
|
|
84
|
+
"required": [
|
|
85
|
+
"vetter"
|
|
86
|
+
],
|
|
87
|
+
"properties": {
|
|
88
|
+
"vetter": {
|
|
89
|
+
"$ref": "#/$defs/VetterSummary"
|
|
90
|
+
},
|
|
91
|
+
"ext": {
|
|
92
|
+
"$ref": "#/$defs/Ext"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"Ext": {
|
|
97
|
+
"title": "Ext",
|
|
98
|
+
"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.",
|
|
99
|
+
"type": "object",
|
|
100
|
+
"minProperties": 1,
|
|
101
|
+
"additionalProperties": true,
|
|
102
|
+
"propertyNames": {
|
|
103
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"VetterSummary": {
|
|
107
|
+
"title": "VetterSummary",
|
|
108
|
+
"description": "A vetter engine as the VTA holds it, without its key, its credentials or its tokens.",
|
|
109
|
+
"type": "object",
|
|
110
|
+
"additionalProperties": false,
|
|
111
|
+
"required": [
|
|
112
|
+
"contextId",
|
|
113
|
+
"community",
|
|
114
|
+
"memberDid",
|
|
115
|
+
"suite",
|
|
116
|
+
"id",
|
|
117
|
+
"enrolledLabels",
|
|
118
|
+
"pendingLabels",
|
|
119
|
+
"tokensFree",
|
|
120
|
+
"tokensHeld",
|
|
121
|
+
"drawsInFlight",
|
|
122
|
+
"attested"
|
|
123
|
+
],
|
|
124
|
+
"properties": {
|
|
125
|
+
"contextId": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"minLength": 1
|
|
128
|
+
},
|
|
129
|
+
"community": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"minLength": 1
|
|
132
|
+
},
|
|
133
|
+
"memberDid": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"minLength": 1,
|
|
136
|
+
"description": "The member DID the engine draws tokens as. Bound into every token request."
|
|
137
|
+
},
|
|
138
|
+
"suite": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"minLength": 1,
|
|
141
|
+
"maxLength": 64
|
|
142
|
+
},
|
|
143
|
+
"id": {
|
|
144
|
+
"$ref": "#/$defs/Multibase",
|
|
145
|
+
"description": "The vetter's PCS identifier for this community."
|
|
146
|
+
},
|
|
147
|
+
"enrolledLabels": {
|
|
148
|
+
"type": "array",
|
|
149
|
+
"description": "Class labels this vetter holds a credential under, newest first.",
|
|
150
|
+
"items": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"pattern": "^vetter/[0-9]{4}-[0-9]{2}$"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"pendingLabels": {
|
|
156
|
+
"type": "array",
|
|
157
|
+
"description": "Class labels requested and not yet accepted.",
|
|
158
|
+
"items": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"pattern": "^vetter/[0-9]{4}-[0-9]{2}$"
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"tokensFree": {
|
|
164
|
+
"type": "integer",
|
|
165
|
+
"minimum": 0,
|
|
166
|
+
"description": "Tokens held and not reserved."
|
|
167
|
+
},
|
|
168
|
+
"tokensHeld": {
|
|
169
|
+
"type": "integer",
|
|
170
|
+
"minimum": 0,
|
|
171
|
+
"description": "Tokens held in all."
|
|
172
|
+
},
|
|
173
|
+
"drawsInFlight": {
|
|
174
|
+
"type": "array",
|
|
175
|
+
"description": "Draws requested and not yet accepted or abandoned.",
|
|
176
|
+
"items": {
|
|
177
|
+
"$ref": "#/$defs/TokenDraw"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"attested": {
|
|
181
|
+
"type": "integer",
|
|
182
|
+
"minimum": 0,
|
|
183
|
+
"description": "Attestations made through this engine."
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"TokenDraw": {
|
|
188
|
+
"title": "TokenDraw",
|
|
189
|
+
"description": "One draw of the token drip: a label and a tick.",
|
|
190
|
+
"type": "object",
|
|
191
|
+
"additionalProperties": false,
|
|
192
|
+
"required": [
|
|
193
|
+
"label",
|
|
194
|
+
"tick"
|
|
195
|
+
],
|
|
196
|
+
"properties": {
|
|
197
|
+
"label": {
|
|
198
|
+
"type": "string",
|
|
199
|
+
"minLength": 1,
|
|
200
|
+
"maxLength": 128
|
|
201
|
+
},
|
|
202
|
+
"tick": {
|
|
203
|
+
"type": "integer",
|
|
204
|
+
"minimum": 0
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"Multibase": {
|
|
209
|
+
"title": "Multibase",
|
|
210
|
+
"description": "A binary value, multibase base58btc over the suite's canonical encoding.",
|
|
211
|
+
"type": "string",
|
|
212
|
+
"pattern": "^z[1-9A-HJ-NP-Za-km-z]+$"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
} as const;
|
|
216
|
+
|
|
217
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
218
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
219
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
220
|
+
"$ref": "#/$defs/Response",
|
|
221
|
+
"$defs": {
|
|
222
|
+
"Response": {
|
|
223
|
+
"$anchor": "response",
|
|
224
|
+
"title": "VTA PCS — Vetter — Show — response payload",
|
|
225
|
+
"type": "object",
|
|
226
|
+
"additionalProperties": false,
|
|
227
|
+
"required": [
|
|
228
|
+
"vetter"
|
|
229
|
+
],
|
|
230
|
+
"properties": {
|
|
231
|
+
"vetter": {
|
|
232
|
+
"$ref": "#/$defs/VetterSummary"
|
|
233
|
+
},
|
|
234
|
+
"ext": {
|
|
235
|
+
"$ref": "#/$defs/Ext"
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"Ext": {
|
|
240
|
+
"title": "Ext",
|
|
241
|
+
"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.",
|
|
242
|
+
"type": "object",
|
|
243
|
+
"minProperties": 1,
|
|
244
|
+
"additionalProperties": true,
|
|
245
|
+
"propertyNames": {
|
|
246
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
"VetterSummary": {
|
|
250
|
+
"title": "VetterSummary",
|
|
251
|
+
"description": "A vetter engine as the VTA holds it, without its key, its credentials or its tokens.",
|
|
252
|
+
"type": "object",
|
|
253
|
+
"additionalProperties": false,
|
|
254
|
+
"required": [
|
|
255
|
+
"contextId",
|
|
256
|
+
"community",
|
|
257
|
+
"memberDid",
|
|
258
|
+
"suite",
|
|
259
|
+
"id",
|
|
260
|
+
"enrolledLabels",
|
|
261
|
+
"pendingLabels",
|
|
262
|
+
"tokensFree",
|
|
263
|
+
"tokensHeld",
|
|
264
|
+
"drawsInFlight",
|
|
265
|
+
"attested"
|
|
266
|
+
],
|
|
267
|
+
"properties": {
|
|
268
|
+
"contextId": {
|
|
269
|
+
"type": "string",
|
|
270
|
+
"minLength": 1
|
|
271
|
+
},
|
|
272
|
+
"community": {
|
|
273
|
+
"type": "string",
|
|
274
|
+
"minLength": 1
|
|
275
|
+
},
|
|
276
|
+
"memberDid": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"minLength": 1,
|
|
279
|
+
"description": "The member DID the engine draws tokens as. Bound into every token request."
|
|
280
|
+
},
|
|
281
|
+
"suite": {
|
|
282
|
+
"type": "string",
|
|
283
|
+
"minLength": 1,
|
|
284
|
+
"maxLength": 64
|
|
285
|
+
},
|
|
286
|
+
"id": {
|
|
287
|
+
"$ref": "#/$defs/Multibase",
|
|
288
|
+
"description": "The vetter's PCS identifier for this community."
|
|
289
|
+
},
|
|
290
|
+
"enrolledLabels": {
|
|
291
|
+
"type": "array",
|
|
292
|
+
"description": "Class labels this vetter holds a credential under, newest first.",
|
|
293
|
+
"items": {
|
|
294
|
+
"type": "string",
|
|
295
|
+
"pattern": "^vetter/[0-9]{4}-[0-9]{2}$"
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"pendingLabels": {
|
|
299
|
+
"type": "array",
|
|
300
|
+
"description": "Class labels requested and not yet accepted.",
|
|
301
|
+
"items": {
|
|
302
|
+
"type": "string",
|
|
303
|
+
"pattern": "^vetter/[0-9]{4}-[0-9]{2}$"
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
"tokensFree": {
|
|
307
|
+
"type": "integer",
|
|
308
|
+
"minimum": 0,
|
|
309
|
+
"description": "Tokens held and not reserved."
|
|
310
|
+
},
|
|
311
|
+
"tokensHeld": {
|
|
312
|
+
"type": "integer",
|
|
313
|
+
"minimum": 0,
|
|
314
|
+
"description": "Tokens held in all."
|
|
315
|
+
},
|
|
316
|
+
"drawsInFlight": {
|
|
317
|
+
"type": "array",
|
|
318
|
+
"description": "Draws requested and not yet accepted or abandoned.",
|
|
319
|
+
"items": {
|
|
320
|
+
"$ref": "#/$defs/TokenDraw"
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"attested": {
|
|
324
|
+
"type": "integer",
|
|
325
|
+
"minimum": 0,
|
|
326
|
+
"description": "Attestations made through this engine."
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"TokenDraw": {
|
|
331
|
+
"title": "TokenDraw",
|
|
332
|
+
"description": "One draw of the token drip: a label and a tick.",
|
|
333
|
+
"type": "object",
|
|
334
|
+
"additionalProperties": false,
|
|
335
|
+
"required": [
|
|
336
|
+
"label",
|
|
337
|
+
"tick"
|
|
338
|
+
],
|
|
339
|
+
"properties": {
|
|
340
|
+
"label": {
|
|
341
|
+
"type": "string",
|
|
342
|
+
"minLength": 1,
|
|
343
|
+
"maxLength": 128
|
|
344
|
+
},
|
|
345
|
+
"tick": {
|
|
346
|
+
"type": "integer",
|
|
347
|
+
"minimum": 0
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
"Multibase": {
|
|
352
|
+
"title": "Multibase",
|
|
353
|
+
"description": "A binary value, multibase base58btc over the suite's canonical encoding.",
|
|
354
|
+
"type": "string",
|
|
355
|
+
"pattern": "^z[1-9A-HJ-NP-Za-km-z]+$"
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
} as const;
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
362
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
363
|
+
* per-specification and cannot be derived from the document alone, and
|
|
364
|
+
* item 2 needs the schema this carries.
|
|
365
|
+
*/
|
|
366
|
+
export const SPEC = {
|
|
367
|
+
typeUri: TYPE_URI,
|
|
368
|
+
isBearer: false,
|
|
369
|
+
isProofRequired: false,
|
|
370
|
+
isRecipientRequired: true,
|
|
371
|
+
isIssuedAtRequired: false,
|
|
372
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
373
|
+
} as const;
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
377
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
378
|
+
* parties (§7.3 item 5).
|
|
379
|
+
*/
|
|
380
|
+
export const RESPONSE_SPEC = {
|
|
381
|
+
typeUri: RESPONSE_TYPE_URI,
|
|
382
|
+
isBearer: false,
|
|
383
|
+
isProofRequired: false,
|
|
384
|
+
isRecipientRequired: true,
|
|
385
|
+
isIssuedAtRequired: false,
|
|
386
|
+
payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
|
|
387
|
+
} as const;
|
|
@@ -14,4 +14,4 @@ export interface VTCSharedRoomStorageDefinitions {
|
|
|
14
14
|
* The definitions this shared schema publishes, hoisted to one declaration each.
|
|
15
15
|
* See "../../../_shared/components.js".
|
|
16
16
|
*/
|
|
17
|
-
export type { ConfigState, CredentialState, EffectiveLimits, ExternalAccountId, GcsSettings, HostedRoom, LimitSource, LimitTarget, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageKind, StorageSettings, WalrusSettings } from "../../../_shared/components.js";
|
|
17
|
+
export type { ConfigState, CredentialState, EffectiveLimits, ExternalAccountContextId, ExternalAccountId, GcsSettings, HostedRoom, LimitSource, LimitTarget, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageKind, StorageSettings, WalrusSettings } from "../../../_shared/components.js";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Source: specs/vtc/storage/configs/create/0.1/payload.schema.json
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { ConfigState, Ext, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigId, StorageSettings, WalrusSettings } from "../../../../../_shared/components.js";
|
|
6
|
+
import type { ConfigState, Ext, ExternalAccountContextId, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigId, StorageSettings, WalrusSettings } from "../../../../../_shared/components.js";
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -37,7 +37,7 @@ export interface VTCStorageConfigsCreateResponsePayload {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
40
|
-
export type { ConfigState, Ext, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigId, StorageSettings, WalrusSettings };
|
|
40
|
+
export type { ConfigState, Ext, ExternalAccountContextId, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigId, StorageSettings, WalrusSettings };
|
|
41
41
|
|
|
42
42
|
/** Trust Task type URI. */
|
|
43
43
|
export const TYPE_URI = "https://trusttasks.org/spec/vtc/storage/configs/create/0.1" as const;
|
|
@@ -209,19 +209,23 @@ export const PAYLOAD_SCHEMA = {
|
|
|
209
209
|
},
|
|
210
210
|
"StorageAuth": {
|
|
211
211
|
"title": "StorageAuth",
|
|
212
|
-
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
212
|
+
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA, named by the context that owns it and its identifier there. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
213
213
|
"oneOf": [
|
|
214
214
|
{
|
|
215
215
|
"type": "object",
|
|
216
216
|
"additionalProperties": false,
|
|
217
217
|
"required": [
|
|
218
218
|
"mode",
|
|
219
|
+
"context",
|
|
219
220
|
"account"
|
|
220
221
|
],
|
|
221
222
|
"properties": {
|
|
222
223
|
"mode": {
|
|
223
224
|
"const": "vta-account"
|
|
224
225
|
},
|
|
226
|
+
"context": {
|
|
227
|
+
"$ref": "#/$defs/ExternalAccountContextId"
|
|
228
|
+
},
|
|
225
229
|
"account": {
|
|
226
230
|
"$ref": "#/$defs/ExternalAccountId"
|
|
227
231
|
}
|
|
@@ -261,6 +265,13 @@ export const PAYLOAD_SCHEMA = {
|
|
|
261
265
|
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
|
|
262
266
|
"description": "The identifier of an external account held by the community's VTA (the external/accounts/* family), which issues the community short-lived, room-scoped credentials and holds the long-lived authority itself."
|
|
263
267
|
},
|
|
268
|
+
"ExternalAccountContextId": {
|
|
269
|
+
"title": "ExternalAccountContextId",
|
|
270
|
+
"type": "string",
|
|
271
|
+
"minLength": 1,
|
|
272
|
+
"maxLength": 256,
|
|
273
|
+
"description": "The context at the community's VTA that owns an external account. The VTA names an account by its context and its identifier, and decides who may use it by act scope in that context: the community must hold `external-auth-use` there, and be bound to the account, for the account to issue it anything. Naming a context grants nothing; the VTA's binding is the gate."
|
|
274
|
+
},
|
|
264
275
|
"StorageSettings": {
|
|
265
276
|
"title": "StorageSettings",
|
|
266
277
|
"description": "A config's backend settings, discriminated by `kind`. Never a secret: a credential is a StorageAuth, held elsewhere.",
|
|
@@ -534,19 +545,23 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
534
545
|
},
|
|
535
546
|
"StorageAuth": {
|
|
536
547
|
"title": "StorageAuth",
|
|
537
|
-
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
548
|
+
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA, named by the context that owns it and its identifier there. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
538
549
|
"oneOf": [
|
|
539
550
|
{
|
|
540
551
|
"type": "object",
|
|
541
552
|
"additionalProperties": false,
|
|
542
553
|
"required": [
|
|
543
554
|
"mode",
|
|
555
|
+
"context",
|
|
544
556
|
"account"
|
|
545
557
|
],
|
|
546
558
|
"properties": {
|
|
547
559
|
"mode": {
|
|
548
560
|
"const": "vta-account"
|
|
549
561
|
},
|
|
562
|
+
"context": {
|
|
563
|
+
"$ref": "#/$defs/ExternalAccountContextId"
|
|
564
|
+
},
|
|
550
565
|
"account": {
|
|
551
566
|
"$ref": "#/$defs/ExternalAccountId"
|
|
552
567
|
}
|
|
@@ -586,6 +601,13 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
586
601
|
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
|
|
587
602
|
"description": "The identifier of an external account held by the community's VTA (the external/accounts/* family), which issues the community short-lived, room-scoped credentials and holds the long-lived authority itself."
|
|
588
603
|
},
|
|
604
|
+
"ExternalAccountContextId": {
|
|
605
|
+
"title": "ExternalAccountContextId",
|
|
606
|
+
"type": "string",
|
|
607
|
+
"minLength": 1,
|
|
608
|
+
"maxLength": 256,
|
|
609
|
+
"description": "The context at the community's VTA that owns an external account. The VTA names an account by its context and its identifier, and decides who may use it by act scope in that context: the community must hold `external-auth-use` there, and be bound to the account, for the account to issue it anything. Naming a context grants nothing; the VTA's binding is the gate."
|
|
610
|
+
},
|
|
589
611
|
"StorageSettings": {
|
|
590
612
|
"title": "StorageSettings",
|
|
591
613
|
"description": "A config's backend settings, discriminated by `kind`. Never a secret: a credential is a StorageAuth, held elsewhere.",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Source: specs/vtc/storage/configs/get/0.1/payload.schema.json
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { ConfigState, CredentialState, DigestMultibase, Ext, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageSettings, WalrusSettings } from "../../../../../_shared/components.js";
|
|
6
|
+
import type { ConfigState, CredentialState, DigestMultibase, Ext, ExternalAccountContextId, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageSettings, WalrusSettings } from "../../../../../_shared/components.js";
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -25,7 +25,7 @@ export interface VTCStorageConfigsGetResponsePayload {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
28
|
-
export type { ConfigState, CredentialState, DigestMultibase, Ext, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageSettings, WalrusSettings };
|
|
28
|
+
export type { ConfigState, CredentialState, DigestMultibase, Ext, ExternalAccountContextId, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageSettings, WalrusSettings };
|
|
29
29
|
|
|
30
30
|
/** Trust Task type URI. */
|
|
31
31
|
export const TYPE_URI = "https://trusttasks.org/spec/vtc/storage/configs/get/0.1" as const;
|
|
@@ -220,6 +220,10 @@ export const PAYLOAD_SCHEMA = {
|
|
|
220
220
|
"none"
|
|
221
221
|
]
|
|
222
222
|
},
|
|
223
|
+
"context": {
|
|
224
|
+
"$ref": "#/$defs/ExternalAccountContextId",
|
|
225
|
+
"description": "Present with `vta-account`."
|
|
226
|
+
},
|
|
223
227
|
"account": {
|
|
224
228
|
"$ref": "#/$defs/ExternalAccountId",
|
|
225
229
|
"description": "Present with `vta-account`."
|
|
@@ -248,6 +252,13 @@ export const PAYLOAD_SCHEMA = {
|
|
|
248
252
|
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
|
|
249
253
|
"description": "The identifier of an external account held by the community's VTA (the external/accounts/* family), which issues the community short-lived, room-scoped credentials and holds the long-lived authority itself."
|
|
250
254
|
},
|
|
255
|
+
"ExternalAccountContextId": {
|
|
256
|
+
"title": "ExternalAccountContextId",
|
|
257
|
+
"type": "string",
|
|
258
|
+
"minLength": 1,
|
|
259
|
+
"maxLength": 256,
|
|
260
|
+
"description": "The context at the community's VTA that owns an external account. The VTA names an account by its context and its identifier, and decides who may use it by act scope in that context: the community must hold `external-auth-use` there, and be bound to the account, for the account to issue it anything. Naming a context grants nothing; the VTA's binding is the gate."
|
|
261
|
+
},
|
|
251
262
|
"DigestMultibase": {
|
|
252
263
|
"title": "DigestMultibase",
|
|
253
264
|
"description": "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.",
|
|
@@ -331,19 +342,23 @@ export const PAYLOAD_SCHEMA = {
|
|
|
331
342
|
},
|
|
332
343
|
"StorageAuth": {
|
|
333
344
|
"title": "StorageAuth",
|
|
334
|
-
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
345
|
+
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA, named by the context that owns it and its identifier there. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
335
346
|
"oneOf": [
|
|
336
347
|
{
|
|
337
348
|
"type": "object",
|
|
338
349
|
"additionalProperties": false,
|
|
339
350
|
"required": [
|
|
340
351
|
"mode",
|
|
352
|
+
"context",
|
|
341
353
|
"account"
|
|
342
354
|
],
|
|
343
355
|
"properties": {
|
|
344
356
|
"mode": {
|
|
345
357
|
"const": "vta-account"
|
|
346
358
|
},
|
|
359
|
+
"context": {
|
|
360
|
+
"$ref": "#/$defs/ExternalAccountContextId"
|
|
361
|
+
},
|
|
347
362
|
"account": {
|
|
348
363
|
"$ref": "#/$defs/ExternalAccountId"
|
|
349
364
|
}
|
|
@@ -701,6 +716,10 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
701
716
|
"none"
|
|
702
717
|
]
|
|
703
718
|
},
|
|
719
|
+
"context": {
|
|
720
|
+
"$ref": "#/$defs/ExternalAccountContextId",
|
|
721
|
+
"description": "Present with `vta-account`."
|
|
722
|
+
},
|
|
704
723
|
"account": {
|
|
705
724
|
"$ref": "#/$defs/ExternalAccountId",
|
|
706
725
|
"description": "Present with `vta-account`."
|
|
@@ -729,6 +748,13 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
729
748
|
"pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
|
|
730
749
|
"description": "The identifier of an external account held by the community's VTA (the external/accounts/* family), which issues the community short-lived, room-scoped credentials and holds the long-lived authority itself."
|
|
731
750
|
},
|
|
751
|
+
"ExternalAccountContextId": {
|
|
752
|
+
"title": "ExternalAccountContextId",
|
|
753
|
+
"type": "string",
|
|
754
|
+
"minLength": 1,
|
|
755
|
+
"maxLength": 256,
|
|
756
|
+
"description": "The context at the community's VTA that owns an external account. The VTA names an account by its context and its identifier, and decides who may use it by act scope in that context: the community must hold `external-auth-use` there, and be bound to the account, for the account to issue it anything. Naming a context grants nothing; the VTA's binding is the gate."
|
|
757
|
+
},
|
|
732
758
|
"DigestMultibase": {
|
|
733
759
|
"title": "DigestMultibase",
|
|
734
760
|
"description": "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.",
|
|
@@ -812,19 +838,23 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
812
838
|
},
|
|
813
839
|
"StorageAuth": {
|
|
814
840
|
"title": "StorageAuth",
|
|
815
|
-
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
841
|
+
"description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA, named by the context that owns it and its identifier there. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
|
|
816
842
|
"oneOf": [
|
|
817
843
|
{
|
|
818
844
|
"type": "object",
|
|
819
845
|
"additionalProperties": false,
|
|
820
846
|
"required": [
|
|
821
847
|
"mode",
|
|
848
|
+
"context",
|
|
822
849
|
"account"
|
|
823
850
|
],
|
|
824
851
|
"properties": {
|
|
825
852
|
"mode": {
|
|
826
853
|
"const": "vta-account"
|
|
827
854
|
},
|
|
855
|
+
"context": {
|
|
856
|
+
"$ref": "#/$defs/ExternalAccountContextId"
|
|
857
|
+
},
|
|
828
858
|
"account": {
|
|
829
859
|
"$ref": "#/$defs/ExternalAccountId"
|
|
830
860
|
}
|