@openvtc/trust-tasks 0.12.8 → 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.
Files changed (63) hide show
  1. package/dist/vtc/_shared/0.1/endorsement.d.ts +1 -1
  2. package/dist/vtc/ceremonies/list/0.1/payload.d.ts +22 -0
  3. package/dist/vtc/ceremonies/list/0.1/payload.d.ts.map +1 -1
  4. package/dist/vtc/ceremonies/list/0.1/payload.js +8 -0
  5. package/dist/vtc/ceremonies/list/0.1/payload.js.map +1 -1
  6. package/dist/vtc/community/profile/show/0.1/payload.d.ts +235 -22
  7. package/dist/vtc/community/profile/show/0.1/payload.d.ts.map +1 -1
  8. package/dist/vtc/community/profile/show/0.1/payload.js +106 -8
  9. package/dist/vtc/community/profile/show/0.1/payload.js.map +1 -1
  10. package/dist/vtc/community/profile/update/0.1/payload.d.ts +265 -22
  11. package/dist/vtc/community/profile/update/0.1/payload.d.ts.map +1 -1
  12. package/dist/vtc/community/profile/update/0.1/payload.js +110 -8
  13. package/dist/vtc/community/profile/update/0.1/payload.js.map +1 -1
  14. package/dist/vtc/config/export/0.1/payload.d.ts +154 -0
  15. package/dist/vtc/config/export/0.1/payload.d.ts.map +1 -1
  16. package/dist/vtc/config/export/0.1/payload.js +72 -0
  17. package/dist/vtc/config/export/0.1/payload.js.map +1 -1
  18. package/dist/vtc/config/import/0.1/payload.d.ts +154 -0
  19. package/dist/vtc/config/import/0.1/payload.d.ts.map +1 -1
  20. package/dist/vtc/config/import/0.1/payload.js +72 -0
  21. package/dist/vtc/config/import/0.1/payload.js.map +1 -1
  22. package/dist/vtc/endorsements/issue/0.1/payload.d.ts +65 -65
  23. package/dist/vtc/endorsements/issue/0.1/payload.d.ts.map +1 -1
  24. package/dist/vtc/endorsements/issue/0.1/payload.js +36 -32
  25. package/dist/vtc/endorsements/issue/0.1/payload.js.map +1 -1
  26. package/dist/vtc/endorsements/list/0.1/payload.d.ts +41 -61
  27. package/dist/vtc/endorsements/list/0.1/payload.d.ts.map +1 -1
  28. package/dist/vtc/endorsements/list/0.1/payload.js +24 -30
  29. package/dist/vtc/endorsements/list/0.1/payload.js.map +1 -1
  30. package/dist/vtc/endorsements/show/0.1/payload.d.ts +41 -61
  31. package/dist/vtc/endorsements/show/0.1/payload.d.ts.map +1 -1
  32. package/dist/vtc/endorsements/show/0.1/payload.js +24 -30
  33. package/dist/vtc/endorsements/show/0.1/payload.js.map +1 -1
  34. package/dist/vtc/install/claim/start/0.1/payload.d.ts +18 -0
  35. package/dist/vtc/install/claim/start/0.1/payload.d.ts.map +1 -1
  36. package/dist/vtc/install/claim/start/0.1/payload.js +5 -0
  37. package/dist/vtc/install/claim/start/0.1/payload.js.map +1 -1
  38. package/dist/vtc/registry/diagnostics/0.1/payload.d.ts +491 -0
  39. package/dist/vtc/registry/diagnostics/0.1/payload.d.ts.map +1 -1
  40. package/dist/vtc/registry/diagnostics/0.1/payload.js +260 -0
  41. package/dist/vtc/registry/diagnostics/0.1/payload.js.map +1 -1
  42. package/dist/vtc/website/files/list/0.1/payload.d.ts +24 -0
  43. package/dist/vtc/website/files/list/0.1/payload.d.ts.map +1 -1
  44. package/dist/vtc/website/files/list/0.1/payload.js +10 -0
  45. package/dist/vtc/website/files/list/0.1/payload.js.map +1 -1
  46. package/dist/vtc/website/generations/list/0.1/payload.d.ts +48 -0
  47. package/dist/vtc/website/generations/list/0.1/payload.d.ts.map +1 -1
  48. package/dist/vtc/website/generations/list/0.1/payload.js +20 -0
  49. package/dist/vtc/website/generations/list/0.1/payload.js.map +1 -1
  50. package/package.json +1 -1
  51. package/src/vtc/_shared/0.1/endorsement.ts +1 -1
  52. package/src/vtc/ceremonies/list/0.1/payload.ts +14 -0
  53. package/src/vtc/community/profile/show/0.1/payload.ts +141 -10
  54. package/src/vtc/community/profile/update/0.1/payload.ts +167 -10
  55. package/src/vtc/config/export/0.1/payload.ts +94 -0
  56. package/src/vtc/config/import/0.1/payload.ts +94 -0
  57. package/src/vtc/endorsements/issue/0.1/payload.ts +45 -41
  58. package/src/vtc/endorsements/list/0.1/payload.ts +29 -39
  59. package/src/vtc/endorsements/show/0.1/payload.ts +29 -39
  60. package/src/vtc/install/claim/start/0.1/payload.ts +13 -0
  61. package/src/vtc/registry/diagnostics/0.1/payload.ts +343 -0
  62. package/src/vtc/website/files/list/0.1/payload.ts +14 -0
  63. package/src/vtc/website/generations/list/0.1/payload.ts +28 -0
@@ -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
  }