@openvtc/trust-tasks 0.21.10 → 0.21.12

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 (208) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/_framework/0.4/framework.d.ts +1 -1
  3. package/dist/_framework/0.4/framework.d.ts.map +1 -1
  4. package/dist/_shared/components.d.ts +371 -0
  5. package/dist/_shared/components.d.ts.map +1 -1
  6. package/dist/auth/_shared/0.1/signing-key.d.ts +16 -0
  7. package/dist/auth/_shared/0.1/signing-key.d.ts.map +1 -0
  8. package/dist/auth/_shared/0.1/signing-key.js +6 -0
  9. package/dist/auth/_shared/0.1/signing-key.js.map +1 -0
  10. package/dist/auth/signing-key/enroll/0.1/payload.d.ts +545 -0
  11. package/dist/auth/signing-key/enroll/0.1/payload.d.ts.map +1 -0
  12. package/dist/auth/signing-key/enroll/0.1/payload.js +307 -0
  13. package/dist/auth/signing-key/enroll/0.1/payload.js.map +1 -0
  14. package/dist/auth/signing-key/list/0.1/payload.d.ts +509 -0
  15. package/dist/auth/signing-key/list/0.1/payload.d.ts.map +1 -0
  16. package/dist/auth/signing-key/list/0.1/payload.js +289 -0
  17. package/dist/auth/signing-key/list/0.1/payload.js.map +1 -0
  18. package/dist/auth/signing-key/revoke/0.1/payload.d.ts +292 -0
  19. package/dist/auth/signing-key/revoke/0.1/payload.d.ts.map +1 -0
  20. package/dist/auth/signing-key/revoke/0.1/payload.js +167 -0
  21. package/dist/auth/signing-key/revoke/0.1/payload.js.map +1 -0
  22. package/dist/index.d.ts +39 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +39 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/trust-task-discovery/0.3/payload.d.ts +483 -0
  27. package/dist/trust-task-discovery/0.3/payload.d.ts.map +1 -0
  28. package/dist/trust-task-discovery/0.3/payload.js +242 -0
  29. package/dist/trust-task-discovery/0.3/payload.js.map +1 -0
  30. package/dist/vtc/_shared/0.1/community-presentation.d.ts +16 -0
  31. package/dist/vtc/_shared/0.1/community-presentation.d.ts.map +1 -0
  32. package/dist/vtc/_shared/0.1/community-presentation.js +6 -0
  33. package/dist/vtc/_shared/0.1/community-presentation.js.map +1 -0
  34. package/dist/vtc/_shared/0.1/relationship-lifecycle.d.ts +16 -0
  35. package/dist/vtc/_shared/0.1/relationship-lifecycle.d.ts.map +1 -0
  36. package/dist/vtc/_shared/0.1/relationship-lifecycle.js +6 -0
  37. package/dist/vtc/_shared/0.1/relationship-lifecycle.js.map +1 -0
  38. package/dist/vtc/_shared/0.1/schema-registry.d.ts +16 -0
  39. package/dist/vtc/_shared/0.1/schema-registry.d.ts.map +1 -0
  40. package/dist/vtc/_shared/0.1/schema-registry.js +6 -0
  41. package/dist/vtc/_shared/0.1/schema-registry.js.map +1 -0
  42. package/dist/vtc/_shared/0.1/vetting-auto-grant.d.ts +16 -0
  43. package/dist/vtc/_shared/0.1/vetting-auto-grant.d.ts.map +1 -0
  44. package/dist/vtc/_shared/0.1/vetting-auto-grant.js +6 -0
  45. package/dist/vtc/_shared/0.1/vetting-auto-grant.js.map +1 -0
  46. package/dist/vtc/_shared/0.1/website-transfer.d.ts +16 -0
  47. package/dist/vtc/_shared/0.1/website-transfer.d.ts.map +1 -0
  48. package/dist/vtc/_shared/0.1/website-transfer.js +6 -0
  49. package/dist/vtc/_shared/0.1/website-transfer.js.map +1 -0
  50. package/dist/vtc/community/branding/show/0.1/payload.d.ts +319 -0
  51. package/dist/vtc/community/branding/show/0.1/payload.d.ts.map +1 -0
  52. package/dist/vtc/community/branding/show/0.1/payload.js +179 -0
  53. package/dist/vtc/community/branding/show/0.1/payload.js.map +1 -0
  54. package/dist/vtc/community/branding/update/0.1/payload.d.ts +328 -0
  55. package/dist/vtc/community/branding/update/0.1/payload.d.ts.map +1 -0
  56. package/dist/vtc/community/branding/update/0.1/payload.js +185 -0
  57. package/dist/vtc/community/branding/update/0.1/payload.js.map +1 -0
  58. package/dist/vtc/community/join-discovery/show/0.1/payload.d.ts +267 -0
  59. package/dist/vtc/community/join-discovery/show/0.1/payload.d.ts.map +1 -0
  60. package/dist/vtc/community/join-discovery/show/0.1/payload.js +157 -0
  61. package/dist/vtc/community/join-discovery/show/0.1/payload.js.map +1 -0
  62. package/dist/vtc/community/join-discovery/update/0.1/payload.d.ts +276 -0
  63. package/dist/vtc/community/join-discovery/update/0.1/payload.d.ts.map +1 -0
  64. package/dist/vtc/community/join-discovery/update/0.1/payload.js +163 -0
  65. package/dist/vtc/community/join-discovery/update/0.1/payload.js.map +1 -0
  66. package/dist/vtc/community/requested-attributes/show/0.1/payload.d.ts +339 -0
  67. package/dist/vtc/community/requested-attributes/show/0.1/payload.d.ts.map +1 -0
  68. package/dist/vtc/community/requested-attributes/show/0.1/payload.js +193 -0
  69. package/dist/vtc/community/requested-attributes/show/0.1/payload.js.map +1 -0
  70. package/dist/vtc/community/requested-attributes/update/0.1/payload.d.ts +348 -0
  71. package/dist/vtc/community/requested-attributes/update/0.1/payload.d.ts.map +1 -0
  72. package/dist/vtc/community/requested-attributes/update/0.1/payload.js +199 -0
  73. package/dist/vtc/community/requested-attributes/update/0.1/payload.js.map +1 -0
  74. package/dist/vtc/join-requests/query/0.1/payload.d.ts +412 -0
  75. package/dist/vtc/join-requests/query/0.1/payload.d.ts.map +1 -0
  76. package/dist/vtc/join-requests/query/0.1/payload.js +228 -0
  77. package/dist/vtc/join-requests/query/0.1/payload.js.map +1 -0
  78. package/dist/vtc/join-requests/vetting/show/0.1/payload.d.ts +1016 -0
  79. package/dist/vtc/join-requests/vetting/show/0.1/payload.d.ts.map +1 -0
  80. package/dist/vtc/join-requests/vetting/show/0.1/payload.js +509 -0
  81. package/dist/vtc/join-requests/vetting/show/0.1/payload.js.map +1 -0
  82. package/dist/vtc/relationships/restore/0.1/payload.d.ts +462 -0
  83. package/dist/vtc/relationships/restore/0.1/payload.d.ts.map +1 -0
  84. package/dist/vtc/relationships/restore/0.1/payload.js +270 -0
  85. package/dist/vtc/relationships/restore/0.1/payload.js.map +1 -0
  86. package/dist/vtc/relationships/suspend/0.1/payload.d.ts +462 -0
  87. package/dist/vtc/relationships/suspend/0.1/payload.d.ts.map +1 -0
  88. package/dist/vtc/relationships/suspend/0.1/payload.js +270 -0
  89. package/dist/vtc/relationships/suspend/0.1/payload.js.map +1 -0
  90. package/dist/vtc/rooms/list/0.1/payload.d.ts +653 -0
  91. package/dist/vtc/rooms/list/0.1/payload.d.ts.map +1 -0
  92. package/dist/vtc/rooms/list/0.1/payload.js +360 -0
  93. package/dist/vtc/rooms/list/0.1/payload.js.map +1 -0
  94. package/dist/vtc/schemas/accepts/delete/0.1/payload.d.ts +240 -0
  95. package/dist/vtc/schemas/accepts/delete/0.1/payload.d.ts.map +1 -0
  96. package/dist/vtc/schemas/accepts/delete/0.1/payload.js +141 -0
  97. package/dist/vtc/schemas/accepts/delete/0.1/payload.js.map +1 -0
  98. package/dist/vtc/schemas/accepts/list/0.1/payload.d.ts +1214 -0
  99. package/dist/vtc/schemas/accepts/list/0.1/payload.d.ts.map +1 -0
  100. package/dist/vtc/schemas/accepts/list/0.1/payload.js +681 -0
  101. package/dist/vtc/schemas/accepts/list/0.1/payload.js.map +1 -0
  102. package/dist/vtc/schemas/accepts/register/0.1/payload.d.ts +1165 -0
  103. package/dist/vtc/schemas/accepts/register/0.1/payload.d.ts.map +1 -0
  104. package/dist/vtc/schemas/accepts/register/0.1/payload.js +665 -0
  105. package/dist/vtc/schemas/accepts/register/0.1/payload.js.map +1 -0
  106. package/dist/vtc/schemas/accepts/show/0.1/payload.d.ts +1144 -0
  107. package/dist/vtc/schemas/accepts/show/0.1/payload.d.ts.map +1 -0
  108. package/dist/vtc/schemas/accepts/show/0.1/payload.js +655 -0
  109. package/dist/vtc/schemas/accepts/show/0.1/payload.js.map +1 -0
  110. package/dist/vtc/schemas/delete/0.1/payload.d.ts +240 -0
  111. package/dist/vtc/schemas/delete/0.1/payload.d.ts.map +1 -0
  112. package/dist/vtc/schemas/delete/0.1/payload.js +141 -0
  113. package/dist/vtc/schemas/delete/0.1/payload.js.map +1 -0
  114. package/dist/vtc/schemas/list/0.1/payload.d.ts +541 -0
  115. package/dist/vtc/schemas/list/0.1/payload.d.ts.map +1 -0
  116. package/dist/vtc/schemas/list/0.1/payload.js +300 -0
  117. package/dist/vtc/schemas/list/0.1/payload.js.map +1 -0
  118. package/dist/vtc/schemas/register/0.1/payload.d.ts +512 -0
  119. package/dist/vtc/schemas/register/0.1/payload.d.ts.map +1 -0
  120. package/dist/vtc/schemas/register/0.1/payload.js +292 -0
  121. package/dist/vtc/schemas/register/0.1/payload.js.map +1 -0
  122. package/dist/vtc/schemas/show/0.1/payload.d.ts +484 -0
  123. package/dist/vtc/schemas/show/0.1/payload.d.ts.map +1 -0
  124. package/dist/vtc/schemas/show/0.1/payload.js +279 -0
  125. package/dist/vtc/schemas/show/0.1/payload.js.map +1 -0
  126. package/dist/vtc/vetting/auto-grant/show/0.1/payload.d.ts +463 -0
  127. package/dist/vtc/vetting/auto-grant/show/0.1/payload.d.ts.map +1 -0
  128. package/dist/vtc/vetting/auto-grant/show/0.1/payload.js +269 -0
  129. package/dist/vtc/vetting/auto-grant/show/0.1/payload.js.map +1 -0
  130. package/dist/vtc/vetting/auto-grant/update/0.1/payload.d.ts +491 -0
  131. package/dist/vtc/vetting/auto-grant/update/0.1/payload.d.ts.map +1 -0
  132. package/dist/vtc/vetting/auto-grant/update/0.1/payload.js +282 -0
  133. package/dist/vtc/vetting/auto-grant/update/0.1/payload.js.map +1 -0
  134. package/dist/vtc/vetting/revocations/list/0.1/payload.d.ts +608 -0
  135. package/dist/vtc/vetting/revocations/list/0.1/payload.d.ts.map +1 -0
  136. package/dist/vtc/vetting/revocations/list/0.1/payload.js +332 -0
  137. package/dist/vtc/vetting/revocations/list/0.1/payload.js.map +1 -0
  138. package/dist/vtc/vetting/vetters/grants/list/0.1/payload.d.ts +992 -0
  139. package/dist/vtc/vetting/vetters/grants/list/0.1/payload.d.ts.map +1 -0
  140. package/dist/vtc/vetting/vetters/grants/list/0.1/payload.js +461 -0
  141. package/dist/vtc/vetting/vetters/grants/list/0.1/payload.js.map +1 -0
  142. package/dist/vtc/website/deploy/0.1/payload.d.ts +369 -0
  143. package/dist/vtc/website/deploy/0.1/payload.d.ts.map +1 -0
  144. package/dist/vtc/website/deploy/0.1/payload.js +213 -0
  145. package/dist/vtc/website/deploy/0.1/payload.js.map +1 -0
  146. package/dist/vtc/website/files/show/0.1/payload.d.ts +455 -0
  147. package/dist/vtc/website/files/show/0.1/payload.d.ts.map +1 -0
  148. package/dist/vtc/website/files/show/0.1/payload.js +247 -0
  149. package/dist/vtc/website/files/show/0.1/payload.js.map +1 -0
  150. package/dist/vtc/website/upload/abort/0.1/payload.d.ts +256 -0
  151. package/dist/vtc/website/upload/abort/0.1/payload.d.ts.map +1 -0
  152. package/dist/vtc/website/upload/abort/0.1/payload.js +149 -0
  153. package/dist/vtc/website/upload/abort/0.1/payload.js.map +1 -0
  154. package/dist/vtc/website/upload/begin/0.1/payload.d.ts +658 -0
  155. package/dist/vtc/website/upload/begin/0.1/payload.d.ts.map +1 -0
  156. package/dist/vtc/website/upload/begin/0.1/payload.js +375 -0
  157. package/dist/vtc/website/upload/begin/0.1/payload.js.map +1 -0
  158. package/dist/vtc/website/upload/chunk/0.1/payload.d.ts +447 -0
  159. package/dist/vtc/website/upload/chunk/0.1/payload.d.ts.map +1 -0
  160. package/dist/vtc/website/upload/chunk/0.1/payload.js +253 -0
  161. package/dist/vtc/website/upload/chunk/0.1/payload.js.map +1 -0
  162. package/dist/vtc/website/upload/commit/0.1/payload.d.ts +603 -0
  163. package/dist/vtc/website/upload/commit/0.1/payload.d.ts.map +1 -0
  164. package/dist/vtc/website/upload/commit/0.1/payload.js +337 -0
  165. package/dist/vtc/website/upload/commit/0.1/payload.js.map +1 -0
  166. package/package.json +1 -1
  167. package/src/_framework/0.4/framework.ts +1 -1
  168. package/src/_shared/components.ts +371 -0
  169. package/src/auth/_shared/0.1/signing-key.ts +17 -0
  170. package/src/auth/signing-key/enroll/0.1/payload.ts +349 -0
  171. package/src/auth/signing-key/list/0.1/payload.ts +323 -0
  172. package/src/auth/signing-key/revoke/0.1/payload.ts +204 -0
  173. package/src/index.ts +39 -0
  174. package/src/trust-task-discovery/0.3/payload.ts +357 -0
  175. package/src/vtc/_shared/0.1/community-presentation.ts +17 -0
  176. package/src/vtc/_shared/0.1/relationship-lifecycle.ts +17 -0
  177. package/src/vtc/_shared/0.1/schema-registry.ts +17 -0
  178. package/src/vtc/_shared/0.1/vetting-auto-grant.ts +17 -0
  179. package/src/vtc/_shared/0.1/website-transfer.ts +17 -0
  180. package/src/vtc/community/branding/show/0.1/payload.ts +207 -0
  181. package/src/vtc/community/branding/update/0.1/payload.ts +214 -0
  182. package/src/vtc/community/join-discovery/show/0.1/payload.ts +185 -0
  183. package/src/vtc/community/join-discovery/update/0.1/payload.ts +192 -0
  184. package/src/vtc/community/requested-attributes/show/0.1/payload.ts +221 -0
  185. package/src/vtc/community/requested-attributes/update/0.1/payload.ts +228 -0
  186. package/src/vtc/join-requests/query/0.1/payload.ts +285 -0
  187. package/src/vtc/join-requests/vetting/show/0.1/payload.ts +740 -0
  188. package/src/vtc/relationships/restore/0.1/payload.ts +307 -0
  189. package/src/vtc/relationships/suspend/0.1/payload.ts +307 -0
  190. package/src/vtc/rooms/list/0.1/payload.ts +449 -0
  191. package/src/vtc/schemas/accepts/delete/0.1/payload.ts +170 -0
  192. package/src/vtc/schemas/accepts/list/0.1/payload.ts +724 -0
  193. package/src/vtc/schemas/accepts/register/0.1/payload.ts +697 -0
  194. package/src/vtc/schemas/accepts/show/0.1/payload.ts +684 -0
  195. package/src/vtc/schemas/delete/0.1/payload.ts +170 -0
  196. package/src/vtc/schemas/list/0.1/payload.ts +344 -0
  197. package/src/vtc/schemas/register/0.1/payload.ts +325 -0
  198. package/src/vtc/schemas/show/0.1/payload.ts +308 -0
  199. package/src/vtc/vetting/auto-grant/show/0.1/payload.ts +297 -0
  200. package/src/vtc/vetting/auto-grant/update/0.1/payload.ts +316 -0
  201. package/src/vtc/vetting/revocations/list/0.1/payload.ts +416 -0
  202. package/src/vtc/vetting/vetters/grants/list/0.1/payload.ts +700 -0
  203. package/src/vtc/website/deploy/0.1/payload.ts +255 -0
  204. package/src/vtc/website/files/show/0.1/payload.ts +303 -0
  205. package/src/vtc/website/upload/abort/0.1/payload.ts +182 -0
  206. package/src/vtc/website/upload/begin/0.1/payload.ts +408 -0
  207. package/src/vtc/website/upload/chunk/0.1/payload.ts +295 -0
  208. package/src/vtc/website/upload/commit/0.1/payload.ts +385 -0
@@ -11,6 +11,10 @@
11
11
  * came from. Every shape of such a name is qualified, including the oldest:
12
12
  * there is no canonical `VaultEntry` to leave unmarked.
13
13
  */
14
+ /**
15
+ * An Accepts criterion's identifier, chosen by the registering administrator — a ceremony purpose or a named manifest criterion, e.g. `membership`. Compared as an exact string after surrounding whitespace is trimmed. Bounded at 128 characters, the bound vtc/join-requests/manifest/0.2 places on the criterion `id` it publishes.
16
+ */
17
+ export type AcceptsCriterionId = string;
14
18
  /**
15
19
  * The account's role at the mediator. `standard` is an ordinary served account; `admin`/`rootAdmin` may administer other accounts; `mediator` is the mediator's own account. Only a rootAdmin may assign or modify the rootAdmin role.
16
20
  */
@@ -91,6 +95,14 @@ export type CountryCode = string;
91
95
  * Stable identifier for an issued credential — the handle for revocation and audit. Opaque to the holder: it MUST be echoed verbatim when revoking and MUST NOT be parsed.
92
96
  */
93
97
  export type CredentialId = string;
98
+ /**
99
+ * A credential type URI — the W3C `type` value or the SD-JWT-VC `vct` a credential of this type carries. The registry's primary key, compared as an exact string after surrounding whitespace is trimmed. Bounded at 512 bytes because it keys the community's storage.
100
+ */
101
+ export type CredentialTypeUri = string;
102
+ /**
103
+ * Plain-language summary of the criterion, written by the registering administrator. Published to prospective applicants in the join manifest, and used as the `purpose` of the credential-exchange/query a join sends when it is present — so it is read by applicants and their agents, not only by administrators. Untrusted as a statement of the rule: where it and `query` or `vetting` disagree, those govern.
104
+ */
105
+ export type CriterionDescription = string;
94
106
  /**
95
107
  * The root of the room's record tree — a host's commitment to *which records the room holds*, as distinct from what any one of them says.
96
108
  *
@@ -128,6 +140,10 @@ export type DeviceAttestation_DeviceV0_1 = WebAuthnAttestation_DeviceV0_1 | Appl
128
140
  * Producer-supplied attestation at registration time, verifiable by the maintainer against the platform's attestation infrastructure. Tagged union over the discriminator `kind`.
129
141
  */
130
142
  export type DeviceAttestation_DeviceV0_2 = WebAuthnAttestation_DeviceV0_2 | AppleAppAttest_DeviceV0_2 | PlayIntegrity_DeviceV0_2 | Tpm_DeviceV0_2 | NitroEnclave_DeviceV0_2 | NoAttestation_DeviceV0_2;
143
+ /**
144
+ * A human-readable name for where the key lives, chosen by the enrolling identity — e.g. `Work laptop — Chrome`. Read by that identity and by administrators deciding which key to revoke; retained with the delegation. Free text authored by the enrolling identity, untrusted, and attributed to it wherever it is rendered. Absent rather than invented when none was chosen: an invented label is indistinguishable from a chosen one to somebody deciding which key to revoke.
145
+ */
146
+ export type DeviceLabel = string;
131
147
  /**
132
148
  * A DID Core verification relationship.
133
149
  */
@@ -154,6 +170,14 @@ export type DigestMultibase = string;
154
170
  * The kinds of drift, named so that a task can select a drift item by kind. The same values, with the same meanings, as `DriftItem`'s `type`, which keeps its own inline list so that `DriftItem` stays textually identical to 0.1; the two lists change together. `roleAdded` — someone holds a forge role the projection does not give them. `roleRemoved` — a projected role is missing. `roleChanged` — a projected role is present at another level. `requiredCheckMissing` — the verify-trust check is no longer required. `protectionWeakened` — branch protection or a ruleset is weaker than the projection in another way (force-push allowed, bypass actors added). `bootstrapMissing` — a bootstrap file or variable is gone.
155
171
  */
156
172
  export type DriftType = "roleAdded" | "roleRemoved" | "roleChanged" | "requiredCheckMissing" | "protectionWeakened" | "bootstrapMissing";
173
+ /**
174
+ * The DTG credential catalog type the entry binds to, e.g. `MembershipCredential`. Absent for a community-defined endorsement type that maps onto the generic `EndorsementCredential`.
175
+ */
176
+ export type DtgType = string;
177
+ /**
178
+ * An ISO 8601 duration in weeks, days, hours, minutes and seconds only (e.g. `P120D`, `P2W`, `P1DT12H`, `PT15M`). Years and months are refused: their length depends on the calendar, and an age limit that means different things on different days is not a limit.
179
+ */
180
+ export type Duration = string;
157
181
  /**
158
182
  * Whether the subject is permitted. The ABSENCE of any grant is treated as `deny` (default-deny).
159
183
  */
@@ -213,6 +237,10 @@ export type FaceReach = {
213
237
  * **Superseded by `WorldColour`** — the same set, under the name the rest of the family now uses. Retained because `persona/facet/*` is retired in favour of `persona/world/*`, and a retired specification's schema is frozen, so the definition it references has to stay. New work references `WorldColour`. A colour **name**, resolved by each consumer against its own palette — never a hex value or any other literal. Two reasons, and both are about the consumer rather than the holder. A literal cannot be legible in a terminal, in a light theme and in a dark one at once, so a stored `#8B0000` is a colour that is wrong somewhere and the holder has no way to know where. And a consumer that reserves colours to mean something — an error, a warning, an irreversible act — must be able to keep a holder's decorative choice out of that channel; it cannot do that with an arbitrary value, and it can do it trivially with a closed set it maps itself. The eight members are chosen to be distinguishable from one another and deliberately carry no status connotation: none is named for success, warning or danger.
214
238
  */
215
239
  export type FacetColour = "slate" | "indigo" | "teal" | "moss" | "sand" | "clay" | "rose" | "plum";
240
+ /**
241
+ * A range of a file's bytes, base64url-encoded without padding (RFC 4648 §5). Empty for an empty range. Bounded at 349526 characters, the unpadded encoding of the 262144-byte range ceiling.
242
+ */
243
+ export type FileData = string;
216
244
  /**
217
245
  * The lowercased DNS host of a forge: `github.com`, a GitHub Enterprise Server host, `codeberg.org`, or a self-hosted Forgejo instance such as `git.example.org`. No scheme, no port, no path. The host is a segment of every resource, so a right never crosses forges.
218
246
  */
@@ -221,6 +249,10 @@ export type ForgeHost = string;
221
249
  * An identifier the forge itself assigns — a repository id, a user or organisation id — carried as a string so a forge whose ids are not numbers needs no new version. GitHub and Forgejo ids are decimal integers written as strings (`"812736451"`). Unlike a name, it survives renames and transfers, which is why rights and bindings are keyed by it.
222
250
  */
223
251
  export type ForgeId = string;
252
+ /**
253
+ * Validity of a grant the sweep issues, in seconds: between one day and two years, the bounds vtc/vetting/vetters/grant applies to an administrator's grants.
254
+ */
255
+ export type GrantValiditySeconds = number;
224
256
  /**
225
257
  * The highest version among the records `DataCommitment` covers. `0` for a room that holds none.
226
258
  *
@@ -277,6 +309,10 @@ export type Kind = "dm" | "group" | "channel";
277
309
  * A BCP 47 language tag, e.g. `en`, `de-AT`. Compared case-insensitively.
278
310
  */
279
311
  export type LanguageTag = string;
312
+ /**
313
+ * Why the edge was suspended or restored, stored verbatim on the lifecycle event. Free text written by the caller — the edge's issuer or a moderating administrator — and read by the counterparty and by administrators; retained with the edge. Untrusted, attributed to its author wherever rendered, and never read by the community's state machine.
314
+ */
315
+ export type LifecycleReason = string;
280
316
  /**
281
317
  * Scopes one application's records within a context, so several tools can share a context without colliding — `openvtc`, `cnm`, an agent runtime. The maintainer MUST NOT interpret the value; it is an opaque partition name. Namespaces are first-come and unreserved, so an application SHOULD pick a stable, specific one: a future per-namespace ACL would grant on this exact string, which makes renaming a namespace a migration rather than an edit.
282
318
  */
@@ -461,6 +497,12 @@ export type RepoResource = string;
461
497
  * Repository visibility on the forge.
462
498
  */
463
499
  export type RepoVisibility = "public" | "private";
500
+ /**
501
+ * What the community asks an applicant to tell it about themselves, as claim types — never values. At most 32 entries, and no claim type twice: two answers to one question is a question nobody can answer. Self-asserted by the applicant when answered; a community MUST NOT describe an answer as verified. Empty means the community asks nothing.
502
+ *
503
+ * @maxItems 32
504
+ */
505
+ export type RequestedAttributes = RequestedAttribute[];
464
506
  /**
465
507
  * A forge-qualified resource: `<forge-host>/<owner>` for a namespace, or `<forge-host>/<owner>/<repo>` for one repository, all lowercase — `github.com/acme`, `github.com/acme/widgets`, `codeberg.org/acme`. The forge is never implied: `acme/widgets` alone is not a resource. Containment is by whole segment: `github.com/acme` contains `github.com/acme/widgets` and does not contain `github.com/acme-labs/x` or `codeberg.org/acme/widgets`.
466
508
  */
@@ -489,6 +531,14 @@ export type RotationState = "pendingApproval" | "staged" | "overlapping" | "comp
489
531
  * How a consent prompt reaches the approver: `wake` pushes to the approver's device for a DID-signed decision; `bridge-relay` renders it through an enrolled bridge (e.g. a numbered card in the operator's messaging app) for a bridge-attested decision.
490
532
  */
491
533
  export type Route = "wake" | "bridge-relay";
534
+ /**
535
+ * An administrator's description of the entry, shown in administration surfaces. Free text written by the registering administrator and read by other administrators; untrusted, attributed to `createdByDid` wherever it is rendered, and never read by the community's own logic.
536
+ */
537
+ export type SchemaDescription = string;
538
+ /**
539
+ * Which half of the registry an entry is on. `issues`: the community mints credentials of this type, and issuance refuses a type not registered as `issues`. `accepts`: the community recognises credentials of this type as evidence, and an Accepts criterion may reference only a registered type.
540
+ */
541
+ export type SchemaKind = "issues" | "accepts";
492
542
  /**
493
543
  * What the agent may do: `receive` = read inbound on this conversation; `converse` = read and reply.
494
544
  */
@@ -549,6 +599,14 @@ export type ServiceKind = "didcomm" | "rest" | "tsp" | "webauthn";
549
599
  * `EdDSA` pairs with an `ed25519` key; `ES256` pairs with a `p256` key; `ML-DSA-44` and `ML-DSA-65` pair with `mldsa44` and `mldsa65` keys respectively. An `x25519` key performs key agreement and can sign nothing, so no algorithm here is valid for one. These are JOSE algorithm identifiers, externally owned, so they are carried verbatim and never re-cased (SPEC.md §4.10 rule 5); the ML-DSA names are those RFC 9964 registers in the JOSE Web Signature and Encryption Algorithms registry, which is why their hyphenated casing differs from the `keyType` values beside them — those are specification-defined. The set is expected to grow as algorithms are registered. The enumeration remains closed: an unrecognised algorithm is refused rather than silently substituted with a supported one.
550
600
  */
551
601
  export type SignAlgorithm = "EdDSA" | "ES256" | "ML-DSA-44" | "ML-DSA-65";
602
+ /**
603
+ * The delegated key, as a `did:key` — an Ed25519 multikey (`z6Mk…`) derived from the public half of a keypair the holder generated for itself, typically a non-extractable browser key. `did:key` only, because its document is a function of the key and resolves with no network: a key whose DID document could be rewritten after enrolment is not the key that was enrolled.
604
+ */
605
+ export type SigningKeyDid = string;
606
+ /**
607
+ * What a delegated key may be accepted for. `console`: the operations an administration console performs on the identity's behalf, authorized by the identity's own standing. Never an approver's signature on a consent or approval decision, whatever the scope: those require an `assertionMethod` key of the approver's own DID document, which a delegated key never is. A closed enumeration so a consumer cannot be asked for a scope it does not define; a later version adds values.
608
+ */
609
+ export type SigningKeyScope = "console";
552
610
  /**
553
611
  * A single binding target for a vault entry. Tagged union over the discriminator `kind`. A VaultEntry's `targets` array MAY mix any number of these.
554
612
  */
@@ -569,6 +627,10 @@ export type SiteTarget_VaultV0_2 = WebOrigin_VaultV0_2 | Did_VaultV0_2 | IosApp_
569
627
  * Other values are the holder's or the producer's own and carry no meaning a maintainer interprets.
570
628
  */
571
629
  export type Slot = string;
630
+ /**
631
+ * Minutes between sweeps: at most every five minutes, at least once a day.
632
+ */
633
+ export type SweepMinutes = number;
572
634
  export type SyncEvent_SyncV0_1 = VaultUpsertedEvent_SyncV0_1 | VaultDeletedEvent_SyncV0_1 | AclChangedEvent_SyncV0_1 | PolicyChangedEvent_SyncV0_1;
573
635
  export type SyncEvent_SyncV0_2 = VaultUpsertedEvent_SyncV0_2 | VaultDeletedEvent_SyncV0_2 | AclChangedEvent_SyncV0_2 | PolicyChangedEvent_SyncV0_2;
574
636
  /**
@@ -587,6 +649,10 @@ export type TrafficStage = "received" | "stored" | "delivered" | "forwarded" | "
587
649
  * A ULID in Crockford base32, uppercase. Used for `attributeId` and `profileId`. Chosen over a UUID because the leading 48 bits are a timestamp, so a key-ordered scan of the store is also creation-ordered and a `list` needs no secondary sort. Server-assigned on create; a producer MAY supply one to make a create idempotent, and a maintainer MUST reject a supplied value that already exists rather than silently overwriting.
588
650
  */
589
651
  export type Ulid = string;
652
+ /**
653
+ * Handle for one upload across begin, chunk, commit and abort, and — for a bundle — deploy. Recipient-generated and unguessable, which is what lets a reference to somebody else's upload be answered as not-found without confirming it exists. Opaque: a producer quotes what it was given.
654
+ */
655
+ export type UploadId = string;
590
656
  /**
591
657
  * The JSON shape of `value`, declared so that a consumer can render and compare without guessing. The maintainer validates that `value` agrees with this member and does nothing further: it does NOT validate a phone number against a phone-number grammar. That is a producer's affordance, and a store that grows opinions about the contents of its records eventually blocks its consumer's release.
592
658
  */
@@ -784,6 +850,14 @@ export type Vid = string;
784
850
  * How much of a room its host can see, fixed at creation and immutable thereafter. `open`: records are cleartext, searchable and fully audited. `attributed`: record content is sealed, and the host still learns which member acted. `private`: content is sealed and membership is presented in zero knowledge, so the host verifies that a member acted without learning which. Immutable because a downgrade cannot un-see cleartext and an upgrade would protect only what came after while presenting as though it protected everything.
785
851
  */
786
852
  export type Visibility = "open" | "attributed" | "private";
853
+ /**
854
+ * A file's content hash: the lowercase hex SHA-256 of its bytes — the `etag` vtc/website/files/list reports, and the `ETag` a direct read of the path returns, without the HTTP quotes.
855
+ */
856
+ export type WebsiteEtag = string;
857
+ /**
858
+ * A file's path relative to the site root, `/`-separated, with or without a leading `/`. The community resolves it inside the site root and refuses one that escapes the root (`..`), names a hidden file or directory (a segment beginning `.`), carries a blocklisted extension, or contains a control character — the same rules the public read handler applies, so nothing can be written that the site would refuse to serve, and nothing can be read that it would not.
859
+ */
860
+ export type WebsitePath = string;
787
861
  /**
788
862
  * The protocol a message travelled in, as the mediator detected it from the wire form. `didcomm` is DIDComm v2 (JWE/JWS); `didcommV1` is a DIDComm v1 envelope; `tsp` is a Trust Spanning Protocol message; `other` is anything the mediator could not classify.
789
863
  */
@@ -792,6 +866,23 @@ export type WireProtocol = "didcomm" | "didcommV1" | "tsp" | "other";
792
866
  * A colour **name**, resolved by each consumer against its own palette — never a hex value or any other literal. Two reasons, and both are about the consumer rather than the holder. A literal cannot be legible in a terminal, in a light theme and in a dark one at once, so a stored `#8B0000` is a colour that is wrong somewhere and the holder has no way to know where. And a consumer that reserves colours to mean something — an error, a warning, an irreversible act — must be able to keep a holder's decorative choice out of that channel; it cannot do that with an arbitrary value, and it can do it trivially with a closed set it maps itself. The eight members are chosen to be distinguishable from one another and deliberately carry no status connotation: none is named for success, warning or danger.
793
867
  */
794
868
  export type WorldColour = "slate" | "indigo" | "teal" | "moss" | "sand" | "clay" | "rose" | "plum";
869
+ /**
870
+ * A named required-evidence criterion: the DCQL query a ceremony runs to decide whether a holder's presented credentials satisfy the community, and the peer identity vetting it requires. What vtc/join-requests/manifest/0.2 publishes to applicants as a `Criterion` is derived from this.
871
+ */
872
+ export interface AcceptsCriterion {
873
+ id: AcceptsCriterionId;
874
+ query: DcqlQuery;
875
+ description?: CriterionDescription;
876
+ vetting?: VettingRequirements;
877
+ /**
878
+ * When this criterion was last registered. Registering an existing id replaces it.
879
+ */
880
+ createdAt: string;
881
+ /**
882
+ * The administrator who last registered the criterion.
883
+ */
884
+ createdByDid: string;
885
+ }
795
886
  /**
796
887
  * The mediator's view of one served account.
797
888
  */
@@ -1286,6 +1377,39 @@ export interface AuthorityPresentation {
1286
1377
  */
1287
1378
  subjectBinding?: string;
1288
1379
  }
1380
+ /**
1381
+ * The effective configuration — defaults filled in — and the last sweep.
1382
+ */
1383
+ export interface AutoGrantStatus {
1384
+ /**
1385
+ * Whether the sweep runs.
1386
+ */
1387
+ enabled: boolean;
1388
+ sweepMinutes: SweepMinutes;
1389
+ validitySeconds: GrantValiditySeconds;
1390
+ lastSweep?: AutoGrantSweep;
1391
+ }
1392
+ /**
1393
+ * What one sweep did.
1394
+ */
1395
+ export interface AutoGrantSweep {
1396
+ /**
1397
+ * When the sweep finished.
1398
+ */
1399
+ ranAt: string;
1400
+ /**
1401
+ * Grants issued.
1402
+ */
1403
+ granted: number;
1404
+ /**
1405
+ * Automatic grants revoked. The sweep revokes only grants it issued.
1406
+ */
1407
+ revoked: number;
1408
+ /**
1409
+ * Members the sweep could not decide or act on.
1410
+ */
1411
+ errors: number;
1412
+ }
1289
1413
  /**
1290
1414
  * Unencrypted metadata plus the encrypted payload. The KDF and cipher parameters travel in the clear so a reader can decrypt without knowing this specification's defaults.
1291
1415
  */
@@ -1477,6 +1601,24 @@ export interface ChunkedDescriptor {
1477
1601
  expectedSizeBytes: ExpectedSizeBytes;
1478
1602
  expiresAt: ExpiresAt;
1479
1603
  }
1604
+ /**
1605
+ * OPTIONAL. How the community asks to be shown to a prospective applicant: a name, an accent colour and a logo. Presentation only, self-asserted and unverified — `communityDid` identifies the community, never `branding`. Not part of any criterion, so not covered by a `requirementsDigest`. Every member is optional.
1606
+ */
1607
+ export interface CommunityBranding {
1608
+ /**
1609
+ * The community's name as it asks to be shown.
1610
+ */
1611
+ displayName?: string;
1612
+ /**
1613
+ * An sRGB colour as `#rrggbb`, compared case-insensitively. A community SHOULD write it in lower case.
1614
+ */
1615
+ accentColor?: string;
1616
+ /**
1617
+ * An https URL of the community's logo. Fetched by the client, so an untrusted image from wherever it points.
1618
+ */
1619
+ logoUrl?: string;
1620
+ ext?: Ext;
1621
+ }
1480
1622
  /**
1481
1623
  * A community profile as a portable export carries it — the mutable profile members plus the immutable identity they belong to.
1482
1624
  *
@@ -1823,6 +1965,12 @@ export interface CredentialReference {
1823
1965
  */
1824
1966
  expiresAt?: string | null;
1825
1967
  }
1968
+ /**
1969
+ * A JSON Schema (the W3C `credentialSchema` a credential of this type must conform to), carried as data. Any JSON Schema the community's validator compiles; this specification does not constrain its members. Absent means the type is registered with no schema constraint.
1970
+ */
1971
+ export interface CredentialSchema {
1972
+ [k: string]: unknown | undefined;
1973
+ }
1826
1974
  /**
1827
1975
  * A W3C Data Integrity proof by the card's publisher. Additional Data Integrity members (e.g. `created`) are permitted and are covered as the cryptosuite defines.
1828
1976
  */
@@ -1840,6 +1988,12 @@ export interface DataIntegrityProof {
1840
1988
  proofValue: string;
1841
1989
  [k: string]: unknown | undefined;
1842
1990
  }
1991
+ /**
1992
+ * An OpenID for Verifiable Presentations DCQL query, carried verbatim: per-credential `format`, `meta` type selector (`vct_values`) and requested `claims`. Defined by OID4VP and not re-specified here; snake_case member names are DCQL's own. The community parses it as DCQL and checks every type it references against the registry.
1993
+ */
1994
+ export interface DcqlQuery {
1995
+ [k: string]: unknown | undefined;
1996
+ }
1843
1997
  /**
1844
1998
  * One presentation request awaiting the holder's decision, as the approver sees it.
1845
1999
  *
@@ -2696,6 +2850,39 @@ export interface HpkeArmoredEnvelope_VaultV0_2 {
2696
2850
  */
2697
2851
  producerAssertion?: "didSigned" | "attested" | "pinnedOnly";
2698
2852
  }
2853
+ /**
2854
+ * Whether the edge is in force now, and if not, why not — the edge's resolved state, which is not the same thing as the event just recorded: restoring an edge whose `validUntil` passed while it was suspended records the restoration and still resolves `expired`. Exactly the members its `state` names are present.
2855
+ */
2856
+ export interface InForce {
2857
+ /**
2858
+ * `yes`: inside its window, nothing standing against it. `notYetValid`: its `validFrom` has not arrived. `expired`: its `validUntil` has passed. `suspended`: temporarily ineffective — the only non-`yes` state a lifecycle event can reverse. `superseded`: displaced by a later credential. `withdrawn`: terminal. `indeterminate`: the credential's own window could not be read, so no honest answer is available.
2859
+ */
2860
+ state: "yes" | "notYetValid" | "expired" | "suspended" | "superseded" | "withdrawn" | "indeterminate";
2861
+ /**
2862
+ * Present for `notYetValid`.
2863
+ */
2864
+ validFrom?: string;
2865
+ /**
2866
+ * Present for `expired`.
2867
+ */
2868
+ validUntil?: string;
2869
+ /**
2870
+ * Present for `suspended`: when the standing suspension was recorded.
2871
+ */
2872
+ since?: string;
2873
+ /**
2874
+ * Present for `superseded` and `withdrawn`.
2875
+ */
2876
+ at?: string;
2877
+ /**
2878
+ * Present for `superseded`: the digest of the credential that displaced it.
2879
+ */
2880
+ by?: string;
2881
+ /**
2882
+ * Present for `indeterminate`: why the window could not be read. Written by the community.
2883
+ */
2884
+ reason?: string;
2885
+ }
2699
2886
  /**
2700
2887
  * Registry view of one issued Invitation Credential. Carries no credential material — the VIC itself is returned only once, by `issue`.
2701
2888
  */
@@ -2795,6 +2982,16 @@ export interface IssuedCredentialBase {
2795
2982
  */
2796
2983
  expiresAt: string;
2797
2984
  }
2985
+ /**
2986
+ * Whether this community answers vtc/join-requests/manifest to a caller it cannot identify.
2987
+ */
2988
+ export interface JoinDiscovery {
2989
+ /**
2990
+ * True: the manifest is answered to any caller, identified or not — the setting of every community that never chose, because the manifest is a public read by design (an applicant has to know what is asked of them before they disclose anything). False: the manifest is answered only to a caller the community can identify — one with a verified proof or a transport-authenticated sender. Not secrecy: an identified caller is answered either way. False makes the answer attributable, which is what a closed or invite-only community wants rather than a crawler enumerating its criteria.
2991
+ */
2992
+ public: boolean;
2993
+ ext?: Ext;
2994
+ }
2798
2995
  /**
2799
2996
  * One application to join a Verifiable Trust Community.
2800
2997
  */
@@ -4038,6 +4235,20 @@ export interface RepoSummary_GitNsV0_3 {
4038
4235
  bootstrap: Bootstrap;
4039
4236
  sync: Sync;
4040
4237
  }
4238
+ export interface RequestedAttribute {
4239
+ /**
4240
+ * A claim-type token from the persona claim-type registry (persona/_shared/0.1/CLAIM-TYPES.md) — `name.display`, `address.country` — or an `x:` extension token.
4241
+ */
4242
+ type: string;
4243
+ /**
4244
+ * False for an attribute the applicant may decline. A submission missing a required one is refused with vtc/join-requests/submit:attributesMissing.
4245
+ */
4246
+ required?: boolean;
4247
+ /**
4248
+ * Why the community asks, in words shown to the applicant before they disclose.
4249
+ */
4250
+ purpose?: string;
4251
+ }
4041
4252
  /**
4042
4253
  * One held credential a deferred query asked for, and the claims of it that would be disclosed.
4043
4254
  */
@@ -4368,6 +4579,45 @@ export interface RotationRecord {
4368
4579
  */
4369
4580
  cacheHorizonAt?: string;
4370
4581
  }
4582
+ /**
4583
+ * One registered credential type, as the community stores it.
4584
+ */
4585
+ export interface SchemaEntry {
4586
+ typeUri: CredentialTypeUri;
4587
+ dtgType?: DtgType;
4588
+ credentialSchema?: CredentialSchema;
4589
+ kind: SchemaKind;
4590
+ description?: SchemaDescription;
4591
+ /**
4592
+ * When this entry was last registered. Registering an existing type replaces the entry, so this is the time of the latest registration, not the first.
4593
+ */
4594
+ createdAt: string;
4595
+ /**
4596
+ * The administrator who last registered the entry.
4597
+ */
4598
+ createdByDid: string;
4599
+ }
4600
+ /**
4601
+ * One registered credential type as a listing reports it: every member of `SchemaEntry` except the `credentialSchema` body, which vtc/schemas/show returns.
4602
+ */
4603
+ export interface SchemaSummary {
4604
+ typeUri: CredentialTypeUri;
4605
+ dtgType?: DtgType;
4606
+ kind: SchemaKind;
4607
+ description?: SchemaDescription;
4608
+ /**
4609
+ * Whether the entry carries a `credentialSchema`. True tells a caller that vtc/schemas/show has a body to return.
4610
+ */
4611
+ hasCredentialSchema: boolean;
4612
+ /**
4613
+ * When this entry was last registered.
4614
+ */
4615
+ createdAt: string;
4616
+ /**
4617
+ * The administrator who last registered the entry.
4618
+ */
4619
+ createdByDid: string;
4620
+ }
4371
4621
  export interface Builtin_VtaV0_1 {
4372
4622
  type: "builtin";
4373
4623
  }
@@ -4596,6 +4846,38 @@ export interface Session_AuthV0_2 {
4596
4846
  */
4597
4847
  ext?: Ext;
4598
4848
  }
4849
+ /**
4850
+ * One signing-key delegation, as its holder sees it. A delegation confers nothing of its own: it names an identity that already holds whatever standing it holds, and a document signed by the key is authorized by that identity's standing read at execution time.
4851
+ */
4852
+ export interface SigningKey {
4853
+ signingKeyDid: SigningKeyDid;
4854
+ /**
4855
+ * The identity the key acts for. Included so a holder need not infer it.
4856
+ */
4857
+ identityDid: string;
4858
+ scope: SigningKeyScope;
4859
+ deviceLabel?: DeviceLabel;
4860
+ /**
4861
+ * When the delegation was enrolled.
4862
+ */
4863
+ createdAt: string;
4864
+ /**
4865
+ * When the delegation stops authorizing documents. Always present: the consumer sets it at enrolment and caps it at its own maximum lifetime, whatever the producer asked for, so no delegation outlives the consumer's policy.
4866
+ */
4867
+ expiresAt: string;
4868
+ /**
4869
+ * When the delegation last authorized a document, as far as the consumer recorded. A usability signal for choosing which key to revoke, recorded best-effort; its absence does not mean the key was never used.
4870
+ */
4871
+ lastUsedAt?: string;
4872
+ /**
4873
+ * When the delegation was revoked. A revoked delegation authorizes nothing and its key cannot be enrolled again.
4874
+ */
4875
+ revokedAt?: string;
4876
+ /**
4877
+ * Whether the delegation authorizes documents right now: not revoked and not past `expiresAt`. Computed by the consumer with the predicate its verifier applies, so a holder does not re-implement it and disagree.
4878
+ */
4879
+ active: boolean;
4880
+ }
4599
4881
  export interface WebOrigin_VaultV0_1 {
4600
4882
  kind: "web-origin";
4601
4883
  /**
@@ -4866,6 +5148,14 @@ export interface TspMessageEnvelope_VaultV0_2 {
4866
5148
  */
4867
5149
  message: string;
4868
5150
  }
5151
+ /**
5152
+ * What the uploaded bytes are for, committed before any byte moves. `file`: one file at `path`, written into the site when the upload commits — the single-file write. `bundle`: a gzip-compressed tar of the whole site, staged when the upload commits and published by vtc/website/deploy. `path` is required for a `file` target and forbidden for a `bundle`, and `ifMatch` is allowed only for a `file` — rules over two members that this schema does not express; a community refuses a violation with `malformedRequest`. `ifMatch` is optimistic concurrency: the write commits only if the file's current content hash is this value.
5153
+ */
5154
+ export interface UploadTarget {
5155
+ kind: "file" | "bundle";
5156
+ path?: WebsitePath;
5157
+ ifMatch?: WebsiteEtag;
5158
+ }
4869
5159
  export interface VaultDeletedEvent_SyncV0_1 {
4870
5160
  kind: "vault.deleted";
4871
5161
  seq: number;
@@ -5310,6 +5600,87 @@ export interface VettingCardClaim {
5310
5600
  */
5311
5601
  provenance: string;
5312
5602
  }
5603
+ /**
5604
+ * What identity-vetting evidence a criterion needs, beyond what a presentation-definition can express: distinct eligible vetters, per-method floors, independence caps. Every number is the community's own policy. This schema supplies no defaults — an absent optional member means the community imposes no constraint of that kind, never that some protocol value applies. Deliberately open: a consumer MUST ignore members it does not recognise, so a community publishing a newer shape does not make an older client unable to read the rest. Durations: `maxStatementAge` — a statement older than this at decision time does not count (absent: no limit beyond the statement's own validity); `decisionSla` — how long after submission the community undertakes to decide, including on a referred application; `requirementsGrace` — how long an application started under an earlier `requirementsDigest` is still evaluated under that version.
5605
+ */
5606
+ export interface VettingRequirements {
5607
+ /**
5608
+ * Version of this requirements object's shape. `0.1` for the members defined here.
5609
+ */
5610
+ version: string;
5611
+ /**
5612
+ * The endorsement type URI a counted vetting statement carries as `credentialSubject.endorsement.type`, as registered with the community via vtc/endorsement-types/register.
5613
+ */
5614
+ statementType: string;
5615
+ /**
5616
+ * How many counted statements are needed, counting each vetter once however many DIDs they hold.
5617
+ */
5618
+ minStatements: number;
5619
+ /**
5620
+ * Per-method floors within `minStatements` — e.g. `{ "inPerson": 1 }`. Every method named MUST also be in `acceptedMethods`. Absent: no method floor.
5621
+ */
5622
+ minByMethod?: {
5623
+ [k: string]: number | undefined;
5624
+ };
5625
+ /**
5626
+ * Methods whose statements count at all.
5627
+ *
5628
+ * @minItems 1
5629
+ */
5630
+ acceptedMethods: [VettingMethod, ...VettingMethod[]];
5631
+ /**
5632
+ * Documentation a statement must have relied on in order to count. Absent — the expected case — means each vetter decides what documentation they accept, including none for prior acquaintance, and the community counts what they attest.
5633
+ *
5634
+ * @minItems 1
5635
+ */
5636
+ acceptedDocumentClasses?: [VettingDocumentation, ...VettingDocumentation[]];
5637
+ /**
5638
+ * Claim types the applicant's Vetting Card must carry, which the identity commitment is computed over, and which a counted statement must list as verified. Absent: none.
5639
+ */
5640
+ requiredClaims?: ClaimType[];
5641
+ /**
5642
+ * Claim types an applicant MAY add to the card and a vetter MAY verify. They never affect whether a statement counts.
5643
+ */
5644
+ optionalClaims?: ClaimType[];
5645
+ maxStatementAge?: Duration;
5646
+ /**
5647
+ * How a vetter's eligibility is established.
5648
+ */
5649
+ eligibleVetters: {
5650
+ /**
5651
+ * The role named in a community-issued `CommunityRole` endorsement credential (see `vtc/vetting/vetters/grant/0.1`). A statement counts only if its issuer holds that credential.
5652
+ */
5653
+ role: string;
5654
+ };
5655
+ /**
5656
+ * Caps on how much evidence may come from people close to the applicant. Absent: no caps.
5657
+ */
5658
+ independence?: {
5659
+ /**
5660
+ * The most counted statements that may come from vetters declaring each relationship — e.g. `{ "family": 0 }`.
5661
+ */
5662
+ maxByDeclaredRelationship?: {
5663
+ [k: string]: number | undefined;
5664
+ };
5665
+ /**
5666
+ * When true, every counted statement must carry the same identity commitment — all vetters verified the same claimed identity. Absent: false.
5667
+ */
5668
+ requireConsistentIdentityCommitment?: boolean;
5669
+ };
5670
+ /**
5671
+ * Whether an invitation credential must accompany the statements at submission (`required`), may (`optional`), or plays no part (`none`). Absent: the presentation-definition alone governs.
5672
+ */
5673
+ invitation?: "required" | "optional" | "none";
5674
+ decisionSla?: Duration;
5675
+ requirementsGrace?: Duration;
5676
+ /**
5677
+ * Where the community's vetting governance — including the attestation text vetters sign — is published.
5678
+ */
5679
+ governanceFrameworkUrl?: string;
5680
+ ext?: Ext;
5681
+ extCritical?: ExtCritical;
5682
+ [k: string]: unknown | undefined;
5683
+ }
5313
5684
  /**
5314
5685
  * An opaque, gateway-issued reference to a device's push channel (push wake-up binding, https://trusttasks.org/binding/push/0.1). The push gateway returns it to the device at registration; the device conveys it to its VTA (device/set-wake), and the VTA provisions it to authorized triggers (its mediator and/or itself). The raw platform push token (APNs/FCM/WebPush) is held ONLY by the gateway and is never represented here — the handle abstracts the platform, so adding new push methods (e.g. PWA Web Push) needs no change to triggers or VTA config. A handle is a bearer capability to *request* a wake (subject to the gateway's allowlist), never to read the channel.
5315
5686
  */