@openvtc/trust-tasks 0.22.6 → 0.22.7

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 (189) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/_shared/components.d.ts +434 -1
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/acl/_shared/0.1/acl-entry.d.ts +1 -1
  5. package/dist/acl/_shared/0.1/acl-entry.d.ts.map +1 -1
  6. package/dist/acl/_shared/0.2/acl-entry.d.ts +22 -0
  7. package/dist/acl/_shared/0.2/acl-entry.d.ts.map +1 -0
  8. package/dist/acl/_shared/0.2/acl-entry.js +6 -0
  9. package/dist/acl/_shared/0.2/acl-entry.js.map +1 -0
  10. package/dist/acl/change-role/0.1/payload.d.ts +1 -1
  11. package/dist/acl/change-role/0.1/payload.d.ts.map +1 -1
  12. package/dist/acl/change-role/0.2/payload.d.ts +1679 -0
  13. package/dist/acl/change-role/0.2/payload.d.ts.map +1 -0
  14. package/dist/acl/change-role/0.2/payload.js +955 -0
  15. package/dist/acl/change-role/0.2/payload.js.map +1 -0
  16. package/dist/acl/grant/0.1/payload.d.ts +1 -1
  17. package/dist/acl/grant/0.1/payload.d.ts.map +1 -1
  18. package/dist/acl/grant/0.2/payload.d.ts +1649 -0
  19. package/dist/acl/grant/0.2/payload.d.ts.map +1 -0
  20. package/dist/acl/grant/0.2/payload.js +942 -0
  21. package/dist/acl/grant/0.2/payload.js.map +1 -0
  22. package/dist/acl/list/0.1/payload.d.ts +1 -1
  23. package/dist/acl/list/0.1/payload.d.ts.map +1 -1
  24. package/dist/acl/list/0.2/payload.d.ts +1853 -0
  25. package/dist/acl/list/0.2/payload.d.ts.map +1 -0
  26. package/dist/acl/list/0.2/payload.js +1041 -0
  27. package/dist/acl/list/0.2/payload.js.map +1 -0
  28. package/dist/acl/revoke/0.1/payload.d.ts +1 -1
  29. package/dist/acl/revoke/0.1/payload.d.ts.map +1 -1
  30. package/dist/acl/revoke/0.2/payload.d.ts +1844 -0
  31. package/dist/acl/revoke/0.2/payload.d.ts.map +1 -0
  32. package/dist/acl/revoke/0.2/payload.js +1052 -0
  33. package/dist/acl/revoke/0.2/payload.js.map +1 -0
  34. package/dist/acl/show/0.1/payload.d.ts +1 -1
  35. package/dist/acl/show/0.1/payload.d.ts.map +1 -1
  36. package/dist/acl/show/0.2/payload.d.ts +1689 -0
  37. package/dist/acl/show/0.2/payload.d.ts.map +1 -0
  38. package/dist/acl/show/0.2/payload.js +968 -0
  39. package/dist/acl/show/0.2/payload.js.map +1 -0
  40. package/dist/acl/swap-key/0.1/payload.d.ts +1 -1
  41. package/dist/acl/swap-key/0.1/payload.d.ts.map +1 -1
  42. package/dist/acl/update/0.1/payload.d.ts +1 -1
  43. package/dist/acl/update/0.1/payload.d.ts.map +1 -1
  44. package/dist/acl/update/0.2/payload.d.ts +1784 -0
  45. package/dist/acl/update/0.2/payload.d.ts.map +1 -0
  46. package/dist/acl/update/0.2/payload.js +1005 -0
  47. package/dist/acl/update/0.2/payload.js.map +1 -0
  48. package/dist/auth/step-up/approve-request/0.4/payload.d.ts +672 -0
  49. package/dist/auth/step-up/approve-request/0.4/payload.d.ts.map +1 -0
  50. package/dist/auth/step-up/approve-request/0.4/payload.js +373 -0
  51. package/dist/auth/step-up/approve-request/0.4/payload.js.map +1 -0
  52. package/dist/auth/step-up/approve-response/0.6/payload.d.ts +974 -0
  53. package/dist/auth/step-up/approve-response/0.6/payload.d.ts.map +1 -0
  54. package/dist/auth/step-up/approve-response/0.6/payload.js +552 -0
  55. package/dist/auth/step-up/approve-response/0.6/payload.js.map +1 -0
  56. package/dist/auth/step-up/approver/_shared/0.1/approver.d.ts +16 -0
  57. package/dist/auth/step-up/approver/_shared/0.1/approver.d.ts.map +1 -0
  58. package/dist/auth/step-up/approver/_shared/0.1/approver.js +6 -0
  59. package/dist/auth/step-up/approver/_shared/0.1/approver.js.map +1 -0
  60. package/dist/auth/step-up/approver/attest/0.1/payload.d.ts +174 -0
  61. package/dist/auth/step-up/approver/attest/0.1/payload.d.ts.map +1 -0
  62. package/dist/auth/step-up/approver/attest/0.1/payload.js +97 -0
  63. package/dist/auth/step-up/approver/attest/0.1/payload.js.map +1 -0
  64. package/dist/auth/step-up/approver/enroll/0.1/payload.d.ts +503 -0
  65. package/dist/auth/step-up/approver/enroll/0.1/payload.d.ts.map +1 -0
  66. package/dist/auth/step-up/approver/enroll/0.1/payload.js +285 -0
  67. package/dist/auth/step-up/approver/enroll/0.1/payload.js.map +1 -0
  68. package/dist/auth/step-up/approver/invite/0.1/payload.d.ts +375 -0
  69. package/dist/auth/step-up/approver/invite/0.1/payload.d.ts.map +1 -0
  70. package/dist/auth/step-up/approver/invite/0.1/payload.js +200 -0
  71. package/dist/auth/step-up/approver/invite/0.1/payload.js.map +1 -0
  72. package/dist/auth/step-up/approver/list/0.1/payload.d.ts +477 -0
  73. package/dist/auth/step-up/approver/list/0.1/payload.d.ts.map +1 -0
  74. package/dist/auth/step-up/approver/list/0.1/payload.js +272 -0
  75. package/dist/auth/step-up/approver/list/0.1/payload.js.map +1 -0
  76. package/dist/auth/step-up/approver/redeem/finish/0.1/payload.d.ts +512 -0
  77. package/dist/auth/step-up/approver/redeem/finish/0.1/payload.d.ts.map +1 -0
  78. package/dist/auth/step-up/approver/redeem/finish/0.1/payload.js +290 -0
  79. package/dist/auth/step-up/approver/redeem/finish/0.1/payload.js.map +1 -0
  80. package/dist/auth/step-up/approver/redeem/start/0.1/payload.d.ts +343 -0
  81. package/dist/auth/step-up/approver/redeem/start/0.1/payload.d.ts.map +1 -0
  82. package/dist/auth/step-up/approver/redeem/start/0.1/payload.js +187 -0
  83. package/dist/auth/step-up/approver/redeem/start/0.1/payload.js.map +1 -0
  84. package/dist/auth/step-up/approver/revoke/0.1/payload.d.ts +534 -0
  85. package/dist/auth/step-up/approver/revoke/0.1/payload.d.ts.map +1 -0
  86. package/dist/auth/step-up/approver/revoke/0.1/payload.js +301 -0
  87. package/dist/auth/step-up/approver/revoke/0.1/payload.js.map +1 -0
  88. package/dist/index.d.ts +31 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +31 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/task-consent/decision/0.2/payload.d.ts +775 -0
  93. package/dist/task-consent/decision/0.2/payload.d.ts.map +1 -0
  94. package/dist/task-consent/decision/0.2/payload.js +450 -0
  95. package/dist/task-consent/decision/0.2/payload.js.map +1 -0
  96. package/dist/vtc/admin/actions/_shared/0.1/action.d.ts +24 -0
  97. package/dist/vtc/admin/actions/_shared/0.1/action.d.ts.map +1 -0
  98. package/dist/vtc/admin/actions/_shared/0.1/action.js +6 -0
  99. package/dist/vtc/admin/actions/_shared/0.1/action.js.map +1 -0
  100. package/dist/vtc/admin/actions/acknowledge/0.1/payload.d.ts +1012 -0
  101. package/dist/vtc/admin/actions/acknowledge/0.1/payload.d.ts.map +1 -0
  102. package/dist/vtc/admin/actions/acknowledge/0.1/payload.js +636 -0
  103. package/dist/vtc/admin/actions/acknowledge/0.1/payload.js.map +1 -0
  104. package/dist/vtc/admin/actions/cancel/0.1/payload.d.ts +1026 -0
  105. package/dist/vtc/admin/actions/cancel/0.1/payload.d.ts.map +1 -0
  106. package/dist/vtc/admin/actions/cancel/0.1/payload.js +641 -0
  107. package/dist/vtc/admin/actions/cancel/0.1/payload.js.map +1 -0
  108. package/dist/vtc/admin/actions/list/0.1/payload.d.ts +1200 -0
  109. package/dist/vtc/admin/actions/list/0.1/payload.d.ts.map +1 -0
  110. package/dist/vtc/admin/actions/list/0.1/payload.js +726 -0
  111. package/dist/vtc/admin/actions/list/0.1/payload.js.map +1 -0
  112. package/dist/vtc/admin/actions/show/0.1/payload.d.ts +1012 -0
  113. package/dist/vtc/admin/actions/show/0.1/payload.d.ts.map +1 -0
  114. package/dist/vtc/admin/actions/show/0.1/payload.js +636 -0
  115. package/dist/vtc/admin/actions/show/0.1/payload.js.map +1 -0
  116. package/dist/vtc/install/claim/finish/0.3/payload.d.ts +379 -0
  117. package/dist/vtc/install/claim/finish/0.3/payload.d.ts.map +1 -0
  118. package/dist/vtc/install/claim/finish/0.3/payload.js +205 -0
  119. package/dist/vtc/install/claim/finish/0.3/payload.js.map +1 -0
  120. package/dist/vtc/install/claim/start/0.3/payload.d.ts +368 -0
  121. package/dist/vtc/install/claim/start/0.3/payload.d.ts.map +1 -0
  122. package/dist/vtc/install/claim/start/0.3/payload.js +201 -0
  123. package/dist/vtc/install/claim/start/0.3/payload.js.map +1 -0
  124. package/dist/vtc/members/authority-reduced-notice/0.1/payload.d.ts +208 -0
  125. package/dist/vtc/members/authority-reduced-notice/0.1/payload.d.ts.map +1 -0
  126. package/dist/vtc/members/authority-reduced-notice/0.1/payload.js +112 -0
  127. package/dist/vtc/members/authority-reduced-notice/0.1/payload.js.map +1 -0
  128. package/dist/vtc/roles/_shared/0.1/role.d.ts +16 -0
  129. package/dist/vtc/roles/_shared/0.1/role.d.ts.map +1 -0
  130. package/dist/vtc/roles/_shared/0.1/role.js +6 -0
  131. package/dist/vtc/roles/_shared/0.1/role.js.map +1 -0
  132. package/dist/vtc/roles/define/0.1/payload.d.ts +703 -0
  133. package/dist/vtc/roles/define/0.1/payload.d.ts.map +1 -0
  134. package/dist/vtc/roles/define/0.1/payload.js +371 -0
  135. package/dist/vtc/roles/define/0.1/payload.js.map +1 -0
  136. package/dist/vtc/roles/delete/0.1/payload.d.ts +281 -0
  137. package/dist/vtc/roles/delete/0.1/payload.d.ts.map +1 -0
  138. package/dist/vtc/roles/delete/0.1/payload.js +152 -0
  139. package/dist/vtc/roles/delete/0.1/payload.js.map +1 -0
  140. package/dist/vtc/roles/list/0.1/payload.d.ts +639 -0
  141. package/dist/vtc/roles/list/0.1/payload.d.ts.map +1 -0
  142. package/dist/vtc/roles/list/0.1/payload.js +345 -0
  143. package/dist/vtc/roles/list/0.1/payload.js.map +1 -0
  144. package/dist/vtc/roles/show/0.1/payload.d.ts +651 -0
  145. package/dist/vtc/roles/show/0.1/payload.d.ts.map +1 -0
  146. package/dist/vtc/roles/show/0.1/payload.js +351 -0
  147. package/dist/vtc/roles/show/0.1/payload.js.map +1 -0
  148. package/package.json +1 -1
  149. package/src/_shared/components.ts +440 -1
  150. package/src/acl/_shared/0.1/acl-entry.ts +1 -1
  151. package/src/acl/_shared/0.2/acl-entry.ts +23 -0
  152. package/src/acl/change-role/0.1/payload.ts +1 -1
  153. package/src/acl/change-role/0.2/payload.ts +1011 -0
  154. package/src/acl/grant/0.1/payload.ts +1 -1
  155. package/src/acl/grant/0.2/payload.ts +990 -0
  156. package/src/acl/list/0.1/payload.ts +1 -1
  157. package/src/acl/list/0.2/payload.ts +1125 -0
  158. package/src/acl/revoke/0.1/payload.ts +1 -1
  159. package/src/acl/revoke/0.2/payload.ts +1122 -0
  160. package/src/acl/show/0.1/payload.ts +1 -1
  161. package/src/acl/show/0.2/payload.ts +1016 -0
  162. package/src/acl/swap-key/0.1/payload.ts +1 -1
  163. package/src/acl/update/0.1/payload.ts +1 -1
  164. package/src/acl/update/0.2/payload.ts +1094 -0
  165. package/src/auth/step-up/approve-request/0.4/payload.ts +461 -0
  166. package/src/auth/step-up/approve-response/0.6/payload.ts +648 -0
  167. package/src/auth/step-up/approver/_shared/0.1/approver.ts +17 -0
  168. package/src/auth/step-up/approver/attest/0.1/payload.ts +135 -0
  169. package/src/auth/step-up/approver/enroll/0.1/payload.ts +329 -0
  170. package/src/auth/step-up/approver/invite/0.1/payload.ts +258 -0
  171. package/src/auth/step-up/approver/list/0.1/payload.ts +318 -0
  172. package/src/auth/step-up/approver/redeem/finish/0.1/payload.ts +337 -0
  173. package/src/auth/step-up/approver/redeem/start/0.1/payload.ts +241 -0
  174. package/src/auth/step-up/approver/revoke/0.1/payload.ts +352 -0
  175. package/src/index.ts +31 -0
  176. package/src/task-consent/decision/0.2/payload.ts +537 -0
  177. package/src/vtc/admin/actions/_shared/0.1/action.ts +25 -0
  178. package/src/vtc/admin/actions/acknowledge/0.1/payload.ts +671 -0
  179. package/src/vtc/admin/actions/cancel/0.1/payload.ts +680 -0
  180. package/src/vtc/admin/actions/list/0.1/payload.ts +795 -0
  181. package/src/vtc/admin/actions/show/0.1/payload.ts +671 -0
  182. package/src/vtc/install/claim/finish/0.3/payload.ts +253 -0
  183. package/src/vtc/install/claim/start/0.3/payload.ts +256 -0
  184. package/src/vtc/members/authority-reduced-notice/0.1/payload.ts +162 -0
  185. package/src/vtc/roles/_shared/0.1/role.ts +17 -0
  186. package/src/vtc/roles/define/0.1/payload.ts +435 -0
  187. package/src/vtc/roles/delete/0.1/payload.ts +200 -0
  188. package/src/vtc/roles/list/0.1/payload.ts +389 -0
  189. package/src/vtc/roles/show/0.1/payload.ts +399 -0
@@ -0,0 +1,1012 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vtc/admin/actions/acknowledge/0.1/payload.schema.json
4
+ */
5
+ import type { Action, ActionId, DigestMultibase, Ext, Field, Summary } from "../../../../../_shared/components.js";
6
+ /**
7
+ * An administrator acknowledges an `acknowledge`-category action — an operation that already took effect outside the approval path, such as an operator's offline or break-glass write — recording that they have seen it. There is nothing to approve or decline. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.
8
+ */
9
+ export interface VTCAdminActionsAcknowledgePayload {
10
+ /**
11
+ * The open `acknowledge` action being acknowledged.
12
+ */
13
+ actionId: ActionId;
14
+ ext?: Ext;
15
+ }
16
+ /**
17
+ * The action with the caller's acknowledgement recorded in `approvals`. When the caller was the last administrator expected to acknowledge it, `status` is `completed` and `closedReason` is `acknowledged`. Failures use trust-task-error, not this shape.
18
+ */
19
+ export interface VTCAdminActionsAcknowledgeResponsePayload {
20
+ action: Action;
21
+ ext?: Ext;
22
+ }
23
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
24
+ export type { Action, ActionId, DigestMultibase, Ext, Field, Summary };
25
+ /** Trust Task type URI. */
26
+ export declare const TYPE_URI: "https://trusttasks.org/spec/vtc/admin/actions/acknowledge/0.1";
27
+ /** Stable alias for this specification's request payload shape. */
28
+ export type Payload = VTCAdminActionsAcknowledgePayload;
29
+ /** Trust Task response type URI (request type URI + "#response"). */
30
+ export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/vtc/admin/actions/acknowledge/0.1#response";
31
+ /** Stable alias for this specification's success-response payload shape. */
32
+ export type Response = VTCAdminActionsAcknowledgeResponsePayload;
33
+ /**
34
+ * This specification's payload schema, as a value.
35
+ *
36
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
37
+ * rather than only as a `.json` file because TypeScript types are erased
38
+ * at runtime: without a schema a consumer has nothing to validate, and
39
+ * every REQUIRED payload member is optional in practice. Cross-file
40
+ * `$ref`s are already inlined, so it needs no resolver.
41
+ */
42
+ export declare const PAYLOAD_SCHEMA: {
43
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
44
+ readonly $id: "https://trusttasks.org/spec/vtc/admin/actions/acknowledge/0.1";
45
+ readonly title: "VTC Admin Actions — Acknowledge — payload";
46
+ readonly description: "An administrator acknowledges an `acknowledge`-category action — an operation that already took effect outside the approval path, such as an operator's offline or break-glass write — recording that they have seen it. There is nothing to approve or decline. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.";
47
+ readonly type: "object";
48
+ readonly additionalProperties: false;
49
+ readonly required: readonly ["actionId"];
50
+ readonly properties: {
51
+ readonly actionId: {
52
+ readonly $ref: "#/$defs/ActionId";
53
+ readonly description: "The open `acknowledge` action being acknowledged.";
54
+ };
55
+ readonly ext: {
56
+ readonly $ref: "#/$defs/Ext";
57
+ };
58
+ };
59
+ readonly $defs: {
60
+ readonly Response: {
61
+ readonly $anchor: "response";
62
+ readonly title: "VTC Admin Actions — Acknowledge — response payload";
63
+ readonly description: "The action with the caller's acknowledgement recorded in `approvals`. When the caller was the last administrator expected to acknowledge it, `status` is `completed` and `closedReason` is `acknowledged`. Failures use trust-task-error, not this shape.";
64
+ readonly type: "object";
65
+ readonly additionalProperties: false;
66
+ readonly required: readonly ["action"];
67
+ readonly properties: {
68
+ readonly action: {
69
+ readonly $ref: "#/$defs/Action";
70
+ };
71
+ readonly ext: {
72
+ readonly $ref: "#/$defs/Ext";
73
+ };
74
+ };
75
+ };
76
+ readonly Ext: {
77
+ readonly title: "Ext";
78
+ 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.";
79
+ readonly type: "object";
80
+ readonly minProperties: 1;
81
+ readonly additionalProperties: true;
82
+ readonly propertyNames: {
83
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
84
+ };
85
+ };
86
+ readonly Action: {
87
+ readonly title: "Action";
88
+ readonly description: "One parked administrative operation, as the caller is entitled to see it. The same action reads differently to different callers only in `challenge` and `callerRole`, which are per-caller.";
89
+ readonly type: "object";
90
+ readonly additionalProperties: false;
91
+ readonly required: readonly ["actionId", "category", "kind", "typeUri", "requester", "status", "createdAt", "approvals", "summary", "payload", "payloadDigest", "callerRole"];
92
+ readonly properties: {
93
+ readonly actionId: {
94
+ readonly $ref: "#/$defs/ActionId";
95
+ };
96
+ readonly category: {
97
+ readonly type: "string";
98
+ readonly enum: readonly ["approval", "acknowledge", "queue"];
99
+ readonly description: "`approval` — eligible approvers approve or decline, N-of-M; the operation executes when the threshold is met. `acknowledge` — an operation that already happened (an operator's offline or break-glass write) which every remaining administrator must acknowledge; there is nothing to approve or decline. `queue` — an existing human decision (for example a join review) surfaced in the same list, with a threshold of one.";
100
+ };
101
+ readonly kind: {
102
+ readonly type: "string";
103
+ readonly minLength: 1;
104
+ readonly maxLength: 128;
105
+ readonly pattern: "^[a-z][a-zA-Z0-9.]*$";
106
+ readonly description: "The community's name for what kind of operation is parked, dotted and lowerCamelCase (`acl.grant.authority`, `member.join.review`). Selects the summary template. The set is OPEN: a renderer that does not recognise a kind still renders `summary` from its fields.";
107
+ };
108
+ readonly typeUri: {
109
+ readonly type: "string";
110
+ readonly format: "uri";
111
+ readonly minLength: 1;
112
+ readonly description: "The Type URI of the parked operation — the Trust Task the community will execute when the action completes. Together with `payload` it is exactly what will run.";
113
+ };
114
+ readonly requester: {
115
+ readonly type: "string";
116
+ readonly minLength: 1;
117
+ readonly maxLength: 2048;
118
+ readonly description: "VID of the party whose operation was parked. For `acknowledge`, the operator whose offline write is being acknowledged, where the community can attribute one.";
119
+ };
120
+ readonly status: {
121
+ readonly type: "string";
122
+ readonly enum: readonly ["open", "completed", "declined", "expired", "cancelled", "failed"];
123
+ readonly description: "`open` — awaiting decisions. `completed` — the threshold was met and the operation executed (or, for `acknowledge`, every administrator acknowledged). `declined` — an eligible approver denied it. `expired` — it lapsed at `expiresAt`. `cancelled` — the requester withdrew it, or the community invalidated it (see `closedReason`). `failed` — the threshold was met but the re-check at execution refused it, or execution itself failed; the operation did not take effect.";
124
+ };
125
+ readonly createdAt: {
126
+ readonly type: "string";
127
+ readonly format: "date-time";
128
+ readonly description: "When the operation was parked.";
129
+ };
130
+ readonly expiresAt: {
131
+ readonly type: "string";
132
+ readonly format: "date-time";
133
+ readonly description: "When an open action lapses. Absent for an `acknowledge` or `queue` action that does not expire; ALWAYS present for `approval`, whose open life is bounded (72 hours by default; the community configures it between 15 minutes and 14 days).";
134
+ };
135
+ readonly closedAt: {
136
+ readonly type: "string";
137
+ readonly format: "date-time";
138
+ readonly description: "When the action left `open`. Present exactly when `status` is not `open`.";
139
+ };
140
+ readonly closedReason: {
141
+ readonly type: "string";
142
+ readonly enum: readonly ["thresholdMet", "declined", "expired", "cancelledByRequester", "invalidated", "failedRecheck", "acknowledged"];
143
+ readonly description: "Why the action closed. Present exactly when `status` is not `open`. `invalidated` — the community closed it because something it depended on stopped holding before the threshold (an approver or the requester lost standing, the target state moved); `failedRecheck` — the threshold was met but the execution-time re-check refused.";
144
+ };
145
+ readonly threshold: {
146
+ readonly type: "integer";
147
+ readonly minimum: 1;
148
+ readonly description: "The number of distinct approvals the operation needs. Present for `approval`; absent otherwise (a `queue` decision is one decision by construction, and `acknowledge` needs every remaining administrator).";
149
+ };
150
+ readonly approvals: {
151
+ readonly type: "array";
152
+ readonly description: "The decisions in favour recorded so far — approvals for `approval` and `queue`, acknowledgements for `acknowledge` — one entry per distinct subject, in the order recorded. Empty while none has landed.";
153
+ readonly items: {
154
+ readonly type: "object";
155
+ readonly additionalProperties: false;
156
+ readonly required: readonly ["subject", "at"];
157
+ readonly properties: {
158
+ readonly subject: {
159
+ readonly type: "string";
160
+ readonly minLength: 1;
161
+ readonly maxLength: 2048;
162
+ readonly description: "VID of the approver or acknowledger, as proven by the decision's own proof.";
163
+ };
164
+ readonly at: {
165
+ readonly type: "string";
166
+ readonly format: "date-time";
167
+ readonly description: "When the decision was recorded.";
168
+ };
169
+ };
170
+ };
171
+ };
172
+ readonly approversRemaining: {
173
+ readonly type: "integer";
174
+ readonly minimum: 0;
175
+ readonly description: "How many further distinct decisions the action needs while `open` — approvals for `approval`, acknowledgements for `acknowledge`. Lets a console say 'one more' without disclosing the eligible set.";
176
+ };
177
+ readonly summary: {
178
+ readonly $ref: "#/$defs/Summary";
179
+ };
180
+ readonly payload: {
181
+ readonly type: "object";
182
+ readonly description: "The exact payload of the parked operation — the object `payloadDigest` is computed over and the one the community will execute. Carried so an approver can recompute the digest and re-derive every summary field from it rather than trusting the rendering (VTI-APV-013). Deliberately an open object: its shape is governed by the specification `typeUri` names, and a digest is checked over members exactly as received.";
183
+ };
184
+ readonly payloadDigest: {
185
+ readonly $ref: "#/$defs/DigestMultibase";
186
+ readonly description: "Digest of `payload`, taken over its RFC 8785 (JCS) canonicalization. The community re-derives it from the payload it is about to execute and refuses on mismatch. The digest an approver signs over is the challenge-salted one of `task-consent/decision`, not this value; this one lets the approver check that `payload` is what was parked.";
187
+ };
188
+ readonly challenge: {
189
+ readonly type: "string";
190
+ readonly minLength: 16;
191
+ readonly maxLength: 256;
192
+ readonly description: "Present ONLY on an action the CALLER may decide now — an `approval` or `queue` action on which the caller is an eligible approver who has not yet decided. Per-approver: two approvers are shown different challenges for the same action. Echoed verbatim in `task-consent/decision`'s `challenge`, which binds that decision to this approver and this action. Absent for everyone else, including the requester.";
193
+ };
194
+ readonly callerRole: {
195
+ readonly type: "string";
196
+ readonly enum: readonly ["approver", "requester", "acknowledger", "observer"];
197
+ readonly description: "The caller's relation to this action. `approver` — an eligible approver (whether or not already decided). `requester` — the party whose operation was parked. `acknowledger` — an administrator expected to acknowledge it. `observer` — none of these; seen only through the audit-read capability on a `history` or `all` view.";
198
+ };
199
+ readonly requesterOpenActions: {
200
+ readonly type: "integer";
201
+ readonly minimum: 0;
202
+ readonly description: "How many open actions the requester currently has at the community, this one included. For consent-fatigue display: an approver shown the twentieth request from one requester today should be able to see that it is the twentieth.";
203
+ };
204
+ readonly ext: {
205
+ readonly $ref: "#/$defs/Ext";
206
+ };
207
+ };
208
+ };
209
+ readonly Summary: {
210
+ readonly title: "Summary";
211
+ readonly description: "What an approver is shown, rendered from the summary template for the action's `kind`. Title and effect are the template's prose; the fields are the payload values that prose is about, each located by pointer so a renderer can verify it.";
212
+ readonly type: "object";
213
+ readonly additionalProperties: false;
214
+ readonly required: readonly ["title", "fields", "templateDigest"];
215
+ readonly properties: {
216
+ readonly title: {
217
+ readonly type: "string";
218
+ readonly minLength: 1;
219
+ readonly maxLength: 256;
220
+ readonly description: "One-line heading from the template. Prose only: a renderer MUST NOT present the action from this text without the fields.";
221
+ };
222
+ readonly effect: {
223
+ readonly type: "string";
224
+ readonly maxLength: 1024;
225
+ readonly description: "One or two sentences from the template saying what executing the operation will do.";
226
+ };
227
+ readonly fields: {
228
+ readonly type: "object";
229
+ readonly description: "Named values the template displays, keyed by a lowerCamelCase field name. Each locates its value in `payload` by JSON Pointer.";
230
+ readonly propertyNames: {
231
+ readonly pattern: "^[a-z][a-zA-Z0-9]*$";
232
+ readonly maxLength: 64;
233
+ };
234
+ readonly additionalProperties: {
235
+ readonly $ref: "#/$defs/Field";
236
+ };
237
+ };
238
+ readonly templateDigest: {
239
+ readonly $ref: "#/$defs/DigestMultibase";
240
+ readonly description: "Digest of the summary template this summary was rendered from, over its RFC 8785 (JCS) canonicalization. Pinned per `kind`: a renderer that holds the template for a kind refuses a summary naming a different digest, so the community cannot change what approvers are shown for a kind without that change being visible.";
241
+ };
242
+ };
243
+ };
244
+ readonly Field: {
245
+ readonly title: "Field";
246
+ readonly description: "One displayed value, with where it comes from and how to render it.";
247
+ readonly type: "object";
248
+ readonly additionalProperties: false;
249
+ readonly required: readonly ["pointer", "format", "value"];
250
+ readonly properties: {
251
+ readonly pointer: {
252
+ readonly type: "string";
253
+ readonly maxLength: 512;
254
+ readonly pattern: "^(/([^~/]|~[01])*)*$";
255
+ readonly description: "RFC 6901 JSON Pointer into the action's `payload`. The empty string addresses the whole payload.";
256
+ };
257
+ readonly format: {
258
+ readonly type: "string";
259
+ readonly enum: readonly ["did", "capabilityList", "duration", "datetime", "text"];
260
+ readonly description: "How to render the value. `did` — a DID, shown in full or with a verified display name, never truncated to a prefix that two DIDs share. `capabilityList` — an array of capability names. `duration` — an ISO 8601 duration. `datetime` — an RFC 3339 date-time. `text` — anything else, rendered as literal text.";
261
+ };
262
+ readonly value: {
263
+ readonly description: "The value found at `pointer` when the community rendered the summary. A renderer re-derives it from `payload` and refuses to render the action on any mismatch; it is carried so that a mismatch is detectable, not so that it can be trusted.";
264
+ };
265
+ };
266
+ };
267
+ readonly DigestMultibase: {
268
+ readonly title: "DigestMultibase";
269
+ readonly description: "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.";
270
+ readonly type: "string";
271
+ readonly minLength: 16;
272
+ readonly pattern: "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$";
273
+ readonly examples: readonly ["zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"];
274
+ };
275
+ readonly ActionId: {
276
+ readonly title: "ActionId";
277
+ readonly description: "Opaque, community-minted identifier of one action. A consumer MUST NOT parse or order it; it is compared for equality only. Long enough to be unguessable, because a show of an id the caller may not see is answered `notFound` and an enumerable id would turn that answer into an oracle.";
278
+ readonly type: "string";
279
+ readonly minLength: 16;
280
+ readonly maxLength: 128;
281
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
282
+ };
283
+ };
284
+ };
285
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
286
+ export declare const RESPONSE_PAYLOAD_SCHEMA: {
287
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
288
+ readonly $ref: "#/$defs/Response";
289
+ readonly $defs: {
290
+ readonly Response: {
291
+ readonly $anchor: "response";
292
+ readonly title: "VTC Admin Actions — Acknowledge — response payload";
293
+ readonly description: "The action with the caller's acknowledgement recorded in `approvals`. When the caller was the last administrator expected to acknowledge it, `status` is `completed` and `closedReason` is `acknowledged`. Failures use trust-task-error, not this shape.";
294
+ readonly type: "object";
295
+ readonly additionalProperties: false;
296
+ readonly required: readonly ["action"];
297
+ readonly properties: {
298
+ readonly action: {
299
+ readonly $ref: "#/$defs/Action";
300
+ };
301
+ readonly ext: {
302
+ readonly $ref: "#/$defs/Ext";
303
+ };
304
+ };
305
+ };
306
+ readonly Ext: {
307
+ readonly title: "Ext";
308
+ 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.";
309
+ readonly type: "object";
310
+ readonly minProperties: 1;
311
+ readonly additionalProperties: true;
312
+ readonly propertyNames: {
313
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
314
+ };
315
+ };
316
+ readonly Action: {
317
+ readonly title: "Action";
318
+ readonly description: "One parked administrative operation, as the caller is entitled to see it. The same action reads differently to different callers only in `challenge` and `callerRole`, which are per-caller.";
319
+ readonly type: "object";
320
+ readonly additionalProperties: false;
321
+ readonly required: readonly ["actionId", "category", "kind", "typeUri", "requester", "status", "createdAt", "approvals", "summary", "payload", "payloadDigest", "callerRole"];
322
+ readonly properties: {
323
+ readonly actionId: {
324
+ readonly $ref: "#/$defs/ActionId";
325
+ };
326
+ readonly category: {
327
+ readonly type: "string";
328
+ readonly enum: readonly ["approval", "acknowledge", "queue"];
329
+ readonly description: "`approval` — eligible approvers approve or decline, N-of-M; the operation executes when the threshold is met. `acknowledge` — an operation that already happened (an operator's offline or break-glass write) which every remaining administrator must acknowledge; there is nothing to approve or decline. `queue` — an existing human decision (for example a join review) surfaced in the same list, with a threshold of one.";
330
+ };
331
+ readonly kind: {
332
+ readonly type: "string";
333
+ readonly minLength: 1;
334
+ readonly maxLength: 128;
335
+ readonly pattern: "^[a-z][a-zA-Z0-9.]*$";
336
+ readonly description: "The community's name for what kind of operation is parked, dotted and lowerCamelCase (`acl.grant.authority`, `member.join.review`). Selects the summary template. The set is OPEN: a renderer that does not recognise a kind still renders `summary` from its fields.";
337
+ };
338
+ readonly typeUri: {
339
+ readonly type: "string";
340
+ readonly format: "uri";
341
+ readonly minLength: 1;
342
+ readonly description: "The Type URI of the parked operation — the Trust Task the community will execute when the action completes. Together with `payload` it is exactly what will run.";
343
+ };
344
+ readonly requester: {
345
+ readonly type: "string";
346
+ readonly minLength: 1;
347
+ readonly maxLength: 2048;
348
+ readonly description: "VID of the party whose operation was parked. For `acknowledge`, the operator whose offline write is being acknowledged, where the community can attribute one.";
349
+ };
350
+ readonly status: {
351
+ readonly type: "string";
352
+ readonly enum: readonly ["open", "completed", "declined", "expired", "cancelled", "failed"];
353
+ readonly description: "`open` — awaiting decisions. `completed` — the threshold was met and the operation executed (or, for `acknowledge`, every administrator acknowledged). `declined` — an eligible approver denied it. `expired` — it lapsed at `expiresAt`. `cancelled` — the requester withdrew it, or the community invalidated it (see `closedReason`). `failed` — the threshold was met but the re-check at execution refused it, or execution itself failed; the operation did not take effect.";
354
+ };
355
+ readonly createdAt: {
356
+ readonly type: "string";
357
+ readonly format: "date-time";
358
+ readonly description: "When the operation was parked.";
359
+ };
360
+ readonly expiresAt: {
361
+ readonly type: "string";
362
+ readonly format: "date-time";
363
+ readonly description: "When an open action lapses. Absent for an `acknowledge` or `queue` action that does not expire; ALWAYS present for `approval`, whose open life is bounded (72 hours by default; the community configures it between 15 minutes and 14 days).";
364
+ };
365
+ readonly closedAt: {
366
+ readonly type: "string";
367
+ readonly format: "date-time";
368
+ readonly description: "When the action left `open`. Present exactly when `status` is not `open`.";
369
+ };
370
+ readonly closedReason: {
371
+ readonly type: "string";
372
+ readonly enum: readonly ["thresholdMet", "declined", "expired", "cancelledByRequester", "invalidated", "failedRecheck", "acknowledged"];
373
+ readonly description: "Why the action closed. Present exactly when `status` is not `open`. `invalidated` — the community closed it because something it depended on stopped holding before the threshold (an approver or the requester lost standing, the target state moved); `failedRecheck` — the threshold was met but the execution-time re-check refused.";
374
+ };
375
+ readonly threshold: {
376
+ readonly type: "integer";
377
+ readonly minimum: 1;
378
+ readonly description: "The number of distinct approvals the operation needs. Present for `approval`; absent otherwise (a `queue` decision is one decision by construction, and `acknowledge` needs every remaining administrator).";
379
+ };
380
+ readonly approvals: {
381
+ readonly type: "array";
382
+ readonly description: "The decisions in favour recorded so far — approvals for `approval` and `queue`, acknowledgements for `acknowledge` — one entry per distinct subject, in the order recorded. Empty while none has landed.";
383
+ readonly items: {
384
+ readonly type: "object";
385
+ readonly additionalProperties: false;
386
+ readonly required: readonly ["subject", "at"];
387
+ readonly properties: {
388
+ readonly subject: {
389
+ readonly type: "string";
390
+ readonly minLength: 1;
391
+ readonly maxLength: 2048;
392
+ readonly description: "VID of the approver or acknowledger, as proven by the decision's own proof.";
393
+ };
394
+ readonly at: {
395
+ readonly type: "string";
396
+ readonly format: "date-time";
397
+ readonly description: "When the decision was recorded.";
398
+ };
399
+ };
400
+ };
401
+ };
402
+ readonly approversRemaining: {
403
+ readonly type: "integer";
404
+ readonly minimum: 0;
405
+ readonly description: "How many further distinct decisions the action needs while `open` — approvals for `approval`, acknowledgements for `acknowledge`. Lets a console say 'one more' without disclosing the eligible set.";
406
+ };
407
+ readonly summary: {
408
+ readonly $ref: "#/$defs/Summary";
409
+ };
410
+ readonly payload: {
411
+ readonly type: "object";
412
+ readonly description: "The exact payload of the parked operation — the object `payloadDigest` is computed over and the one the community will execute. Carried so an approver can recompute the digest and re-derive every summary field from it rather than trusting the rendering (VTI-APV-013). Deliberately an open object: its shape is governed by the specification `typeUri` names, and a digest is checked over members exactly as received.";
413
+ };
414
+ readonly payloadDigest: {
415
+ readonly $ref: "#/$defs/DigestMultibase";
416
+ readonly description: "Digest of `payload`, taken over its RFC 8785 (JCS) canonicalization. The community re-derives it from the payload it is about to execute and refuses on mismatch. The digest an approver signs over is the challenge-salted one of `task-consent/decision`, not this value; this one lets the approver check that `payload` is what was parked.";
417
+ };
418
+ readonly challenge: {
419
+ readonly type: "string";
420
+ readonly minLength: 16;
421
+ readonly maxLength: 256;
422
+ readonly description: "Present ONLY on an action the CALLER may decide now — an `approval` or `queue` action on which the caller is an eligible approver who has not yet decided. Per-approver: two approvers are shown different challenges for the same action. Echoed verbatim in `task-consent/decision`'s `challenge`, which binds that decision to this approver and this action. Absent for everyone else, including the requester.";
423
+ };
424
+ readonly callerRole: {
425
+ readonly type: "string";
426
+ readonly enum: readonly ["approver", "requester", "acknowledger", "observer"];
427
+ readonly description: "The caller's relation to this action. `approver` — an eligible approver (whether or not already decided). `requester` — the party whose operation was parked. `acknowledger` — an administrator expected to acknowledge it. `observer` — none of these; seen only through the audit-read capability on a `history` or `all` view.";
428
+ };
429
+ readonly requesterOpenActions: {
430
+ readonly type: "integer";
431
+ readonly minimum: 0;
432
+ readonly description: "How many open actions the requester currently has at the community, this one included. For consent-fatigue display: an approver shown the twentieth request from one requester today should be able to see that it is the twentieth.";
433
+ };
434
+ readonly ext: {
435
+ readonly $ref: "#/$defs/Ext";
436
+ };
437
+ };
438
+ };
439
+ readonly Summary: {
440
+ readonly title: "Summary";
441
+ readonly description: "What an approver is shown, rendered from the summary template for the action's `kind`. Title and effect are the template's prose; the fields are the payload values that prose is about, each located by pointer so a renderer can verify it.";
442
+ readonly type: "object";
443
+ readonly additionalProperties: false;
444
+ readonly required: readonly ["title", "fields", "templateDigest"];
445
+ readonly properties: {
446
+ readonly title: {
447
+ readonly type: "string";
448
+ readonly minLength: 1;
449
+ readonly maxLength: 256;
450
+ readonly description: "One-line heading from the template. Prose only: a renderer MUST NOT present the action from this text without the fields.";
451
+ };
452
+ readonly effect: {
453
+ readonly type: "string";
454
+ readonly maxLength: 1024;
455
+ readonly description: "One or two sentences from the template saying what executing the operation will do.";
456
+ };
457
+ readonly fields: {
458
+ readonly type: "object";
459
+ readonly description: "Named values the template displays, keyed by a lowerCamelCase field name. Each locates its value in `payload` by JSON Pointer.";
460
+ readonly propertyNames: {
461
+ readonly pattern: "^[a-z][a-zA-Z0-9]*$";
462
+ readonly maxLength: 64;
463
+ };
464
+ readonly additionalProperties: {
465
+ readonly $ref: "#/$defs/Field";
466
+ };
467
+ };
468
+ readonly templateDigest: {
469
+ readonly $ref: "#/$defs/DigestMultibase";
470
+ readonly description: "Digest of the summary template this summary was rendered from, over its RFC 8785 (JCS) canonicalization. Pinned per `kind`: a renderer that holds the template for a kind refuses a summary naming a different digest, so the community cannot change what approvers are shown for a kind without that change being visible.";
471
+ };
472
+ };
473
+ };
474
+ readonly Field: {
475
+ readonly title: "Field";
476
+ readonly description: "One displayed value, with where it comes from and how to render it.";
477
+ readonly type: "object";
478
+ readonly additionalProperties: false;
479
+ readonly required: readonly ["pointer", "format", "value"];
480
+ readonly properties: {
481
+ readonly pointer: {
482
+ readonly type: "string";
483
+ readonly maxLength: 512;
484
+ readonly pattern: "^(/([^~/]|~[01])*)*$";
485
+ readonly description: "RFC 6901 JSON Pointer into the action's `payload`. The empty string addresses the whole payload.";
486
+ };
487
+ readonly format: {
488
+ readonly type: "string";
489
+ readonly enum: readonly ["did", "capabilityList", "duration", "datetime", "text"];
490
+ readonly description: "How to render the value. `did` — a DID, shown in full or with a verified display name, never truncated to a prefix that two DIDs share. `capabilityList` — an array of capability names. `duration` — an ISO 8601 duration. `datetime` — an RFC 3339 date-time. `text` — anything else, rendered as literal text.";
491
+ };
492
+ readonly value: {
493
+ readonly description: "The value found at `pointer` when the community rendered the summary. A renderer re-derives it from `payload` and refuses to render the action on any mismatch; it is carried so that a mismatch is detectable, not so that it can be trusted.";
494
+ };
495
+ };
496
+ };
497
+ readonly DigestMultibase: {
498
+ readonly title: "DigestMultibase";
499
+ readonly description: "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.";
500
+ readonly type: "string";
501
+ readonly minLength: 16;
502
+ readonly pattern: "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$";
503
+ readonly examples: readonly ["zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"];
504
+ };
505
+ readonly ActionId: {
506
+ readonly title: "ActionId";
507
+ readonly description: "Opaque, community-minted identifier of one action. A consumer MUST NOT parse or order it; it is compared for equality only. Long enough to be unguessable, because a show of an id the caller may not see is answered `notFound` and an enumerable id would turn that answer into an oracle.";
508
+ readonly type: "string";
509
+ readonly minLength: 16;
510
+ readonly maxLength: 128;
511
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
512
+ };
513
+ };
514
+ };
515
+ /**
516
+ * SPEC.md §7.2 policy for the request variant, from this specification's
517
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
518
+ * per-specification and cannot be derived from the document alone, and
519
+ * item 2 needs the schema this carries.
520
+ */
521
+ export declare const SPEC: {
522
+ readonly typeUri: "https://trusttasks.org/spec/vtc/admin/actions/acknowledge/0.1";
523
+ readonly isBearer: false;
524
+ readonly isProofRequired: true;
525
+ readonly isRecipientRequired: true;
526
+ readonly isIssuedAtRequired: true;
527
+ readonly payloadSchema: {
528
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
529
+ readonly $id: "https://trusttasks.org/spec/vtc/admin/actions/acknowledge/0.1";
530
+ readonly title: "VTC Admin Actions — Acknowledge — payload";
531
+ readonly description: "An administrator acknowledges an `acknowledge`-category action — an operation that already took effect outside the approval path, such as an operator's offline or break-glass write — recording that they have seen it. There is nothing to approve or decline. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.";
532
+ readonly type: "object";
533
+ readonly additionalProperties: false;
534
+ readonly required: readonly ["actionId"];
535
+ readonly properties: {
536
+ readonly actionId: {
537
+ readonly $ref: "#/$defs/ActionId";
538
+ readonly description: "The open `acknowledge` action being acknowledged.";
539
+ };
540
+ readonly ext: {
541
+ readonly $ref: "#/$defs/Ext";
542
+ };
543
+ };
544
+ readonly $defs: {
545
+ readonly Response: {
546
+ readonly $anchor: "response";
547
+ readonly title: "VTC Admin Actions — Acknowledge — response payload";
548
+ readonly description: "The action with the caller's acknowledgement recorded in `approvals`. When the caller was the last administrator expected to acknowledge it, `status` is `completed` and `closedReason` is `acknowledged`. Failures use trust-task-error, not this shape.";
549
+ readonly type: "object";
550
+ readonly additionalProperties: false;
551
+ readonly required: readonly ["action"];
552
+ readonly properties: {
553
+ readonly action: {
554
+ readonly $ref: "#/$defs/Action";
555
+ };
556
+ readonly ext: {
557
+ readonly $ref: "#/$defs/Ext";
558
+ };
559
+ };
560
+ };
561
+ readonly Ext: {
562
+ readonly title: "Ext";
563
+ 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.";
564
+ readonly type: "object";
565
+ readonly minProperties: 1;
566
+ readonly additionalProperties: true;
567
+ readonly propertyNames: {
568
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
569
+ };
570
+ };
571
+ readonly Action: {
572
+ readonly title: "Action";
573
+ readonly description: "One parked administrative operation, as the caller is entitled to see it. The same action reads differently to different callers only in `challenge` and `callerRole`, which are per-caller.";
574
+ readonly type: "object";
575
+ readonly additionalProperties: false;
576
+ readonly required: readonly ["actionId", "category", "kind", "typeUri", "requester", "status", "createdAt", "approvals", "summary", "payload", "payloadDigest", "callerRole"];
577
+ readonly properties: {
578
+ readonly actionId: {
579
+ readonly $ref: "#/$defs/ActionId";
580
+ };
581
+ readonly category: {
582
+ readonly type: "string";
583
+ readonly enum: readonly ["approval", "acknowledge", "queue"];
584
+ readonly description: "`approval` — eligible approvers approve or decline, N-of-M; the operation executes when the threshold is met. `acknowledge` — an operation that already happened (an operator's offline or break-glass write) which every remaining administrator must acknowledge; there is nothing to approve or decline. `queue` — an existing human decision (for example a join review) surfaced in the same list, with a threshold of one.";
585
+ };
586
+ readonly kind: {
587
+ readonly type: "string";
588
+ readonly minLength: 1;
589
+ readonly maxLength: 128;
590
+ readonly pattern: "^[a-z][a-zA-Z0-9.]*$";
591
+ readonly description: "The community's name for what kind of operation is parked, dotted and lowerCamelCase (`acl.grant.authority`, `member.join.review`). Selects the summary template. The set is OPEN: a renderer that does not recognise a kind still renders `summary` from its fields.";
592
+ };
593
+ readonly typeUri: {
594
+ readonly type: "string";
595
+ readonly format: "uri";
596
+ readonly minLength: 1;
597
+ readonly description: "The Type URI of the parked operation — the Trust Task the community will execute when the action completes. Together with `payload` it is exactly what will run.";
598
+ };
599
+ readonly requester: {
600
+ readonly type: "string";
601
+ readonly minLength: 1;
602
+ readonly maxLength: 2048;
603
+ readonly description: "VID of the party whose operation was parked. For `acknowledge`, the operator whose offline write is being acknowledged, where the community can attribute one.";
604
+ };
605
+ readonly status: {
606
+ readonly type: "string";
607
+ readonly enum: readonly ["open", "completed", "declined", "expired", "cancelled", "failed"];
608
+ readonly description: "`open` — awaiting decisions. `completed` — the threshold was met and the operation executed (or, for `acknowledge`, every administrator acknowledged). `declined` — an eligible approver denied it. `expired` — it lapsed at `expiresAt`. `cancelled` — the requester withdrew it, or the community invalidated it (see `closedReason`). `failed` — the threshold was met but the re-check at execution refused it, or execution itself failed; the operation did not take effect.";
609
+ };
610
+ readonly createdAt: {
611
+ readonly type: "string";
612
+ readonly format: "date-time";
613
+ readonly description: "When the operation was parked.";
614
+ };
615
+ readonly expiresAt: {
616
+ readonly type: "string";
617
+ readonly format: "date-time";
618
+ readonly description: "When an open action lapses. Absent for an `acknowledge` or `queue` action that does not expire; ALWAYS present for `approval`, whose open life is bounded (72 hours by default; the community configures it between 15 minutes and 14 days).";
619
+ };
620
+ readonly closedAt: {
621
+ readonly type: "string";
622
+ readonly format: "date-time";
623
+ readonly description: "When the action left `open`. Present exactly when `status` is not `open`.";
624
+ };
625
+ readonly closedReason: {
626
+ readonly type: "string";
627
+ readonly enum: readonly ["thresholdMet", "declined", "expired", "cancelledByRequester", "invalidated", "failedRecheck", "acknowledged"];
628
+ readonly description: "Why the action closed. Present exactly when `status` is not `open`. `invalidated` — the community closed it because something it depended on stopped holding before the threshold (an approver or the requester lost standing, the target state moved); `failedRecheck` — the threshold was met but the execution-time re-check refused.";
629
+ };
630
+ readonly threshold: {
631
+ readonly type: "integer";
632
+ readonly minimum: 1;
633
+ readonly description: "The number of distinct approvals the operation needs. Present for `approval`; absent otherwise (a `queue` decision is one decision by construction, and `acknowledge` needs every remaining administrator).";
634
+ };
635
+ readonly approvals: {
636
+ readonly type: "array";
637
+ readonly description: "The decisions in favour recorded so far — approvals for `approval` and `queue`, acknowledgements for `acknowledge` — one entry per distinct subject, in the order recorded. Empty while none has landed.";
638
+ readonly items: {
639
+ readonly type: "object";
640
+ readonly additionalProperties: false;
641
+ readonly required: readonly ["subject", "at"];
642
+ readonly properties: {
643
+ readonly subject: {
644
+ readonly type: "string";
645
+ readonly minLength: 1;
646
+ readonly maxLength: 2048;
647
+ readonly description: "VID of the approver or acknowledger, as proven by the decision's own proof.";
648
+ };
649
+ readonly at: {
650
+ readonly type: "string";
651
+ readonly format: "date-time";
652
+ readonly description: "When the decision was recorded.";
653
+ };
654
+ };
655
+ };
656
+ };
657
+ readonly approversRemaining: {
658
+ readonly type: "integer";
659
+ readonly minimum: 0;
660
+ readonly description: "How many further distinct decisions the action needs while `open` — approvals for `approval`, acknowledgements for `acknowledge`. Lets a console say 'one more' without disclosing the eligible set.";
661
+ };
662
+ readonly summary: {
663
+ readonly $ref: "#/$defs/Summary";
664
+ };
665
+ readonly payload: {
666
+ readonly type: "object";
667
+ readonly description: "The exact payload of the parked operation — the object `payloadDigest` is computed over and the one the community will execute. Carried so an approver can recompute the digest and re-derive every summary field from it rather than trusting the rendering (VTI-APV-013). Deliberately an open object: its shape is governed by the specification `typeUri` names, and a digest is checked over members exactly as received.";
668
+ };
669
+ readonly payloadDigest: {
670
+ readonly $ref: "#/$defs/DigestMultibase";
671
+ readonly description: "Digest of `payload`, taken over its RFC 8785 (JCS) canonicalization. The community re-derives it from the payload it is about to execute and refuses on mismatch. The digest an approver signs over is the challenge-salted one of `task-consent/decision`, not this value; this one lets the approver check that `payload` is what was parked.";
672
+ };
673
+ readonly challenge: {
674
+ readonly type: "string";
675
+ readonly minLength: 16;
676
+ readonly maxLength: 256;
677
+ readonly description: "Present ONLY on an action the CALLER may decide now — an `approval` or `queue` action on which the caller is an eligible approver who has not yet decided. Per-approver: two approvers are shown different challenges for the same action. Echoed verbatim in `task-consent/decision`'s `challenge`, which binds that decision to this approver and this action. Absent for everyone else, including the requester.";
678
+ };
679
+ readonly callerRole: {
680
+ readonly type: "string";
681
+ readonly enum: readonly ["approver", "requester", "acknowledger", "observer"];
682
+ readonly description: "The caller's relation to this action. `approver` — an eligible approver (whether or not already decided). `requester` — the party whose operation was parked. `acknowledger` — an administrator expected to acknowledge it. `observer` — none of these; seen only through the audit-read capability on a `history` or `all` view.";
683
+ };
684
+ readonly requesterOpenActions: {
685
+ readonly type: "integer";
686
+ readonly minimum: 0;
687
+ readonly description: "How many open actions the requester currently has at the community, this one included. For consent-fatigue display: an approver shown the twentieth request from one requester today should be able to see that it is the twentieth.";
688
+ };
689
+ readonly ext: {
690
+ readonly $ref: "#/$defs/Ext";
691
+ };
692
+ };
693
+ };
694
+ readonly Summary: {
695
+ readonly title: "Summary";
696
+ readonly description: "What an approver is shown, rendered from the summary template for the action's `kind`. Title and effect are the template's prose; the fields are the payload values that prose is about, each located by pointer so a renderer can verify it.";
697
+ readonly type: "object";
698
+ readonly additionalProperties: false;
699
+ readonly required: readonly ["title", "fields", "templateDigest"];
700
+ readonly properties: {
701
+ readonly title: {
702
+ readonly type: "string";
703
+ readonly minLength: 1;
704
+ readonly maxLength: 256;
705
+ readonly description: "One-line heading from the template. Prose only: a renderer MUST NOT present the action from this text without the fields.";
706
+ };
707
+ readonly effect: {
708
+ readonly type: "string";
709
+ readonly maxLength: 1024;
710
+ readonly description: "One or two sentences from the template saying what executing the operation will do.";
711
+ };
712
+ readonly fields: {
713
+ readonly type: "object";
714
+ readonly description: "Named values the template displays, keyed by a lowerCamelCase field name. Each locates its value in `payload` by JSON Pointer.";
715
+ readonly propertyNames: {
716
+ readonly pattern: "^[a-z][a-zA-Z0-9]*$";
717
+ readonly maxLength: 64;
718
+ };
719
+ readonly additionalProperties: {
720
+ readonly $ref: "#/$defs/Field";
721
+ };
722
+ };
723
+ readonly templateDigest: {
724
+ readonly $ref: "#/$defs/DigestMultibase";
725
+ readonly description: "Digest of the summary template this summary was rendered from, over its RFC 8785 (JCS) canonicalization. Pinned per `kind`: a renderer that holds the template for a kind refuses a summary naming a different digest, so the community cannot change what approvers are shown for a kind without that change being visible.";
726
+ };
727
+ };
728
+ };
729
+ readonly Field: {
730
+ readonly title: "Field";
731
+ readonly description: "One displayed value, with where it comes from and how to render it.";
732
+ readonly type: "object";
733
+ readonly additionalProperties: false;
734
+ readonly required: readonly ["pointer", "format", "value"];
735
+ readonly properties: {
736
+ readonly pointer: {
737
+ readonly type: "string";
738
+ readonly maxLength: 512;
739
+ readonly pattern: "^(/([^~/]|~[01])*)*$";
740
+ readonly description: "RFC 6901 JSON Pointer into the action's `payload`. The empty string addresses the whole payload.";
741
+ };
742
+ readonly format: {
743
+ readonly type: "string";
744
+ readonly enum: readonly ["did", "capabilityList", "duration", "datetime", "text"];
745
+ readonly description: "How to render the value. `did` — a DID, shown in full or with a verified display name, never truncated to a prefix that two DIDs share. `capabilityList` — an array of capability names. `duration` — an ISO 8601 duration. `datetime` — an RFC 3339 date-time. `text` — anything else, rendered as literal text.";
746
+ };
747
+ readonly value: {
748
+ readonly description: "The value found at `pointer` when the community rendered the summary. A renderer re-derives it from `payload` and refuses to render the action on any mismatch; it is carried so that a mismatch is detectable, not so that it can be trusted.";
749
+ };
750
+ };
751
+ };
752
+ readonly DigestMultibase: {
753
+ readonly title: "DigestMultibase";
754
+ readonly description: "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.";
755
+ readonly type: "string";
756
+ readonly minLength: 16;
757
+ readonly pattern: "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$";
758
+ readonly examples: readonly ["zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"];
759
+ };
760
+ readonly ActionId: {
761
+ readonly title: "ActionId";
762
+ readonly description: "Opaque, community-minted identifier of one action. A consumer MUST NOT parse or order it; it is compared for equality only. Long enough to be unguessable, because a show of an id the caller may not see is answered `notFound` and an enumerable id would turn that answer into an oracle.";
763
+ readonly type: "string";
764
+ readonly minLength: 16;
765
+ readonly maxLength: 128;
766
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
767
+ };
768
+ };
769
+ };
770
+ };
771
+ /**
772
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
773
+ * tracks the *issuer* party's requirement because a response swaps the
774
+ * parties (§7.3 item 5).
775
+ */
776
+ export declare const RESPONSE_SPEC: {
777
+ readonly typeUri: "https://trusttasks.org/spec/vtc/admin/actions/acknowledge/0.1#response";
778
+ readonly isBearer: false;
779
+ readonly isProofRequired: true;
780
+ readonly isRecipientRequired: true;
781
+ readonly isIssuedAtRequired: true;
782
+ readonly payloadSchema: {
783
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
784
+ readonly $ref: "#/$defs/Response";
785
+ readonly $defs: {
786
+ readonly Response: {
787
+ readonly $anchor: "response";
788
+ readonly title: "VTC Admin Actions — Acknowledge — response payload";
789
+ readonly description: "The action with the caller's acknowledgement recorded in `approvals`. When the caller was the last administrator expected to acknowledge it, `status` is `completed` and `closedReason` is `acknowledged`. Failures use trust-task-error, not this shape.";
790
+ readonly type: "object";
791
+ readonly additionalProperties: false;
792
+ readonly required: readonly ["action"];
793
+ readonly properties: {
794
+ readonly action: {
795
+ readonly $ref: "#/$defs/Action";
796
+ };
797
+ readonly ext: {
798
+ readonly $ref: "#/$defs/Ext";
799
+ };
800
+ };
801
+ };
802
+ readonly Ext: {
803
+ readonly title: "Ext";
804
+ 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.";
805
+ readonly type: "object";
806
+ readonly minProperties: 1;
807
+ readonly additionalProperties: true;
808
+ readonly propertyNames: {
809
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
810
+ };
811
+ };
812
+ readonly Action: {
813
+ readonly title: "Action";
814
+ readonly description: "One parked administrative operation, as the caller is entitled to see it. The same action reads differently to different callers only in `challenge` and `callerRole`, which are per-caller.";
815
+ readonly type: "object";
816
+ readonly additionalProperties: false;
817
+ readonly required: readonly ["actionId", "category", "kind", "typeUri", "requester", "status", "createdAt", "approvals", "summary", "payload", "payloadDigest", "callerRole"];
818
+ readonly properties: {
819
+ readonly actionId: {
820
+ readonly $ref: "#/$defs/ActionId";
821
+ };
822
+ readonly category: {
823
+ readonly type: "string";
824
+ readonly enum: readonly ["approval", "acknowledge", "queue"];
825
+ readonly description: "`approval` — eligible approvers approve or decline, N-of-M; the operation executes when the threshold is met. `acknowledge` — an operation that already happened (an operator's offline or break-glass write) which every remaining administrator must acknowledge; there is nothing to approve or decline. `queue` — an existing human decision (for example a join review) surfaced in the same list, with a threshold of one.";
826
+ };
827
+ readonly kind: {
828
+ readonly type: "string";
829
+ readonly minLength: 1;
830
+ readonly maxLength: 128;
831
+ readonly pattern: "^[a-z][a-zA-Z0-9.]*$";
832
+ readonly description: "The community's name for what kind of operation is parked, dotted and lowerCamelCase (`acl.grant.authority`, `member.join.review`). Selects the summary template. The set is OPEN: a renderer that does not recognise a kind still renders `summary` from its fields.";
833
+ };
834
+ readonly typeUri: {
835
+ readonly type: "string";
836
+ readonly format: "uri";
837
+ readonly minLength: 1;
838
+ readonly description: "The Type URI of the parked operation — the Trust Task the community will execute when the action completes. Together with `payload` it is exactly what will run.";
839
+ };
840
+ readonly requester: {
841
+ readonly type: "string";
842
+ readonly minLength: 1;
843
+ readonly maxLength: 2048;
844
+ readonly description: "VID of the party whose operation was parked. For `acknowledge`, the operator whose offline write is being acknowledged, where the community can attribute one.";
845
+ };
846
+ readonly status: {
847
+ readonly type: "string";
848
+ readonly enum: readonly ["open", "completed", "declined", "expired", "cancelled", "failed"];
849
+ readonly description: "`open` — awaiting decisions. `completed` — the threshold was met and the operation executed (or, for `acknowledge`, every administrator acknowledged). `declined` — an eligible approver denied it. `expired` — it lapsed at `expiresAt`. `cancelled` — the requester withdrew it, or the community invalidated it (see `closedReason`). `failed` — the threshold was met but the re-check at execution refused it, or execution itself failed; the operation did not take effect.";
850
+ };
851
+ readonly createdAt: {
852
+ readonly type: "string";
853
+ readonly format: "date-time";
854
+ readonly description: "When the operation was parked.";
855
+ };
856
+ readonly expiresAt: {
857
+ readonly type: "string";
858
+ readonly format: "date-time";
859
+ readonly description: "When an open action lapses. Absent for an `acknowledge` or `queue` action that does not expire; ALWAYS present for `approval`, whose open life is bounded (72 hours by default; the community configures it between 15 minutes and 14 days).";
860
+ };
861
+ readonly closedAt: {
862
+ readonly type: "string";
863
+ readonly format: "date-time";
864
+ readonly description: "When the action left `open`. Present exactly when `status` is not `open`.";
865
+ };
866
+ readonly closedReason: {
867
+ readonly type: "string";
868
+ readonly enum: readonly ["thresholdMet", "declined", "expired", "cancelledByRequester", "invalidated", "failedRecheck", "acknowledged"];
869
+ readonly description: "Why the action closed. Present exactly when `status` is not `open`. `invalidated` — the community closed it because something it depended on stopped holding before the threshold (an approver or the requester lost standing, the target state moved); `failedRecheck` — the threshold was met but the execution-time re-check refused.";
870
+ };
871
+ readonly threshold: {
872
+ readonly type: "integer";
873
+ readonly minimum: 1;
874
+ readonly description: "The number of distinct approvals the operation needs. Present for `approval`; absent otherwise (a `queue` decision is one decision by construction, and `acknowledge` needs every remaining administrator).";
875
+ };
876
+ readonly approvals: {
877
+ readonly type: "array";
878
+ readonly description: "The decisions in favour recorded so far — approvals for `approval` and `queue`, acknowledgements for `acknowledge` — one entry per distinct subject, in the order recorded. Empty while none has landed.";
879
+ readonly items: {
880
+ readonly type: "object";
881
+ readonly additionalProperties: false;
882
+ readonly required: readonly ["subject", "at"];
883
+ readonly properties: {
884
+ readonly subject: {
885
+ readonly type: "string";
886
+ readonly minLength: 1;
887
+ readonly maxLength: 2048;
888
+ readonly description: "VID of the approver or acknowledger, as proven by the decision's own proof.";
889
+ };
890
+ readonly at: {
891
+ readonly type: "string";
892
+ readonly format: "date-time";
893
+ readonly description: "When the decision was recorded.";
894
+ };
895
+ };
896
+ };
897
+ };
898
+ readonly approversRemaining: {
899
+ readonly type: "integer";
900
+ readonly minimum: 0;
901
+ readonly description: "How many further distinct decisions the action needs while `open` — approvals for `approval`, acknowledgements for `acknowledge`. Lets a console say 'one more' without disclosing the eligible set.";
902
+ };
903
+ readonly summary: {
904
+ readonly $ref: "#/$defs/Summary";
905
+ };
906
+ readonly payload: {
907
+ readonly type: "object";
908
+ readonly description: "The exact payload of the parked operation — the object `payloadDigest` is computed over and the one the community will execute. Carried so an approver can recompute the digest and re-derive every summary field from it rather than trusting the rendering (VTI-APV-013). Deliberately an open object: its shape is governed by the specification `typeUri` names, and a digest is checked over members exactly as received.";
909
+ };
910
+ readonly payloadDigest: {
911
+ readonly $ref: "#/$defs/DigestMultibase";
912
+ readonly description: "Digest of `payload`, taken over its RFC 8785 (JCS) canonicalization. The community re-derives it from the payload it is about to execute and refuses on mismatch. The digest an approver signs over is the challenge-salted one of `task-consent/decision`, not this value; this one lets the approver check that `payload` is what was parked.";
913
+ };
914
+ readonly challenge: {
915
+ readonly type: "string";
916
+ readonly minLength: 16;
917
+ readonly maxLength: 256;
918
+ readonly description: "Present ONLY on an action the CALLER may decide now — an `approval` or `queue` action on which the caller is an eligible approver who has not yet decided. Per-approver: two approvers are shown different challenges for the same action. Echoed verbatim in `task-consent/decision`'s `challenge`, which binds that decision to this approver and this action. Absent for everyone else, including the requester.";
919
+ };
920
+ readonly callerRole: {
921
+ readonly type: "string";
922
+ readonly enum: readonly ["approver", "requester", "acknowledger", "observer"];
923
+ readonly description: "The caller's relation to this action. `approver` — an eligible approver (whether or not already decided). `requester` — the party whose operation was parked. `acknowledger` — an administrator expected to acknowledge it. `observer` — none of these; seen only through the audit-read capability on a `history` or `all` view.";
924
+ };
925
+ readonly requesterOpenActions: {
926
+ readonly type: "integer";
927
+ readonly minimum: 0;
928
+ readonly description: "How many open actions the requester currently has at the community, this one included. For consent-fatigue display: an approver shown the twentieth request from one requester today should be able to see that it is the twentieth.";
929
+ };
930
+ readonly ext: {
931
+ readonly $ref: "#/$defs/Ext";
932
+ };
933
+ };
934
+ };
935
+ readonly Summary: {
936
+ readonly title: "Summary";
937
+ readonly description: "What an approver is shown, rendered from the summary template for the action's `kind`. Title and effect are the template's prose; the fields are the payload values that prose is about, each located by pointer so a renderer can verify it.";
938
+ readonly type: "object";
939
+ readonly additionalProperties: false;
940
+ readonly required: readonly ["title", "fields", "templateDigest"];
941
+ readonly properties: {
942
+ readonly title: {
943
+ readonly type: "string";
944
+ readonly minLength: 1;
945
+ readonly maxLength: 256;
946
+ readonly description: "One-line heading from the template. Prose only: a renderer MUST NOT present the action from this text without the fields.";
947
+ };
948
+ readonly effect: {
949
+ readonly type: "string";
950
+ readonly maxLength: 1024;
951
+ readonly description: "One or two sentences from the template saying what executing the operation will do.";
952
+ };
953
+ readonly fields: {
954
+ readonly type: "object";
955
+ readonly description: "Named values the template displays, keyed by a lowerCamelCase field name. Each locates its value in `payload` by JSON Pointer.";
956
+ readonly propertyNames: {
957
+ readonly pattern: "^[a-z][a-zA-Z0-9]*$";
958
+ readonly maxLength: 64;
959
+ };
960
+ readonly additionalProperties: {
961
+ readonly $ref: "#/$defs/Field";
962
+ };
963
+ };
964
+ readonly templateDigest: {
965
+ readonly $ref: "#/$defs/DigestMultibase";
966
+ readonly description: "Digest of the summary template this summary was rendered from, over its RFC 8785 (JCS) canonicalization. Pinned per `kind`: a renderer that holds the template for a kind refuses a summary naming a different digest, so the community cannot change what approvers are shown for a kind without that change being visible.";
967
+ };
968
+ };
969
+ };
970
+ readonly Field: {
971
+ readonly title: "Field";
972
+ readonly description: "One displayed value, with where it comes from and how to render it.";
973
+ readonly type: "object";
974
+ readonly additionalProperties: false;
975
+ readonly required: readonly ["pointer", "format", "value"];
976
+ readonly properties: {
977
+ readonly pointer: {
978
+ readonly type: "string";
979
+ readonly maxLength: 512;
980
+ readonly pattern: "^(/([^~/]|~[01])*)*$";
981
+ readonly description: "RFC 6901 JSON Pointer into the action's `payload`. The empty string addresses the whole payload.";
982
+ };
983
+ readonly format: {
984
+ readonly type: "string";
985
+ readonly enum: readonly ["did", "capabilityList", "duration", "datetime", "text"];
986
+ readonly description: "How to render the value. `did` — a DID, shown in full or with a verified display name, never truncated to a prefix that two DIDs share. `capabilityList` — an array of capability names. `duration` — an ISO 8601 duration. `datetime` — an RFC 3339 date-time. `text` — anything else, rendered as literal text.";
987
+ };
988
+ readonly value: {
989
+ readonly description: "The value found at `pointer` when the community rendered the summary. A renderer re-derives it from `payload` and refuses to render the action on any mismatch; it is carried so that a mismatch is detectable, not so that it can be trusted.";
990
+ };
991
+ };
992
+ };
993
+ readonly DigestMultibase: {
994
+ readonly title: "DigestMultibase";
995
+ readonly description: "A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for `digestMultibase`, and the one `did:webvh` uses for its SCID and entry hashes.\n\nMultihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a `sha-256:`-style prefix hard-codes one algorithm into the wire contract and is non-conforming here.\n\nThis definition constrains the *encoding only*. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible.\n\nRestricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — `z` (base58btc) and `u` (base64url-no-pad). CID permits others but states that \"interoperability is not guaranteed between implementations using such values\", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with `did:key` and `did:webvh`.";
996
+ readonly type: "string";
997
+ readonly minLength: 16;
998
+ readonly pattern: "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$";
999
+ readonly examples: readonly ["zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"];
1000
+ };
1001
+ readonly ActionId: {
1002
+ readonly title: "ActionId";
1003
+ readonly description: "Opaque, community-minted identifier of one action. A consumer MUST NOT parse or order it; it is compared for equality only. Long enough to be unguessable, because a show of an id the caller may not see is answered `notFound` and an enumerable id would turn that answer into an oracle.";
1004
+ readonly type: "string";
1005
+ readonly minLength: 16;
1006
+ readonly maxLength: 128;
1007
+ readonly pattern: "^[A-Za-z0-9._~:-]+$";
1008
+ };
1009
+ };
1010
+ };
1011
+ };
1012
+ //# sourceMappingURL=payload.d.ts.map