@openvtc/trust-tasks 0.28.17 → 0.28.19

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 (187) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/dist/_shared/components.d.ts +254 -1
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/index.d.ts +87 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +87 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/vta/collection/_shared/0.1/collection.d.ts +2 -2
  9. package/dist/vta/collection/_shared/0.1/collection.d.ts.map +1 -1
  10. package/dist/vta/collection/list/0.1/payload.d.ts +4 -4
  11. package/dist/vta/collection/list/0.1/payload.js +2 -2
  12. package/dist/vta/collection/list/0.1/payload.js.map +1 -1
  13. package/dist/vta/collection/settings/set/0.1/payload.d.ts +469 -0
  14. package/dist/vta/collection/settings/set/0.1/payload.d.ts.map +1 -0
  15. package/dist/vta/collection/settings/set/0.1/payload.js +275 -0
  16. package/dist/vta/collection/settings/set/0.1/payload.js.map +1 -0
  17. package/dist/vta/collection/settings/show/0.1/payload.d.ts +437 -0
  18. package/dist/vta/collection/settings/show/0.1/payload.d.ts.map +1 -0
  19. package/dist/vta/collection/settings/show/0.1/payload.js +260 -0
  20. package/dist/vta/collection/settings/show/0.1/payload.js.map +1 -0
  21. package/dist/vtc/badges/_shared/0.1/badge.d.ts +22 -0
  22. package/dist/vtc/badges/_shared/0.1/badge.d.ts.map +1 -0
  23. package/dist/vtc/badges/_shared/0.1/badge.js +6 -0
  24. package/dist/vtc/badges/_shared/0.1/badge.js.map +1 -0
  25. package/dist/vtc/badges/awards/list/0.1/payload.d.ts +1228 -0
  26. package/dist/vtc/badges/awards/list/0.1/payload.d.ts.map +1 -0
  27. package/dist/vtc/badges/awards/list/0.1/payload.js +699 -0
  28. package/dist/vtc/badges/awards/list/0.1/payload.js.map +1 -0
  29. package/dist/vtc/badges/awards/offer/0.1/payload.d.ts +793 -0
  30. package/dist/vtc/badges/awards/offer/0.1/payload.d.ts.map +1 -0
  31. package/dist/vtc/badges/awards/offer/0.1/payload.js +461 -0
  32. package/dist/vtc/badges/awards/offer/0.1/payload.js.map +1 -0
  33. package/dist/vtc/badges/awards/revoke/0.1/payload.d.ts +605 -0
  34. package/dist/vtc/badges/awards/revoke/0.1/payload.d.ts.map +1 -0
  35. package/dist/vtc/badges/awards/revoke/0.1/payload.js +351 -0
  36. package/dist/vtc/badges/awards/revoke/0.1/payload.js.map +1 -0
  37. package/dist/vtc/badges/awards/withdraw/0.1/payload.d.ts +605 -0
  38. package/dist/vtc/badges/awards/withdraw/0.1/payload.d.ts.map +1 -0
  39. package/dist/vtc/badges/awards/withdraw/0.1/payload.js +351 -0
  40. package/dist/vtc/badges/awards/withdraw/0.1/payload.js.map +1 -0
  41. package/dist/vtc/badges/create/0.1/payload.d.ts +1829 -0
  42. package/dist/vtc/badges/create/0.1/payload.d.ts.map +1 -0
  43. package/dist/vtc/badges/create/0.1/payload.js +1051 -0
  44. package/dist/vtc/badges/create/0.1/payload.js.map +1 -0
  45. package/dist/vtc/badges/holders/list/0.1/payload.d.ts +984 -0
  46. package/dist/vtc/badges/holders/list/0.1/payload.d.ts.map +1 -0
  47. package/dist/vtc/badges/holders/list/0.1/payload.js +555 -0
  48. package/dist/vtc/badges/holders/list/0.1/payload.js.map +1 -0
  49. package/dist/vtc/badges/images/get/0.1/payload.d.ts +454 -0
  50. package/dist/vtc/badges/images/get/0.1/payload.d.ts.map +1 -0
  51. package/dist/vtc/badges/images/get/0.1/payload.js +266 -0
  52. package/dist/vtc/badges/images/get/0.1/payload.js.map +1 -0
  53. package/dist/vtc/badges/images/upload/0.1/payload.d.ts +455 -0
  54. package/dist/vtc/badges/images/upload/0.1/payload.d.ts.map +1 -0
  55. package/dist/vtc/badges/images/upload/0.1/payload.js +276 -0
  56. package/dist/vtc/badges/images/upload/0.1/payload.js.map +1 -0
  57. package/dist/vtc/badges/kudos/give/0.1/payload.d.ts +613 -0
  58. package/dist/vtc/badges/kudos/give/0.1/payload.d.ts.map +1 -0
  59. package/dist/vtc/badges/kudos/give/0.1/payload.js +353 -0
  60. package/dist/vtc/badges/kudos/give/0.1/payload.js.map +1 -0
  61. package/dist/vtc/badges/kudos/list/0.1/payload.d.ts +1766 -0
  62. package/dist/vtc/badges/kudos/list/0.1/payload.d.ts.map +1 -0
  63. package/dist/vtc/badges/kudos/list/0.1/payload.js +995 -0
  64. package/dist/vtc/badges/kudos/list/0.1/payload.js.map +1 -0
  65. package/dist/vtc/badges/list/0.1/payload.d.ts +1096 -0
  66. package/dist/vtc/badges/list/0.1/payload.d.ts.map +1 -0
  67. package/dist/vtc/badges/list/0.1/payload.js +617 -0
  68. package/dist/vtc/badges/list/0.1/payload.js.map +1 -0
  69. package/dist/vtc/badges/mine/accept/0.1/payload.d.ts +1376 -0
  70. package/dist/vtc/badges/mine/accept/0.1/payload.d.ts.map +1 -0
  71. package/dist/vtc/badges/mine/accept/0.1/payload.js +799 -0
  72. package/dist/vtc/badges/mine/accept/0.1/payload.js.map +1 -0
  73. package/dist/vtc/badges/mine/arrange/0.1/payload.d.ts +1217 -0
  74. package/dist/vtc/badges/mine/arrange/0.1/payload.d.ts.map +1 -0
  75. package/dist/vtc/badges/mine/arrange/0.1/payload.js +698 -0
  76. package/dist/vtc/badges/mine/arrange/0.1/payload.js.map +1 -0
  77. package/dist/vtc/badges/mine/decline/0.1/payload.d.ts +589 -0
  78. package/dist/vtc/badges/mine/decline/0.1/payload.d.ts.map +1 -0
  79. package/dist/vtc/badges/mine/decline/0.1/payload.js +344 -0
  80. package/dist/vtc/badges/mine/decline/0.1/payload.js.map +1 -0
  81. package/dist/vtc/badges/mine/hide/0.1/payload.d.ts +1093 -0
  82. package/dist/vtc/badges/mine/hide/0.1/payload.d.ts.map +1 -0
  83. package/dist/vtc/badges/mine/hide/0.1/payload.js +630 -0
  84. package/dist/vtc/badges/mine/hide/0.1/payload.js.map +1 -0
  85. package/dist/vtc/badges/mine/list/0.1/payload.d.ts +1897 -0
  86. package/dist/vtc/badges/mine/list/0.1/payload.d.ts.map +1 -0
  87. package/dist/vtc/badges/mine/list/0.1/payload.js +1087 -0
  88. package/dist/vtc/badges/mine/list/0.1/payload.js.map +1 -0
  89. package/dist/vtc/badges/mine/show/0.1/payload.d.ts +1093 -0
  90. package/dist/vtc/badges/mine/show/0.1/payload.d.ts.map +1 -0
  91. package/dist/vtc/badges/mine/show/0.1/payload.js +630 -0
  92. package/dist/vtc/badges/mine/show/0.1/payload.js.map +1 -0
  93. package/dist/vtc/badges/promote/0.1/payload.d.ts +1757 -0
  94. package/dist/vtc/badges/promote/0.1/payload.d.ts.map +1 -0
  95. package/dist/vtc/badges/promote/0.1/payload.js +1018 -0
  96. package/dist/vtc/badges/promote/0.1/payload.js.map +1 -0
  97. package/dist/vtc/badges/retire/0.1/payload.d.ts +904 -0
  98. package/dist/vtc/badges/retire/0.1/payload.d.ts.map +1 -0
  99. package/dist/vtc/badges/retire/0.1/payload.js +524 -0
  100. package/dist/vtc/badges/retire/0.1/payload.js.map +1 -0
  101. package/dist/vtc/badges/settings/show/0.1/payload.d.ts +731 -0
  102. package/dist/vtc/badges/settings/show/0.1/payload.d.ts.map +1 -0
  103. package/dist/vtc/badges/settings/show/0.1/payload.js +421 -0
  104. package/dist/vtc/badges/settings/show/0.1/payload.js.map +1 -0
  105. package/dist/vtc/badges/settings/update/0.1/payload.d.ts +775 -0
  106. package/dist/vtc/badges/settings/update/0.1/payload.d.ts.map +1 -0
  107. package/dist/vtc/badges/settings/update/0.1/payload.js +444 -0
  108. package/dist/vtc/badges/settings/update/0.1/payload.js.map +1 -0
  109. package/dist/vtc/badges/show/0.1/payload.d.ts +1056 -0
  110. package/dist/vtc/badges/show/0.1/payload.d.ts.map +1 -0
  111. package/dist/vtc/badges/show/0.1/payload.js +613 -0
  112. package/dist/vtc/badges/show/0.1/payload.js.map +1 -0
  113. package/dist/vtc/badges/update/0.1/payload.d.ts +1033 -0
  114. package/dist/vtc/badges/update/0.1/payload.d.ts.map +1 -0
  115. package/dist/vtc/badges/update/0.1/payload.js +588 -0
  116. package/dist/vtc/badges/update/0.1/payload.js.map +1 -0
  117. package/dist/vtc/badges/wall/show/0.1/payload.d.ts +1099 -0
  118. package/dist/vtc/badges/wall/show/0.1/payload.d.ts.map +1 -0
  119. package/dist/vtc/badges/wall/show/0.1/payload.js +634 -0
  120. package/dist/vtc/badges/wall/show/0.1/payload.js.map +1 -0
  121. package/dist/vtc/groups/create/0.1/payload.d.ts +42 -2
  122. package/dist/vtc/groups/create/0.1/payload.d.ts.map +1 -1
  123. package/dist/vtc/groups/create/0.1/payload.js +20 -0
  124. package/dist/vtc/groups/create/0.1/payload.js.map +1 -1
  125. package/dist/vtc/groups/list/0.1/payload.d.ts +42 -2
  126. package/dist/vtc/groups/list/0.1/payload.d.ts.map +1 -1
  127. package/dist/vtc/groups/list/0.1/payload.js +20 -0
  128. package/dist/vtc/groups/list/0.1/payload.js.map +1 -1
  129. package/dist/vtc/groups/list/0.2/payload.d.ts +42 -2
  130. package/dist/vtc/groups/list/0.2/payload.d.ts.map +1 -1
  131. package/dist/vtc/groups/list/0.2/payload.js +20 -0
  132. package/dist/vtc/groups/list/0.2/payload.js.map +1 -1
  133. package/dist/vtc/groups/show/0.1/payload.d.ts +42 -2
  134. package/dist/vtc/groups/show/0.1/payload.d.ts.map +1 -1
  135. package/dist/vtc/groups/show/0.1/payload.js +20 -0
  136. package/dist/vtc/groups/show/0.1/payload.js.map +1 -1
  137. package/dist/vtc/groups/update/0.1/payload.d.ts +42 -2
  138. package/dist/vtc/groups/update/0.1/payload.d.ts.map +1 -1
  139. package/dist/vtc/groups/update/0.1/payload.js +20 -0
  140. package/dist/vtc/groups/update/0.1/payload.js.map +1 -1
  141. package/dist/vtn/registry/check/0.1/payload.d.ts +528 -0
  142. package/dist/vtn/registry/check/0.1/payload.d.ts.map +1 -0
  143. package/dist/vtn/registry/check/0.1/payload.js +282 -0
  144. package/dist/vtn/registry/check/0.1/payload.js.map +1 -0
  145. package/dist/vtn/registry/status/0.1/payload.d.ts +736 -0
  146. package/dist/vtn/registry/status/0.1/payload.d.ts.map +1 -0
  147. package/dist/vtn/registry/status/0.1/payload.js +421 -0
  148. package/dist/vtn/registry/status/0.1/payload.js.map +1 -0
  149. package/package.json +1 -1
  150. package/src/_shared/components.ts +254 -1
  151. package/src/index.ts +87 -0
  152. package/src/vta/collection/_shared/0.1/collection.ts +2 -2
  153. package/src/vta/collection/list/0.1/payload.ts +2 -2
  154. package/src/vta/collection/settings/set/0.1/payload.ts +319 -0
  155. package/src/vta/collection/settings/show/0.1/payload.ts +296 -0
  156. package/src/vtc/badges/_shared/0.1/badge.ts +23 -0
  157. package/src/vtc/badges/awards/list/0.1/payload.ts +768 -0
  158. package/src/vtc/badges/awards/offer/0.1/payload.ts +530 -0
  159. package/src/vtc/badges/awards/revoke/0.1/payload.ts +395 -0
  160. package/src/vtc/badges/awards/withdraw/0.1/payload.ts +395 -0
  161. package/src/vtc/badges/create/0.1/payload.ts +1137 -0
  162. package/src/vtc/badges/holders/list/0.1/payload.ts +628 -0
  163. package/src/vtc/badges/images/get/0.1/payload.ts +311 -0
  164. package/src/vtc/badges/images/upload/0.1/payload.ts +324 -0
  165. package/src/vtc/badges/kudos/give/0.1/payload.ts +401 -0
  166. package/src/vtc/badges/kudos/list/0.1/payload.ts +1080 -0
  167. package/src/vtc/badges/list/0.1/payload.ts +695 -0
  168. package/src/vtc/badges/mine/accept/0.1/payload.ts +840 -0
  169. package/src/vtc/badges/mine/arrange/0.1/payload.ts +768 -0
  170. package/src/vtc/badges/mine/decline/0.1/payload.ts +384 -0
  171. package/src/vtc/badges/mine/hide/0.1/payload.ts +670 -0
  172. package/src/vtc/badges/mine/list/0.1/payload.ts +1153 -0
  173. package/src/vtc/badges/mine/show/0.1/payload.ts +670 -0
  174. package/src/vtc/badges/promote/0.1/payload.ts +1088 -0
  175. package/src/vtc/badges/retire/0.1/payload.ts +565 -0
  176. package/src/vtc/badges/settings/show/0.1/payload.ts +457 -0
  177. package/src/vtc/badges/settings/update/0.1/payload.ts +490 -0
  178. package/src/vtc/badges/show/0.1/payload.ts +675 -0
  179. package/src/vtc/badges/update/0.1/payload.ts +656 -0
  180. package/src/vtc/badges/wall/show/0.1/payload.ts +684 -0
  181. package/src/vtc/groups/create/0.1/payload.ts +22 -2
  182. package/src/vtc/groups/list/0.1/payload.ts +22 -2
  183. package/src/vtc/groups/list/0.2/payload.ts +22 -2
  184. package/src/vtc/groups/show/0.1/payload.ts +22 -2
  185. package/src/vtc/groups/update/0.1/payload.ts +22 -2
  186. package/src/vtn/registry/check/0.1/payload.ts +365 -0
  187. package/src/vtn/registry/status/0.1/payload.ts +502 -0
package/CHANGELOG.md CHANGED
@@ -11,6 +11,74 @@ The package versions over **its own API** — what a consumer compiles against
11
11
  not over `SPEC.md`. Below 1.0 a breaking change bumps the leading non-zero
12
12
  component.
13
13
 
14
+ ## 0.28.19 — 2026-11-06
15
+
16
+
17
+ ### Added
18
+
19
+ - **vtc/badges**: Member badges — community badges backed by groups, awards accepted by the member, kudos, Open Badges credentials (vtc/badges/*/0.1) (#1052)
20
+
21
+ * feat(vtc/badges): member badges — community badges backed by groups, awards accepted by the member, kudos, Open Badges credentials (vtc/badges/*/0.1)
22
+
23
+ A new family for the VTI Community Badges chapter (VTI-BDG-001 – 095): pictures
24
+ with a name a member earns, holds and shows on their directory card.
25
+
26
+ - A community badge is backed by a community group: `create` creates the group
27
+ as vtc/groups/create does, its managers are the badge's owners, its members
28
+ the holders; requests reuse vtc/groups/join and requests/decide, owners reuse
29
+ managers/add and remove. The shared Group record gains an optional `badgeId`
30
+ (additive).
31
+ - An award is an offer until its recipient accepts (awards/offer → mine/accept
32
+ or mine/decline); mine/accept issues the badge credential as the group's DID
33
+ first and records the membership after. mine/accept states the credential
34
+ profile: an Open Badges 3.0 OpenBadgeCredential with the community as the
35
+ Achievement's creator and endorser, one evidence entry per award; short-lived
36
+ with no status inside the community, long-lived with a slot in the community's
37
+ own status set where holders may show it outside.
38
+ - Hidden is portal-only (mine/hide, mine/show): walls, holders/list and counts
39
+ leave a hidden holder out; awards/list shows owners the hidden mark.
40
+ - Kudos badges (kudos/give, kudos/list): given by any member to any other within
41
+ per-giver limits, each giving an award of its own; promote turns one into a
42
+ community badge.
43
+ - settings/show and settings/update hold the community's switches and limits.
44
+ - images/upload and images/get mirror the directory's picture pipeline.
45
+
46
+ ## 0.28.18 — 2026-11-05
47
+
48
+
49
+ ### Added
50
+
51
+ - **vtn/registry**: Check a party against the network's trust registry through the network, and the registry status for administrators (#1050)
52
+
53
+ vtn/registry/check/0.1 lets anyone ask a network to ask its trust registry whether a party is published as its member, returning the registry's own signed answer verbatim, so a verifier with no DIDComm or TSP session (a browser, or a registry that serves no HTTPS) can still check the registry rather than take the network's word for it. Unreachable is indeterminate, never not a member.
54
+
55
+ vtn/registry/status/0.1 lets an administrator read the registry, the writer and whether it is connected, the last reconcile, and every record compared with what the entries project (ok, missing, stale, wrong).
56
+
57
+ - **vta/collection**: Settings/show and settings/set — collection by default per trust context, stored and changed at run time (#1049)
58
+
59
+ Collection by default was one operator setting, off unless enabled
60
+ (VTI-NTF-093). The VTI specification withdraws that in favour of a setting of
61
+ each trust context, enabled unless disabled there (VTI-NTF-094 – VTI-NTF-098):
62
+
63
+ - vta/collection/settings/show/0.1: a party with standing in a context reads
64
+ its setting, who last changed it and when, and whether the VTA's operator
65
+ has suspended collection by default everywhere (VTI-NTF-096).
66
+ - vta/collection/settings/set/0.1: a party with administrative authority over
67
+ the context (VTI-ACL-022) enables or disables it; stored, audited, applied
68
+ before the answer — disabling closes the VTA's connections first
69
+ (VTI-NTF-095). Answers the setting and whether it changed.
70
+ - _shared/0.1 gains a CollectionSetting definition (new $defs entry), and the
71
+ `disabled` reason is re-described: the context's own setting, or the
72
+ operator's suspension (VTI-NTF-097, VTI-NTF-098). No enum value changes.
73
+ - claim/list/release 0.1 prose and an error-code meaning now cite the
74
+ per-context setting instead of VTI-NTF-093 (description edits only).
75
+
76
+ The setting is not folded into list's response: it belongs to the context,
77
+ not an identifier, and an added member in that released response would be
78
+ refused by every existing client's additionalProperties: false.
79
+
80
+ Bindings regenerated (Rust, TS, Go, Dart).
81
+
14
82
  ## 0.28.17 — 2026-11-05
15
83
 
16
84
 
@@ -385,12 +385,48 @@ export type AuthModel = "aws-roles-anywhere" | "gcp-wif-pinned" | "azure-cert" |
385
385
  * An explicit authority scope — used for both the act scope and the approve scope of an entry. Exactly one of three shapes, discriminated by `scope`: `all`, `none`, or `contexts` with a NON-EMPTY list. The empty list is not a fourth shape: it is invalid, so a serializer that drops or empties the list produces a document that fails validation rather than one that silently means something else.
386
386
  */
387
387
  export type AuthorityScope = AuthorityScopeAll | AuthorityScopeNone | AuthorityScopeContexts;
388
+ /**
389
+ * Opaque identifier of one giving of a badge to one member: `awd_` followed by 16 to 64 base64url characters. Random and unique within the community.
390
+ */
391
+ export type AwardId = string;
392
+ /**
393
+ * What the award is for, from the giver, shown to the recipient and written as the award's evidence narrative where the badge carries a credential. Plain text; erased with its author (VTI-BDG-090).
394
+ */
395
+ export type AwardNote = string;
396
+ /**
397
+ * `offered`: waiting for the recipient. `accepted`: the recipient took it; for a community badge the credential was issued and the membership recorded. `declined`: the recipient declined; nothing was recorded in the group and nothing issued. `withdrawn`: the giver withdrew the offer before a decision. `expired`: the offer lapsed unanswered. `revoked`: taken back after acceptance (VTI-BDG-023).
398
+ */
399
+ export type AwardState = "offered" | "accepted" | "declined" | "withdrawn" | "expired" | "revoked";
388
400
  export type AwsArn = string;
389
401
  export type AwsRegion = string;
390
402
  /**
391
403
  * The ARN of an AWS IAM role, in any AWS partition (`arn:aws:`, `arn:aws-cn:`, `arn:aws-us-gov:`). Validated here because the community passes it to STS AssumeRole and derives the partition of the session policy's resources from it; it must never carry anything but a role ARN.
392
404
  */
393
405
  export type AwsRoleArn = string;
406
+ /**
407
+ * How the badge is earned, shown to members and written into the credential's Achievement as its criteria narrative. Plain text.
408
+ */
409
+ export type BadgeCriteria = string;
410
+ /**
411
+ * What the badge is for. Plain text; a reader MUST NOT treat it as instructions.
412
+ */
413
+ export type BadgeDescription = string;
414
+ /**
415
+ * Opaque identifier of a badge: `bdg_` followed by 16 to 64 base64url characters. Random, community-scoped, never reused (VTI-BDG-001).
416
+ */
417
+ export type BadgeId = string;
418
+ /**
419
+ * `community`: defined by holders of `vtc.badges.admin`, given by its owners (its badge group's managers), may carry a credential. `kudos`: made by a member the community's badge settings admit, given by any active member to any other, never a credential. Fixed for the badge's life; a kudos badge becomes a community badge only by promotion (vtc/badges/promote).
420
+ */
421
+ export type BadgeKind = "community" | "kudos";
422
+ /**
423
+ * The badge's name, shown on the wall and written into the credential's Achievement. Plain text; a reader MUST NOT treat it as instructions.
424
+ */
425
+ export type BadgeName = string;
426
+ /**
427
+ * `active`: may be given and shown. `retired`: kept for its holders' own history, never given, never shown to members who do not hold it (VTI-BDG-005).
428
+ */
429
+ export type BadgeState = "active" | "retired";
394
430
  export type BindingId = string;
395
431
  export type BindingSpec = RoomBindingSpec | GrantsBindingSpec | RoleBindingSpec;
396
432
  /**
@@ -1110,7 +1146,7 @@ export type NamespaceId = string;
1110
1146
  */
1111
1147
  export type NodeKind = "network" | "community";
1112
1148
  /**
1113
- * Why nobody collects for an identifier the VTA would otherwise collect for: `limit`, the VTA is at the bound it states on the number of identifiers it collects for (VTI-NTF-088); `conflict`, another connection for the identifier kept closing the VTA's, and the VTA stopped after the bound it states until the conflict is resolved (VTI-NTF-085). `disabled`, the VTA's operator has not enabled collection by default (VTI-NTF-093), so the VTA collects for no identifier a client has not claimed.
1149
+ * Why nobody collects for an identifier the VTA would otherwise collect for: `limit`, the VTA is at the bound it states on the number of identifiers it collects for (VTI-NTF-088); `conflict`, another connection for the identifier kept closing the VTA's, and the VTA stopped after the bound it states until the conflict is resolved (VTI-NTF-085). `disabled`, collection by default is disabled for the identifier's trust context — by the context's own setting, or because the VTA's operator has suspended it for every context — so the VTA collects for no identifier there that a client has not claimed (VTI-NTF-097, VTI-NTF-098); vta/collection/settings/show says which.
1114
1150
  */
1115
1151
  export type NotCollectedReason = "limit" | "conflict" | "disabled";
1116
1152
  /**
@@ -2201,6 +2237,10 @@ export type Vid = string;
2201
2237
  * 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.
2202
2238
  */
2203
2239
  export type Visibility = "open" | "attributed" | "private";
2240
+ /**
2241
+ * Who sees a member's badges, the member's own setting (VTI-BDG-031). `members`: every active member the directory shows their card to. `nobody`: no one but the member. Never wider than the directory shows the card.
2242
+ */
2243
+ export type WallVisibility = "members" | "nobody";
2204
2244
  /**
2205
2245
  * 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.
2206
2246
  */
@@ -5521,6 +5561,31 @@ export interface AutoGrantSweep {
5521
5561
  */
5522
5562
  errors: number;
5523
5563
  }
5564
+ /**
5565
+ * One giving of a badge to one member. `givenBy` is the giver's directory entry, absent for an award a dynamic badge group's rule made. `note` is shown to the recipient, the giver, the badge's owners and administrators, never to other members. `credentialId` is present on an accepted award of a community badge: the badge credential that evidences it, renewed or re-issued as the badge's regime requires.
5566
+ */
5567
+ export interface Award {
5568
+ awardId: AwardId;
5569
+ badgeId: BadgeId;
5570
+ /**
5571
+ * The recipient.
5572
+ */
5573
+ entryId: EntryId;
5574
+ givenBy?: EntryId;
5575
+ note?: AwardNote;
5576
+ state: AwardState;
5577
+ offeredAt: string;
5578
+ /**
5579
+ * When the recipient accepted or declined, the giver withdrew, the offer expired, or the award was revoked.
5580
+ */
5581
+ decidedAt?: string;
5582
+ /**
5583
+ * When an unanswered offer lapses, where the community expires offers.
5584
+ */
5585
+ expiresAt?: string;
5586
+ credentialId?: GroupCredentialId;
5587
+ ext?: Ext;
5588
+ }
5524
5589
  /**
5525
5590
  * 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.
5526
5591
  */
@@ -5556,6 +5621,108 @@ export interface BackupEnvelope {
5556
5621
  */
5557
5622
  ciphertext: string;
5558
5623
  }
5624
+ /**
5625
+ * A badge as a caller who may see it sees it. `groupId` is present exactly when `kind` is `community`. `holderCount` only to callers who may see the badge's holders, counted over holders who have not hidden it (VTI-BDG-030, VTI-BDG-033). `createdBy` is the directory entry of the administrator or member who made it, where they have one.
5626
+ */
5627
+ export interface Badge {
5628
+ badgeId: BadgeId;
5629
+ kind: BadgeKind;
5630
+ name: BadgeName;
5631
+ description: BadgeDescription;
5632
+ criteria?: BadgeCriteria;
5633
+ /**
5634
+ * The badge's picture, re-encoded and stored by the community (vtc/badges/images/upload), read with vtc/badges/images/get. `url` and `urlExpiresAt` MAY appear in a projection as for a card picture; for a badge whose holders may show it outside, `url` MAY be the picture's stable public location.
5635
+ */
5636
+ image: CardBlobRef;
5637
+ /**
5638
+ * Whether one member may hold the badge more than once, each giving an award of its own (VTI-BDG-022). Always true for a kudos badge.
5639
+ */
5640
+ repeatable: boolean;
5641
+ /**
5642
+ * Community badges only. Whether a member may ask for it: a request to join its badge group, decided by its owners (VTI-BDG-014). Absent reads as false.
5643
+ */
5644
+ requestable?: boolean;
5645
+ /**
5646
+ * Whether members who do not hold the badge see it in the community's badge list. An unlisted badge is seen by its holders, its owners and administrators.
5647
+ */
5648
+ listed: boolean;
5649
+ /**
5650
+ * Community badges only. Whether its holders may show it outside the community, which decides the credential's regime: short-lived and renewed with no status when false, long-lived with a status in the community's own status set when true (VTI-BDG-061, VTI-BDG-062). Absent reads as false.
5651
+ */
5652
+ shareableOutside?: boolean;
5653
+ /**
5654
+ * The badge group that backs a community badge: its managers are the badge's owners, its members the holders, its DID the credential's issuer.
5655
+ */
5656
+ groupId?: GroupId;
5657
+ state: BadgeState;
5658
+ /**
5659
+ * Holders who show the badge. Only to callers who may see the holders.
5660
+ */
5661
+ holderCount?: number;
5662
+ createdAt: string;
5663
+ createdBy?: EntryId;
5664
+ updatedAt?: string;
5665
+ retiredAt?: string;
5666
+ /**
5667
+ * Ecosystem-defined extension members per SPEC.md §4.5.1. An extension member MUST NOT carry authority.
5668
+ */
5669
+ ext?: Ext;
5670
+ }
5671
+ /**
5672
+ * The community's bounds (VTI-BDG-032, VTI-BDG-040). Each has a default a community that states none applies.
5673
+ */
5674
+ export interface BadgeLimits {
5675
+ /**
5676
+ * Kudos one member may give in a day. Default 10.
5677
+ */
5678
+ kudosPerGiverPerDay?: number;
5679
+ /**
5680
+ * How often the same member may give a kudos badge to the same member: at most once a day, once a week, or without bound. Default `day`.
5681
+ */
5682
+ sameGiverSameMember?: "day" | "week" | "unbounded";
5683
+ /**
5684
+ * Days of membership before a member may give kudos or make a kudos badge. Default 7.
5685
+ */
5686
+ minTenureDays?: number;
5687
+ /**
5688
+ * Kudos badges one member may make in a calendar month. Default 5.
5689
+ */
5690
+ kudosBadgesPerMakerPerMonth?: number;
5691
+ /**
5692
+ * Badges a member may pin beside their name. Default 2.
5693
+ */
5694
+ maxPinned?: number;
5695
+ /**
5696
+ * Days an unanswered offer stands before it expires. Absent: offers do not expire.
5697
+ */
5698
+ offerExpiresAfterDays?: number;
5699
+ }
5700
+ /**
5701
+ * The community's badge settings (VTI-BDG-004). `enabled` false hides every badge surface and keeps every record; nothing is given or issued while it is false.
5702
+ */
5703
+ export interface BadgeSettings {
5704
+ enabled: boolean;
5705
+ kudosMakers: KudosMakers;
5706
+ limits?: BadgeLimits;
5707
+ /**
5708
+ * Whether a member's kudos total is shown on their card (VTI-BDG-043).
5709
+ */
5710
+ showKudosTotals: boolean;
5711
+ /**
5712
+ * Whether dynamic badge groups are computed (VTI-BDG-013). False: a community badge may not be created on a dynamic group, and existing ones are not recomputed.
5713
+ */
5714
+ automaticBadges: boolean;
5715
+ /**
5716
+ * Whether any community badge may be marked `requestable`. False: every badge group is closed.
5717
+ */
5718
+ membersMayRequest: boolean;
5719
+ /**
5720
+ * Validity of a badge credential its holders may show outside (VTI-BDG-062). Default 730.
5721
+ */
5722
+ credentialValidDays?: number;
5723
+ updatedAt?: string;
5724
+ ext?: Ext;
5725
+ }
5559
5726
  /**
5560
5727
  * An open ballot: one answer per question of the manifest, in any order. The bytes a cast's proof binds are the RFC 8785 (JCS) canonicalization of this object as received.
5561
5728
  */
@@ -6324,6 +6491,31 @@ export interface CollectionEntry {
6324
6491
  claim?: Claim;
6325
6492
  notCollectedReason?: NotCollectedReason;
6326
6493
  }
6494
+ /**
6495
+ * Whether the VTA collects by default for the identifiers of one trust context that no client has claimed (VTI-NTF-094 – VTI-NTF-098), and who last changed that. The VTA collects for them exactly when `collectByDefault` is true and `suspendedByOperator` is false. `changedBy` and `changedAt` are present together, and both absent while the setting has never been changed.
6496
+ */
6497
+ export interface CollectionSetting {
6498
+ /**
6499
+ * The trust context the setting belongs to. It applies to that context's identifiers alone, not to its ancestors' or descendants' (VTI-NTF-094).
6500
+ */
6501
+ contextId: ContextId_VtaCollectionV0_1;
6502
+ /**
6503
+ * The context's own setting: true unless a party with administrative authority over the context has disabled it (VTI-NTF-094, VTI-NTF-095). The VTA keeps it across restarts.
6504
+ */
6505
+ collectByDefault: boolean;
6506
+ /**
6507
+ * Whether the VTA's operator has suspended collection by default for every context (VTI-NTF-098). While true, the VTA collects for no unclaimed identifier here whatever `collectByDefault` says, and does not change it; once lifted, `collectByDefault` applies again. Always false at a VTA that offers its operator no suspension.
6508
+ */
6509
+ suspendedByOperator: boolean;
6510
+ /**
6511
+ * The subject of the access control entry that last changed `collectByDefault` (VTI-NTF-096).
6512
+ */
6513
+ changedBy?: Did_NotificationsV0_1;
6514
+ /**
6515
+ * When `collectByDefault` was last changed.
6516
+ */
6517
+ changedAt?: string;
6518
+ }
6327
6519
  /**
6328
6520
  * 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.
6329
6521
  */
@@ -9287,6 +9479,10 @@ export interface Group {
9287
9479
  * `true` while the group has a `grants` or `role` binding. Such a group is `static` and `closed` for as long as it does.
9288
9480
  */
9289
9481
  carriesAuthority: boolean;
9482
+ /**
9483
+ * Present exactly when the group backs a community badge (vtc/badges/*): its managers are the badge's owners, its members the badge's holders, and its DID issues the badge credential in place of a membership credential. A badge group never carries authority, is not counted among the groups two members share, and is listed among the community's groups only to a caller who asks for badge groups (VTI-BDG-010 – VTI-BDG-012).
9484
+ */
9485
+ badgeId?: BadgeId;
9290
9486
  /**
9291
9487
  * Active members. Only to callers who may see the member list.
9292
9488
  */
@@ -10294,6 +10490,24 @@ export interface KeyScopeListed {
10294
10490
  export interface KeyScopeNone {
10295
10491
  scope: "none";
10296
10492
  }
10493
+ /**
10494
+ * Who may make a kudos badge (VTI-BDG-004). `nobody`: no kudos badges. `roles`: holders of any of `roles`, or members of any of `groups`. `members`: every active member.
10495
+ */
10496
+ export interface KudosMakers {
10497
+ policy: "nobody" | "roles" | "members";
10498
+ /**
10499
+ * Community role names. Read exactly when `policy` is `roles`.
10500
+ *
10501
+ * @maxItems 32
10502
+ */
10503
+ roles?: string[];
10504
+ /**
10505
+ * Read exactly when `policy` is `roles`.
10506
+ *
10507
+ * @maxItems 32
10508
+ */
10509
+ groups?: GroupId[];
10510
+ }
10297
10511
  /**
10298
10512
  * Which limits an override applies to. `room`: the room as a whole. `memberDefault`: every member of the room who has no override of their own. `member`: one named member — `member` is REQUIRED with this kind and forbidden with the others, a rule this schema does not express; a community refuses a violation with `malformedRequest`.
10299
10513
  */
@@ -10931,6 +11145,26 @@ export interface MonitorFilter {
10931
11145
  */
10932
11146
  failuresOnly?: boolean;
10933
11147
  }
11148
+ /**
11149
+ * A badge as its holder sees it in their own list: the wall entry plus what only the holder knows — whether they hid it, their position for it, and the credential that evidences it.
11150
+ */
11151
+ export interface MyBadge {
11152
+ badge: Badge;
11153
+ count: number;
11154
+ since: string;
11155
+ latestAt?: string;
11156
+ pinned: boolean;
11157
+ /**
11158
+ * The holder hid it: off their wall, out of the badge's holder list for members, out of its count; the awards, the membership and the credential stand (VTI-BDG-030).
11159
+ */
11160
+ hidden: boolean;
11161
+ /**
11162
+ * The holder's order on their wall, lowest first.
11163
+ */
11164
+ position?: number;
11165
+ credentialId?: GroupCredentialId;
11166
+ credentialValidUntil?: string;
11167
+ }
10934
11168
  export interface NetworkMembership {
10935
11169
  /**
10936
11170
  * The network's DID.
@@ -15827,6 +16061,25 @@ export interface WakeTriggerPolicy {
15827
16061
  */
15828
16062
  allowedTriggers: string[];
15829
16063
  }
16064
+ /**
16065
+ * One badge on a member's wall as a viewer sees it: the badge, how many times the member holds it, since when, and whether the member pinned it. Hidden badges are never wall entries (VTI-BDG-030).
16066
+ */
16067
+ export interface WallEntry {
16068
+ badge: Badge;
16069
+ /**
16070
+ * Accepted awards of this badge the member holds.
16071
+ */
16072
+ count: number;
16073
+ /**
16074
+ * When the member first accepted this badge.
16075
+ */
16076
+ since: string;
16077
+ /**
16078
+ * When the member last accepted an award of this badge.
16079
+ */
16080
+ latestAt?: string;
16081
+ pinned: boolean;
16082
+ }
15830
16083
  export interface WalrusSettings {
15831
16084
  kind: "walrus";
15832
16085
  /**