@openvtc/trust-tasks 0.28.10 → 0.28.11

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 (250) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/_shared/components.d.ts +903 -0
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/index.d.ts +144 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +144 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/vta/notifications/deposit/0.1/payload.d.ts +349 -0
  9. package/dist/vta/notifications/deposit/0.1/payload.d.ts.map +1 -0
  10. package/dist/vta/notifications/deposit/0.1/payload.js +198 -0
  11. package/dist/vta/notifications/deposit/0.1/payload.js.map +1 -0
  12. package/dist/vta/pcs/vetter/recover/0.1/payload.d.ts +667 -0
  13. package/dist/vta/pcs/vetter/recover/0.1/payload.d.ts.map +1 -0
  14. package/dist/vta/pcs/vetter/recover/0.1/payload.js +387 -0
  15. package/dist/vta/pcs/vetter/recover/0.1/payload.js.map +1 -0
  16. package/dist/vtc/notifications/_shared/0.1/received-notification.d.ts +16 -0
  17. package/dist/vtc/notifications/_shared/0.1/received-notification.d.ts.map +1 -0
  18. package/dist/vtc/notifications/_shared/0.1/received-notification.js +6 -0
  19. package/dist/vtc/notifications/_shared/0.1/received-notification.js.map +1 -0
  20. package/dist/vtc/notifications/list/0.1/payload.d.ts +1311 -0
  21. package/dist/vtc/notifications/list/0.1/payload.d.ts.map +1 -0
  22. package/dist/vtc/notifications/list/0.1/payload.js +753 -0
  23. package/dist/vtc/notifications/list/0.1/payload.js.map +1 -0
  24. package/dist/vtc/notifications/relay/0.1/payload.d.ts +568 -0
  25. package/dist/vtc/notifications/relay/0.1/payload.d.ts.map +1 -0
  26. package/dist/vtc/notifications/relay/0.1/payload.js +339 -0
  27. package/dist/vtc/notifications/relay/0.1/payload.js.map +1 -0
  28. package/dist/vtc/notifications/show/0.1/payload.d.ts +1229 -0
  29. package/dist/vtc/notifications/show/0.1/payload.d.ts.map +1 -0
  30. package/dist/vtc/notifications/show/0.1/payload.js +727 -0
  31. package/dist/vtc/notifications/show/0.1/payload.js.map +1 -0
  32. package/dist/vtc/vetting/vetters/pcs-binding/reset/0.1/payload.d.ts +340 -0
  33. package/dist/vtc/vetting/vetters/pcs-binding/reset/0.1/payload.d.ts.map +1 -0
  34. package/dist/vtc/vetting/vetters/pcs-binding/reset/0.1/payload.js +194 -0
  35. package/dist/vtc/vetting/vetters/pcs-binding/reset/0.1/payload.js.map +1 -0
  36. package/dist/vtc/vetting/vetters/pcs-binding/show/0.1/payload.d.ts +425 -0
  37. package/dist/vtc/vetting/vetters/pcs-binding/show/0.1/payload.d.ts.map +1 -0
  38. package/dist/vtc/vetting/vetters/pcs-binding/show/0.1/payload.js +233 -0
  39. package/dist/vtc/vetting/vetters/pcs-binding/show/0.1/payload.js.map +1 -0
  40. package/dist/vtn/_shared/0.1/directory.d.ts +16 -0
  41. package/dist/vtn/_shared/0.1/directory.d.ts.map +1 -0
  42. package/dist/vtn/_shared/0.1/directory.js +6 -0
  43. package/dist/vtn/_shared/0.1/directory.js.map +1 -0
  44. package/dist/vtn/_shared/0.1/entry.d.ts +16 -0
  45. package/dist/vtn/_shared/0.1/entry.d.ts.map +1 -0
  46. package/dist/vtn/_shared/0.1/entry.js +6 -0
  47. package/dist/vtn/_shared/0.1/entry.js.map +1 -0
  48. package/dist/vtn/_shared/0.1/graph.d.ts +16 -0
  49. package/dist/vtn/_shared/0.1/graph.d.ts.map +1 -0
  50. package/dist/vtn/_shared/0.1/graph.js +6 -0
  51. package/dist/vtn/_shared/0.1/graph.js.map +1 -0
  52. package/dist/vtn/_shared/0.1/groups.d.ts +16 -0
  53. package/dist/vtn/_shared/0.1/groups.d.ts.map +1 -0
  54. package/dist/vtn/_shared/0.1/groups.js +6 -0
  55. package/dist/vtn/_shared/0.1/groups.js.map +1 -0
  56. package/dist/vtn/_shared/0.1/membership.d.ts +16 -0
  57. package/dist/vtn/_shared/0.1/membership.d.ts.map +1 -0
  58. package/dist/vtn/_shared/0.1/membership.js +6 -0
  59. package/dist/vtn/_shared/0.1/membership.js.map +1 -0
  60. package/dist/vtn/_shared/0.1/relay.d.ts +16 -0
  61. package/dist/vtn/_shared/0.1/relay.d.ts.map +1 -0
  62. package/dist/vtn/_shared/0.1/relay.js +6 -0
  63. package/dist/vtn/_shared/0.1/relay.js.map +1 -0
  64. package/dist/vtn/_shared/0.1/rooms.d.ts +16 -0
  65. package/dist/vtn/_shared/0.1/rooms.d.ts.map +1 -0
  66. package/dist/vtn/_shared/0.1/rooms.js +6 -0
  67. package/dist/vtn/_shared/0.1/rooms.js.map +1 -0
  68. package/dist/vtn/audit/list/0.1/payload.d.ts +457 -0
  69. package/dist/vtn/audit/list/0.1/payload.d.ts.map +1 -0
  70. package/dist/vtn/audit/list/0.1/payload.js +292 -0
  71. package/dist/vtn/audit/list/0.1/payload.js.map +1 -0
  72. package/dist/vtn/broadcasts/list/0.1/payload.d.ts +687 -0
  73. package/dist/vtn/broadcasts/list/0.1/payload.d.ts.map +1 -0
  74. package/dist/vtn/broadcasts/list/0.1/payload.js +407 -0
  75. package/dist/vtn/broadcasts/list/0.1/payload.js.map +1 -0
  76. package/dist/vtn/broadcasts/send/0.1/payload.d.ts +728 -0
  77. package/dist/vtn/broadcasts/send/0.1/payload.d.ts.map +1 -0
  78. package/dist/vtn/broadcasts/send/0.1/payload.js +425 -0
  79. package/dist/vtn/broadcasts/send/0.1/payload.js.map +1 -0
  80. package/dist/vtn/broadcasts/show/0.1/payload.d.ts +670 -0
  81. package/dist/vtn/broadcasts/show/0.1/payload.d.ts.map +1 -0
  82. package/dist/vtn/broadcasts/show/0.1/payload.js +402 -0
  83. package/dist/vtn/broadcasts/show/0.1/payload.js.map +1 -0
  84. package/dist/vtn/directory/federated/0.1/payload.d.ts +939 -0
  85. package/dist/vtn/directory/federated/0.1/payload.d.ts.map +1 -0
  86. package/dist/vtn/directory/federated/0.1/payload.js +536 -0
  87. package/dist/vtn/directory/federated/0.1/payload.js.map +1 -0
  88. package/dist/vtn/directory/search/0.1/payload.d.ts +643 -0
  89. package/dist/vtn/directory/search/0.1/payload.d.ts.map +1 -0
  90. package/dist/vtn/directory/search/0.1/payload.js +368 -0
  91. package/dist/vtn/directory/search/0.1/payload.js.map +1 -0
  92. package/dist/vtn/directory/summary/0.1/payload.d.ts +366 -0
  93. package/dist/vtn/directory/summary/0.1/payload.d.ts.map +1 -0
  94. package/dist/vtn/directory/summary/0.1/payload.js +216 -0
  95. package/dist/vtn/directory/summary/0.1/payload.js.map +1 -0
  96. package/dist/vtn/entries/show/0.1/payload.d.ts +682 -0
  97. package/dist/vtn/entries/show/0.1/payload.d.ts.map +1 -0
  98. package/dist/vtn/entries/show/0.1/payload.js +398 -0
  99. package/dist/vtn/entries/show/0.1/payload.js.map +1 -0
  100. package/dist/vtn/graph/member/0.1/payload.d.ts +754 -0
  101. package/dist/vtn/graph/member/0.1/payload.d.ts.map +1 -0
  102. package/dist/vtn/graph/member/0.1/payload.js +470 -0
  103. package/dist/vtn/graph/member/0.1/payload.js.map +1 -0
  104. package/dist/vtn/graph/show/0.1/payload.d.ts +754 -0
  105. package/dist/vtn/graph/show/0.1/payload.d.ts.map +1 -0
  106. package/dist/vtn/graph/show/0.1/payload.js +468 -0
  107. package/dist/vtn/graph/show/0.1/payload.js.map +1 -0
  108. package/dist/vtn/groups/list/0.1/payload.d.ts +489 -0
  109. package/dist/vtn/groups/list/0.1/payload.d.ts.map +1 -0
  110. package/dist/vtn/groups/list/0.1/payload.js +282 -0
  111. package/dist/vtn/groups/list/0.1/payload.js.map +1 -0
  112. package/dist/vtn/groups/register/0.1/payload.d.ts +504 -0
  113. package/dist/vtn/groups/register/0.1/payload.d.ts.map +1 -0
  114. package/dist/vtn/groups/register/0.1/payload.js +291 -0
  115. package/dist/vtn/groups/register/0.1/payload.js.map +1 -0
  116. package/dist/vtn/listings/create/0.1/payload.d.ts +954 -0
  117. package/dist/vtn/listings/create/0.1/payload.d.ts.map +1 -0
  118. package/dist/vtn/listings/create/0.1/payload.js +549 -0
  119. package/dist/vtn/listings/create/0.1/payload.js.map +1 -0
  120. package/dist/vtn/listings/list/0.1/payload.d.ts +933 -0
  121. package/dist/vtn/listings/list/0.1/payload.d.ts.map +1 -0
  122. package/dist/vtn/listings/list/0.1/payload.js +538 -0
  123. package/dist/vtn/listings/list/0.1/payload.js.map +1 -0
  124. package/dist/vtn/listings/reinstate/0.1/payload.d.ts +926 -0
  125. package/dist/vtn/listings/reinstate/0.1/payload.d.ts.map +1 -0
  126. package/dist/vtn/listings/reinstate/0.1/payload.js +536 -0
  127. package/dist/vtn/listings/reinstate/0.1/payload.js.map +1 -0
  128. package/dist/vtn/listings/remove/0.1/payload.d.ts +926 -0
  129. package/dist/vtn/listings/remove/0.1/payload.d.ts.map +1 -0
  130. package/dist/vtn/listings/remove/0.1/payload.js +536 -0
  131. package/dist/vtn/listings/remove/0.1/payload.js.map +1 -0
  132. package/dist/vtn/listings/show/0.1/payload.d.ts +914 -0
  133. package/dist/vtn/listings/show/0.1/payload.d.ts.map +1 -0
  134. package/dist/vtn/listings/show/0.1/payload.js +532 -0
  135. package/dist/vtn/listings/show/0.1/payload.js.map +1 -0
  136. package/dist/vtn/listings/suspend/0.1/payload.d.ts +926 -0
  137. package/dist/vtn/listings/suspend/0.1/payload.d.ts.map +1 -0
  138. package/dist/vtn/listings/suspend/0.1/payload.js +536 -0
  139. package/dist/vtn/listings/suspend/0.1/payload.js.map +1 -0
  140. package/dist/vtn/listings/update/0.1/payload.d.ts +966 -0
  141. package/dist/vtn/listings/update/0.1/payload.d.ts.map +1 -0
  142. package/dist/vtn/listings/update/0.1/payload.js +550 -0
  143. package/dist/vtn/listings/update/0.1/payload.js.map +1 -0
  144. package/dist/vtn/membership/acknowledge/0.1/payload.d.ts +654 -0
  145. package/dist/vtn/membership/acknowledge/0.1/payload.d.ts.map +1 -0
  146. package/dist/vtn/membership/acknowledge/0.1/payload.js +386 -0
  147. package/dist/vtn/membership/acknowledge/0.1/payload.js.map +1 -0
  148. package/dist/vtn/membership/offer/0.1/payload.d.ts +247 -0
  149. package/dist/vtn/membership/offer/0.1/payload.d.ts.map +1 -0
  150. package/dist/vtn/membership/offer/0.1/payload.js +147 -0
  151. package/dist/vtn/membership/offer/0.1/payload.js.map +1 -0
  152. package/dist/vtn/membership/repudiate/0.1/payload.d.ts +654 -0
  153. package/dist/vtn/membership/repudiate/0.1/payload.d.ts.map +1 -0
  154. package/dist/vtn/membership/repudiate/0.1/payload.js +386 -0
  155. package/dist/vtn/membership/repudiate/0.1/payload.js.map +1 -0
  156. package/dist/vtn/memberships/groups/add/0.1/payload.d.ts +677 -0
  157. package/dist/vtn/memberships/groups/add/0.1/payload.d.ts.map +1 -0
  158. package/dist/vtn/memberships/groups/add/0.1/payload.js +394 -0
  159. package/dist/vtn/memberships/groups/add/0.1/payload.js.map +1 -0
  160. package/dist/vtn/memberships/join/0.1/payload.d.ts +755 -0
  161. package/dist/vtn/memberships/join/0.1/payload.d.ts.map +1 -0
  162. package/dist/vtn/memberships/join/0.1/payload.js +438 -0
  163. package/dist/vtn/memberships/join/0.1/payload.js.map +1 -0
  164. package/dist/vtn/memberships/leave/0.1/payload.d.ts +653 -0
  165. package/dist/vtn/memberships/leave/0.1/payload.d.ts.map +1 -0
  166. package/dist/vtn/memberships/leave/0.1/payload.js +384 -0
  167. package/dist/vtn/memberships/leave/0.1/payload.js.map +1 -0
  168. package/dist/vtn/memberships/list/0.1/payload.d.ts +651 -0
  169. package/dist/vtn/memberships/list/0.1/payload.d.ts.map +1 -0
  170. package/dist/vtn/memberships/list/0.1/payload.js +383 -0
  171. package/dist/vtn/memberships/list/0.1/payload.js.map +1 -0
  172. package/dist/vtn/memberships/repudiate/0.1/payload.d.ts +669 -0
  173. package/dist/vtn/memberships/repudiate/0.1/payload.d.ts.map +1 -0
  174. package/dist/vtn/memberships/repudiate/0.1/payload.js +391 -0
  175. package/dist/vtn/memberships/repudiate/0.1/payload.js.map +1 -0
  176. package/dist/vtn/outbox/list/0.1/payload.d.ts +567 -0
  177. package/dist/vtn/outbox/list/0.1/payload.d.ts.map +1 -0
  178. package/dist/vtn/outbox/list/0.1/payload.js +333 -0
  179. package/dist/vtn/outbox/list/0.1/payload.js.map +1 -0
  180. package/dist/vtn/outbox/retry/0.1/payload.d.ts +235 -0
  181. package/dist/vtn/outbox/retry/0.1/payload.d.ts.map +1 -0
  182. package/dist/vtn/outbox/retry/0.1/payload.js +141 -0
  183. package/dist/vtn/outbox/retry/0.1/payload.js.map +1 -0
  184. package/dist/vtn/relay/deliver/0.1/payload.d.ts +592 -0
  185. package/dist/vtn/relay/deliver/0.1/payload.d.ts.map +1 -0
  186. package/dist/vtn/relay/deliver/0.1/payload.js +352 -0
  187. package/dist/vtn/relay/deliver/0.1/payload.js.map +1 -0
  188. package/dist/vtn/roles/list/0.1/payload.d.ts +371 -0
  189. package/dist/vtn/roles/list/0.1/payload.d.ts.map +1 -0
  190. package/dist/vtn/roles/list/0.1/payload.js +213 -0
  191. package/dist/vtn/roles/list/0.1/payload.js.map +1 -0
  192. package/dist/vtn/rooms/list/0.1/payload.d.ts +447 -0
  193. package/dist/vtn/rooms/list/0.1/payload.d.ts.map +1 -0
  194. package/dist/vtn/rooms/list/0.1/payload.js +255 -0
  195. package/dist/vtn/rooms/list/0.1/payload.js.map +1 -0
  196. package/dist/vtn/rooms/pass/0.1/payload.d.ts +674 -0
  197. package/dist/vtn/rooms/pass/0.1/payload.d.ts.map +1 -0
  198. package/dist/vtn/rooms/pass/0.1/payload.js +383 -0
  199. package/dist/vtn/rooms/pass/0.1/payload.js.map +1 -0
  200. package/package.json +1 -1
  201. package/src/_shared/components.ts +922 -0
  202. package/src/index.ts +144 -0
  203. package/src/vta/notifications/deposit/0.1/payload.ts +243 -0
  204. package/src/vta/pcs/vetter/recover/0.1/payload.ts +437 -0
  205. package/src/vtc/notifications/_shared/0.1/received-notification.ts +17 -0
  206. package/src/vtc/notifications/list/0.1/payload.ts +809 -0
  207. package/src/vtc/notifications/relay/0.1/payload.ts +382 -0
  208. package/src/vtc/notifications/show/0.1/payload.ts +761 -0
  209. package/src/vtc/vetting/vetters/pcs-binding/reset/0.1/payload.ts +247 -0
  210. package/src/vtc/vetting/vetters/pcs-binding/show/0.1/payload.ts +295 -0
  211. package/src/vtn/_shared/0.1/directory.ts +17 -0
  212. package/src/vtn/_shared/0.1/entry.ts +17 -0
  213. package/src/vtn/_shared/0.1/graph.ts +17 -0
  214. package/src/vtn/_shared/0.1/groups.ts +17 -0
  215. package/src/vtn/_shared/0.1/membership.ts +17 -0
  216. package/src/vtn/_shared/0.1/relay.ts +17 -0
  217. package/src/vtn/_shared/0.1/rooms.ts +17 -0
  218. package/src/vtn/audit/list/0.1/payload.ts +336 -0
  219. package/src/vtn/broadcasts/list/0.1/payload.ts +447 -0
  220. package/src/vtn/broadcasts/send/0.1/payload.ts +478 -0
  221. package/src/vtn/broadcasts/show/0.1/payload.ts +439 -0
  222. package/src/vtn/directory/federated/0.1/payload.ts +594 -0
  223. package/src/vtn/directory/search/0.1/payload.ts +418 -0
  224. package/src/vtn/directory/summary/0.1/payload.ts +253 -0
  225. package/src/vtn/entries/show/0.1/payload.ts +439 -0
  226. package/src/vtn/graph/member/0.1/payload.ts +511 -0
  227. package/src/vtn/graph/show/0.1/payload.ts +509 -0
  228. package/src/vtn/groups/list/0.1/payload.ts +322 -0
  229. package/src/vtn/groups/register/0.1/payload.ts +336 -0
  230. package/src/vtn/listings/create/0.1/payload.ts +594 -0
  231. package/src/vtn/listings/list/0.1/payload.ts +578 -0
  232. package/src/vtn/listings/reinstate/0.1/payload.ts +577 -0
  233. package/src/vtn/listings/remove/0.1/payload.ts +577 -0
  234. package/src/vtn/listings/show/0.1/payload.ts +569 -0
  235. package/src/vtn/listings/suspend/0.1/payload.ts +577 -0
  236. package/src/vtn/listings/update/0.1/payload.ts +603 -0
  237. package/src/vtn/membership/acknowledge/0.1/payload.ts +423 -0
  238. package/src/vtn/membership/offer/0.1/payload.ts +183 -0
  239. package/src/vtn/membership/repudiate/0.1/payload.ts +423 -0
  240. package/src/vtn/memberships/groups/add/0.1/payload.ts +442 -0
  241. package/src/vtn/memberships/join/0.1/payload.ts +488 -0
  242. package/src/vtn/memberships/leave/0.1/payload.ts +424 -0
  243. package/src/vtn/memberships/list/0.1/payload.ts +419 -0
  244. package/src/vtn/memberships/repudiate/0.1/payload.ts +435 -0
  245. package/src/vtn/outbox/list/0.1/payload.ts +369 -0
  246. package/src/vtn/outbox/retry/0.1/payload.ts +177 -0
  247. package/src/vtn/relay/deliver/0.1/payload.ts +397 -0
  248. package/src/vtn/roles/list/0.1/payload.ts +253 -0
  249. package/src/vtn/rooms/list/0.1/payload.ts +295 -0
  250. package/src/vtn/rooms/pass/0.1/payload.ts +439 -0
@@ -0,0 +1,1311 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vtc/notifications/list/0.1/payload.schema.json
4
+ */
5
+ import type { Did_NotificationsV0_1 as Did, Ext, GroupId, Kind_NotificationsV0_1 as Kind, Notification, NotificationId, ReceivedNotification, Recipients, RecipientScope, RecordId_VtcNotificationsV0_1 as RecordId, RelayDecision, Status, Subject } from "../../../../_shared/components.js";
6
+ /**
7
+ * An administrator with `vtc.notifications.read` lists the notifications the community holds as their addressee — filtered by kind or holder — with, for each, whether the community may relay it, what a relay of it would disclose, and the relay decisions already made (VTI-NTF-070). Lapsed notifications are left out unless asked for. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.
8
+ */
9
+ export interface VTCNotificationsListPayload {
10
+ /**
11
+ * Only notifications of this kind.
12
+ */
13
+ kind?: Kind;
14
+ /**
15
+ * Only notifications whose thing is held by this DID — for example, one community's elections.
16
+ */
17
+ heldBy?: Did;
18
+ /**
19
+ * Also return notifications that are withdrawn, or whose `validUntil` has passed, and that the community still holds. Absent or false: only notifications whose thing can still be acted on.
20
+ */
21
+ includeLapsed?: boolean;
22
+ /**
23
+ * An opaque cursor from a previous response's `nextCursor`, for the same filters. The community refuses one it did not issue.
24
+ */
25
+ cursor?: string;
26
+ /**
27
+ * The most items to return.
28
+ */
29
+ limit?: number;
30
+ ext?: Ext;
31
+ }
32
+ /**
33
+ * One page of the received notifications that match, most recently received first.
34
+ */
35
+ export interface VTCNotificationsListResponsePayload {
36
+ items: ReceivedNotification[];
37
+ /**
38
+ * Present when more items remain; absent on the last page.
39
+ */
40
+ nextCursor?: string;
41
+ }
42
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
43
+ export type { Did, Ext, GroupId, Kind, Notification, NotificationId, ReceivedNotification, Recipients, RecipientScope, RecordId, RelayDecision, Status, Subject };
44
+ /** Trust Task type URI. */
45
+ export declare const TYPE_URI: "https://trusttasks.org/spec/vtc/notifications/list/0.1";
46
+ /**
47
+ * The earlier version of this specification that this one declares it
48
+ * extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
49
+ * `null`. Only the direct declaration — follow the chain with
50
+ * `extendsChain` / `readForSpec`.
51
+ */
52
+ export declare const EXTENDS: string | null;
53
+ /**
54
+ * Why this version is deprecated, or `null` while it is current. A
55
+ * superseded or retired version is still supported, and is withdrawn from
56
+ * this package in a later scheduled batch (SPEC "Superseded and Withdrawn
57
+ * Versions").
58
+ */
59
+ export declare const DEPRECATION: string | null;
60
+ /** Stable alias for this specification's request payload shape. */
61
+ export type Payload = VTCNotificationsListPayload;
62
+ /** Trust Task response type URI (request type URI + "#response"). */
63
+ export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/vtc/notifications/list/0.1#response";
64
+ /** Stable alias for this specification's success-response payload shape. */
65
+ export type Response = VTCNotificationsListResponsePayload;
66
+ /**
67
+ * This specification's payload schema, as a value.
68
+ *
69
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
70
+ * rather than only as a `.json` file because TypeScript types are erased
71
+ * at runtime: without a schema a consumer has nothing to validate, and
72
+ * every REQUIRED payload member is optional in practice. Cross-file
73
+ * `$ref`s are already inlined, so it needs no resolver.
74
+ */
75
+ export declare const PAYLOAD_SCHEMA: {
76
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
77
+ readonly $id: "https://trusttasks.org/spec/vtc/notifications/list/0.1";
78
+ readonly title: "VTC Notifications — List — payload";
79
+ readonly description: "An administrator with `vtc.notifications.read` lists the notifications the community holds as their addressee — filtered by kind or holder — with, for each, whether the community may relay it, what a relay of it would disclose, and the relay decisions already made (VTI-NTF-070). Lapsed notifications are left out unless asked for. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.";
80
+ readonly type: "object";
81
+ readonly additionalProperties: false;
82
+ readonly properties: {
83
+ readonly kind: {
84
+ readonly $ref: "#/$defs/Kind";
85
+ readonly description: "Only notifications of this kind.";
86
+ };
87
+ readonly heldBy: {
88
+ readonly $ref: "#/$defs/Did";
89
+ readonly description: "Only notifications whose thing is held by this DID — for example, one community's elections.";
90
+ };
91
+ readonly includeLapsed: {
92
+ readonly type: "boolean";
93
+ readonly description: "Also return notifications that are withdrawn, or whose `validUntil` has passed, and that the community still holds. Absent or false: only notifications whose thing can still be acted on.";
94
+ };
95
+ readonly cursor: {
96
+ readonly type: "string";
97
+ readonly minLength: 1;
98
+ readonly maxLength: 512;
99
+ readonly description: "An opaque cursor from a previous response's `nextCursor`, for the same filters. The community refuses one it did not issue.";
100
+ };
101
+ readonly limit: {
102
+ readonly type: "integer";
103
+ readonly minimum: 1;
104
+ readonly maximum: 200;
105
+ readonly description: "The most items to return.";
106
+ };
107
+ readonly ext: {
108
+ readonly $ref: "#/$defs/Ext";
109
+ };
110
+ };
111
+ readonly $defs: {
112
+ readonly Response: {
113
+ readonly $anchor: "response";
114
+ readonly title: "VTC Notifications — List — response payload";
115
+ readonly type: "object";
116
+ readonly additionalProperties: false;
117
+ readonly required: readonly ["items"];
118
+ readonly description: "One page of the received notifications that match, most recently received first.";
119
+ readonly properties: {
120
+ readonly items: {
121
+ readonly type: "array";
122
+ readonly items: {
123
+ readonly $ref: "#/$defs/ReceivedNotification";
124
+ };
125
+ };
126
+ readonly nextCursor: {
127
+ readonly type: "string";
128
+ readonly minLength: 1;
129
+ readonly maxLength: 512;
130
+ readonly description: "Present when more items remain; absent on the last page.";
131
+ };
132
+ };
133
+ };
134
+ readonly ReceivedNotification: {
135
+ readonly title: "ReceivedNotification";
136
+ readonly description: "One notification the community holds, as an administrator with `vtc.notifications.read` sees it. `originator`, `deliveredBy` and every entry of `relayedBy` were verified by the community when it accepted the notification (VTI-NTF-042); an administrator that does not take the community's word for them reads the document with vtc/notifications/show and verifies it.";
137
+ readonly type: "object";
138
+ readonly additionalProperties: false;
139
+ readonly required: readonly ["recordId", "originator", "relayedBy", "notification", "receivedAt", "mayRelay", "relayDecisions"];
140
+ readonly properties: {
141
+ readonly recordId: {
142
+ readonly $ref: "#/$defs/RecordId";
143
+ };
144
+ readonly originator: {
145
+ readonly $ref: "#/$defs/Did";
146
+ readonly description: "The issuer of the notifications/notify document: who said the thing exists.";
147
+ };
148
+ readonly relayedBy: {
149
+ readonly type: "array";
150
+ readonly maxItems: 4;
151
+ readonly items: {
152
+ readonly $ref: "#/$defs/Did";
153
+ };
154
+ readonly description: "The relayers the held revision passed through before it reached the community, in the order they relayed it; the last delivered it here, and is the party the acceptance policy counted (VTI-NTF-031). Empty for a notification the originator sent the community directly.";
155
+ };
156
+ readonly notification: {
157
+ readonly $ref: "#/$defs/Notification";
158
+ readonly description: "The notification's members at the revision held.";
159
+ };
160
+ readonly receivedAt: {
161
+ readonly type: "string";
162
+ readonly format: "date-time";
163
+ readonly description: "When the community accepted the revision held.";
164
+ };
165
+ readonly mayRelay: {
166
+ readonly type: "boolean";
167
+ readonly description: "Whether the community may relay the revision held now: its `relayable` is true, its kind may be relayed, the received chain carries at most three relays so that the community's own makes at most four (VTI-NTF-041), and it is neither withdrawn nor past its `validUntil`.";
168
+ };
169
+ readonly relayDisclosure: {
170
+ readonly type: "string";
171
+ readonly minLength: 1;
172
+ readonly maxLength: 1024;
173
+ readonly description: "What a relay of the notification discloses about the community, as the kind's definition states it (VTI-NTF-046) — for the kind `election`, that the community is a member of the community holding the election. Present exactly when the kind's definition says a relay discloses something; the administrator deciding a relay is shown it, and acknowledges it in vtc/notifications/relay.";
174
+ };
175
+ readonly relayDecisions: {
176
+ readonly type: "array";
177
+ readonly items: {
178
+ readonly $ref: "#/$defs/RelayDecision";
179
+ };
180
+ readonly description: "The relay decisions made for this notification, oldest first. Empty while none has been. Every later revision, a withdrawal included, is relayed to every party an earlier one was, without a new decision (VTI-NTF-044).";
181
+ };
182
+ };
183
+ };
184
+ readonly RelayDecision: {
185
+ readonly title: "RelayDecision";
186
+ readonly description: "One administrator's decision to relay a received notification, as the community records it (VTI-NTF-073). It records the selection and how many parties it added, never who they are: the record of whom the community relayed to exists only to relay later revisions to them (VTI-NTF-044).";
187
+ readonly type: "object";
188
+ readonly additionalProperties: false;
189
+ readonly required: readonly ["decidedAt", "decidedBy", "recipients", "recipientCount"];
190
+ readonly properties: {
191
+ readonly decidedAt: {
192
+ readonly type: "string";
193
+ readonly format: "date-time";
194
+ readonly description: "When the decision was made.";
195
+ };
196
+ readonly decidedBy: {
197
+ readonly $ref: "#/$defs/Did";
198
+ readonly description: "The administrator who made it.";
199
+ };
200
+ readonly recipients: {
201
+ readonly $ref: "#/$defs/Recipients";
202
+ };
203
+ readonly recipientCount: {
204
+ readonly type: "integer";
205
+ readonly minimum: 0;
206
+ readonly description: "How many parties this decision added to those the notification is relayed to. Parties an earlier decision already reached are not counted again.";
207
+ };
208
+ };
209
+ };
210
+ readonly Recipients: {
211
+ readonly title: "Recipients";
212
+ readonly description: "The members a relay decision reaches, resolved by the community from its own records when the decision is made (VTI-NTF-072). `groupId` is present exactly when `scope` is `group`, and `role` exactly when `scope` is `role`. Whatever the scope, the community never relays to itself, to the notification's originator, or to any relayer the received chain names (VTI-NTF-047), and relays to each party at most once per revision.";
213
+ readonly type: "object";
214
+ readonly additionalProperties: false;
215
+ readonly required: readonly ["scope"];
216
+ readonly properties: {
217
+ readonly scope: {
218
+ readonly $ref: "#/$defs/RecipientScope";
219
+ };
220
+ readonly groupId: {
221
+ readonly $ref: "#/$defs/GroupId";
222
+ readonly description: "The community group whose active members the relay reaches.";
223
+ };
224
+ readonly role: {
225
+ readonly type: "string";
226
+ readonly minLength: 1;
227
+ readonly maxLength: 128;
228
+ readonly description: "The community role whose active holders the relay reaches, in the wire form the community's member records use — for example `moderator`, or `custom:editor`.";
229
+ };
230
+ };
231
+ readonly dependentSchemas: {
232
+ readonly scope: {
233
+ readonly anyOf: readonly [{
234
+ readonly required: readonly ["groupId"];
235
+ }, {
236
+ readonly required: readonly ["role"];
237
+ }, {
238
+ readonly properties: {
239
+ readonly scope: {
240
+ readonly const: "allMembers";
241
+ };
242
+ };
243
+ }];
244
+ };
245
+ readonly groupId: {
246
+ readonly properties: {
247
+ readonly scope: {
248
+ readonly const: "group";
249
+ };
250
+ };
251
+ };
252
+ readonly role: {
253
+ readonly properties: {
254
+ readonly scope: {
255
+ readonly const: "role";
256
+ };
257
+ };
258
+ };
259
+ };
260
+ };
261
+ readonly RecipientScope: {
262
+ readonly title: "RecipientScope";
263
+ readonly description: "Which of the community's members a relay decision reaches: `allMembers` — every active member; `group` — the active members of one community group; `role` — the active members holding one community role.";
264
+ readonly type: "string";
265
+ readonly enum: readonly ["allMembers", "group", "role"];
266
+ };
267
+ readonly GroupId: {
268
+ readonly title: "GroupId";
269
+ readonly description: "Opaque identifier of a community group: `grp_` followed by 16 to 64 base64url characters. Random and community-scoped; not the group's DID.";
270
+ readonly type: "string";
271
+ readonly pattern: "^grp_[A-Za-z0-9_-]{16,64}$";
272
+ };
273
+ readonly Did: {
274
+ readonly title: "Did";
275
+ readonly description: "A DID.";
276
+ readonly type: "string";
277
+ readonly minLength: 8;
278
+ readonly maxLength: 2048;
279
+ readonly pattern: "^did:[a-z0-9]+:\\S+$";
280
+ };
281
+ readonly RecordId: {
282
+ readonly title: "RecordId";
283
+ readonly description: "The community's own identifier for one received notification, stable across the revisions that replace it. Opaque and compared for equality only; unguessable, because a read by a caller without the capability is refused and an enumerable identifier would turn the refusal into an oracle.";
284
+ readonly type: "string";
285
+ readonly minLength: 16;
286
+ readonly maxLength: 128;
287
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
288
+ };
289
+ readonly Notification: {
290
+ readonly title: "Notification";
291
+ readonly description: "The members of one notification, as notifications/notify carries them and as a recipient's agent records them. The originator is the `issuer` of the notifications/notify document and the addressee its `recipient`; neither is repeated here, because the originator's proof covers both.";
292
+ readonly type: "object";
293
+ readonly additionalProperties: false;
294
+ readonly required: readonly ["notificationId", "revision", "kind", "subject", "audience", "status", "relayable"];
295
+ readonly properties: {
296
+ readonly notificationId: {
297
+ readonly $ref: "#/$defs/NotificationId";
298
+ };
299
+ readonly revision: {
300
+ readonly type: "integer";
301
+ readonly minimum: 1;
302
+ readonly maximum: 1000000;
303
+ readonly description: "The revision of this notification. A recipient replaces the record it holds with a higher revision and leaves it unchanged for an equal or lower one (VTI-NTF-022). The first revision is 1.";
304
+ };
305
+ readonly kind: {
306
+ readonly $ref: "#/$defs/Kind";
307
+ };
308
+ readonly subject: {
309
+ readonly $ref: "#/$defs/Subject";
310
+ };
311
+ readonly audience: {
312
+ readonly $ref: "#/$defs/Did";
313
+ readonly description: "The DID whose holders or members the thing concerns — for an election under a credential roll, the DID the roll names (`roll.memberOf`); otherwise the community's own. It says whom the thing is for, not that the recipient is one of them: a recipient may be the audience itself, or a party the audience relayed the notification to.";
314
+ };
315
+ readonly status: {
316
+ readonly $ref: "#/$defs/Status";
317
+ };
318
+ readonly relayable: {
319
+ readonly type: "boolean";
320
+ readonly description: "Whether the addressee may relay this notification to the parties it stands for (notifications/relay). The originator states it explicitly; an addressee MUST NOT relay a notification whose `relayable` is false, or whose kind may not be relayed (VTI-NTF-041).";
321
+ };
322
+ readonly validFrom: {
323
+ readonly type: "string";
324
+ readonly format: "date-time";
325
+ readonly description: "When the thing can first be acted on — for an election, when voting opens. Absent: it can be acted on now.";
326
+ };
327
+ readonly validUntil: {
328
+ readonly type: "string";
329
+ readonly format: "date-time";
330
+ readonly description: "When the thing can no longer be acted on, and the notification lapses — for an election, when voting closes. A recipient discards a notification received after it (VTI-NTF-032). Absent: the kind's definition says when it lapses.";
331
+ };
332
+ };
333
+ };
334
+ readonly Status: {
335
+ readonly title: "Status";
336
+ readonly description: "Whether the thing is still open to the audience: `available`, or `withdrawn` — cancelled by its holder, or no longer open to the audience — in which case the recipient keeps the record only to show that it was withdrawn (VTI-NTF-024).";
337
+ readonly type: "string";
338
+ readonly enum: readonly ["available", "withdrawn"];
339
+ };
340
+ readonly Subject: {
341
+ readonly title: "Subject";
342
+ readonly description: "Where the thing is and how to open it. Only these three members: what the thing contains is shown by its holder, to a reader it admits, when the thing is opened with `openWith`.";
343
+ readonly type: "object";
344
+ readonly additionalProperties: false;
345
+ readonly required: readonly ["heldBy", "id", "openWith"];
346
+ readonly properties: {
347
+ readonly heldBy: {
348
+ readonly $ref: "#/$defs/Did";
349
+ readonly description: "The DID of the party holding the thing — for an election, the community. The party a recipient sends `openWith` to.";
350
+ };
351
+ readonly id: {
352
+ readonly type: "string";
353
+ readonly minLength: 1;
354
+ readonly maxLength: 256;
355
+ readonly description: "The thing's identifier at `heldBy`, in the form the `openWith` task takes it — for an election, its `electionId`.";
356
+ };
357
+ readonly openWith: {
358
+ readonly type: "string";
359
+ readonly minLength: 1;
360
+ readonly maxLength: 512;
361
+ readonly pattern: "^https://\\S+$";
362
+ readonly description: "The Type URI of the Trust Task by which a recipient opens the thing at `heldBy` — for an election, `https://trusttasks.org/spec/vtc/elections/show/0.6`. A recipient opens it only at its principal's choice (VTI-NTF-053), and only by a version of that task it and `heldBy` both serve.";
363
+ };
364
+ };
365
+ };
366
+ readonly Kind: {
367
+ readonly title: "Kind";
368
+ readonly description: "What the thing is. Either a registered kind — one lowerCamelCase name in the VTI specification's notification kind registry (Appendix G), such as `election` — or an unregistered kind, written `<reverse-DNS domain>:<name>` under a domain its definer controls, such as `org.example:meetingInvite`. A recipient that does not recognise a kind holds, lists and discards it and does nothing else with it (VTI-NTF-012).";
369
+ readonly type: "string";
370
+ readonly minLength: 1;
371
+ readonly maxLength: 256;
372
+ readonly pattern: "^([a-z][a-zA-Z0-9]{0,63}|[a-z0-9]+(-[a-z0-9]+)*(\\.[a-z0-9]+(-[a-z0-9]+)*)+:[a-z][a-zA-Z0-9]{0,63})$";
373
+ };
374
+ readonly NotificationId: {
375
+ readonly title: "NotificationId";
376
+ readonly description: "The originator's identifier for one notification, unique among the notifications that originator issues and the same in every document that carries it — retries, re-issued documents and relayed copies alike. It is the notification's idempotency key (VTI-NTF-021). Compared for equality only. An originator SHOULD make it unguessable and SHOULD NOT make it descriptive: it travels as far as the notification does.";
377
+ readonly type: "string";
378
+ readonly minLength: 1;
379
+ readonly maxLength: 256;
380
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
381
+ };
382
+ readonly Ext: {
383
+ readonly title: "Ext";
384
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
385
+ readonly type: "object";
386
+ readonly minProperties: 1;
387
+ readonly additionalProperties: true;
388
+ readonly propertyNames: {
389
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
390
+ };
391
+ };
392
+ };
393
+ };
394
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
395
+ export declare const RESPONSE_PAYLOAD_SCHEMA: {
396
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
397
+ readonly $ref: "#/$defs/Response";
398
+ readonly $defs: {
399
+ readonly Response: {
400
+ readonly $anchor: "response";
401
+ readonly title: "VTC Notifications — List — response payload";
402
+ readonly type: "object";
403
+ readonly additionalProperties: false;
404
+ readonly required: readonly ["items"];
405
+ readonly description: "One page of the received notifications that match, most recently received first.";
406
+ readonly properties: {
407
+ readonly items: {
408
+ readonly type: "array";
409
+ readonly items: {
410
+ readonly $ref: "#/$defs/ReceivedNotification";
411
+ };
412
+ };
413
+ readonly nextCursor: {
414
+ readonly type: "string";
415
+ readonly minLength: 1;
416
+ readonly maxLength: 512;
417
+ readonly description: "Present when more items remain; absent on the last page.";
418
+ };
419
+ };
420
+ };
421
+ readonly ReceivedNotification: {
422
+ readonly title: "ReceivedNotification";
423
+ readonly description: "One notification the community holds, as an administrator with `vtc.notifications.read` sees it. `originator`, `deliveredBy` and every entry of `relayedBy` were verified by the community when it accepted the notification (VTI-NTF-042); an administrator that does not take the community's word for them reads the document with vtc/notifications/show and verifies it.";
424
+ readonly type: "object";
425
+ readonly additionalProperties: false;
426
+ readonly required: readonly ["recordId", "originator", "relayedBy", "notification", "receivedAt", "mayRelay", "relayDecisions"];
427
+ readonly properties: {
428
+ readonly recordId: {
429
+ readonly $ref: "#/$defs/RecordId";
430
+ };
431
+ readonly originator: {
432
+ readonly $ref: "#/$defs/Did";
433
+ readonly description: "The issuer of the notifications/notify document: who said the thing exists.";
434
+ };
435
+ readonly relayedBy: {
436
+ readonly type: "array";
437
+ readonly maxItems: 4;
438
+ readonly items: {
439
+ readonly $ref: "#/$defs/Did";
440
+ };
441
+ readonly description: "The relayers the held revision passed through before it reached the community, in the order they relayed it; the last delivered it here, and is the party the acceptance policy counted (VTI-NTF-031). Empty for a notification the originator sent the community directly.";
442
+ };
443
+ readonly notification: {
444
+ readonly $ref: "#/$defs/Notification";
445
+ readonly description: "The notification's members at the revision held.";
446
+ };
447
+ readonly receivedAt: {
448
+ readonly type: "string";
449
+ readonly format: "date-time";
450
+ readonly description: "When the community accepted the revision held.";
451
+ };
452
+ readonly mayRelay: {
453
+ readonly type: "boolean";
454
+ readonly description: "Whether the community may relay the revision held now: its `relayable` is true, its kind may be relayed, the received chain carries at most three relays so that the community's own makes at most four (VTI-NTF-041), and it is neither withdrawn nor past its `validUntil`.";
455
+ };
456
+ readonly relayDisclosure: {
457
+ readonly type: "string";
458
+ readonly minLength: 1;
459
+ readonly maxLength: 1024;
460
+ readonly description: "What a relay of the notification discloses about the community, as the kind's definition states it (VTI-NTF-046) — for the kind `election`, that the community is a member of the community holding the election. Present exactly when the kind's definition says a relay discloses something; the administrator deciding a relay is shown it, and acknowledges it in vtc/notifications/relay.";
461
+ };
462
+ readonly relayDecisions: {
463
+ readonly type: "array";
464
+ readonly items: {
465
+ readonly $ref: "#/$defs/RelayDecision";
466
+ };
467
+ readonly description: "The relay decisions made for this notification, oldest first. Empty while none has been. Every later revision, a withdrawal included, is relayed to every party an earlier one was, without a new decision (VTI-NTF-044).";
468
+ };
469
+ };
470
+ };
471
+ readonly RelayDecision: {
472
+ readonly title: "RelayDecision";
473
+ readonly description: "One administrator's decision to relay a received notification, as the community records it (VTI-NTF-073). It records the selection and how many parties it added, never who they are: the record of whom the community relayed to exists only to relay later revisions to them (VTI-NTF-044).";
474
+ readonly type: "object";
475
+ readonly additionalProperties: false;
476
+ readonly required: readonly ["decidedAt", "decidedBy", "recipients", "recipientCount"];
477
+ readonly properties: {
478
+ readonly decidedAt: {
479
+ readonly type: "string";
480
+ readonly format: "date-time";
481
+ readonly description: "When the decision was made.";
482
+ };
483
+ readonly decidedBy: {
484
+ readonly $ref: "#/$defs/Did";
485
+ readonly description: "The administrator who made it.";
486
+ };
487
+ readonly recipients: {
488
+ readonly $ref: "#/$defs/Recipients";
489
+ };
490
+ readonly recipientCount: {
491
+ readonly type: "integer";
492
+ readonly minimum: 0;
493
+ readonly description: "How many parties this decision added to those the notification is relayed to. Parties an earlier decision already reached are not counted again.";
494
+ };
495
+ };
496
+ };
497
+ readonly Recipients: {
498
+ readonly title: "Recipients";
499
+ readonly description: "The members a relay decision reaches, resolved by the community from its own records when the decision is made (VTI-NTF-072). `groupId` is present exactly when `scope` is `group`, and `role` exactly when `scope` is `role`. Whatever the scope, the community never relays to itself, to the notification's originator, or to any relayer the received chain names (VTI-NTF-047), and relays to each party at most once per revision.";
500
+ readonly type: "object";
501
+ readonly additionalProperties: false;
502
+ readonly required: readonly ["scope"];
503
+ readonly properties: {
504
+ readonly scope: {
505
+ readonly $ref: "#/$defs/RecipientScope";
506
+ };
507
+ readonly groupId: {
508
+ readonly $ref: "#/$defs/GroupId";
509
+ readonly description: "The community group whose active members the relay reaches.";
510
+ };
511
+ readonly role: {
512
+ readonly type: "string";
513
+ readonly minLength: 1;
514
+ readonly maxLength: 128;
515
+ readonly description: "The community role whose active holders the relay reaches, in the wire form the community's member records use — for example `moderator`, or `custom:editor`.";
516
+ };
517
+ };
518
+ readonly dependentSchemas: {
519
+ readonly scope: {
520
+ readonly anyOf: readonly [{
521
+ readonly required: readonly ["groupId"];
522
+ }, {
523
+ readonly required: readonly ["role"];
524
+ }, {
525
+ readonly properties: {
526
+ readonly scope: {
527
+ readonly const: "allMembers";
528
+ };
529
+ };
530
+ }];
531
+ };
532
+ readonly groupId: {
533
+ readonly properties: {
534
+ readonly scope: {
535
+ readonly const: "group";
536
+ };
537
+ };
538
+ };
539
+ readonly role: {
540
+ readonly properties: {
541
+ readonly scope: {
542
+ readonly const: "role";
543
+ };
544
+ };
545
+ };
546
+ };
547
+ };
548
+ readonly RecipientScope: {
549
+ readonly title: "RecipientScope";
550
+ readonly description: "Which of the community's members a relay decision reaches: `allMembers` — every active member; `group` — the active members of one community group; `role` — the active members holding one community role.";
551
+ readonly type: "string";
552
+ readonly enum: readonly ["allMembers", "group", "role"];
553
+ };
554
+ readonly GroupId: {
555
+ readonly title: "GroupId";
556
+ readonly description: "Opaque identifier of a community group: `grp_` followed by 16 to 64 base64url characters. Random and community-scoped; not the group's DID.";
557
+ readonly type: "string";
558
+ readonly pattern: "^grp_[A-Za-z0-9_-]{16,64}$";
559
+ };
560
+ readonly Did: {
561
+ readonly title: "Did";
562
+ readonly description: "A DID.";
563
+ readonly type: "string";
564
+ readonly minLength: 8;
565
+ readonly maxLength: 2048;
566
+ readonly pattern: "^did:[a-z0-9]+:\\S+$";
567
+ };
568
+ readonly RecordId: {
569
+ readonly title: "RecordId";
570
+ readonly description: "The community's own identifier for one received notification, stable across the revisions that replace it. Opaque and compared for equality only; unguessable, because a read by a caller without the capability is refused and an enumerable identifier would turn the refusal into an oracle.";
571
+ readonly type: "string";
572
+ readonly minLength: 16;
573
+ readonly maxLength: 128;
574
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
575
+ };
576
+ readonly Notification: {
577
+ readonly title: "Notification";
578
+ readonly description: "The members of one notification, as notifications/notify carries them and as a recipient's agent records them. The originator is the `issuer` of the notifications/notify document and the addressee its `recipient`; neither is repeated here, because the originator's proof covers both.";
579
+ readonly type: "object";
580
+ readonly additionalProperties: false;
581
+ readonly required: readonly ["notificationId", "revision", "kind", "subject", "audience", "status", "relayable"];
582
+ readonly properties: {
583
+ readonly notificationId: {
584
+ readonly $ref: "#/$defs/NotificationId";
585
+ };
586
+ readonly revision: {
587
+ readonly type: "integer";
588
+ readonly minimum: 1;
589
+ readonly maximum: 1000000;
590
+ readonly description: "The revision of this notification. A recipient replaces the record it holds with a higher revision and leaves it unchanged for an equal or lower one (VTI-NTF-022). The first revision is 1.";
591
+ };
592
+ readonly kind: {
593
+ readonly $ref: "#/$defs/Kind";
594
+ };
595
+ readonly subject: {
596
+ readonly $ref: "#/$defs/Subject";
597
+ };
598
+ readonly audience: {
599
+ readonly $ref: "#/$defs/Did";
600
+ readonly description: "The DID whose holders or members the thing concerns — for an election under a credential roll, the DID the roll names (`roll.memberOf`); otherwise the community's own. It says whom the thing is for, not that the recipient is one of them: a recipient may be the audience itself, or a party the audience relayed the notification to.";
601
+ };
602
+ readonly status: {
603
+ readonly $ref: "#/$defs/Status";
604
+ };
605
+ readonly relayable: {
606
+ readonly type: "boolean";
607
+ readonly description: "Whether the addressee may relay this notification to the parties it stands for (notifications/relay). The originator states it explicitly; an addressee MUST NOT relay a notification whose `relayable` is false, or whose kind may not be relayed (VTI-NTF-041).";
608
+ };
609
+ readonly validFrom: {
610
+ readonly type: "string";
611
+ readonly format: "date-time";
612
+ readonly description: "When the thing can first be acted on — for an election, when voting opens. Absent: it can be acted on now.";
613
+ };
614
+ readonly validUntil: {
615
+ readonly type: "string";
616
+ readonly format: "date-time";
617
+ readonly description: "When the thing can no longer be acted on, and the notification lapses — for an election, when voting closes. A recipient discards a notification received after it (VTI-NTF-032). Absent: the kind's definition says when it lapses.";
618
+ };
619
+ };
620
+ };
621
+ readonly Status: {
622
+ readonly title: "Status";
623
+ readonly description: "Whether the thing is still open to the audience: `available`, or `withdrawn` — cancelled by its holder, or no longer open to the audience — in which case the recipient keeps the record only to show that it was withdrawn (VTI-NTF-024).";
624
+ readonly type: "string";
625
+ readonly enum: readonly ["available", "withdrawn"];
626
+ };
627
+ readonly Subject: {
628
+ readonly title: "Subject";
629
+ readonly description: "Where the thing is and how to open it. Only these three members: what the thing contains is shown by its holder, to a reader it admits, when the thing is opened with `openWith`.";
630
+ readonly type: "object";
631
+ readonly additionalProperties: false;
632
+ readonly required: readonly ["heldBy", "id", "openWith"];
633
+ readonly properties: {
634
+ readonly heldBy: {
635
+ readonly $ref: "#/$defs/Did";
636
+ readonly description: "The DID of the party holding the thing — for an election, the community. The party a recipient sends `openWith` to.";
637
+ };
638
+ readonly id: {
639
+ readonly type: "string";
640
+ readonly minLength: 1;
641
+ readonly maxLength: 256;
642
+ readonly description: "The thing's identifier at `heldBy`, in the form the `openWith` task takes it — for an election, its `electionId`.";
643
+ };
644
+ readonly openWith: {
645
+ readonly type: "string";
646
+ readonly minLength: 1;
647
+ readonly maxLength: 512;
648
+ readonly pattern: "^https://\\S+$";
649
+ readonly description: "The Type URI of the Trust Task by which a recipient opens the thing at `heldBy` — for an election, `https://trusttasks.org/spec/vtc/elections/show/0.6`. A recipient opens it only at its principal's choice (VTI-NTF-053), and only by a version of that task it and `heldBy` both serve.";
650
+ };
651
+ };
652
+ };
653
+ readonly Kind: {
654
+ readonly title: "Kind";
655
+ readonly description: "What the thing is. Either a registered kind — one lowerCamelCase name in the VTI specification's notification kind registry (Appendix G), such as `election` — or an unregistered kind, written `<reverse-DNS domain>:<name>` under a domain its definer controls, such as `org.example:meetingInvite`. A recipient that does not recognise a kind holds, lists and discards it and does nothing else with it (VTI-NTF-012).";
656
+ readonly type: "string";
657
+ readonly minLength: 1;
658
+ readonly maxLength: 256;
659
+ readonly pattern: "^([a-z][a-zA-Z0-9]{0,63}|[a-z0-9]+(-[a-z0-9]+)*(\\.[a-z0-9]+(-[a-z0-9]+)*)+:[a-z][a-zA-Z0-9]{0,63})$";
660
+ };
661
+ readonly NotificationId: {
662
+ readonly title: "NotificationId";
663
+ readonly description: "The originator's identifier for one notification, unique among the notifications that originator issues and the same in every document that carries it — retries, re-issued documents and relayed copies alike. It is the notification's idempotency key (VTI-NTF-021). Compared for equality only. An originator SHOULD make it unguessable and SHOULD NOT make it descriptive: it travels as far as the notification does.";
664
+ readonly type: "string";
665
+ readonly minLength: 1;
666
+ readonly maxLength: 256;
667
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
668
+ };
669
+ readonly Ext: {
670
+ readonly title: "Ext";
671
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
672
+ readonly type: "object";
673
+ readonly minProperties: 1;
674
+ readonly additionalProperties: true;
675
+ readonly propertyNames: {
676
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
677
+ };
678
+ };
679
+ };
680
+ };
681
+ /**
682
+ * SPEC.md §7.2 policy for the request variant, from this specification's
683
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
684
+ * per-specification and cannot be derived from the document alone, and
685
+ * item 2 needs the schema this carries.
686
+ */
687
+ export declare const SPEC: {
688
+ readonly typeUri: "https://trusttasks.org/spec/vtc/notifications/list/0.1";
689
+ readonly isBearer: false;
690
+ readonly isProofRequired: true;
691
+ readonly isRecipientRequired: true;
692
+ readonly isIssuedAtRequired: false;
693
+ readonly payloadSchema: {
694
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
695
+ readonly $id: "https://trusttasks.org/spec/vtc/notifications/list/0.1";
696
+ readonly title: "VTC Notifications — List — payload";
697
+ readonly description: "An administrator with `vtc.notifications.read` lists the notifications the community holds as their addressee — filtered by kind or holder — with, for each, whether the community may relay it, what a relay of it would disclose, and the relay decisions already made (VTI-NTF-070). Lapsed notifications are left out unless asked for. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.";
698
+ readonly type: "object";
699
+ readonly additionalProperties: false;
700
+ readonly properties: {
701
+ readonly kind: {
702
+ readonly $ref: "#/$defs/Kind";
703
+ readonly description: "Only notifications of this kind.";
704
+ };
705
+ readonly heldBy: {
706
+ readonly $ref: "#/$defs/Did";
707
+ readonly description: "Only notifications whose thing is held by this DID — for example, one community's elections.";
708
+ };
709
+ readonly includeLapsed: {
710
+ readonly type: "boolean";
711
+ readonly description: "Also return notifications that are withdrawn, or whose `validUntil` has passed, and that the community still holds. Absent or false: only notifications whose thing can still be acted on.";
712
+ };
713
+ readonly cursor: {
714
+ readonly type: "string";
715
+ readonly minLength: 1;
716
+ readonly maxLength: 512;
717
+ readonly description: "An opaque cursor from a previous response's `nextCursor`, for the same filters. The community refuses one it did not issue.";
718
+ };
719
+ readonly limit: {
720
+ readonly type: "integer";
721
+ readonly minimum: 1;
722
+ readonly maximum: 200;
723
+ readonly description: "The most items to return.";
724
+ };
725
+ readonly ext: {
726
+ readonly $ref: "#/$defs/Ext";
727
+ };
728
+ };
729
+ readonly $defs: {
730
+ readonly Response: {
731
+ readonly $anchor: "response";
732
+ readonly title: "VTC Notifications — List — response payload";
733
+ readonly type: "object";
734
+ readonly additionalProperties: false;
735
+ readonly required: readonly ["items"];
736
+ readonly description: "One page of the received notifications that match, most recently received first.";
737
+ readonly properties: {
738
+ readonly items: {
739
+ readonly type: "array";
740
+ readonly items: {
741
+ readonly $ref: "#/$defs/ReceivedNotification";
742
+ };
743
+ };
744
+ readonly nextCursor: {
745
+ readonly type: "string";
746
+ readonly minLength: 1;
747
+ readonly maxLength: 512;
748
+ readonly description: "Present when more items remain; absent on the last page.";
749
+ };
750
+ };
751
+ };
752
+ readonly ReceivedNotification: {
753
+ readonly title: "ReceivedNotification";
754
+ readonly description: "One notification the community holds, as an administrator with `vtc.notifications.read` sees it. `originator`, `deliveredBy` and every entry of `relayedBy` were verified by the community when it accepted the notification (VTI-NTF-042); an administrator that does not take the community's word for them reads the document with vtc/notifications/show and verifies it.";
755
+ readonly type: "object";
756
+ readonly additionalProperties: false;
757
+ readonly required: readonly ["recordId", "originator", "relayedBy", "notification", "receivedAt", "mayRelay", "relayDecisions"];
758
+ readonly properties: {
759
+ readonly recordId: {
760
+ readonly $ref: "#/$defs/RecordId";
761
+ };
762
+ readonly originator: {
763
+ readonly $ref: "#/$defs/Did";
764
+ readonly description: "The issuer of the notifications/notify document: who said the thing exists.";
765
+ };
766
+ readonly relayedBy: {
767
+ readonly type: "array";
768
+ readonly maxItems: 4;
769
+ readonly items: {
770
+ readonly $ref: "#/$defs/Did";
771
+ };
772
+ readonly description: "The relayers the held revision passed through before it reached the community, in the order they relayed it; the last delivered it here, and is the party the acceptance policy counted (VTI-NTF-031). Empty for a notification the originator sent the community directly.";
773
+ };
774
+ readonly notification: {
775
+ readonly $ref: "#/$defs/Notification";
776
+ readonly description: "The notification's members at the revision held.";
777
+ };
778
+ readonly receivedAt: {
779
+ readonly type: "string";
780
+ readonly format: "date-time";
781
+ readonly description: "When the community accepted the revision held.";
782
+ };
783
+ readonly mayRelay: {
784
+ readonly type: "boolean";
785
+ readonly description: "Whether the community may relay the revision held now: its `relayable` is true, its kind may be relayed, the received chain carries at most three relays so that the community's own makes at most four (VTI-NTF-041), and it is neither withdrawn nor past its `validUntil`.";
786
+ };
787
+ readonly relayDisclosure: {
788
+ readonly type: "string";
789
+ readonly minLength: 1;
790
+ readonly maxLength: 1024;
791
+ readonly description: "What a relay of the notification discloses about the community, as the kind's definition states it (VTI-NTF-046) — for the kind `election`, that the community is a member of the community holding the election. Present exactly when the kind's definition says a relay discloses something; the administrator deciding a relay is shown it, and acknowledges it in vtc/notifications/relay.";
792
+ };
793
+ readonly relayDecisions: {
794
+ readonly type: "array";
795
+ readonly items: {
796
+ readonly $ref: "#/$defs/RelayDecision";
797
+ };
798
+ readonly description: "The relay decisions made for this notification, oldest first. Empty while none has been. Every later revision, a withdrawal included, is relayed to every party an earlier one was, without a new decision (VTI-NTF-044).";
799
+ };
800
+ };
801
+ };
802
+ readonly RelayDecision: {
803
+ readonly title: "RelayDecision";
804
+ readonly description: "One administrator's decision to relay a received notification, as the community records it (VTI-NTF-073). It records the selection and how many parties it added, never who they are: the record of whom the community relayed to exists only to relay later revisions to them (VTI-NTF-044).";
805
+ readonly type: "object";
806
+ readonly additionalProperties: false;
807
+ readonly required: readonly ["decidedAt", "decidedBy", "recipients", "recipientCount"];
808
+ readonly properties: {
809
+ readonly decidedAt: {
810
+ readonly type: "string";
811
+ readonly format: "date-time";
812
+ readonly description: "When the decision was made.";
813
+ };
814
+ readonly decidedBy: {
815
+ readonly $ref: "#/$defs/Did";
816
+ readonly description: "The administrator who made it.";
817
+ };
818
+ readonly recipients: {
819
+ readonly $ref: "#/$defs/Recipients";
820
+ };
821
+ readonly recipientCount: {
822
+ readonly type: "integer";
823
+ readonly minimum: 0;
824
+ readonly description: "How many parties this decision added to those the notification is relayed to. Parties an earlier decision already reached are not counted again.";
825
+ };
826
+ };
827
+ };
828
+ readonly Recipients: {
829
+ readonly title: "Recipients";
830
+ readonly description: "The members a relay decision reaches, resolved by the community from its own records when the decision is made (VTI-NTF-072). `groupId` is present exactly when `scope` is `group`, and `role` exactly when `scope` is `role`. Whatever the scope, the community never relays to itself, to the notification's originator, or to any relayer the received chain names (VTI-NTF-047), and relays to each party at most once per revision.";
831
+ readonly type: "object";
832
+ readonly additionalProperties: false;
833
+ readonly required: readonly ["scope"];
834
+ readonly properties: {
835
+ readonly scope: {
836
+ readonly $ref: "#/$defs/RecipientScope";
837
+ };
838
+ readonly groupId: {
839
+ readonly $ref: "#/$defs/GroupId";
840
+ readonly description: "The community group whose active members the relay reaches.";
841
+ };
842
+ readonly role: {
843
+ readonly type: "string";
844
+ readonly minLength: 1;
845
+ readonly maxLength: 128;
846
+ readonly description: "The community role whose active holders the relay reaches, in the wire form the community's member records use — for example `moderator`, or `custom:editor`.";
847
+ };
848
+ };
849
+ readonly dependentSchemas: {
850
+ readonly scope: {
851
+ readonly anyOf: readonly [{
852
+ readonly required: readonly ["groupId"];
853
+ }, {
854
+ readonly required: readonly ["role"];
855
+ }, {
856
+ readonly properties: {
857
+ readonly scope: {
858
+ readonly const: "allMembers";
859
+ };
860
+ };
861
+ }];
862
+ };
863
+ readonly groupId: {
864
+ readonly properties: {
865
+ readonly scope: {
866
+ readonly const: "group";
867
+ };
868
+ };
869
+ };
870
+ readonly role: {
871
+ readonly properties: {
872
+ readonly scope: {
873
+ readonly const: "role";
874
+ };
875
+ };
876
+ };
877
+ };
878
+ };
879
+ readonly RecipientScope: {
880
+ readonly title: "RecipientScope";
881
+ readonly description: "Which of the community's members a relay decision reaches: `allMembers` — every active member; `group` — the active members of one community group; `role` — the active members holding one community role.";
882
+ readonly type: "string";
883
+ readonly enum: readonly ["allMembers", "group", "role"];
884
+ };
885
+ readonly GroupId: {
886
+ readonly title: "GroupId";
887
+ readonly description: "Opaque identifier of a community group: `grp_` followed by 16 to 64 base64url characters. Random and community-scoped; not the group's DID.";
888
+ readonly type: "string";
889
+ readonly pattern: "^grp_[A-Za-z0-9_-]{16,64}$";
890
+ };
891
+ readonly Did: {
892
+ readonly title: "Did";
893
+ readonly description: "A DID.";
894
+ readonly type: "string";
895
+ readonly minLength: 8;
896
+ readonly maxLength: 2048;
897
+ readonly pattern: "^did:[a-z0-9]+:\\S+$";
898
+ };
899
+ readonly RecordId: {
900
+ readonly title: "RecordId";
901
+ readonly description: "The community's own identifier for one received notification, stable across the revisions that replace it. Opaque and compared for equality only; unguessable, because a read by a caller without the capability is refused and an enumerable identifier would turn the refusal into an oracle.";
902
+ readonly type: "string";
903
+ readonly minLength: 16;
904
+ readonly maxLength: 128;
905
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
906
+ };
907
+ readonly Notification: {
908
+ readonly title: "Notification";
909
+ readonly description: "The members of one notification, as notifications/notify carries them and as a recipient's agent records them. The originator is the `issuer` of the notifications/notify document and the addressee its `recipient`; neither is repeated here, because the originator's proof covers both.";
910
+ readonly type: "object";
911
+ readonly additionalProperties: false;
912
+ readonly required: readonly ["notificationId", "revision", "kind", "subject", "audience", "status", "relayable"];
913
+ readonly properties: {
914
+ readonly notificationId: {
915
+ readonly $ref: "#/$defs/NotificationId";
916
+ };
917
+ readonly revision: {
918
+ readonly type: "integer";
919
+ readonly minimum: 1;
920
+ readonly maximum: 1000000;
921
+ readonly description: "The revision of this notification. A recipient replaces the record it holds with a higher revision and leaves it unchanged for an equal or lower one (VTI-NTF-022). The first revision is 1.";
922
+ };
923
+ readonly kind: {
924
+ readonly $ref: "#/$defs/Kind";
925
+ };
926
+ readonly subject: {
927
+ readonly $ref: "#/$defs/Subject";
928
+ };
929
+ readonly audience: {
930
+ readonly $ref: "#/$defs/Did";
931
+ readonly description: "The DID whose holders or members the thing concerns — for an election under a credential roll, the DID the roll names (`roll.memberOf`); otherwise the community's own. It says whom the thing is for, not that the recipient is one of them: a recipient may be the audience itself, or a party the audience relayed the notification to.";
932
+ };
933
+ readonly status: {
934
+ readonly $ref: "#/$defs/Status";
935
+ };
936
+ readonly relayable: {
937
+ readonly type: "boolean";
938
+ readonly description: "Whether the addressee may relay this notification to the parties it stands for (notifications/relay). The originator states it explicitly; an addressee MUST NOT relay a notification whose `relayable` is false, or whose kind may not be relayed (VTI-NTF-041).";
939
+ };
940
+ readonly validFrom: {
941
+ readonly type: "string";
942
+ readonly format: "date-time";
943
+ readonly description: "When the thing can first be acted on — for an election, when voting opens. Absent: it can be acted on now.";
944
+ };
945
+ readonly validUntil: {
946
+ readonly type: "string";
947
+ readonly format: "date-time";
948
+ readonly description: "When the thing can no longer be acted on, and the notification lapses — for an election, when voting closes. A recipient discards a notification received after it (VTI-NTF-032). Absent: the kind's definition says when it lapses.";
949
+ };
950
+ };
951
+ };
952
+ readonly Status: {
953
+ readonly title: "Status";
954
+ readonly description: "Whether the thing is still open to the audience: `available`, or `withdrawn` — cancelled by its holder, or no longer open to the audience — in which case the recipient keeps the record only to show that it was withdrawn (VTI-NTF-024).";
955
+ readonly type: "string";
956
+ readonly enum: readonly ["available", "withdrawn"];
957
+ };
958
+ readonly Subject: {
959
+ readonly title: "Subject";
960
+ readonly description: "Where the thing is and how to open it. Only these three members: what the thing contains is shown by its holder, to a reader it admits, when the thing is opened with `openWith`.";
961
+ readonly type: "object";
962
+ readonly additionalProperties: false;
963
+ readonly required: readonly ["heldBy", "id", "openWith"];
964
+ readonly properties: {
965
+ readonly heldBy: {
966
+ readonly $ref: "#/$defs/Did";
967
+ readonly description: "The DID of the party holding the thing — for an election, the community. The party a recipient sends `openWith` to.";
968
+ };
969
+ readonly id: {
970
+ readonly type: "string";
971
+ readonly minLength: 1;
972
+ readonly maxLength: 256;
973
+ readonly description: "The thing's identifier at `heldBy`, in the form the `openWith` task takes it — for an election, its `electionId`.";
974
+ };
975
+ readonly openWith: {
976
+ readonly type: "string";
977
+ readonly minLength: 1;
978
+ readonly maxLength: 512;
979
+ readonly pattern: "^https://\\S+$";
980
+ readonly description: "The Type URI of the Trust Task by which a recipient opens the thing at `heldBy` — for an election, `https://trusttasks.org/spec/vtc/elections/show/0.6`. A recipient opens it only at its principal's choice (VTI-NTF-053), and only by a version of that task it and `heldBy` both serve.";
981
+ };
982
+ };
983
+ };
984
+ readonly Kind: {
985
+ readonly title: "Kind";
986
+ readonly description: "What the thing is. Either a registered kind — one lowerCamelCase name in the VTI specification's notification kind registry (Appendix G), such as `election` — or an unregistered kind, written `<reverse-DNS domain>:<name>` under a domain its definer controls, such as `org.example:meetingInvite`. A recipient that does not recognise a kind holds, lists and discards it and does nothing else with it (VTI-NTF-012).";
987
+ readonly type: "string";
988
+ readonly minLength: 1;
989
+ readonly maxLength: 256;
990
+ readonly pattern: "^([a-z][a-zA-Z0-9]{0,63}|[a-z0-9]+(-[a-z0-9]+)*(\\.[a-z0-9]+(-[a-z0-9]+)*)+:[a-z][a-zA-Z0-9]{0,63})$";
991
+ };
992
+ readonly NotificationId: {
993
+ readonly title: "NotificationId";
994
+ readonly description: "The originator's identifier for one notification, unique among the notifications that originator issues and the same in every document that carries it — retries, re-issued documents and relayed copies alike. It is the notification's idempotency key (VTI-NTF-021). Compared for equality only. An originator SHOULD make it unguessable and SHOULD NOT make it descriptive: it travels as far as the notification does.";
995
+ readonly type: "string";
996
+ readonly minLength: 1;
997
+ readonly maxLength: 256;
998
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
999
+ };
1000
+ readonly Ext: {
1001
+ readonly title: "Ext";
1002
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
1003
+ readonly type: "object";
1004
+ readonly minProperties: 1;
1005
+ readonly additionalProperties: true;
1006
+ readonly propertyNames: {
1007
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
1008
+ };
1009
+ };
1010
+ };
1011
+ };
1012
+ };
1013
+ /**
1014
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
1015
+ * tracks the *issuer* party's requirement because a response swaps the
1016
+ * parties (§7.3 item 5).
1017
+ */
1018
+ export declare const RESPONSE_SPEC: {
1019
+ readonly typeUri: "https://trusttasks.org/spec/vtc/notifications/list/0.1#response";
1020
+ readonly isBearer: false;
1021
+ readonly isProofRequired: true;
1022
+ readonly isRecipientRequired: true;
1023
+ readonly isIssuedAtRequired: false;
1024
+ readonly payloadSchema: {
1025
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
1026
+ readonly $ref: "#/$defs/Response";
1027
+ readonly $defs: {
1028
+ readonly Response: {
1029
+ readonly $anchor: "response";
1030
+ readonly title: "VTC Notifications — List — response payload";
1031
+ readonly type: "object";
1032
+ readonly additionalProperties: false;
1033
+ readonly required: readonly ["items"];
1034
+ readonly description: "One page of the received notifications that match, most recently received first.";
1035
+ readonly properties: {
1036
+ readonly items: {
1037
+ readonly type: "array";
1038
+ readonly items: {
1039
+ readonly $ref: "#/$defs/ReceivedNotification";
1040
+ };
1041
+ };
1042
+ readonly nextCursor: {
1043
+ readonly type: "string";
1044
+ readonly minLength: 1;
1045
+ readonly maxLength: 512;
1046
+ readonly description: "Present when more items remain; absent on the last page.";
1047
+ };
1048
+ };
1049
+ };
1050
+ readonly ReceivedNotification: {
1051
+ readonly title: "ReceivedNotification";
1052
+ readonly description: "One notification the community holds, as an administrator with `vtc.notifications.read` sees it. `originator`, `deliveredBy` and every entry of `relayedBy` were verified by the community when it accepted the notification (VTI-NTF-042); an administrator that does not take the community's word for them reads the document with vtc/notifications/show and verifies it.";
1053
+ readonly type: "object";
1054
+ readonly additionalProperties: false;
1055
+ readonly required: readonly ["recordId", "originator", "relayedBy", "notification", "receivedAt", "mayRelay", "relayDecisions"];
1056
+ readonly properties: {
1057
+ readonly recordId: {
1058
+ readonly $ref: "#/$defs/RecordId";
1059
+ };
1060
+ readonly originator: {
1061
+ readonly $ref: "#/$defs/Did";
1062
+ readonly description: "The issuer of the notifications/notify document: who said the thing exists.";
1063
+ };
1064
+ readonly relayedBy: {
1065
+ readonly type: "array";
1066
+ readonly maxItems: 4;
1067
+ readonly items: {
1068
+ readonly $ref: "#/$defs/Did";
1069
+ };
1070
+ readonly description: "The relayers the held revision passed through before it reached the community, in the order they relayed it; the last delivered it here, and is the party the acceptance policy counted (VTI-NTF-031). Empty for a notification the originator sent the community directly.";
1071
+ };
1072
+ readonly notification: {
1073
+ readonly $ref: "#/$defs/Notification";
1074
+ readonly description: "The notification's members at the revision held.";
1075
+ };
1076
+ readonly receivedAt: {
1077
+ readonly type: "string";
1078
+ readonly format: "date-time";
1079
+ readonly description: "When the community accepted the revision held.";
1080
+ };
1081
+ readonly mayRelay: {
1082
+ readonly type: "boolean";
1083
+ readonly description: "Whether the community may relay the revision held now: its `relayable` is true, its kind may be relayed, the received chain carries at most three relays so that the community's own makes at most four (VTI-NTF-041), and it is neither withdrawn nor past its `validUntil`.";
1084
+ };
1085
+ readonly relayDisclosure: {
1086
+ readonly type: "string";
1087
+ readonly minLength: 1;
1088
+ readonly maxLength: 1024;
1089
+ readonly description: "What a relay of the notification discloses about the community, as the kind's definition states it (VTI-NTF-046) — for the kind `election`, that the community is a member of the community holding the election. Present exactly when the kind's definition says a relay discloses something; the administrator deciding a relay is shown it, and acknowledges it in vtc/notifications/relay.";
1090
+ };
1091
+ readonly relayDecisions: {
1092
+ readonly type: "array";
1093
+ readonly items: {
1094
+ readonly $ref: "#/$defs/RelayDecision";
1095
+ };
1096
+ readonly description: "The relay decisions made for this notification, oldest first. Empty while none has been. Every later revision, a withdrawal included, is relayed to every party an earlier one was, without a new decision (VTI-NTF-044).";
1097
+ };
1098
+ };
1099
+ };
1100
+ readonly RelayDecision: {
1101
+ readonly title: "RelayDecision";
1102
+ readonly description: "One administrator's decision to relay a received notification, as the community records it (VTI-NTF-073). It records the selection and how many parties it added, never who they are: the record of whom the community relayed to exists only to relay later revisions to them (VTI-NTF-044).";
1103
+ readonly type: "object";
1104
+ readonly additionalProperties: false;
1105
+ readonly required: readonly ["decidedAt", "decidedBy", "recipients", "recipientCount"];
1106
+ readonly properties: {
1107
+ readonly decidedAt: {
1108
+ readonly type: "string";
1109
+ readonly format: "date-time";
1110
+ readonly description: "When the decision was made.";
1111
+ };
1112
+ readonly decidedBy: {
1113
+ readonly $ref: "#/$defs/Did";
1114
+ readonly description: "The administrator who made it.";
1115
+ };
1116
+ readonly recipients: {
1117
+ readonly $ref: "#/$defs/Recipients";
1118
+ };
1119
+ readonly recipientCount: {
1120
+ readonly type: "integer";
1121
+ readonly minimum: 0;
1122
+ readonly description: "How many parties this decision added to those the notification is relayed to. Parties an earlier decision already reached are not counted again.";
1123
+ };
1124
+ };
1125
+ };
1126
+ readonly Recipients: {
1127
+ readonly title: "Recipients";
1128
+ readonly description: "The members a relay decision reaches, resolved by the community from its own records when the decision is made (VTI-NTF-072). `groupId` is present exactly when `scope` is `group`, and `role` exactly when `scope` is `role`. Whatever the scope, the community never relays to itself, to the notification's originator, or to any relayer the received chain names (VTI-NTF-047), and relays to each party at most once per revision.";
1129
+ readonly type: "object";
1130
+ readonly additionalProperties: false;
1131
+ readonly required: readonly ["scope"];
1132
+ readonly properties: {
1133
+ readonly scope: {
1134
+ readonly $ref: "#/$defs/RecipientScope";
1135
+ };
1136
+ readonly groupId: {
1137
+ readonly $ref: "#/$defs/GroupId";
1138
+ readonly description: "The community group whose active members the relay reaches.";
1139
+ };
1140
+ readonly role: {
1141
+ readonly type: "string";
1142
+ readonly minLength: 1;
1143
+ readonly maxLength: 128;
1144
+ readonly description: "The community role whose active holders the relay reaches, in the wire form the community's member records use — for example `moderator`, or `custom:editor`.";
1145
+ };
1146
+ };
1147
+ readonly dependentSchemas: {
1148
+ readonly scope: {
1149
+ readonly anyOf: readonly [{
1150
+ readonly required: readonly ["groupId"];
1151
+ }, {
1152
+ readonly required: readonly ["role"];
1153
+ }, {
1154
+ readonly properties: {
1155
+ readonly scope: {
1156
+ readonly const: "allMembers";
1157
+ };
1158
+ };
1159
+ }];
1160
+ };
1161
+ readonly groupId: {
1162
+ readonly properties: {
1163
+ readonly scope: {
1164
+ readonly const: "group";
1165
+ };
1166
+ };
1167
+ };
1168
+ readonly role: {
1169
+ readonly properties: {
1170
+ readonly scope: {
1171
+ readonly const: "role";
1172
+ };
1173
+ };
1174
+ };
1175
+ };
1176
+ };
1177
+ readonly RecipientScope: {
1178
+ readonly title: "RecipientScope";
1179
+ readonly description: "Which of the community's members a relay decision reaches: `allMembers` — every active member; `group` — the active members of one community group; `role` — the active members holding one community role.";
1180
+ readonly type: "string";
1181
+ readonly enum: readonly ["allMembers", "group", "role"];
1182
+ };
1183
+ readonly GroupId: {
1184
+ readonly title: "GroupId";
1185
+ readonly description: "Opaque identifier of a community group: `grp_` followed by 16 to 64 base64url characters. Random and community-scoped; not the group's DID.";
1186
+ readonly type: "string";
1187
+ readonly pattern: "^grp_[A-Za-z0-9_-]{16,64}$";
1188
+ };
1189
+ readonly Did: {
1190
+ readonly title: "Did";
1191
+ readonly description: "A DID.";
1192
+ readonly type: "string";
1193
+ readonly minLength: 8;
1194
+ readonly maxLength: 2048;
1195
+ readonly pattern: "^did:[a-z0-9]+:\\S+$";
1196
+ };
1197
+ readonly RecordId: {
1198
+ readonly title: "RecordId";
1199
+ readonly description: "The community's own identifier for one received notification, stable across the revisions that replace it. Opaque and compared for equality only; unguessable, because a read by a caller without the capability is refused and an enumerable identifier would turn the refusal into an oracle.";
1200
+ readonly type: "string";
1201
+ readonly minLength: 16;
1202
+ readonly maxLength: 128;
1203
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
1204
+ };
1205
+ readonly Notification: {
1206
+ readonly title: "Notification";
1207
+ readonly description: "The members of one notification, as notifications/notify carries them and as a recipient's agent records them. The originator is the `issuer` of the notifications/notify document and the addressee its `recipient`; neither is repeated here, because the originator's proof covers both.";
1208
+ readonly type: "object";
1209
+ readonly additionalProperties: false;
1210
+ readonly required: readonly ["notificationId", "revision", "kind", "subject", "audience", "status", "relayable"];
1211
+ readonly properties: {
1212
+ readonly notificationId: {
1213
+ readonly $ref: "#/$defs/NotificationId";
1214
+ };
1215
+ readonly revision: {
1216
+ readonly type: "integer";
1217
+ readonly minimum: 1;
1218
+ readonly maximum: 1000000;
1219
+ readonly description: "The revision of this notification. A recipient replaces the record it holds with a higher revision and leaves it unchanged for an equal or lower one (VTI-NTF-022). The first revision is 1.";
1220
+ };
1221
+ readonly kind: {
1222
+ readonly $ref: "#/$defs/Kind";
1223
+ };
1224
+ readonly subject: {
1225
+ readonly $ref: "#/$defs/Subject";
1226
+ };
1227
+ readonly audience: {
1228
+ readonly $ref: "#/$defs/Did";
1229
+ readonly description: "The DID whose holders or members the thing concerns — for an election under a credential roll, the DID the roll names (`roll.memberOf`); otherwise the community's own. It says whom the thing is for, not that the recipient is one of them: a recipient may be the audience itself, or a party the audience relayed the notification to.";
1230
+ };
1231
+ readonly status: {
1232
+ readonly $ref: "#/$defs/Status";
1233
+ };
1234
+ readonly relayable: {
1235
+ readonly type: "boolean";
1236
+ readonly description: "Whether the addressee may relay this notification to the parties it stands for (notifications/relay). The originator states it explicitly; an addressee MUST NOT relay a notification whose `relayable` is false, or whose kind may not be relayed (VTI-NTF-041).";
1237
+ };
1238
+ readonly validFrom: {
1239
+ readonly type: "string";
1240
+ readonly format: "date-time";
1241
+ readonly description: "When the thing can first be acted on — for an election, when voting opens. Absent: it can be acted on now.";
1242
+ };
1243
+ readonly validUntil: {
1244
+ readonly type: "string";
1245
+ readonly format: "date-time";
1246
+ readonly description: "When the thing can no longer be acted on, and the notification lapses — for an election, when voting closes. A recipient discards a notification received after it (VTI-NTF-032). Absent: the kind's definition says when it lapses.";
1247
+ };
1248
+ };
1249
+ };
1250
+ readonly Status: {
1251
+ readonly title: "Status";
1252
+ readonly description: "Whether the thing is still open to the audience: `available`, or `withdrawn` — cancelled by its holder, or no longer open to the audience — in which case the recipient keeps the record only to show that it was withdrawn (VTI-NTF-024).";
1253
+ readonly type: "string";
1254
+ readonly enum: readonly ["available", "withdrawn"];
1255
+ };
1256
+ readonly Subject: {
1257
+ readonly title: "Subject";
1258
+ readonly description: "Where the thing is and how to open it. Only these three members: what the thing contains is shown by its holder, to a reader it admits, when the thing is opened with `openWith`.";
1259
+ readonly type: "object";
1260
+ readonly additionalProperties: false;
1261
+ readonly required: readonly ["heldBy", "id", "openWith"];
1262
+ readonly properties: {
1263
+ readonly heldBy: {
1264
+ readonly $ref: "#/$defs/Did";
1265
+ readonly description: "The DID of the party holding the thing — for an election, the community. The party a recipient sends `openWith` to.";
1266
+ };
1267
+ readonly id: {
1268
+ readonly type: "string";
1269
+ readonly minLength: 1;
1270
+ readonly maxLength: 256;
1271
+ readonly description: "The thing's identifier at `heldBy`, in the form the `openWith` task takes it — for an election, its `electionId`.";
1272
+ };
1273
+ readonly openWith: {
1274
+ readonly type: "string";
1275
+ readonly minLength: 1;
1276
+ readonly maxLength: 512;
1277
+ readonly pattern: "^https://\\S+$";
1278
+ readonly description: "The Type URI of the Trust Task by which a recipient opens the thing at `heldBy` — for an election, `https://trusttasks.org/spec/vtc/elections/show/0.6`. A recipient opens it only at its principal's choice (VTI-NTF-053), and only by a version of that task it and `heldBy` both serve.";
1279
+ };
1280
+ };
1281
+ };
1282
+ readonly Kind: {
1283
+ readonly title: "Kind";
1284
+ readonly description: "What the thing is. Either a registered kind — one lowerCamelCase name in the VTI specification's notification kind registry (Appendix G), such as `election` — or an unregistered kind, written `<reverse-DNS domain>:<name>` under a domain its definer controls, such as `org.example:meetingInvite`. A recipient that does not recognise a kind holds, lists and discards it and does nothing else with it (VTI-NTF-012).";
1285
+ readonly type: "string";
1286
+ readonly minLength: 1;
1287
+ readonly maxLength: 256;
1288
+ readonly pattern: "^([a-z][a-zA-Z0-9]{0,63}|[a-z0-9]+(-[a-z0-9]+)*(\\.[a-z0-9]+(-[a-z0-9]+)*)+:[a-z][a-zA-Z0-9]{0,63})$";
1289
+ };
1290
+ readonly NotificationId: {
1291
+ readonly title: "NotificationId";
1292
+ readonly description: "The originator's identifier for one notification, unique among the notifications that originator issues and the same in every document that carries it — retries, re-issued documents and relayed copies alike. It is the notification's idempotency key (VTI-NTF-021). Compared for equality only. An originator SHOULD make it unguessable and SHOULD NOT make it descriptive: it travels as far as the notification does.";
1293
+ readonly type: "string";
1294
+ readonly minLength: 1;
1295
+ readonly maxLength: 256;
1296
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
1297
+ };
1298
+ readonly Ext: {
1299
+ readonly title: "Ext";
1300
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
1301
+ readonly type: "object";
1302
+ readonly minProperties: 1;
1303
+ readonly additionalProperties: true;
1304
+ readonly propertyNames: {
1305
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
1306
+ };
1307
+ };
1308
+ };
1309
+ };
1310
+ };
1311
+ //# sourceMappingURL=payload.d.ts.map