@openvtc/trust-tasks 0.12.9 → 0.12.10
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/dist/vtc/_shared/0.1/endorsement.d.ts +1 -1
- package/dist/vtc/ceremonies/list/0.1/payload.d.ts +22 -0
- package/dist/vtc/ceremonies/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/ceremonies/list/0.1/payload.js +8 -0
- package/dist/vtc/ceremonies/list/0.1/payload.js.map +1 -1
- package/dist/vtc/community/profile/show/0.1/payload.d.ts +81 -22
- package/dist/vtc/community/profile/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/community/profile/show/0.1/payload.js +34 -8
- package/dist/vtc/community/profile/show/0.1/payload.js.map +1 -1
- package/dist/vtc/community/profile/update/0.1/payload.d.ts +81 -22
- package/dist/vtc/community/profile/update/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/community/profile/update/0.1/payload.js +34 -8
- package/dist/vtc/community/profile/update/0.1/payload.js.map +1 -1
- package/dist/vtc/endorsements/issue/0.1/payload.d.ts +65 -65
- package/dist/vtc/endorsements/issue/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/endorsements/issue/0.1/payload.js +36 -32
- package/dist/vtc/endorsements/issue/0.1/payload.js.map +1 -1
- package/dist/vtc/endorsements/list/0.1/payload.d.ts +41 -61
- package/dist/vtc/endorsements/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/endorsements/list/0.1/payload.js +24 -30
- package/dist/vtc/endorsements/list/0.1/payload.js.map +1 -1
- package/dist/vtc/endorsements/show/0.1/payload.d.ts +41 -61
- package/dist/vtc/endorsements/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/endorsements/show/0.1/payload.js +24 -30
- package/dist/vtc/endorsements/show/0.1/payload.js.map +1 -1
- package/dist/vtc/install/claim/start/0.1/payload.d.ts +18 -0
- package/dist/vtc/install/claim/start/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/install/claim/start/0.1/payload.js +5 -0
- package/dist/vtc/install/claim/start/0.1/payload.js.map +1 -1
- package/dist/vtc/registry/diagnostics/0.1/payload.d.ts +491 -0
- package/dist/vtc/registry/diagnostics/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/registry/diagnostics/0.1/payload.js +260 -0
- package/dist/vtc/registry/diagnostics/0.1/payload.js.map +1 -1
- package/dist/vtc/website/files/list/0.1/payload.d.ts +24 -0
- package/dist/vtc/website/files/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/website/files/list/0.1/payload.js +10 -0
- package/dist/vtc/website/files/list/0.1/payload.js.map +1 -1
- package/dist/vtc/website/generations/list/0.1/payload.d.ts +48 -0
- package/dist/vtc/website/generations/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/website/generations/list/0.1/payload.js +20 -0
- package/dist/vtc/website/generations/list/0.1/payload.js.map +1 -1
- package/package.json +1 -1
- package/src/vtc/_shared/0.1/endorsement.ts +1 -1
- package/src/vtc/ceremonies/list/0.1/payload.ts +14 -0
- package/src/vtc/community/profile/show/0.1/payload.ts +47 -10
- package/src/vtc/community/profile/update/0.1/payload.ts +47 -10
- package/src/vtc/endorsements/issue/0.1/payload.ts +45 -41
- package/src/vtc/endorsements/list/0.1/payload.ts +29 -39
- package/src/vtc/endorsements/show/0.1/payload.ts +29 -39
- package/src/vtc/install/claim/start/0.1/payload.ts +13 -0
- package/src/vtc/registry/diagnostics/0.1/payload.ts +343 -0
- package/src/vtc/website/files/list/0.1/payload.ts +14 -0
- package/src/vtc/website/generations/list/0.1/payload.ts +28 -0
|
@@ -39,7 +39,7 @@ export interface Endorsement {
|
|
|
39
39
|
* The attested claim body, validated against the endorsement type's claimSchema when it declares one.
|
|
40
40
|
*/
|
|
41
41
|
claim?: {};
|
|
42
|
-
issued:
|
|
42
|
+
issued: CredentialReference;
|
|
43
43
|
/**
|
|
44
44
|
* The endorsement's slot on the community's shared Revocation status list. Published, so a foreign verifier can check revocation without contacting this community.
|
|
45
45
|
*/
|
|
@@ -50,22 +50,18 @@ export interface Endorsement {
|
|
|
50
50
|
revokedAt?: string | null;
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
53
|
+
* A pointer to the issued VEC — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it.
|
|
54
54
|
*/
|
|
55
|
-
export interface
|
|
55
|
+
export interface CredentialReference {
|
|
56
56
|
credentialId: CredentialId;
|
|
57
|
-
/**
|
|
58
|
-
* The issued Verifiable Credential (W3C VC Data Model 2.0), signed by the issuer's key. Opaque to the framework.
|
|
59
|
-
*/
|
|
60
|
-
credential: {};
|
|
61
57
|
/**
|
|
62
58
|
* When the credential was minted.
|
|
63
59
|
*/
|
|
64
60
|
issuedAt?: string;
|
|
65
61
|
/**
|
|
66
|
-
* When
|
|
62
|
+
* When it lapses, or null when it does not.
|
|
67
63
|
*/
|
|
68
|
-
expiresAt
|
|
64
|
+
expiresAt?: string | null;
|
|
69
65
|
}
|
|
70
66
|
|
|
71
67
|
/** Trust Task type URI. */
|
|
@@ -169,8 +165,8 @@ export const PAYLOAD_SCHEMA = {
|
|
|
169
165
|
"description": "The attested claim body, validated against the endorsement type's claimSchema when it declares one."
|
|
170
166
|
},
|
|
171
167
|
"issued": {
|
|
172
|
-
"$ref": "#/$defs/
|
|
173
|
-
"description": "
|
|
168
|
+
"$ref": "#/$defs/CredentialReference",
|
|
169
|
+
"description": "A pointer to the issued VEC — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
|
|
174
170
|
},
|
|
175
171
|
"statusListIndex": {
|
|
176
172
|
"type": "integer",
|
|
@@ -187,34 +183,31 @@ export const PAYLOAD_SCHEMA = {
|
|
|
187
183
|
}
|
|
188
184
|
}
|
|
189
185
|
},
|
|
190
|
-
"
|
|
191
|
-
"$anchor": "
|
|
192
|
-
"title": "
|
|
193
|
-
"description": "The receipt for a successfully-minted Verifiable Credential: a stable handle for revocation and audit, the signed credential itself, and when it lapses.\n\nSCOPE — this is an *issuance* receipt, returned by the party that minted the credential. It is not the shape for a *delivery* receipt, where a holder hands an already-issued credential to a party that stores it: such a task returns a receipt naming what was stored (see vtc/members/vmc and vtc/join-requests/accept) and MUST NOT echo the credential back to the party that just sent it. Reaching for this definition on a delivery task is the mistake this paragraph exists to prevent.\n\n`additionalProperties` is false, so a specification needing extra members cannot compose this by `$ref` — `allOf` evaluates each subschema against the whole object and this one would reject them. vta/credentials/issue is that case: its response is this shape plus `supersedes` and `ext`, and it therefore states the members inline while `$ref`-ing the shared CredentialId. That is deliberate, not drift.",
|
|
186
|
+
"CredentialReference": {
|
|
187
|
+
"$anchor": "credentialReference",
|
|
188
|
+
"title": "CredentialReference",
|
|
194
189
|
"type": "object",
|
|
195
190
|
"additionalProperties": false,
|
|
191
|
+
"description": "A pointer to an issued credential, without the credential itself.\n\nThe counterpart to IssuedCredential, for the far more common case of *reading about* a credential rather than being handed one. A listing that embedded the signed credential in every row would grow with the size of the credentials rather than the number of them — a page of fifty is megabytes — and a reader that only needs to know a credential exists, when it lapses, and how to revoke it does not need the bytes.\n\nThe holder can always fetch the credential itself by `credentialId`, and a verifier can check revocation from the row's status-list slot without either. Reach for IssuedCredential only at the moment of minting, where the caller has no other way to receive what was just made for them.",
|
|
196
192
|
"required": [
|
|
197
|
-
"credentialId"
|
|
198
|
-
"credential",
|
|
199
|
-
"expiresAt"
|
|
193
|
+
"credentialId"
|
|
200
194
|
],
|
|
201
195
|
"properties": {
|
|
202
196
|
"credentialId": {
|
|
203
197
|
"$ref": "#/$defs/CredentialId"
|
|
204
198
|
},
|
|
205
|
-
"credential": {
|
|
206
|
-
"type": "object",
|
|
207
|
-
"description": "The issued Verifiable Credential (W3C VC Data Model 2.0), signed by the issuer's key. Opaque to the framework."
|
|
208
|
-
},
|
|
209
199
|
"issuedAt": {
|
|
210
200
|
"type": "string",
|
|
211
201
|
"format": "date-time",
|
|
212
202
|
"description": "When the credential was minted."
|
|
213
203
|
},
|
|
214
204
|
"expiresAt": {
|
|
215
|
-
"type":
|
|
205
|
+
"type": [
|
|
206
|
+
"string",
|
|
207
|
+
"null"
|
|
208
|
+
],
|
|
216
209
|
"format": "date-time",
|
|
217
|
-
"description": "When
|
|
210
|
+
"description": "When it lapses, or null when it does not."
|
|
218
211
|
}
|
|
219
212
|
}
|
|
220
213
|
},
|
|
@@ -294,8 +287,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
294
287
|
"description": "The attested claim body, validated against the endorsement type's claimSchema when it declares one."
|
|
295
288
|
},
|
|
296
289
|
"issued": {
|
|
297
|
-
"$ref": "#/$defs/
|
|
298
|
-
"description": "
|
|
290
|
+
"$ref": "#/$defs/CredentialReference",
|
|
291
|
+
"description": "A pointer to the issued VEC — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
|
|
299
292
|
},
|
|
300
293
|
"statusListIndex": {
|
|
301
294
|
"type": "integer",
|
|
@@ -312,34 +305,31 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
312
305
|
}
|
|
313
306
|
}
|
|
314
307
|
},
|
|
315
|
-
"
|
|
316
|
-
"$anchor": "
|
|
317
|
-
"title": "
|
|
318
|
-
"description": "The receipt for a successfully-minted Verifiable Credential: a stable handle for revocation and audit, the signed credential itself, and when it lapses.\n\nSCOPE — this is an *issuance* receipt, returned by the party that minted the credential. It is not the shape for a *delivery* receipt, where a holder hands an already-issued credential to a party that stores it: such a task returns a receipt naming what was stored (see vtc/members/vmc and vtc/join-requests/accept) and MUST NOT echo the credential back to the party that just sent it. Reaching for this definition on a delivery task is the mistake this paragraph exists to prevent.\n\n`additionalProperties` is false, so a specification needing extra members cannot compose this by `$ref` — `allOf` evaluates each subschema against the whole object and this one would reject them. vta/credentials/issue is that case: its response is this shape plus `supersedes` and `ext`, and it therefore states the members inline while `$ref`-ing the shared CredentialId. That is deliberate, not drift.",
|
|
308
|
+
"CredentialReference": {
|
|
309
|
+
"$anchor": "credentialReference",
|
|
310
|
+
"title": "CredentialReference",
|
|
319
311
|
"type": "object",
|
|
320
312
|
"additionalProperties": false,
|
|
313
|
+
"description": "A pointer to an issued credential, without the credential itself.\n\nThe counterpart to IssuedCredential, for the far more common case of *reading about* a credential rather than being handed one. A listing that embedded the signed credential in every row would grow with the size of the credentials rather than the number of them — a page of fifty is megabytes — and a reader that only needs to know a credential exists, when it lapses, and how to revoke it does not need the bytes.\n\nThe holder can always fetch the credential itself by `credentialId`, and a verifier can check revocation from the row's status-list slot without either. Reach for IssuedCredential only at the moment of minting, where the caller has no other way to receive what was just made for them.",
|
|
321
314
|
"required": [
|
|
322
|
-
"credentialId"
|
|
323
|
-
"credential",
|
|
324
|
-
"expiresAt"
|
|
315
|
+
"credentialId"
|
|
325
316
|
],
|
|
326
317
|
"properties": {
|
|
327
318
|
"credentialId": {
|
|
328
319
|
"$ref": "#/$defs/CredentialId"
|
|
329
320
|
},
|
|
330
|
-
"credential": {
|
|
331
|
-
"type": "object",
|
|
332
|
-
"description": "The issued Verifiable Credential (W3C VC Data Model 2.0), signed by the issuer's key. Opaque to the framework."
|
|
333
|
-
},
|
|
334
321
|
"issuedAt": {
|
|
335
322
|
"type": "string",
|
|
336
323
|
"format": "date-time",
|
|
337
324
|
"description": "When the credential was minted."
|
|
338
325
|
},
|
|
339
326
|
"expiresAt": {
|
|
340
|
-
"type":
|
|
327
|
+
"type": [
|
|
328
|
+
"string",
|
|
329
|
+
"null"
|
|
330
|
+
],
|
|
341
331
|
"format": "date-time",
|
|
342
|
-
"description": "When
|
|
332
|
+
"description": "When it lapses, or null when it does not."
|
|
343
333
|
}
|
|
344
334
|
}
|
|
345
335
|
},
|
|
@@ -8,6 +8,14 @@ export interface VTCInstallClaimStartPayload {
|
|
|
8
8
|
* The EdDSA-signed install JWT (aud=vtc-install) printed by vtc setup.
|
|
9
9
|
*/
|
|
10
10
|
installToken: string;
|
|
11
|
+
/**
|
|
12
|
+
* A short code the operator receives **out of band**, alongside the install URL but through a separate channel.
|
|
13
|
+
*
|
|
14
|
+
* The second factor on a claim: the URL alone is deliberately insufficient, so a stolen or forwarded install link cannot claim the passkey by itself. A maintainer that mints one shows the plaintext once and stores only a hash; a claim that omits or fails it is refused before any registration challenge is issued.
|
|
15
|
+
*
|
|
16
|
+
* Optional in the schema because a maintainer may issue tokens without one — but a maintainer that does issue one MUST require it, and SHOULD issue one for any invite that travels over a channel it does not control.
|
|
17
|
+
*/
|
|
18
|
+
claimSecret?: string;
|
|
11
19
|
ext?: Ext;
|
|
12
20
|
}
|
|
13
21
|
/**
|
|
@@ -68,6 +76,11 @@ export const PAYLOAD_SCHEMA = {
|
|
|
68
76
|
"minLength": 1,
|
|
69
77
|
"description": "The EdDSA-signed install JWT (aud=vtc-install) printed by vtc setup."
|
|
70
78
|
},
|
|
79
|
+
"claimSecret": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"minLength": 1,
|
|
82
|
+
"description": "A short code the operator receives **out of band**, alongside the install URL but through a separate channel.\n\nThe second factor on a claim: the URL alone is deliberately insufficient, so a stolen or forwarded install link cannot claim the passkey by itself. A maintainer that mints one shows the plaintext once and stores only a hash; a claim that omits or fails it is refused before any registration challenge is issued.\n\nOptional in the schema because a maintainer may issue tokens without one — but a maintainer that does issue one MUST require it, and SHOULD issue one for any invite that travels over a channel it does not control."
|
|
83
|
+
},
|
|
71
84
|
"ext": {
|
|
72
85
|
"$ref": "#/$defs/Ext"
|
|
73
86
|
}
|
|
@@ -40,6 +40,89 @@ export interface VTCRegistryDiagnosticsResponsePayload {
|
|
|
40
40
|
*/
|
|
41
41
|
lastError?: string | null;
|
|
42
42
|
ext?: Ext;
|
|
43
|
+
/**
|
|
44
|
+
* Whether the membership syncer is configured to run at all — false when no trust registry is configured.
|
|
45
|
+
*/
|
|
46
|
+
syncerEnabled?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Whether the syncer task is alive right now. `syncerEnabled && !syncerRunning` means spawned but dead — mid-restart after a panic, which no queue count reveals.
|
|
49
|
+
*/
|
|
50
|
+
syncerRunning?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* How many times the syncer has been restarted after a panic. A rising value is the "it keeps crashing" signal; queue depth alone looks identical to a healthy idle queue.
|
|
53
|
+
*/
|
|
54
|
+
syncerRestarts?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Live messaging connectivity: `connected` when the delivery layer reports a live mediator connection. A re-falsifiable signal read at request time, never a boot-time latch — a maintainer that connected once and dropped must report `disconnected`.
|
|
57
|
+
*/
|
|
58
|
+
messagingStatus?: "connected" | "disconnected";
|
|
59
|
+
/**
|
|
60
|
+
* The DID of the agent this maintainer was provisioned against. Admin-gated rather than public: infrastructure topology is not a free reconnaissance oracle.
|
|
61
|
+
*/
|
|
62
|
+
vtaDid?: string;
|
|
63
|
+
/**
|
|
64
|
+
* The mediator's endpoint, when one is configured.
|
|
65
|
+
*/
|
|
66
|
+
mediatorUrl?: string | null;
|
|
67
|
+
/**
|
|
68
|
+
* The mediator's DID, when one is configured.
|
|
69
|
+
*/
|
|
70
|
+
mediatorDid?: string | null;
|
|
71
|
+
registryTransport?: RegistryTransport;
|
|
72
|
+
/**
|
|
73
|
+
* Every protocol this maintainer knows about, whether its own document advertises it, and whether it can serve it right now.
|
|
74
|
+
*
|
|
75
|
+
* Reports all protocols rather than only the advertised ones, so a client can tell "not advertised" from "absent from an older response".
|
|
76
|
+
*/
|
|
77
|
+
transports?: TransportStatus[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* How this maintainer reaches its trust registry, and which protocol the last attempt actually chose.
|
|
81
|
+
*/
|
|
82
|
+
export interface RegistryTransport {
|
|
83
|
+
/**
|
|
84
|
+
* The registry's DID, when addressed by one.
|
|
85
|
+
*/
|
|
86
|
+
did?: string | null;
|
|
87
|
+
/**
|
|
88
|
+
* The registry's endpoint, when addressed by one.
|
|
89
|
+
*/
|
|
90
|
+
url?: string | null;
|
|
91
|
+
/**
|
|
92
|
+
* Protocols the registry's own document advertises, in preference order. Empty before the DID has been resolved, or when addressed by URL alone.
|
|
93
|
+
*/
|
|
94
|
+
advertised?: string[];
|
|
95
|
+
/**
|
|
96
|
+
* The protocol the last selection chose. Null before the first call, or when selection failed — see `error`.
|
|
97
|
+
*/
|
|
98
|
+
active?: string | null;
|
|
99
|
+
/**
|
|
100
|
+
* Why the last selection failed, if it did.
|
|
101
|
+
*/
|
|
102
|
+
error?: string | null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* One protocol's advertised and serviceable state.
|
|
106
|
+
*
|
|
107
|
+
* The two are separate on purpose. `advertised` is read from the DID document; `serviceable` is whether this maintainer can answer on it right now. Advertised-but-not-serviceable is the broken state a single boolean hides; serviceable-but-not-advertised is the staged rollout, where the binary is ready and the document has not caught up.
|
|
108
|
+
*/
|
|
109
|
+
export interface TransportStatus {
|
|
110
|
+
/**
|
|
111
|
+
* The protocol this row describes.
|
|
112
|
+
*/
|
|
113
|
+
protocol: string;
|
|
114
|
+
/**
|
|
115
|
+
* Present in the DID document, so a resolving client will find it.
|
|
116
|
+
*/
|
|
117
|
+
advertised: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* This maintainer can answer on it right now. For messaging transports that means the build supports the protocol *and* the connection is live.
|
|
120
|
+
*/
|
|
121
|
+
serviceable: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* The advertised endpoint, or null when not advertised — there is no endpoint to give.
|
|
124
|
+
*/
|
|
125
|
+
endpoint?: string | null;
|
|
43
126
|
}
|
|
44
127
|
|
|
45
128
|
/** Trust Task type URI. */
|
|
@@ -140,6 +223,136 @@ export const PAYLOAD_SCHEMA = {
|
|
|
140
223
|
},
|
|
141
224
|
"ext": {
|
|
142
225
|
"$ref": "#/$defs/Ext"
|
|
226
|
+
},
|
|
227
|
+
"syncerEnabled": {
|
|
228
|
+
"type": "boolean",
|
|
229
|
+
"description": "Whether the membership syncer is configured to run at all — false when no trust registry is configured."
|
|
230
|
+
},
|
|
231
|
+
"syncerRunning": {
|
|
232
|
+
"type": "boolean",
|
|
233
|
+
"description": "Whether the syncer task is alive right now. `syncerEnabled && !syncerRunning` means spawned but dead — mid-restart after a panic, which no queue count reveals."
|
|
234
|
+
},
|
|
235
|
+
"syncerRestarts": {
|
|
236
|
+
"type": "integer",
|
|
237
|
+
"minimum": 0,
|
|
238
|
+
"description": "How many times the syncer has been restarted after a panic. A rising value is the \"it keeps crashing\" signal; queue depth alone looks identical to a healthy idle queue."
|
|
239
|
+
},
|
|
240
|
+
"messagingStatus": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"enum": [
|
|
243
|
+
"connected",
|
|
244
|
+
"disconnected"
|
|
245
|
+
],
|
|
246
|
+
"description": "Live messaging connectivity: `connected` when the delivery layer reports a live mediator connection. A re-falsifiable signal read at request time, never a boot-time latch — a maintainer that connected once and dropped must report `disconnected`."
|
|
247
|
+
},
|
|
248
|
+
"vtaDid": {
|
|
249
|
+
"type": "string",
|
|
250
|
+
"minLength": 1,
|
|
251
|
+
"description": "The DID of the agent this maintainer was provisioned against. Admin-gated rather than public: infrastructure topology is not a free reconnaissance oracle."
|
|
252
|
+
},
|
|
253
|
+
"mediatorUrl": {
|
|
254
|
+
"type": [
|
|
255
|
+
"string",
|
|
256
|
+
"null"
|
|
257
|
+
],
|
|
258
|
+
"description": "The mediator's endpoint, when one is configured."
|
|
259
|
+
},
|
|
260
|
+
"mediatorDid": {
|
|
261
|
+
"type": [
|
|
262
|
+
"string",
|
|
263
|
+
"null"
|
|
264
|
+
],
|
|
265
|
+
"description": "The mediator's DID, when one is configured."
|
|
266
|
+
},
|
|
267
|
+
"registryTransport": {
|
|
268
|
+
"$ref": "#/$defs/RegistryTransport",
|
|
269
|
+
"description": "How this maintainer reaches its trust registry, and which protocol the last attempt actually chose."
|
|
270
|
+
},
|
|
271
|
+
"transports": {
|
|
272
|
+
"type": "array",
|
|
273
|
+
"items": {
|
|
274
|
+
"$ref": "#/$defs/TransportStatus"
|
|
275
|
+
},
|
|
276
|
+
"description": "Every protocol this maintainer knows about, whether its own document advertises it, and whether it can serve it right now.\n\nReports all protocols rather than only the advertised ones, so a client can tell \"not advertised\" from \"absent from an older response\"."
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"TransportStatus": {
|
|
281
|
+
"$anchor": "transportStatus",
|
|
282
|
+
"title": "TransportStatus",
|
|
283
|
+
"type": "object",
|
|
284
|
+
"additionalProperties": false,
|
|
285
|
+
"description": "One protocol's advertised and serviceable state.\n\nThe two are separate on purpose. `advertised` is read from the DID document; `serviceable` is whether this maintainer can answer on it right now. Advertised-but-not-serviceable is the broken state a single boolean hides; serviceable-but-not-advertised is the staged rollout, where the binary is ready and the document has not caught up.",
|
|
286
|
+
"required": [
|
|
287
|
+
"protocol",
|
|
288
|
+
"advertised",
|
|
289
|
+
"serviceable"
|
|
290
|
+
],
|
|
291
|
+
"properties": {
|
|
292
|
+
"protocol": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"minLength": 1,
|
|
295
|
+
"description": "The protocol this row describes."
|
|
296
|
+
},
|
|
297
|
+
"advertised": {
|
|
298
|
+
"type": "boolean",
|
|
299
|
+
"description": "Present in the DID document, so a resolving client will find it."
|
|
300
|
+
},
|
|
301
|
+
"serviceable": {
|
|
302
|
+
"type": "boolean",
|
|
303
|
+
"description": "This maintainer can answer on it right now. For messaging transports that means the build supports the protocol *and* the connection is live."
|
|
304
|
+
},
|
|
305
|
+
"endpoint": {
|
|
306
|
+
"type": [
|
|
307
|
+
"string",
|
|
308
|
+
"null"
|
|
309
|
+
],
|
|
310
|
+
"description": "The advertised endpoint, or null when not advertised — there is no endpoint to give."
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"RegistryTransport": {
|
|
315
|
+
"$anchor": "registryTransport",
|
|
316
|
+
"title": "RegistryTransport",
|
|
317
|
+
"type": "object",
|
|
318
|
+
"additionalProperties": false,
|
|
319
|
+
"description": "How a maintainer addresses its trust registry, and what the last selection chose.\n\nAdvertised and active are reported separately: a registry that advertises a protocol this maintainer cannot answer is *configured* and *unreachable* at the same time, and one collapsed field cannot say so.",
|
|
320
|
+
"properties": {
|
|
321
|
+
"did": {
|
|
322
|
+
"type": [
|
|
323
|
+
"string",
|
|
324
|
+
"null"
|
|
325
|
+
],
|
|
326
|
+
"description": "The registry's DID, when addressed by one."
|
|
327
|
+
},
|
|
328
|
+
"url": {
|
|
329
|
+
"type": [
|
|
330
|
+
"string",
|
|
331
|
+
"null"
|
|
332
|
+
],
|
|
333
|
+
"description": "The registry's endpoint, when addressed by one."
|
|
334
|
+
},
|
|
335
|
+
"advertised": {
|
|
336
|
+
"type": "array",
|
|
337
|
+
"items": {
|
|
338
|
+
"type": "string",
|
|
339
|
+
"minLength": 1
|
|
340
|
+
},
|
|
341
|
+
"description": "Protocols the registry's own document advertises, in preference order. Empty before the DID has been resolved, or when addressed by URL alone."
|
|
342
|
+
},
|
|
343
|
+
"active": {
|
|
344
|
+
"type": [
|
|
345
|
+
"string",
|
|
346
|
+
"null"
|
|
347
|
+
],
|
|
348
|
+
"description": "The protocol the last selection chose. Null before the first call, or when selection failed — see `error`."
|
|
349
|
+
},
|
|
350
|
+
"error": {
|
|
351
|
+
"type": [
|
|
352
|
+
"string",
|
|
353
|
+
"null"
|
|
354
|
+
],
|
|
355
|
+
"description": "Why the last selection failed, if it did."
|
|
143
356
|
}
|
|
144
357
|
}
|
|
145
358
|
},
|
|
@@ -226,6 +439,136 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
226
439
|
},
|
|
227
440
|
"ext": {
|
|
228
441
|
"$ref": "#/$defs/Ext"
|
|
442
|
+
},
|
|
443
|
+
"syncerEnabled": {
|
|
444
|
+
"type": "boolean",
|
|
445
|
+
"description": "Whether the membership syncer is configured to run at all — false when no trust registry is configured."
|
|
446
|
+
},
|
|
447
|
+
"syncerRunning": {
|
|
448
|
+
"type": "boolean",
|
|
449
|
+
"description": "Whether the syncer task is alive right now. `syncerEnabled && !syncerRunning` means spawned but dead — mid-restart after a panic, which no queue count reveals."
|
|
450
|
+
},
|
|
451
|
+
"syncerRestarts": {
|
|
452
|
+
"type": "integer",
|
|
453
|
+
"minimum": 0,
|
|
454
|
+
"description": "How many times the syncer has been restarted after a panic. A rising value is the \"it keeps crashing\" signal; queue depth alone looks identical to a healthy idle queue."
|
|
455
|
+
},
|
|
456
|
+
"messagingStatus": {
|
|
457
|
+
"type": "string",
|
|
458
|
+
"enum": [
|
|
459
|
+
"connected",
|
|
460
|
+
"disconnected"
|
|
461
|
+
],
|
|
462
|
+
"description": "Live messaging connectivity: `connected` when the delivery layer reports a live mediator connection. A re-falsifiable signal read at request time, never a boot-time latch — a maintainer that connected once and dropped must report `disconnected`."
|
|
463
|
+
},
|
|
464
|
+
"vtaDid": {
|
|
465
|
+
"type": "string",
|
|
466
|
+
"minLength": 1,
|
|
467
|
+
"description": "The DID of the agent this maintainer was provisioned against. Admin-gated rather than public: infrastructure topology is not a free reconnaissance oracle."
|
|
468
|
+
},
|
|
469
|
+
"mediatorUrl": {
|
|
470
|
+
"type": [
|
|
471
|
+
"string",
|
|
472
|
+
"null"
|
|
473
|
+
],
|
|
474
|
+
"description": "The mediator's endpoint, when one is configured."
|
|
475
|
+
},
|
|
476
|
+
"mediatorDid": {
|
|
477
|
+
"type": [
|
|
478
|
+
"string",
|
|
479
|
+
"null"
|
|
480
|
+
],
|
|
481
|
+
"description": "The mediator's DID, when one is configured."
|
|
482
|
+
},
|
|
483
|
+
"registryTransport": {
|
|
484
|
+
"$ref": "#/$defs/RegistryTransport",
|
|
485
|
+
"description": "How this maintainer reaches its trust registry, and which protocol the last attempt actually chose."
|
|
486
|
+
},
|
|
487
|
+
"transports": {
|
|
488
|
+
"type": "array",
|
|
489
|
+
"items": {
|
|
490
|
+
"$ref": "#/$defs/TransportStatus"
|
|
491
|
+
},
|
|
492
|
+
"description": "Every protocol this maintainer knows about, whether its own document advertises it, and whether it can serve it right now.\n\nReports all protocols rather than only the advertised ones, so a client can tell \"not advertised\" from \"absent from an older response\"."
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
"TransportStatus": {
|
|
497
|
+
"$anchor": "transportStatus",
|
|
498
|
+
"title": "TransportStatus",
|
|
499
|
+
"type": "object",
|
|
500
|
+
"additionalProperties": false,
|
|
501
|
+
"description": "One protocol's advertised and serviceable state.\n\nThe two are separate on purpose. `advertised` is read from the DID document; `serviceable` is whether this maintainer can answer on it right now. Advertised-but-not-serviceable is the broken state a single boolean hides; serviceable-but-not-advertised is the staged rollout, where the binary is ready and the document has not caught up.",
|
|
502
|
+
"required": [
|
|
503
|
+
"protocol",
|
|
504
|
+
"advertised",
|
|
505
|
+
"serviceable"
|
|
506
|
+
],
|
|
507
|
+
"properties": {
|
|
508
|
+
"protocol": {
|
|
509
|
+
"type": "string",
|
|
510
|
+
"minLength": 1,
|
|
511
|
+
"description": "The protocol this row describes."
|
|
512
|
+
},
|
|
513
|
+
"advertised": {
|
|
514
|
+
"type": "boolean",
|
|
515
|
+
"description": "Present in the DID document, so a resolving client will find it."
|
|
516
|
+
},
|
|
517
|
+
"serviceable": {
|
|
518
|
+
"type": "boolean",
|
|
519
|
+
"description": "This maintainer can answer on it right now. For messaging transports that means the build supports the protocol *and* the connection is live."
|
|
520
|
+
},
|
|
521
|
+
"endpoint": {
|
|
522
|
+
"type": [
|
|
523
|
+
"string",
|
|
524
|
+
"null"
|
|
525
|
+
],
|
|
526
|
+
"description": "The advertised endpoint, or null when not advertised — there is no endpoint to give."
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
"RegistryTransport": {
|
|
531
|
+
"$anchor": "registryTransport",
|
|
532
|
+
"title": "RegistryTransport",
|
|
533
|
+
"type": "object",
|
|
534
|
+
"additionalProperties": false,
|
|
535
|
+
"description": "How a maintainer addresses its trust registry, and what the last selection chose.\n\nAdvertised and active are reported separately: a registry that advertises a protocol this maintainer cannot answer is *configured* and *unreachable* at the same time, and one collapsed field cannot say so.",
|
|
536
|
+
"properties": {
|
|
537
|
+
"did": {
|
|
538
|
+
"type": [
|
|
539
|
+
"string",
|
|
540
|
+
"null"
|
|
541
|
+
],
|
|
542
|
+
"description": "The registry's DID, when addressed by one."
|
|
543
|
+
},
|
|
544
|
+
"url": {
|
|
545
|
+
"type": [
|
|
546
|
+
"string",
|
|
547
|
+
"null"
|
|
548
|
+
],
|
|
549
|
+
"description": "The registry's endpoint, when addressed by one."
|
|
550
|
+
},
|
|
551
|
+
"advertised": {
|
|
552
|
+
"type": "array",
|
|
553
|
+
"items": {
|
|
554
|
+
"type": "string",
|
|
555
|
+
"minLength": 1
|
|
556
|
+
},
|
|
557
|
+
"description": "Protocols the registry's own document advertises, in preference order. Empty before the DID has been resolved, or when addressed by URL alone."
|
|
558
|
+
},
|
|
559
|
+
"active": {
|
|
560
|
+
"type": [
|
|
561
|
+
"string",
|
|
562
|
+
"null"
|
|
563
|
+
],
|
|
564
|
+
"description": "The protocol the last selection chose. Null before the first call, or when selection failed — see `error`."
|
|
565
|
+
},
|
|
566
|
+
"error": {
|
|
567
|
+
"type": [
|
|
568
|
+
"string",
|
|
569
|
+
"null"
|
|
570
|
+
],
|
|
571
|
+
"description": "Why the last selection failed, if it did."
|
|
229
572
|
}
|
|
230
573
|
}
|
|
231
574
|
},
|
|
@@ -33,6 +33,10 @@ export interface VTCWebsiteFilesListResponsePayload {
|
|
|
33
33
|
* File size in bytes.
|
|
34
34
|
*/
|
|
35
35
|
size: number;
|
|
36
|
+
/**
|
|
37
|
+
* An opaque content hash for the file, matching the `ETag` a direct read of the same path returns. Lets a client detect a change — or confirm one it just wrote — without downloading the body, which is why the listing carries it rather than making the caller fetch each file to compare.
|
|
38
|
+
*/
|
|
39
|
+
etag?: string;
|
|
36
40
|
modifiedAt?: string;
|
|
37
41
|
}[];
|
|
38
42
|
nextCursor?: string | null;
|
|
@@ -111,6 +115,11 @@ export const PAYLOAD_SCHEMA = {
|
|
|
111
115
|
"minimum": 0,
|
|
112
116
|
"description": "File size in bytes."
|
|
113
117
|
},
|
|
118
|
+
"etag": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"minLength": 1,
|
|
121
|
+
"description": "An opaque content hash for the file, matching the `ETag` a direct read of the same path returns. Lets a client detect a change — or confirm one it just wrote — without downloading the body, which is why the listing carries it rather than making the caller fetch each file to compare."
|
|
122
|
+
},
|
|
114
123
|
"modifiedAt": {
|
|
115
124
|
"type": "string",
|
|
116
125
|
"format": "date-time"
|
|
@@ -177,6 +186,11 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
177
186
|
"minimum": 0,
|
|
178
187
|
"description": "File size in bytes."
|
|
179
188
|
},
|
|
189
|
+
"etag": {
|
|
190
|
+
"type": "string",
|
|
191
|
+
"minLength": 1,
|
|
192
|
+
"description": "An opaque content hash for the file, matching the `ETag` a direct read of the same path returns. Lets a client detect a change — or confirm one it just wrote — without downloading the body, which is why the listing carries it rather than making the caller fetch each file to compare."
|
|
193
|
+
},
|
|
180
194
|
"modifiedAt": {
|
|
181
195
|
"type": "string",
|
|
182
196
|
"format": "date-time"
|
|
@@ -22,6 +22,14 @@ export interface VTCWebsiteGenerationsListResponsePayload {
|
|
|
22
22
|
* True for the generation current resolves to.
|
|
23
23
|
*/
|
|
24
24
|
current: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* When this generation was deployed. A rollback target is chosen by *when* far more often than by number.
|
|
27
|
+
*/
|
|
28
|
+
deployedAt?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Total size of the generation on disk. Distinguishes a real deployment from a truncated or empty one before an operator rolls onto it.
|
|
31
|
+
*/
|
|
32
|
+
sizeBytes?: number;
|
|
25
33
|
}[];
|
|
26
34
|
ext?: Ext;
|
|
27
35
|
}
|
|
@@ -86,6 +94,16 @@ export const PAYLOAD_SCHEMA = {
|
|
|
86
94
|
"current": {
|
|
87
95
|
"type": "boolean",
|
|
88
96
|
"description": "True for the generation current resolves to."
|
|
97
|
+
},
|
|
98
|
+
"deployedAt": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"format": "date-time",
|
|
101
|
+
"description": "When this generation was deployed. A rollback target is chosen by *when* far more often than by number."
|
|
102
|
+
},
|
|
103
|
+
"sizeBytes": {
|
|
104
|
+
"type": "integer",
|
|
105
|
+
"minimum": 0,
|
|
106
|
+
"description": "Total size of the generation on disk. Distinguishes a real deployment from a truncated or empty one before an operator rolls onto it."
|
|
89
107
|
}
|
|
90
108
|
}
|
|
91
109
|
}
|
|
@@ -140,6 +158,16 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
140
158
|
"current": {
|
|
141
159
|
"type": "boolean",
|
|
142
160
|
"description": "True for the generation current resolves to."
|
|
161
|
+
},
|
|
162
|
+
"deployedAt": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"format": "date-time",
|
|
165
|
+
"description": "When this generation was deployed. A rollback target is chosen by *when* far more often than by number."
|
|
166
|
+
},
|
|
167
|
+
"sizeBytes": {
|
|
168
|
+
"type": "integer",
|
|
169
|
+
"minimum": 0,
|
|
170
|
+
"description": "Total size of the generation on disk. Distinguishes a real deployment from a truncated or empty one before an operator rolls onto it."
|
|
143
171
|
}
|
|
144
172
|
}
|
|
145
173
|
}
|