@openvtc/trust-tasks 0.22.6 → 0.23.0

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 (194) hide show
  1. package/CHANGELOG.md +81 -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/git-ns/activity/list/0.1/payload.d.ts +21 -0
  89. package/dist/git-ns/activity/list/0.1/payload.d.ts.map +1 -1
  90. package/dist/git-ns/activity/list/0.1/payload.js +8 -0
  91. package/dist/git-ns/activity/list/0.1/payload.js.map +1 -1
  92. package/dist/index.d.ts +31 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +31 -0
  95. package/dist/index.js.map +1 -1
  96. package/dist/task-consent/decision/0.2/payload.d.ts +775 -0
  97. package/dist/task-consent/decision/0.2/payload.d.ts.map +1 -0
  98. package/dist/task-consent/decision/0.2/payload.js +450 -0
  99. package/dist/task-consent/decision/0.2/payload.js.map +1 -0
  100. package/dist/vtc/admin/actions/_shared/0.1/action.d.ts +24 -0
  101. package/dist/vtc/admin/actions/_shared/0.1/action.d.ts.map +1 -0
  102. package/dist/vtc/admin/actions/_shared/0.1/action.js +6 -0
  103. package/dist/vtc/admin/actions/_shared/0.1/action.js.map +1 -0
  104. package/dist/vtc/admin/actions/acknowledge/0.1/payload.d.ts +1012 -0
  105. package/dist/vtc/admin/actions/acknowledge/0.1/payload.d.ts.map +1 -0
  106. package/dist/vtc/admin/actions/acknowledge/0.1/payload.js +636 -0
  107. package/dist/vtc/admin/actions/acknowledge/0.1/payload.js.map +1 -0
  108. package/dist/vtc/admin/actions/cancel/0.1/payload.d.ts +1026 -0
  109. package/dist/vtc/admin/actions/cancel/0.1/payload.d.ts.map +1 -0
  110. package/dist/vtc/admin/actions/cancel/0.1/payload.js +641 -0
  111. package/dist/vtc/admin/actions/cancel/0.1/payload.js.map +1 -0
  112. package/dist/vtc/admin/actions/list/0.1/payload.d.ts +1200 -0
  113. package/dist/vtc/admin/actions/list/0.1/payload.d.ts.map +1 -0
  114. package/dist/vtc/admin/actions/list/0.1/payload.js +726 -0
  115. package/dist/vtc/admin/actions/list/0.1/payload.js.map +1 -0
  116. package/dist/vtc/admin/actions/show/0.1/payload.d.ts +1012 -0
  117. package/dist/vtc/admin/actions/show/0.1/payload.d.ts.map +1 -0
  118. package/dist/vtc/admin/actions/show/0.1/payload.js +636 -0
  119. package/dist/vtc/admin/actions/show/0.1/payload.js.map +1 -0
  120. package/dist/vtc/install/claim/finish/0.3/payload.d.ts +379 -0
  121. package/dist/vtc/install/claim/finish/0.3/payload.d.ts.map +1 -0
  122. package/dist/vtc/install/claim/finish/0.3/payload.js +205 -0
  123. package/dist/vtc/install/claim/finish/0.3/payload.js.map +1 -0
  124. package/dist/vtc/install/claim/start/0.3/payload.d.ts +368 -0
  125. package/dist/vtc/install/claim/start/0.3/payload.d.ts.map +1 -0
  126. package/dist/vtc/install/claim/start/0.3/payload.js +201 -0
  127. package/dist/vtc/install/claim/start/0.3/payload.js.map +1 -0
  128. package/dist/vtc/members/authority-reduced-notice/0.1/payload.d.ts +208 -0
  129. package/dist/vtc/members/authority-reduced-notice/0.1/payload.d.ts.map +1 -0
  130. package/dist/vtc/members/authority-reduced-notice/0.1/payload.js +112 -0
  131. package/dist/vtc/members/authority-reduced-notice/0.1/payload.js.map +1 -0
  132. package/dist/vtc/roles/_shared/0.1/role.d.ts +16 -0
  133. package/dist/vtc/roles/_shared/0.1/role.d.ts.map +1 -0
  134. package/dist/vtc/roles/_shared/0.1/role.js +6 -0
  135. package/dist/vtc/roles/_shared/0.1/role.js.map +1 -0
  136. package/dist/vtc/roles/define/0.1/payload.d.ts +703 -0
  137. package/dist/vtc/roles/define/0.1/payload.d.ts.map +1 -0
  138. package/dist/vtc/roles/define/0.1/payload.js +371 -0
  139. package/dist/vtc/roles/define/0.1/payload.js.map +1 -0
  140. package/dist/vtc/roles/delete/0.1/payload.d.ts +281 -0
  141. package/dist/vtc/roles/delete/0.1/payload.d.ts.map +1 -0
  142. package/dist/vtc/roles/delete/0.1/payload.js +152 -0
  143. package/dist/vtc/roles/delete/0.1/payload.js.map +1 -0
  144. package/dist/vtc/roles/list/0.1/payload.d.ts +639 -0
  145. package/dist/vtc/roles/list/0.1/payload.d.ts.map +1 -0
  146. package/dist/vtc/roles/list/0.1/payload.js +345 -0
  147. package/dist/vtc/roles/list/0.1/payload.js.map +1 -0
  148. package/dist/vtc/roles/show/0.1/payload.d.ts +651 -0
  149. package/dist/vtc/roles/show/0.1/payload.d.ts.map +1 -0
  150. package/dist/vtc/roles/show/0.1/payload.js +351 -0
  151. package/dist/vtc/roles/show/0.1/payload.js.map +1 -0
  152. package/package.json +1 -1
  153. package/src/_shared/components.ts +440 -1
  154. package/src/acl/_shared/0.1/acl-entry.ts +1 -1
  155. package/src/acl/_shared/0.2/acl-entry.ts +23 -0
  156. package/src/acl/change-role/0.1/payload.ts +1 -1
  157. package/src/acl/change-role/0.2/payload.ts +1011 -0
  158. package/src/acl/grant/0.1/payload.ts +1 -1
  159. package/src/acl/grant/0.2/payload.ts +990 -0
  160. package/src/acl/list/0.1/payload.ts +1 -1
  161. package/src/acl/list/0.2/payload.ts +1125 -0
  162. package/src/acl/revoke/0.1/payload.ts +1 -1
  163. package/src/acl/revoke/0.2/payload.ts +1122 -0
  164. package/src/acl/show/0.1/payload.ts +1 -1
  165. package/src/acl/show/0.2/payload.ts +1016 -0
  166. package/src/acl/swap-key/0.1/payload.ts +1 -1
  167. package/src/acl/update/0.1/payload.ts +1 -1
  168. package/src/acl/update/0.2/payload.ts +1094 -0
  169. package/src/auth/step-up/approve-request/0.4/payload.ts +461 -0
  170. package/src/auth/step-up/approve-response/0.6/payload.ts +648 -0
  171. package/src/auth/step-up/approver/_shared/0.1/approver.ts +17 -0
  172. package/src/auth/step-up/approver/attest/0.1/payload.ts +135 -0
  173. package/src/auth/step-up/approver/enroll/0.1/payload.ts +329 -0
  174. package/src/auth/step-up/approver/invite/0.1/payload.ts +258 -0
  175. package/src/auth/step-up/approver/list/0.1/payload.ts +318 -0
  176. package/src/auth/step-up/approver/redeem/finish/0.1/payload.ts +337 -0
  177. package/src/auth/step-up/approver/redeem/start/0.1/payload.ts +241 -0
  178. package/src/auth/step-up/approver/revoke/0.1/payload.ts +352 -0
  179. package/src/git-ns/activity/list/0.1/payload.ts +14 -0
  180. package/src/index.ts +31 -0
  181. package/src/task-consent/decision/0.2/payload.ts +537 -0
  182. package/src/vtc/admin/actions/_shared/0.1/action.ts +25 -0
  183. package/src/vtc/admin/actions/acknowledge/0.1/payload.ts +671 -0
  184. package/src/vtc/admin/actions/cancel/0.1/payload.ts +680 -0
  185. package/src/vtc/admin/actions/list/0.1/payload.ts +795 -0
  186. package/src/vtc/admin/actions/show/0.1/payload.ts +671 -0
  187. package/src/vtc/install/claim/finish/0.3/payload.ts +253 -0
  188. package/src/vtc/install/claim/start/0.3/payload.ts +256 -0
  189. package/src/vtc/members/authority-reduced-notice/0.1/payload.ts +162 -0
  190. package/src/vtc/roles/_shared/0.1/role.ts +17 -0
  191. package/src/vtc/roles/define/0.1/payload.ts +435 -0
  192. package/src/vtc/roles/delete/0.1/payload.ts +200 -0
  193. package/src/vtc/roles/list/0.1/payload.ts +389 -0
  194. package/src/vtc/roles/show/0.1/payload.ts +399 -0
@@ -0,0 +1,974 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/auth/step-up/approve-response/0.6/payload.schema.json
4
+ */
5
+ import type { AttestStatement, AuthenticatorAssertionResponseLogin, Ext, Session_AuthV0_1 as Session } from "../../../../_shared/components.js";
6
+ /**
7
+ * How the approver demonstrated the factor backing this approval. A tagged union on `kind`; absent is equivalent to `didSigned`. Whatever the kind, the document's framework `proof` is REQUIRED — evidence is in addition to it, never instead.
8
+ */
9
+ export type StepUpEvidence = DidSigned | WebAuthn | ApproverSigned;
10
+ /**
11
+ * The approver's signed ratification of a step-up: subject + challenge (+ sessionId, when the request carried one) are echoed inside a document signed by the approver, backed by a gate — the proof itself, a WebAuthn assertion, or a bound step-up approver's signed statement — so the relying party can elevate the session, or apply the approval to the one operation it was bound to.
12
+ */
13
+ export interface AuthStepUpApproveResponse {
14
+ /**
15
+ * Echoed from the matching approve-request. The relying party verifies it equals the subject bound to the pending step-up. With `approverSigned` evidence it is also the document's issuer: the subject signs as its own DID.
16
+ */
17
+ subject: string;
18
+ /**
19
+ * Echoed from the matching approve-request when that request carried one, and absent when it did not — a step-up bound to an operation that arrived without a session.
20
+ */
21
+ sessionId?: string;
22
+ /**
23
+ * Echoed from the matching approve-request. The relying party verifies it equals the bound challenge.
24
+ */
25
+ challenge: string;
26
+ /**
27
+ * `approved` elevates the session, or authorizes the bound operation, per the relying party's policy. `denied` is a signed refusal — useful for audit even though it changes nothing.
28
+ */
29
+ decision: "approved" | "denied";
30
+ /**
31
+ * Required when decision is `denied`. Human-readable rationale the user provided (or which the approver inferred).
32
+ */
33
+ deniedReason?: string;
34
+ /**
35
+ * The acr the approver believes it has cryptographically demonstrated. The relying party MAY accept this, MAY upgrade to a lower value, but MUST NOT exceed it.
36
+ */
37
+ grantedAcr?: string;
38
+ evidence?: StepUpEvidence;
39
+ ext?: Ext;
40
+ }
41
+ /**
42
+ * The approval is gated by the document's framework `proof` alone. The default when `evidence` is omitted. `amr` reflects "vta"/"did".
43
+ */
44
+ export interface DidSigned {
45
+ kind: "didSigned";
46
+ }
47
+ export interface WebAuthn {
48
+ kind: "webauthn";
49
+ /**
50
+ * The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API. Its `clientDataJSON` challenge MUST equal the step-up `challenge`. Verified per WebAuthn Level 2 §7.2 in addition to the framework proof; `amr` reflects "passkey".
51
+ */
52
+ assertion: AuthenticatorAssertionResponseLogin;
53
+ }
54
+ export interface ApproverSigned {
55
+ kind: "approverSigned";
56
+ /**
57
+ * A complete, signed auth/step-up/approver/attest/0.1 document with `purpose: stepUp`, issued by one of the subject's bound step-up approvers over the step-up `challenge` and `boundTo`, addressed to the relying party. The statement is the factor; the document carrying it MUST still be proved by the subject's own DID — never a delegated key. Verified as received, in addition to the framework proof; `amr` reflects "approver".
58
+ */
59
+ statement: AttestStatement;
60
+ }
61
+ /**
62
+ * Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.6#response.
63
+ */
64
+ export interface AuthStepUpApproveResponseRelyingPartyAck {
65
+ /**
66
+ * `elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied.
67
+ */
68
+ status: "elevated" | "recorded" | "rejected";
69
+ /**
70
+ * Present when status is `elevated`. Absent for `recorded`, which changes no session.
71
+ */
72
+ session?: Session;
73
+ /**
74
+ * Present when status is `recorded`. The opaque relying-party identifier for the single operation this approval authorised. Not a capability.
75
+ */
76
+ boundTo?: string;
77
+ /**
78
+ * Present when status is `rejected`.
79
+ */
80
+ reason?: string;
81
+ ext?: Ext;
82
+ }
83
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
84
+ export type { AttestStatement, AuthenticatorAssertionResponseLogin, Ext, Session };
85
+ /** Trust Task type URI. */
86
+ export declare const TYPE_URI: "https://trusttasks.org/spec/auth/step-up/approve-response/0.6";
87
+ /** Stable alias for this specification's request payload shape. */
88
+ export type Payload = AuthStepUpApproveResponse;
89
+ /** Trust Task response type URI (request type URI + "#response"). */
90
+ export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/auth/step-up/approve-response/0.6#response";
91
+ /** Stable alias for this specification's success-response payload shape. */
92
+ export type Response = AuthStepUpApproveResponseRelyingPartyAck;
93
+ /**
94
+ * This specification's payload schema, as a value.
95
+ *
96
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
97
+ * rather than only as a `.json` file because TypeScript types are erased
98
+ * at runtime: without a schema a consumer has nothing to validate, and
99
+ * every REQUIRED payload member is optional in practice. Cross-file
100
+ * `$ref`s are already inlined, so it needs no resolver.
101
+ */
102
+ export declare const PAYLOAD_SCHEMA: {
103
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
104
+ readonly $id: "https://trusttasks.org/spec/auth/step-up/approve-response/0.6";
105
+ readonly title: "Auth — Step-up Approve Response";
106
+ readonly description: "The approver's signed ratification of a step-up: subject + challenge (+ sessionId, when the request carried one) are echoed inside a document signed by the approver, backed by a gate — the proof itself, a WebAuthn assertion, or a bound step-up approver's signed statement — so the relying party can elevate the session, or apply the approval to the one operation it was bound to.";
107
+ readonly type: "object";
108
+ readonly additionalProperties: false;
109
+ readonly required: readonly ["subject", "challenge", "decision"];
110
+ readonly properties: {
111
+ readonly subject: {
112
+ readonly type: "string";
113
+ readonly minLength: 1;
114
+ readonly description: "Echoed from the matching approve-request. The relying party verifies it equals the subject bound to the pending step-up. With `approverSigned` evidence it is also the document's issuer: the subject signs as its own DID.";
115
+ };
116
+ readonly sessionId: {
117
+ readonly type: "string";
118
+ readonly minLength: 1;
119
+ readonly description: "Echoed from the matching approve-request when that request carried one, and absent when it did not — a step-up bound to an operation that arrived without a session.";
120
+ };
121
+ readonly challenge: {
122
+ readonly type: "string";
123
+ readonly minLength: 16;
124
+ readonly description: "Echoed from the matching approve-request. The relying party verifies it equals the bound challenge.";
125
+ };
126
+ readonly decision: {
127
+ readonly type: "string";
128
+ readonly enum: readonly ["approved", "denied"];
129
+ readonly description: "`approved` elevates the session, or authorizes the bound operation, per the relying party's policy. `denied` is a signed refusal — useful for audit even though it changes nothing.";
130
+ };
131
+ readonly deniedReason: {
132
+ readonly type: "string";
133
+ readonly maxLength: 500;
134
+ readonly description: "Required when decision is `denied`. Human-readable rationale the user provided (or which the approver inferred).";
135
+ };
136
+ readonly grantedAcr: {
137
+ readonly type: "string";
138
+ readonly description: "The acr the approver believes it has cryptographically demonstrated. The relying party MAY accept this, MAY upgrade to a lower value, but MUST NOT exceed it.";
139
+ };
140
+ readonly evidence: {
141
+ readonly $ref: "#/$defs/Evidence";
142
+ readonly description: "How the approver demonstrated the factor backing this approval. A tagged union on `kind`; absent is equivalent to `didSigned`. Whatever the kind, the document's framework `proof` is REQUIRED — evidence is in addition to it, never instead.";
143
+ };
144
+ readonly ext: {
145
+ readonly $ref: "#/$defs/Ext";
146
+ };
147
+ };
148
+ readonly $defs: {
149
+ readonly Evidence: {
150
+ readonly $anchor: "evidence";
151
+ readonly title: "Step-up Evidence";
152
+ readonly description: "Tagged union over `kind` describing the cryptographic factor the approver presents to back the approval.";
153
+ readonly oneOf: readonly [{
154
+ readonly title: "DidSigned";
155
+ readonly type: "object";
156
+ readonly additionalProperties: false;
157
+ readonly required: readonly ["kind"];
158
+ readonly properties: {
159
+ readonly kind: {
160
+ readonly const: "didSigned";
161
+ };
162
+ };
163
+ readonly description: "The approval is gated by the document's framework `proof` alone. The default when `evidence` is omitted. `amr` reflects \"vta\"/\"did\".";
164
+ }, {
165
+ readonly title: "WebAuthn";
166
+ readonly type: "object";
167
+ readonly additionalProperties: false;
168
+ readonly required: readonly ["kind", "assertion"];
169
+ readonly properties: {
170
+ readonly kind: {
171
+ readonly const: "webauthn";
172
+ };
173
+ readonly assertion: {
174
+ readonly $ref: "#/$defs/AssertionResponse";
175
+ readonly description: "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API. Its `clientDataJSON` challenge MUST equal the step-up `challenge`. Verified per WebAuthn Level 2 §7.2 in addition to the framework proof; `amr` reflects \"passkey\".";
176
+ };
177
+ };
178
+ }, {
179
+ readonly title: "ApproverSigned";
180
+ readonly type: "object";
181
+ readonly additionalProperties: false;
182
+ readonly required: readonly ["kind", "statement"];
183
+ readonly properties: {
184
+ readonly kind: {
185
+ readonly const: "approverSigned";
186
+ };
187
+ readonly statement: {
188
+ readonly $ref: "#/$defs/AttestStatement";
189
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 document with `purpose: stepUp`, issued by one of the subject's bound step-up approvers over the step-up `challenge` and `boundTo`, addressed to the relying party. The statement is the factor; the document carrying it MUST still be proved by the subject's own DID — never a delegated key. Verified as received, in addition to the framework proof; `amr` reflects \"approver\".";
190
+ };
191
+ };
192
+ }];
193
+ };
194
+ readonly Response: {
195
+ readonly $anchor: "response";
196
+ readonly title: "Auth Step-up Approve Response — relying party ack";
197
+ readonly description: "Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.6#response.";
198
+ readonly type: "object";
199
+ readonly additionalProperties: false;
200
+ readonly required: readonly ["status"];
201
+ readonly properties: {
202
+ readonly status: {
203
+ readonly type: "string";
204
+ readonly enum: readonly ["elevated", "recorded", "rejected"];
205
+ readonly description: "`elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied.";
206
+ };
207
+ readonly session: {
208
+ readonly $ref: "#/$defs/Session";
209
+ readonly description: "Present when status is `elevated`. Absent for `recorded`, which changes no session.";
210
+ };
211
+ readonly boundTo: {
212
+ readonly type: "string";
213
+ readonly maxLength: 256;
214
+ readonly description: "Present when status is `recorded`. The opaque relying-party identifier for the single operation this approval authorised. Not a capability.";
215
+ };
216
+ readonly reason: {
217
+ readonly type: "string";
218
+ readonly maxLength: 1024;
219
+ readonly description: "Present when status is `rejected`.";
220
+ };
221
+ readonly ext: {
222
+ readonly $ref: "#/$defs/Ext";
223
+ };
224
+ };
225
+ };
226
+ readonly Ext: {
227
+ readonly title: "Ext";
228
+ 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.";
229
+ readonly type: "object";
230
+ readonly minProperties: 1;
231
+ readonly additionalProperties: true;
232
+ readonly propertyNames: {
233
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
234
+ };
235
+ };
236
+ readonly Session: {
237
+ readonly $anchor: "session";
238
+ readonly title: "Session";
239
+ readonly description: "A logical authentication context bound to a subject. Producers and consumers exchange Session-shaped data in challenge issuance, authentication responses, and introspection (whoami).";
240
+ readonly type: "object";
241
+ readonly additionalProperties: false;
242
+ readonly required: readonly ["id", "subject", "issuedAt", "expiresAt"];
243
+ readonly properties: {
244
+ readonly id: {
245
+ readonly type: "string";
246
+ readonly minLength: 1;
247
+ readonly description: "Opaque, server-chosen session identifier. Stable for the lifetime of the session. Consumers MUST treat the value as opaque; no structure is implied.";
248
+ };
249
+ readonly subject: {
250
+ readonly type: "string";
251
+ readonly minLength: 1;
252
+ readonly description: "The authenticated party's VID (typically a DID URL).";
253
+ };
254
+ readonly issuedAt: {
255
+ readonly type: "string";
256
+ readonly format: "date-time";
257
+ readonly description: "ISO-8601 timestamp when the session was created.";
258
+ };
259
+ readonly expiresAt: {
260
+ readonly type: "string";
261
+ readonly format: "date-time";
262
+ readonly description: "ISO-8601 timestamp when the session ceases to be valid. Producers SHOULD refresh before this time; consumers MUST reject after.";
263
+ };
264
+ readonly amr: {
265
+ readonly type: "array";
266
+ readonly minItems: 1;
267
+ readonly items: {
268
+ readonly type: "string";
269
+ readonly minLength: 1;
270
+ };
271
+ readonly description: "Authentication Methods References per [RFC 8176]. Typical values: \"did\" (challenge-response), \"passkey\" (WebAuthn), \"vta\" (verifiable-trust agent approval). Multi-factor sessions list every method used.";
272
+ };
273
+ readonly acr: {
274
+ readonly type: "string";
275
+ readonly description: "Authentication Context Class Reference per [OIDC Core §2]. Profiles define their own values; the recommended set is \"aal1\" (single-factor DID auth), \"aal2\" (a second possession-or-biometric factor confirmed), and \"aal3\" (hardware-bound second factor).";
276
+ };
277
+ readonly ext: {
278
+ readonly $ref: "#/$defs/Ext";
279
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
280
+ };
281
+ };
282
+ };
283
+ readonly AttestStatement: {
284
+ readonly title: "AttestStatement";
285
+ readonly type: "object";
286
+ readonly minProperties: 1;
287
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 Trust Task document — envelope, payload and proof — issued by the approver. Deliberately an open object here rather than a typed one: the consumer verifies it as a document in its own right (envelope, proof and payload against that specification's schemas), and verifies its proof over the members exactly as received, which a binding that narrowed it to a typed struct and re-serialised it could silently break.";
288
+ };
289
+ readonly AssertionResponse: {
290
+ readonly $anchor: "assertionResponse";
291
+ readonly title: "AuthenticatorAssertionResponse (login)";
292
+ readonly description: "The credential the client returns from `navigator.credentials.get`. Binary fields are base64url-encoded.";
293
+ readonly type: "object";
294
+ readonly additionalProperties: false;
295
+ readonly required: readonly ["id", "rawId", "type", "response"];
296
+ readonly properties: {
297
+ readonly id: {
298
+ readonly type: "string";
299
+ };
300
+ readonly rawId: {
301
+ readonly type: "string";
302
+ };
303
+ readonly type: {
304
+ readonly const: "public-key";
305
+ };
306
+ readonly response: {
307
+ readonly type: "object";
308
+ readonly additionalProperties: false;
309
+ readonly required: readonly ["clientDataJSON", "authenticatorData", "signature"];
310
+ readonly properties: {
311
+ readonly clientDataJSON: {
312
+ readonly type: "string";
313
+ };
314
+ readonly authenticatorData: {
315
+ readonly type: "string";
316
+ };
317
+ readonly signature: {
318
+ readonly type: "string";
319
+ };
320
+ readonly userHandle: {
321
+ readonly type: readonly ["string", "null"];
322
+ };
323
+ };
324
+ };
325
+ readonly authenticatorAttachment: {
326
+ readonly enum: readonly ["platform", "cross-platform"];
327
+ };
328
+ readonly clientExtensionResults: {
329
+ readonly type: "object";
330
+ };
331
+ };
332
+ };
333
+ };
334
+ };
335
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
336
+ export declare const RESPONSE_PAYLOAD_SCHEMA: {
337
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
338
+ readonly $ref: "#/$defs/Response";
339
+ readonly $defs: {
340
+ readonly Evidence: {
341
+ readonly $anchor: "evidence";
342
+ readonly title: "Step-up Evidence";
343
+ readonly description: "Tagged union over `kind` describing the cryptographic factor the approver presents to back the approval.";
344
+ readonly oneOf: readonly [{
345
+ readonly title: "DidSigned";
346
+ readonly type: "object";
347
+ readonly additionalProperties: false;
348
+ readonly required: readonly ["kind"];
349
+ readonly properties: {
350
+ readonly kind: {
351
+ readonly const: "didSigned";
352
+ };
353
+ };
354
+ readonly description: "The approval is gated by the document's framework `proof` alone. The default when `evidence` is omitted. `amr` reflects \"vta\"/\"did\".";
355
+ }, {
356
+ readonly title: "WebAuthn";
357
+ readonly type: "object";
358
+ readonly additionalProperties: false;
359
+ readonly required: readonly ["kind", "assertion"];
360
+ readonly properties: {
361
+ readonly kind: {
362
+ readonly const: "webauthn";
363
+ };
364
+ readonly assertion: {
365
+ readonly $ref: "#/$defs/AssertionResponse";
366
+ readonly description: "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API. Its `clientDataJSON` challenge MUST equal the step-up `challenge`. Verified per WebAuthn Level 2 §7.2 in addition to the framework proof; `amr` reflects \"passkey\".";
367
+ };
368
+ };
369
+ }, {
370
+ readonly title: "ApproverSigned";
371
+ readonly type: "object";
372
+ readonly additionalProperties: false;
373
+ readonly required: readonly ["kind", "statement"];
374
+ readonly properties: {
375
+ readonly kind: {
376
+ readonly const: "approverSigned";
377
+ };
378
+ readonly statement: {
379
+ readonly $ref: "#/$defs/AttestStatement";
380
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 document with `purpose: stepUp`, issued by one of the subject's bound step-up approvers over the step-up `challenge` and `boundTo`, addressed to the relying party. The statement is the factor; the document carrying it MUST still be proved by the subject's own DID — never a delegated key. Verified as received, in addition to the framework proof; `amr` reflects \"approver\".";
381
+ };
382
+ };
383
+ }];
384
+ };
385
+ readonly Response: {
386
+ readonly $anchor: "response";
387
+ readonly title: "Auth Step-up Approve Response — relying party ack";
388
+ readonly description: "Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.6#response.";
389
+ readonly type: "object";
390
+ readonly additionalProperties: false;
391
+ readonly required: readonly ["status"];
392
+ readonly properties: {
393
+ readonly status: {
394
+ readonly type: "string";
395
+ readonly enum: readonly ["elevated", "recorded", "rejected"];
396
+ readonly description: "`elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied.";
397
+ };
398
+ readonly session: {
399
+ readonly $ref: "#/$defs/Session";
400
+ readonly description: "Present when status is `elevated`. Absent for `recorded`, which changes no session.";
401
+ };
402
+ readonly boundTo: {
403
+ readonly type: "string";
404
+ readonly maxLength: 256;
405
+ readonly description: "Present when status is `recorded`. The opaque relying-party identifier for the single operation this approval authorised. Not a capability.";
406
+ };
407
+ readonly reason: {
408
+ readonly type: "string";
409
+ readonly maxLength: 1024;
410
+ readonly description: "Present when status is `rejected`.";
411
+ };
412
+ readonly ext: {
413
+ readonly $ref: "#/$defs/Ext";
414
+ };
415
+ };
416
+ };
417
+ readonly Ext: {
418
+ readonly title: "Ext";
419
+ 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.";
420
+ readonly type: "object";
421
+ readonly minProperties: 1;
422
+ readonly additionalProperties: true;
423
+ readonly propertyNames: {
424
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
425
+ };
426
+ };
427
+ readonly Session: {
428
+ readonly $anchor: "session";
429
+ readonly title: "Session";
430
+ readonly description: "A logical authentication context bound to a subject. Producers and consumers exchange Session-shaped data in challenge issuance, authentication responses, and introspection (whoami).";
431
+ readonly type: "object";
432
+ readonly additionalProperties: false;
433
+ readonly required: readonly ["id", "subject", "issuedAt", "expiresAt"];
434
+ readonly properties: {
435
+ readonly id: {
436
+ readonly type: "string";
437
+ readonly minLength: 1;
438
+ readonly description: "Opaque, server-chosen session identifier. Stable for the lifetime of the session. Consumers MUST treat the value as opaque; no structure is implied.";
439
+ };
440
+ readonly subject: {
441
+ readonly type: "string";
442
+ readonly minLength: 1;
443
+ readonly description: "The authenticated party's VID (typically a DID URL).";
444
+ };
445
+ readonly issuedAt: {
446
+ readonly type: "string";
447
+ readonly format: "date-time";
448
+ readonly description: "ISO-8601 timestamp when the session was created.";
449
+ };
450
+ readonly expiresAt: {
451
+ readonly type: "string";
452
+ readonly format: "date-time";
453
+ readonly description: "ISO-8601 timestamp when the session ceases to be valid. Producers SHOULD refresh before this time; consumers MUST reject after.";
454
+ };
455
+ readonly amr: {
456
+ readonly type: "array";
457
+ readonly minItems: 1;
458
+ readonly items: {
459
+ readonly type: "string";
460
+ readonly minLength: 1;
461
+ };
462
+ readonly description: "Authentication Methods References per [RFC 8176]. Typical values: \"did\" (challenge-response), \"passkey\" (WebAuthn), \"vta\" (verifiable-trust agent approval). Multi-factor sessions list every method used.";
463
+ };
464
+ readonly acr: {
465
+ readonly type: "string";
466
+ readonly description: "Authentication Context Class Reference per [OIDC Core §2]. Profiles define their own values; the recommended set is \"aal1\" (single-factor DID auth), \"aal2\" (a second possession-or-biometric factor confirmed), and \"aal3\" (hardware-bound second factor).";
467
+ };
468
+ readonly ext: {
469
+ readonly $ref: "#/$defs/Ext";
470
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
471
+ };
472
+ };
473
+ };
474
+ readonly AttestStatement: {
475
+ readonly title: "AttestStatement";
476
+ readonly type: "object";
477
+ readonly minProperties: 1;
478
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 Trust Task document — envelope, payload and proof — issued by the approver. Deliberately an open object here rather than a typed one: the consumer verifies it as a document in its own right (envelope, proof and payload against that specification's schemas), and verifies its proof over the members exactly as received, which a binding that narrowed it to a typed struct and re-serialised it could silently break.";
479
+ };
480
+ readonly AssertionResponse: {
481
+ readonly $anchor: "assertionResponse";
482
+ readonly title: "AuthenticatorAssertionResponse (login)";
483
+ readonly description: "The credential the client returns from `navigator.credentials.get`. Binary fields are base64url-encoded.";
484
+ readonly type: "object";
485
+ readonly additionalProperties: false;
486
+ readonly required: readonly ["id", "rawId", "type", "response"];
487
+ readonly properties: {
488
+ readonly id: {
489
+ readonly type: "string";
490
+ };
491
+ readonly rawId: {
492
+ readonly type: "string";
493
+ };
494
+ readonly type: {
495
+ readonly const: "public-key";
496
+ };
497
+ readonly response: {
498
+ readonly type: "object";
499
+ readonly additionalProperties: false;
500
+ readonly required: readonly ["clientDataJSON", "authenticatorData", "signature"];
501
+ readonly properties: {
502
+ readonly clientDataJSON: {
503
+ readonly type: "string";
504
+ };
505
+ readonly authenticatorData: {
506
+ readonly type: "string";
507
+ };
508
+ readonly signature: {
509
+ readonly type: "string";
510
+ };
511
+ readonly userHandle: {
512
+ readonly type: readonly ["string", "null"];
513
+ };
514
+ };
515
+ };
516
+ readonly authenticatorAttachment: {
517
+ readonly enum: readonly ["platform", "cross-platform"];
518
+ };
519
+ readonly clientExtensionResults: {
520
+ readonly type: "object";
521
+ };
522
+ };
523
+ };
524
+ };
525
+ };
526
+ /**
527
+ * SPEC.md §7.2 policy for the request variant, from this specification's
528
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
529
+ * per-specification and cannot be derived from the document alone, and
530
+ * item 2 needs the schema this carries.
531
+ */
532
+ export declare const SPEC: {
533
+ readonly typeUri: "https://trusttasks.org/spec/auth/step-up/approve-response/0.6";
534
+ readonly isBearer: false;
535
+ readonly isProofRequired: true;
536
+ readonly isRecipientRequired: true;
537
+ readonly isIssuedAtRequired: true;
538
+ readonly payloadSchema: {
539
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
540
+ readonly $id: "https://trusttasks.org/spec/auth/step-up/approve-response/0.6";
541
+ readonly title: "Auth — Step-up Approve Response";
542
+ readonly description: "The approver's signed ratification of a step-up: subject + challenge (+ sessionId, when the request carried one) are echoed inside a document signed by the approver, backed by a gate — the proof itself, a WebAuthn assertion, or a bound step-up approver's signed statement — so the relying party can elevate the session, or apply the approval to the one operation it was bound to.";
543
+ readonly type: "object";
544
+ readonly additionalProperties: false;
545
+ readonly required: readonly ["subject", "challenge", "decision"];
546
+ readonly properties: {
547
+ readonly subject: {
548
+ readonly type: "string";
549
+ readonly minLength: 1;
550
+ readonly description: "Echoed from the matching approve-request. The relying party verifies it equals the subject bound to the pending step-up. With `approverSigned` evidence it is also the document's issuer: the subject signs as its own DID.";
551
+ };
552
+ readonly sessionId: {
553
+ readonly type: "string";
554
+ readonly minLength: 1;
555
+ readonly description: "Echoed from the matching approve-request when that request carried one, and absent when it did not — a step-up bound to an operation that arrived without a session.";
556
+ };
557
+ readonly challenge: {
558
+ readonly type: "string";
559
+ readonly minLength: 16;
560
+ readonly description: "Echoed from the matching approve-request. The relying party verifies it equals the bound challenge.";
561
+ };
562
+ readonly decision: {
563
+ readonly type: "string";
564
+ readonly enum: readonly ["approved", "denied"];
565
+ readonly description: "`approved` elevates the session, or authorizes the bound operation, per the relying party's policy. `denied` is a signed refusal — useful for audit even though it changes nothing.";
566
+ };
567
+ readonly deniedReason: {
568
+ readonly type: "string";
569
+ readonly maxLength: 500;
570
+ readonly description: "Required when decision is `denied`. Human-readable rationale the user provided (or which the approver inferred).";
571
+ };
572
+ readonly grantedAcr: {
573
+ readonly type: "string";
574
+ readonly description: "The acr the approver believes it has cryptographically demonstrated. The relying party MAY accept this, MAY upgrade to a lower value, but MUST NOT exceed it.";
575
+ };
576
+ readonly evidence: {
577
+ readonly $ref: "#/$defs/Evidence";
578
+ readonly description: "How the approver demonstrated the factor backing this approval. A tagged union on `kind`; absent is equivalent to `didSigned`. Whatever the kind, the document's framework `proof` is REQUIRED — evidence is in addition to it, never instead.";
579
+ };
580
+ readonly ext: {
581
+ readonly $ref: "#/$defs/Ext";
582
+ };
583
+ };
584
+ readonly $defs: {
585
+ readonly Evidence: {
586
+ readonly $anchor: "evidence";
587
+ readonly title: "Step-up Evidence";
588
+ readonly description: "Tagged union over `kind` describing the cryptographic factor the approver presents to back the approval.";
589
+ readonly oneOf: readonly [{
590
+ readonly title: "DidSigned";
591
+ readonly type: "object";
592
+ readonly additionalProperties: false;
593
+ readonly required: readonly ["kind"];
594
+ readonly properties: {
595
+ readonly kind: {
596
+ readonly const: "didSigned";
597
+ };
598
+ };
599
+ readonly description: "The approval is gated by the document's framework `proof` alone. The default when `evidence` is omitted. `amr` reflects \"vta\"/\"did\".";
600
+ }, {
601
+ readonly title: "WebAuthn";
602
+ readonly type: "object";
603
+ readonly additionalProperties: false;
604
+ readonly required: readonly ["kind", "assertion"];
605
+ readonly properties: {
606
+ readonly kind: {
607
+ readonly const: "webauthn";
608
+ };
609
+ readonly assertion: {
610
+ readonly $ref: "#/$defs/AssertionResponse";
611
+ readonly description: "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API. Its `clientDataJSON` challenge MUST equal the step-up `challenge`. Verified per WebAuthn Level 2 §7.2 in addition to the framework proof; `amr` reflects \"passkey\".";
612
+ };
613
+ };
614
+ }, {
615
+ readonly title: "ApproverSigned";
616
+ readonly type: "object";
617
+ readonly additionalProperties: false;
618
+ readonly required: readonly ["kind", "statement"];
619
+ readonly properties: {
620
+ readonly kind: {
621
+ readonly const: "approverSigned";
622
+ };
623
+ readonly statement: {
624
+ readonly $ref: "#/$defs/AttestStatement";
625
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 document with `purpose: stepUp`, issued by one of the subject's bound step-up approvers over the step-up `challenge` and `boundTo`, addressed to the relying party. The statement is the factor; the document carrying it MUST still be proved by the subject's own DID — never a delegated key. Verified as received, in addition to the framework proof; `amr` reflects \"approver\".";
626
+ };
627
+ };
628
+ }];
629
+ };
630
+ readonly Response: {
631
+ readonly $anchor: "response";
632
+ readonly title: "Auth Step-up Approve Response — relying party ack";
633
+ readonly description: "Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.6#response.";
634
+ readonly type: "object";
635
+ readonly additionalProperties: false;
636
+ readonly required: readonly ["status"];
637
+ readonly properties: {
638
+ readonly status: {
639
+ readonly type: "string";
640
+ readonly enum: readonly ["elevated", "recorded", "rejected"];
641
+ readonly description: "`elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied.";
642
+ };
643
+ readonly session: {
644
+ readonly $ref: "#/$defs/Session";
645
+ readonly description: "Present when status is `elevated`. Absent for `recorded`, which changes no session.";
646
+ };
647
+ readonly boundTo: {
648
+ readonly type: "string";
649
+ readonly maxLength: 256;
650
+ readonly description: "Present when status is `recorded`. The opaque relying-party identifier for the single operation this approval authorised. Not a capability.";
651
+ };
652
+ readonly reason: {
653
+ readonly type: "string";
654
+ readonly maxLength: 1024;
655
+ readonly description: "Present when status is `rejected`.";
656
+ };
657
+ readonly ext: {
658
+ readonly $ref: "#/$defs/Ext";
659
+ };
660
+ };
661
+ };
662
+ readonly Ext: {
663
+ readonly title: "Ext";
664
+ 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.";
665
+ readonly type: "object";
666
+ readonly minProperties: 1;
667
+ readonly additionalProperties: true;
668
+ readonly propertyNames: {
669
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
670
+ };
671
+ };
672
+ readonly Session: {
673
+ readonly $anchor: "session";
674
+ readonly title: "Session";
675
+ readonly description: "A logical authentication context bound to a subject. Producers and consumers exchange Session-shaped data in challenge issuance, authentication responses, and introspection (whoami).";
676
+ readonly type: "object";
677
+ readonly additionalProperties: false;
678
+ readonly required: readonly ["id", "subject", "issuedAt", "expiresAt"];
679
+ readonly properties: {
680
+ readonly id: {
681
+ readonly type: "string";
682
+ readonly minLength: 1;
683
+ readonly description: "Opaque, server-chosen session identifier. Stable for the lifetime of the session. Consumers MUST treat the value as opaque; no structure is implied.";
684
+ };
685
+ readonly subject: {
686
+ readonly type: "string";
687
+ readonly minLength: 1;
688
+ readonly description: "The authenticated party's VID (typically a DID URL).";
689
+ };
690
+ readonly issuedAt: {
691
+ readonly type: "string";
692
+ readonly format: "date-time";
693
+ readonly description: "ISO-8601 timestamp when the session was created.";
694
+ };
695
+ readonly expiresAt: {
696
+ readonly type: "string";
697
+ readonly format: "date-time";
698
+ readonly description: "ISO-8601 timestamp when the session ceases to be valid. Producers SHOULD refresh before this time; consumers MUST reject after.";
699
+ };
700
+ readonly amr: {
701
+ readonly type: "array";
702
+ readonly minItems: 1;
703
+ readonly items: {
704
+ readonly type: "string";
705
+ readonly minLength: 1;
706
+ };
707
+ readonly description: "Authentication Methods References per [RFC 8176]. Typical values: \"did\" (challenge-response), \"passkey\" (WebAuthn), \"vta\" (verifiable-trust agent approval). Multi-factor sessions list every method used.";
708
+ };
709
+ readonly acr: {
710
+ readonly type: "string";
711
+ readonly description: "Authentication Context Class Reference per [OIDC Core §2]. Profiles define their own values; the recommended set is \"aal1\" (single-factor DID auth), \"aal2\" (a second possession-or-biometric factor confirmed), and \"aal3\" (hardware-bound second factor).";
712
+ };
713
+ readonly ext: {
714
+ readonly $ref: "#/$defs/Ext";
715
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
716
+ };
717
+ };
718
+ };
719
+ readonly AttestStatement: {
720
+ readonly title: "AttestStatement";
721
+ readonly type: "object";
722
+ readonly minProperties: 1;
723
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 Trust Task document — envelope, payload and proof — issued by the approver. Deliberately an open object here rather than a typed one: the consumer verifies it as a document in its own right (envelope, proof and payload against that specification's schemas), and verifies its proof over the members exactly as received, which a binding that narrowed it to a typed struct and re-serialised it could silently break.";
724
+ };
725
+ readonly AssertionResponse: {
726
+ readonly $anchor: "assertionResponse";
727
+ readonly title: "AuthenticatorAssertionResponse (login)";
728
+ readonly description: "The credential the client returns from `navigator.credentials.get`. Binary fields are base64url-encoded.";
729
+ readonly type: "object";
730
+ readonly additionalProperties: false;
731
+ readonly required: readonly ["id", "rawId", "type", "response"];
732
+ readonly properties: {
733
+ readonly id: {
734
+ readonly type: "string";
735
+ };
736
+ readonly rawId: {
737
+ readonly type: "string";
738
+ };
739
+ readonly type: {
740
+ readonly const: "public-key";
741
+ };
742
+ readonly response: {
743
+ readonly type: "object";
744
+ readonly additionalProperties: false;
745
+ readonly required: readonly ["clientDataJSON", "authenticatorData", "signature"];
746
+ readonly properties: {
747
+ readonly clientDataJSON: {
748
+ readonly type: "string";
749
+ };
750
+ readonly authenticatorData: {
751
+ readonly type: "string";
752
+ };
753
+ readonly signature: {
754
+ readonly type: "string";
755
+ };
756
+ readonly userHandle: {
757
+ readonly type: readonly ["string", "null"];
758
+ };
759
+ };
760
+ };
761
+ readonly authenticatorAttachment: {
762
+ readonly enum: readonly ["platform", "cross-platform"];
763
+ };
764
+ readonly clientExtensionResults: {
765
+ readonly type: "object";
766
+ };
767
+ };
768
+ };
769
+ };
770
+ };
771
+ };
772
+ /**
773
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
774
+ * tracks the *issuer* party's requirement because a response swaps the
775
+ * parties (§7.3 item 5).
776
+ */
777
+ export declare const RESPONSE_SPEC: {
778
+ readonly typeUri: "https://trusttasks.org/spec/auth/step-up/approve-response/0.6#response";
779
+ readonly isBearer: false;
780
+ readonly isProofRequired: true;
781
+ readonly isRecipientRequired: true;
782
+ readonly isIssuedAtRequired: true;
783
+ readonly payloadSchema: {
784
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
785
+ readonly $ref: "#/$defs/Response";
786
+ readonly $defs: {
787
+ readonly Evidence: {
788
+ readonly $anchor: "evidence";
789
+ readonly title: "Step-up Evidence";
790
+ readonly description: "Tagged union over `kind` describing the cryptographic factor the approver presents to back the approval.";
791
+ readonly oneOf: readonly [{
792
+ readonly title: "DidSigned";
793
+ readonly type: "object";
794
+ readonly additionalProperties: false;
795
+ readonly required: readonly ["kind"];
796
+ readonly properties: {
797
+ readonly kind: {
798
+ readonly const: "didSigned";
799
+ };
800
+ };
801
+ readonly description: "The approval is gated by the document's framework `proof` alone. The default when `evidence` is omitted. `amr` reflects \"vta\"/\"did\".";
802
+ }, {
803
+ readonly title: "WebAuthn";
804
+ readonly type: "object";
805
+ readonly additionalProperties: false;
806
+ readonly required: readonly ["kind", "assertion"];
807
+ readonly properties: {
808
+ readonly kind: {
809
+ readonly const: "webauthn";
810
+ };
811
+ readonly assertion: {
812
+ readonly $ref: "#/$defs/AssertionResponse";
813
+ readonly description: "The unmodified AuthenticatorAssertionResponse from the platform WebAuthn API. Its `clientDataJSON` challenge MUST equal the step-up `challenge`. Verified per WebAuthn Level 2 §7.2 in addition to the framework proof; `amr` reflects \"passkey\".";
814
+ };
815
+ };
816
+ }, {
817
+ readonly title: "ApproverSigned";
818
+ readonly type: "object";
819
+ readonly additionalProperties: false;
820
+ readonly required: readonly ["kind", "statement"];
821
+ readonly properties: {
822
+ readonly kind: {
823
+ readonly const: "approverSigned";
824
+ };
825
+ readonly statement: {
826
+ readonly $ref: "#/$defs/AttestStatement";
827
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 document with `purpose: stepUp`, issued by one of the subject's bound step-up approvers over the step-up `challenge` and `boundTo`, addressed to the relying party. The statement is the factor; the document carrying it MUST still be proved by the subject's own DID — never a delegated key. Verified as received, in addition to the framework proof; `amr` reflects \"approver\".";
828
+ };
829
+ };
830
+ }];
831
+ };
832
+ readonly Response: {
833
+ readonly $anchor: "response";
834
+ readonly title: "Auth Step-up Approve Response — relying party ack";
835
+ readonly description: "Acknowledgement the relying party returns after processing the approval. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/step-up/approve-response/0.6#response.";
836
+ readonly type: "object";
837
+ readonly additionalProperties: false;
838
+ readonly required: readonly ["status"];
839
+ readonly properties: {
840
+ readonly status: {
841
+ readonly type: "string";
842
+ readonly enum: readonly ["elevated", "recorded", "rejected"];
843
+ readonly description: "`elevated` — the approval was applied and the session's assurance level was raised. `recorded` — the approval was applied to the single operation it was bound to, and NO session was elevated; see `boundTo`. `rejected` — the approval was not applied.";
844
+ };
845
+ readonly session: {
846
+ readonly $ref: "#/$defs/Session";
847
+ readonly description: "Present when status is `elevated`. Absent for `recorded`, which changes no session.";
848
+ };
849
+ readonly boundTo: {
850
+ readonly type: "string";
851
+ readonly maxLength: 256;
852
+ readonly description: "Present when status is `recorded`. The opaque relying-party identifier for the single operation this approval authorised. Not a capability.";
853
+ };
854
+ readonly reason: {
855
+ readonly type: "string";
856
+ readonly maxLength: 1024;
857
+ readonly description: "Present when status is `rejected`.";
858
+ };
859
+ readonly ext: {
860
+ readonly $ref: "#/$defs/Ext";
861
+ };
862
+ };
863
+ };
864
+ readonly Ext: {
865
+ readonly title: "Ext";
866
+ 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.";
867
+ readonly type: "object";
868
+ readonly minProperties: 1;
869
+ readonly additionalProperties: true;
870
+ readonly propertyNames: {
871
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
872
+ };
873
+ };
874
+ readonly Session: {
875
+ readonly $anchor: "session";
876
+ readonly title: "Session";
877
+ readonly description: "A logical authentication context bound to a subject. Producers and consumers exchange Session-shaped data in challenge issuance, authentication responses, and introspection (whoami).";
878
+ readonly type: "object";
879
+ readonly additionalProperties: false;
880
+ readonly required: readonly ["id", "subject", "issuedAt", "expiresAt"];
881
+ readonly properties: {
882
+ readonly id: {
883
+ readonly type: "string";
884
+ readonly minLength: 1;
885
+ readonly description: "Opaque, server-chosen session identifier. Stable for the lifetime of the session. Consumers MUST treat the value as opaque; no structure is implied.";
886
+ };
887
+ readonly subject: {
888
+ readonly type: "string";
889
+ readonly minLength: 1;
890
+ readonly description: "The authenticated party's VID (typically a DID URL).";
891
+ };
892
+ readonly issuedAt: {
893
+ readonly type: "string";
894
+ readonly format: "date-time";
895
+ readonly description: "ISO-8601 timestamp when the session was created.";
896
+ };
897
+ readonly expiresAt: {
898
+ readonly type: "string";
899
+ readonly format: "date-time";
900
+ readonly description: "ISO-8601 timestamp when the session ceases to be valid. Producers SHOULD refresh before this time; consumers MUST reject after.";
901
+ };
902
+ readonly amr: {
903
+ readonly type: "array";
904
+ readonly minItems: 1;
905
+ readonly items: {
906
+ readonly type: "string";
907
+ readonly minLength: 1;
908
+ };
909
+ readonly description: "Authentication Methods References per [RFC 8176]. Typical values: \"did\" (challenge-response), \"passkey\" (WebAuthn), \"vta\" (verifiable-trust agent approval). Multi-factor sessions list every method used.";
910
+ };
911
+ readonly acr: {
912
+ readonly type: "string";
913
+ readonly description: "Authentication Context Class Reference per [OIDC Core §2]. Profiles define their own values; the recommended set is \"aal1\" (single-factor DID auth), \"aal2\" (a second possession-or-biometric factor confirmed), and \"aal3\" (hardware-bound second factor).";
914
+ };
915
+ readonly ext: {
916
+ readonly $ref: "#/$defs/Ext";
917
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
918
+ };
919
+ };
920
+ };
921
+ readonly AttestStatement: {
922
+ readonly title: "AttestStatement";
923
+ readonly type: "object";
924
+ readonly minProperties: 1;
925
+ readonly description: "A complete, signed auth/step-up/approver/attest/0.1 Trust Task document — envelope, payload and proof — issued by the approver. Deliberately an open object here rather than a typed one: the consumer verifies it as a document in its own right (envelope, proof and payload against that specification's schemas), and verifies its proof over the members exactly as received, which a binding that narrowed it to a typed struct and re-serialised it could silently break.";
926
+ };
927
+ readonly AssertionResponse: {
928
+ readonly $anchor: "assertionResponse";
929
+ readonly title: "AuthenticatorAssertionResponse (login)";
930
+ readonly description: "The credential the client returns from `navigator.credentials.get`. Binary fields are base64url-encoded.";
931
+ readonly type: "object";
932
+ readonly additionalProperties: false;
933
+ readonly required: readonly ["id", "rawId", "type", "response"];
934
+ readonly properties: {
935
+ readonly id: {
936
+ readonly type: "string";
937
+ };
938
+ readonly rawId: {
939
+ readonly type: "string";
940
+ };
941
+ readonly type: {
942
+ readonly const: "public-key";
943
+ };
944
+ readonly response: {
945
+ readonly type: "object";
946
+ readonly additionalProperties: false;
947
+ readonly required: readonly ["clientDataJSON", "authenticatorData", "signature"];
948
+ readonly properties: {
949
+ readonly clientDataJSON: {
950
+ readonly type: "string";
951
+ };
952
+ readonly authenticatorData: {
953
+ readonly type: "string";
954
+ };
955
+ readonly signature: {
956
+ readonly type: "string";
957
+ };
958
+ readonly userHandle: {
959
+ readonly type: readonly ["string", "null"];
960
+ };
961
+ };
962
+ };
963
+ readonly authenticatorAttachment: {
964
+ readonly enum: readonly ["platform", "cross-platform"];
965
+ };
966
+ readonly clientExtensionResults: {
967
+ readonly type: "object";
968
+ };
969
+ };
970
+ };
971
+ };
972
+ };
973
+ };
974
+ //# sourceMappingURL=payload.d.ts.map