@openvtc/trust-tasks 0.20.7 → 0.21.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 (253) hide show
  1. package/CHANGELOG.md +320 -0
  2. package/dist/_shared/components.d.ts +299 -2
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/auth/passkey/enroll/invite/0.2/payload.d.ts +456 -0
  5. package/dist/auth/passkey/enroll/invite/0.2/payload.d.ts.map +1 -0
  6. package/dist/auth/passkey/enroll/invite/0.2/payload.js +248 -0
  7. package/dist/auth/passkey/enroll/invite/0.2/payload.js.map +1 -0
  8. package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.d.ts +728 -0
  9. package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.d.ts.map +1 -0
  10. package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.js +430 -0
  11. package/dist/auth/passkey/enroll/redeem/finish/0.1/payload.js.map +1 -0
  12. package/dist/auth/passkey/enroll/redeem/start/0.1/payload.d.ts +1043 -0
  13. package/dist/auth/passkey/enroll/redeem/start/0.1/payload.d.ts.map +1 -0
  14. package/dist/auth/passkey/enroll/redeem/start/0.1/payload.js +628 -0
  15. package/dist/auth/passkey/enroll/redeem/start/0.1/payload.js.map +1 -0
  16. package/dist/auth/passkey/revoke/finish/0.2/payload.d.ts +533 -0
  17. package/dist/auth/passkey/revoke/finish/0.2/payload.d.ts.map +1 -0
  18. package/dist/auth/passkey/revoke/finish/0.2/payload.js +315 -0
  19. package/dist/auth/passkey/revoke/finish/0.2/payload.js.map +1 -0
  20. package/dist/auth/passkey/revoke/start/0.2/payload.d.ts +511 -0
  21. package/dist/auth/passkey/revoke/start/0.2/payload.d.ts.map +1 -0
  22. package/dist/auth/passkey/revoke/start/0.2/payload.js +297 -0
  23. package/dist/auth/passkey/revoke/start/0.2/payload.js.map +1 -0
  24. package/dist/auth/step-up/approve-request/0.3/payload.d.ts +613 -0
  25. package/dist/auth/step-up/approve-request/0.3/payload.d.ts.map +1 -0
  26. package/dist/auth/step-up/approve-request/0.3/payload.js +345 -0
  27. package/dist/auth/step-up/approve-request/0.3/payload.js.map +1 -0
  28. package/dist/auth/step-up/approve-response/0.4/payload.d.ts +887 -0
  29. package/dist/auth/step-up/approve-response/0.4/payload.d.ts.map +1 -0
  30. package/dist/auth/step-up/approve-response/0.4/payload.js +504 -0
  31. package/dist/auth/step-up/approve-response/0.4/payload.js.map +1 -0
  32. package/dist/auth/step-up/approve-response/0.5/payload.d.ts +887 -0
  33. package/dist/auth/step-up/approve-response/0.5/payload.d.ts.map +1 -0
  34. package/dist/auth/step-up/approve-response/0.5/payload.js +504 -0
  35. package/dist/auth/step-up/approve-response/0.5/payload.js.map +1 -0
  36. package/dist/backup/abort/0.1/payload.d.ts +262 -0
  37. package/dist/backup/abort/0.1/payload.d.ts.map +1 -0
  38. package/dist/backup/abort/0.1/payload.js +146 -0
  39. package/dist/backup/abort/0.1/payload.js.map +1 -0
  40. package/dist/backup/complete-export/0.1/payload.d.ts +262 -0
  41. package/dist/backup/complete-export/0.1/payload.d.ts.map +1 -0
  42. package/dist/backup/complete-export/0.1/payload.js +146 -0
  43. package/dist/backup/complete-export/0.1/payload.js.map +1 -0
  44. package/dist/backup/finalize-import/0.1/payload.d.ts +395 -0
  45. package/dist/backup/finalize-import/0.1/payload.d.ts.map +1 -0
  46. package/dist/backup/finalize-import/0.1/payload.js +209 -0
  47. package/dist/backup/finalize-import/0.1/payload.js.map +1 -0
  48. package/dist/backup/get-chunk/0.1/payload.d.ts +461 -0
  49. package/dist/backup/get-chunk/0.1/payload.d.ts.map +1 -0
  50. package/dist/backup/get-chunk/0.1/payload.js +250 -0
  51. package/dist/backup/get-chunk/0.1/payload.js.map +1 -0
  52. package/dist/backup/initiate-export/0.1/payload.d.ts +896 -0
  53. package/dist/backup/initiate-export/0.1/payload.d.ts.map +1 -0
  54. package/dist/backup/initiate-export/0.1/payload.js +507 -0
  55. package/dist/backup/initiate-export/0.1/payload.js.map +1 -0
  56. package/dist/backup/initiate-import/0.1/payload.d.ts +888 -0
  57. package/dist/backup/initiate-import/0.1/payload.d.ts.map +1 -0
  58. package/dist/backup/initiate-import/0.1/payload.js +504 -0
  59. package/dist/backup/initiate-import/0.1/payload.js.map +1 -0
  60. package/dist/backup/put-chunk/0.1/payload.d.ts +495 -0
  61. package/dist/backup/put-chunk/0.1/payload.d.ts.map +1 -0
  62. package/dist/backup/put-chunk/0.1/payload.js +265 -0
  63. package/dist/backup/put-chunk/0.1/payload.js.map +1 -0
  64. package/dist/device/list/0.1/payload.d.ts +4 -4
  65. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  66. package/dist/device/list/0.1/payload.js +4 -2
  67. package/dist/device/list/0.1/payload.js.map +1 -1
  68. package/dist/device/list/0.2/payload.d.ts +4 -4
  69. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  70. package/dist/device/list/0.2/payload.js +4 -2
  71. package/dist/device/list/0.2/payload.js.map +1 -1
  72. package/dist/device/register/0.1/payload.d.ts +4 -4
  73. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  74. package/dist/device/register/0.1/payload.js +4 -2
  75. package/dist/device/register/0.1/payload.js.map +1 -1
  76. package/dist/device/register/0.2/payload.d.ts +4 -4
  77. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  78. package/dist/device/register/0.2/payload.js +4 -2
  79. package/dist/device/register/0.2/payload.js.map +1 -1
  80. package/dist/git-ns/_shared/0.4/git-ns.d.ts +16 -0
  81. package/dist/git-ns/_shared/0.4/git-ns.d.ts.map +1 -0
  82. package/dist/git-ns/_shared/0.4/git-ns.js +6 -0
  83. package/dist/git-ns/_shared/0.4/git-ns.js.map +1 -0
  84. package/dist/git-ns/account/link-status/0.1/payload.d.ts +2 -2
  85. package/dist/git-ns/account/link-status/0.1/payload.js +2 -2
  86. package/dist/git-ns/account/link-status/0.1/payload.js.map +1 -1
  87. package/dist/git-ns/account/unlink/0.1/payload.d.ts +411 -0
  88. package/dist/git-ns/account/unlink/0.1/payload.d.ts.map +1 -0
  89. package/dist/git-ns/account/unlink/0.1/payload.js +228 -0
  90. package/dist/git-ns/account/unlink/0.1/payload.js.map +1 -0
  91. package/dist/git-ns/bridge/event/0.3/payload.d.ts +1682 -0
  92. package/dist/git-ns/bridge/event/0.3/payload.d.ts.map +1 -0
  93. package/dist/git-ns/bridge/event/0.3/payload.js +971 -0
  94. package/dist/git-ns/bridge/event/0.3/payload.js.map +1 -0
  95. package/dist/git-ns/bridge/job/0.4/payload.d.ts +1068 -0
  96. package/dist/git-ns/bridge/job/0.4/payload.d.ts.map +1 -0
  97. package/dist/git-ns/bridge/job/0.4/payload.js +573 -0
  98. package/dist/git-ns/bridge/job/0.4/payload.js.map +1 -0
  99. package/dist/git-ns/drift/resolve/0.3/payload.d.ts +1072 -0
  100. package/dist/git-ns/drift/resolve/0.3/payload.d.ts.map +1 -0
  101. package/dist/git-ns/drift/resolve/0.3/payload.js +634 -0
  102. package/dist/git-ns/drift/resolve/0.3/payload.js.map +1 -0
  103. package/dist/git-ns/namespace/reseat/0.3/payload.d.ts +515 -0
  104. package/dist/git-ns/namespace/reseat/0.3/payload.d.ts.map +1 -0
  105. package/dist/git-ns/namespace/reseat/0.3/payload.js +296 -0
  106. package/dist/git-ns/namespace/reseat/0.3/payload.js.map +1 -0
  107. package/dist/git-ns/repo/create/0.3/payload.d.ts +1101 -0
  108. package/dist/git-ns/repo/create/0.3/payload.d.ts.map +1 -0
  109. package/dist/git-ns/repo/create/0.3/payload.js +646 -0
  110. package/dist/git-ns/repo/create/0.3/payload.js.map +1 -0
  111. package/dist/git-ns/right/break-glass/0.1/payload.d.ts +685 -0
  112. package/dist/git-ns/right/break-glass/0.1/payload.d.ts.map +1 -0
  113. package/dist/git-ns/right/break-glass/0.1/payload.js +397 -0
  114. package/dist/git-ns/right/break-glass/0.1/payload.js.map +1 -0
  115. package/dist/git-ns/right/break-glass-notice/0.1/payload.d.ts +384 -0
  116. package/dist/git-ns/right/break-glass-notice/0.1/payload.d.ts.map +1 -0
  117. package/dist/git-ns/right/break-glass-notice/0.1/payload.js +216 -0
  118. package/dist/git-ns/right/break-glass-notice/0.1/payload.js.map +1 -0
  119. package/dist/git-ns/right/grant/0.3/payload.d.ts +678 -0
  120. package/dist/git-ns/right/grant/0.3/payload.d.ts.map +1 -0
  121. package/dist/git-ns/right/grant/0.3/payload.js +383 -0
  122. package/dist/git-ns/right/grant/0.3/payload.js.map +1 -0
  123. package/dist/git-ns/right/ratify/0.1/payload.d.ts +702 -0
  124. package/dist/git-ns/right/ratify/0.1/payload.d.ts.map +1 -0
  125. package/dist/git-ns/right/ratify/0.1/payload.js +404 -0
  126. package/dist/git-ns/right/ratify/0.1/payload.js.map +1 -0
  127. package/dist/git-ns/right/revoke/0.3/payload.d.ts +664 -0
  128. package/dist/git-ns/right/revoke/0.3/payload.d.ts.map +1 -0
  129. package/dist/git-ns/right/revoke/0.3/payload.js +378 -0
  130. package/dist/git-ns/right/revoke/0.3/payload.js.map +1 -0
  131. package/dist/git-ns/roles/reproject/0.1/payload.d.ts +325 -0
  132. package/dist/git-ns/roles/reproject/0.1/payload.d.ts.map +1 -0
  133. package/dist/git-ns/roles/reproject/0.1/payload.js +176 -0
  134. package/dist/git-ns/roles/reproject/0.1/payload.js.map +1 -0
  135. package/dist/git-ns/view/0.1/payload.d.ts +2 -2
  136. package/dist/git-ns/view/0.1/payload.js +2 -2
  137. package/dist/git-ns/view/0.1/payload.js.map +1 -1
  138. package/dist/git-ns/view/0.2/payload.d.ts +2 -2
  139. package/dist/git-ns/view/0.2/payload.js +2 -2
  140. package/dist/git-ns/view/0.2/payload.js.map +1 -1
  141. package/dist/git-ns/view/0.3/payload.d.ts +2 -2
  142. package/dist/git-ns/view/0.3/payload.js +2 -2
  143. package/dist/git-ns/view/0.3/payload.js.map +1 -1
  144. package/dist/git-ns/view/0.4/payload.d.ts +1696 -0
  145. package/dist/git-ns/view/0.4/payload.d.ts.map +1 -0
  146. package/dist/git-ns/view/0.4/payload.js +1012 -0
  147. package/dist/git-ns/view/0.4/payload.js.map +1 -0
  148. package/dist/index.d.ts +39 -0
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +39 -0
  151. package/dist/index.js.map +1 -1
  152. package/dist/messaging/message/status/0.1/payload.d.ts +372 -0
  153. package/dist/messaging/message/status/0.1/payload.d.ts.map +1 -0
  154. package/dist/messaging/message/status/0.1/payload.js +214 -0
  155. package/dist/messaging/message/status/0.1/payload.js.map +1 -0
  156. package/dist/vta/_shared/0.3/did-key-roles.d.ts +16 -0
  157. package/dist/vta/_shared/0.3/did-key-roles.d.ts.map +1 -0
  158. package/dist/vta/_shared/0.3/did-key-roles.js +6 -0
  159. package/dist/vta/_shared/0.3/did-key-roles.js.map +1 -0
  160. package/dist/vta/attestation/mnemonic-export/1.0/payload.d.ts +326 -0
  161. package/dist/vta/attestation/mnemonic-export/1.0/payload.d.ts.map +1 -0
  162. package/dist/vta/attestation/mnemonic-export/1.0/payload.js +175 -0
  163. package/dist/vta/attestation/mnemonic-export/1.0/payload.js.map +1 -0
  164. package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts +1914 -0
  165. package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts.map +1 -0
  166. package/dist/vta/webvh/dids/keys/add/1.0/payload.js +1128 -0
  167. package/dist/vta/webvh/dids/keys/add/1.0/payload.js.map +1 -0
  168. package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts +1603 -0
  169. package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts.map +1 -0
  170. package/dist/vta/webvh/dids/keys/list/1.0/payload.js +942 -0
  171. package/dist/vta/webvh/dids/keys/list/1.0/payload.js.map +1 -0
  172. package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts +1914 -0
  173. package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts.map +1 -0
  174. package/dist/vta/webvh/dids/keys/retire/1.0/payload.js +1123 -0
  175. package/dist/vta/webvh/dids/keys/retire/1.0/payload.js.map +1 -0
  176. package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts +2021 -0
  177. package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts.map +1 -0
  178. package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js +1168 -0
  179. package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js.map +1 -0
  180. package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts +1992 -0
  181. package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts.map +1 -0
  182. package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js +1151 -0
  183. package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js.map +1 -0
  184. package/dist/vta/webvh/dids/update/2.0/payload.d.ts +1062 -0
  185. package/dist/vta/webvh/dids/update/2.0/payload.d.ts.map +1 -0
  186. package/dist/vta/webvh/dids/update/2.0/payload.js +616 -0
  187. package/dist/vta/webvh/dids/update/2.0/payload.js.map +1 -0
  188. package/dist/vtc/credentials/reissue/0.1/payload.d.ts +502 -0
  189. package/dist/vtc/credentials/reissue/0.1/payload.d.ts.map +1 -0
  190. package/dist/vtc/credentials/reissue/0.1/payload.js +282 -0
  191. package/dist/vtc/credentials/reissue/0.1/payload.js.map +1 -0
  192. package/dist/vtc/members/personhood/challenge/0.1/payload.d.ts +2 -2
  193. package/dist/vtc/members/personhood/challenge/0.1/payload.js +2 -2
  194. package/dist/vtc/members/personhood/challenge/0.1/payload.js.map +1 -1
  195. package/dist/vtc/vetting/vetters/profile/0.1/payload.d.ts +2 -2
  196. package/dist/vtc/vetting/vetters/profile/0.1/payload.js +2 -2
  197. package/dist/vtc/vetting/vetters/profile/0.1/payload.js.map +1 -1
  198. package/dist/vtc/vetting/vetters/resend/0.1/payload.d.ts +2 -2
  199. package/dist/vtc/vetting/vetters/resend/0.1/payload.js +2 -2
  200. package/dist/vtc/vetting/vetters/resend/0.1/payload.js.map +1 -1
  201. package/package.json +1 -1
  202. package/src/_shared/components.ts +313 -2
  203. package/src/auth/passkey/enroll/invite/0.2/payload.ts +325 -0
  204. package/src/auth/passkey/enroll/redeem/finish/0.1/payload.ts +499 -0
  205. package/src/auth/passkey/enroll/redeem/start/0.1/payload.ts +700 -0
  206. package/src/auth/passkey/revoke/finish/0.2/payload.ts +379 -0
  207. package/src/auth/passkey/revoke/start/0.2/payload.ts +349 -0
  208. package/src/auth/step-up/approve-request/0.3/payload.ts +421 -0
  209. package/src/auth/step-up/approve-response/0.4/payload.ts +593 -0
  210. package/src/auth/step-up/approve-response/0.5/payload.ts +593 -0
  211. package/src/backup/abort/0.1/payload.ts +191 -0
  212. package/src/backup/complete-export/0.1/payload.ts +191 -0
  213. package/src/backup/finalize-import/0.1/payload.ts +279 -0
  214. package/src/backup/get-chunk/0.1/payload.ts +308 -0
  215. package/src/backup/initiate-export/0.1/payload.ts +564 -0
  216. package/src/backup/initiate-import/0.1/payload.ts +561 -0
  217. package/src/backup/put-chunk/0.1/payload.ts +331 -0
  218. package/src/device/list/0.1/payload.ts +4 -2
  219. package/src/device/list/0.2/payload.ts +4 -2
  220. package/src/device/register/0.1/payload.ts +4 -2
  221. package/src/device/register/0.2/payload.ts +4 -2
  222. package/src/git-ns/_shared/0.4/git-ns.ts +17 -0
  223. package/src/git-ns/account/link-status/0.1/payload.ts +2 -2
  224. package/src/git-ns/account/unlink/0.1/payload.ts +274 -0
  225. package/src/git-ns/bridge/event/0.3/payload.ts +1132 -0
  226. package/src/git-ns/bridge/job/0.4/payload.ts +691 -0
  227. package/src/git-ns/drift/resolve/0.3/payload.ts +707 -0
  228. package/src/git-ns/namespace/reseat/0.3/payload.ts +342 -0
  229. package/src/git-ns/repo/create/0.3/payload.ts +706 -0
  230. package/src/git-ns/right/break-glass/0.1/payload.ts +443 -0
  231. package/src/git-ns/right/break-glass-notice/0.1/payload.ts +258 -0
  232. package/src/git-ns/right/grant/0.3/payload.ts +434 -0
  233. package/src/git-ns/right/ratify/0.1/payload.ts +455 -0
  234. package/src/git-ns/right/revoke/0.3/payload.ts +425 -0
  235. package/src/git-ns/roles/reproject/0.1/payload.ts +220 -0
  236. package/src/git-ns/view/0.1/payload.ts +2 -2
  237. package/src/git-ns/view/0.2/payload.ts +2 -2
  238. package/src/git-ns/view/0.3/payload.ts +2 -2
  239. package/src/git-ns/view/0.4/payload.ts +1075 -0
  240. package/src/index.ts +39 -0
  241. package/src/messaging/message/status/0.1/payload.ts +270 -0
  242. package/src/vta/_shared/0.3/did-key-roles.ts +17 -0
  243. package/src/vta/attestation/mnemonic-export/1.0/payload.ts +232 -0
  244. package/src/vta/webvh/dids/keys/add/1.0/payload.ts +1217 -0
  245. package/src/vta/webvh/dids/keys/list/1.0/payload.ts +1004 -0
  246. package/src/vta/webvh/dids/keys/retire/1.0/payload.ts +1212 -0
  247. package/src/vta/webvh/dids/keys/revoke/1.0/payload.ts +1276 -0
  248. package/src/vta/webvh/dids/rotate-keys/2.0/payload.ts +1262 -0
  249. package/src/vta/webvh/dids/update/2.0/payload.ts +713 -0
  250. package/src/vtc/credentials/reissue/0.1/payload.ts +357 -0
  251. package/src/vtc/members/personhood/challenge/0.1/payload.ts +2 -2
  252. package/src/vtc/vetting/vetters/profile/0.1/payload.ts +2 -2
  253. package/src/vtc/vetting/vetters/resend/0.1/payload.ts +2 -2
@@ -0,0 +1,325 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/auth/passkey/enroll/invite/0.2/payload.schema.json
4
+ */
5
+
6
+ import type { Ext } from "../../../../../_shared/components.js";
7
+
8
+
9
+ /**
10
+ * An administrator issues a single-use invite, redeemed with a separately delivered claim code, that binds a passkey to a subject who cannot yet authorise the binding themselves: their first passkey, or — for `purpose: stepUp` — a step-up-only passkey that never opens a session.
11
+ */
12
+ export interface AuthPasskeyEnrollInvite {
13
+ /**
14
+ * The VID the invitee will enroll. The admin asserts this binding; the redemption ceremony verifies the invitee controls a passkey and holds the claim code, but does NOT independently verify the subject — trust flows from the admin. For `purpose: stepUp` the consumer MUST already recognise the subject (a member, say).
15
+ */
16
+ subject: string;
17
+ /**
18
+ * What the redeemed credential may authenticate. `session` (the default, and 0.1's only behaviour): it signs the subject in, with the role and scopes the invite carries. `stepUp`: it is accepted only as the user-verification evidence of a step-up bound to one operation (auth/step-up/approve-response `evidence.kind: webauthn`), never to open or elevate a session; `role` and `scopes` MUST then be absent.
19
+ */
20
+ purpose?: "session" | "stepUp";
21
+ /**
22
+ * Role the invitee receives on successful enrollment. Consumer-defined vocabulary; if absent the consumer applies its default role.
23
+ */
24
+ role?: string;
25
+ /**
26
+ * Optional scopes to attach on enrollment.
27
+ */
28
+ scopes?: string[];
29
+ /**
30
+ * Suggested label for the credential. Used as a default; the invitee MAY override during redemption.
31
+ */
32
+ deviceLabel?: string;
33
+ /**
34
+ * Seconds the invite remains valid. Consumers SHOULD pick 15 min – 24 h, and MAY cap it lower; longer windows widen the attack surface.
35
+ */
36
+ ttl?: number;
37
+ ext?: Ext;
38
+ }
39
+ /**
40
+ * The issued invite. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/enroll/invite/0.2#response.
41
+ */
42
+ export interface AuthPasskeyEnrollInviteResponsePayload {
43
+ invite: {
44
+ /**
45
+ * Opaque single-use invite token. The invitee presents it to the consumer during enrollment. ≥128 bits entropy.
46
+ */
47
+ token: string;
48
+ /**
49
+ * Operator-shareable URL that, when opened in a WebAuthn-capable browser, drives the redemption ceremony (auth/passkey/enroll/redeem/start). Carries the token. MUST NOT carry the claim code.
50
+ */
51
+ url: string;
52
+ };
53
+ /**
54
+ * Echo of the invitee's VID.
55
+ */
56
+ subject: string;
57
+ /**
58
+ * Echo of the purpose the redeemed credential will have.
59
+ */
60
+ purpose: "session" | "stepUp";
61
+ expiresAt: string;
62
+ ext?: Ext;
63
+ /**
64
+ * A short code the invitee types at redemption, returned exactly once. The administrator delivers it over a different channel from `url`, so that intercepting one channel is not enough to redeem. The consumer stores only a slow hash of it.
65
+ */
66
+ claimCode: string;
67
+ }
68
+
69
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
70
+ export type { Ext };
71
+
72
+ /** Trust Task type URI. */
73
+ export const TYPE_URI = "https://trusttasks.org/spec/auth/passkey/enroll/invite/0.2" as const;
74
+
75
+ /** Stable alias for this specification's request payload shape. */
76
+ export type Payload = AuthPasskeyEnrollInvite;
77
+
78
+ /** Trust Task response type URI (request type URI + "#response"). */
79
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/auth/passkey/enroll/invite/0.2#response" as const;
80
+
81
+ /** Stable alias for this specification's success-response payload shape. */
82
+ export type Response = AuthPasskeyEnrollInviteResponsePayload;
83
+
84
+ /**
85
+ * This specification's payload schema, as a value.
86
+ *
87
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
88
+ * rather than only as a `.json` file because TypeScript types are erased
89
+ * at runtime: without a schema a consumer has nothing to validate, and
90
+ * every REQUIRED payload member is optional in practice. Cross-file
91
+ * `$ref`s are already inlined, so it needs no resolver.
92
+ */
93
+ export const PAYLOAD_SCHEMA = {
94
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
95
+ "$id": "https://trusttasks.org/spec/auth/passkey/enroll/invite/0.2",
96
+ "title": "Auth — Passkey Enroll (invite)",
97
+ "description": "An administrator issues a single-use invite, redeemed with a separately delivered claim code, that binds a passkey to a subject who cannot yet authorise the binding themselves: their first passkey, or — for `purpose: stepUp` — a step-up-only passkey that never opens a session.",
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": [
101
+ "subject"
102
+ ],
103
+ "properties": {
104
+ "subject": {
105
+ "type": "string",
106
+ "minLength": 1,
107
+ "description": "The VID the invitee will enroll. The admin asserts this binding; the redemption ceremony verifies the invitee controls a passkey and holds the claim code, but does NOT independently verify the subject — trust flows from the admin. For `purpose: stepUp` the consumer MUST already recognise the subject (a member, say)."
108
+ },
109
+ "purpose": {
110
+ "type": "string",
111
+ "enum": [
112
+ "session",
113
+ "stepUp"
114
+ ],
115
+ "default": "session",
116
+ "description": "What the redeemed credential may authenticate. `session` (the default, and 0.1's only behaviour): it signs the subject in, with the role and scopes the invite carries. `stepUp`: it is accepted only as the user-verification evidence of a step-up bound to one operation (auth/step-up/approve-response `evidence.kind: webauthn`), never to open or elevate a session; `role` and `scopes` MUST then be absent."
117
+ },
118
+ "role": {
119
+ "type": "string",
120
+ "description": "Role the invitee receives on successful enrollment. Consumer-defined vocabulary; if absent the consumer applies its default role."
121
+ },
122
+ "scopes": {
123
+ "type": "array",
124
+ "items": {
125
+ "type": "string",
126
+ "minLength": 1
127
+ },
128
+ "description": "Optional scopes to attach on enrollment."
129
+ },
130
+ "deviceLabel": {
131
+ "type": "string",
132
+ "maxLength": 256,
133
+ "description": "Suggested label for the credential. Used as a default; the invitee MAY override during redemption."
134
+ },
135
+ "ttl": {
136
+ "type": "integer",
137
+ "minimum": 1,
138
+ "description": "Seconds the invite remains valid. Consumers SHOULD pick 15 min – 24 h, and MAY cap it lower; longer windows widen the attack surface."
139
+ },
140
+ "ext": {
141
+ "$ref": "#/$defs/Ext"
142
+ }
143
+ },
144
+ "$defs": {
145
+ "Response": {
146
+ "$anchor": "response",
147
+ "title": "Auth Passkey Enroll Invite — response payload",
148
+ "description": "The issued invite. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/enroll/invite/0.2#response.",
149
+ "type": "object",
150
+ "additionalProperties": false,
151
+ "required": [
152
+ "invite",
153
+ "subject",
154
+ "purpose",
155
+ "expiresAt",
156
+ "claimCode"
157
+ ],
158
+ "properties": {
159
+ "invite": {
160
+ "type": "object",
161
+ "additionalProperties": false,
162
+ "required": [
163
+ "token",
164
+ "url"
165
+ ],
166
+ "properties": {
167
+ "token": {
168
+ "type": "string",
169
+ "minLength": 16,
170
+ "description": "Opaque single-use invite token. The invitee presents it to the consumer during enrollment. ≥128 bits entropy."
171
+ },
172
+ "url": {
173
+ "type": "string",
174
+ "format": "uri",
175
+ "description": "Operator-shareable URL that, when opened in a WebAuthn-capable browser, drives the redemption ceremony (auth/passkey/enroll/redeem/start). Carries the token. MUST NOT carry the claim code."
176
+ }
177
+ }
178
+ },
179
+ "subject": {
180
+ "type": "string",
181
+ "description": "Echo of the invitee's VID."
182
+ },
183
+ "purpose": {
184
+ "type": "string",
185
+ "enum": [
186
+ "session",
187
+ "stepUp"
188
+ ],
189
+ "description": "Echo of the purpose the redeemed credential will have."
190
+ },
191
+ "expiresAt": {
192
+ "type": "string",
193
+ "format": "date-time"
194
+ },
195
+ "ext": {
196
+ "$ref": "#/$defs/Ext"
197
+ },
198
+ "claimCode": {
199
+ "type": "string",
200
+ "minLength": 8,
201
+ "maxLength": 64,
202
+ "description": "A short code the invitee types at redemption, returned exactly once. The administrator delivers it over a different channel from `url`, so that intercepting one channel is not enough to redeem. The consumer stores only a slow hash of it."
203
+ }
204
+ }
205
+ },
206
+ "Ext": {
207
+ "title": "Ext",
208
+ "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.",
209
+ "type": "object",
210
+ "minProperties": 1,
211
+ "additionalProperties": true,
212
+ "propertyNames": {
213
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
214
+ }
215
+ }
216
+ }
217
+ } as const;
218
+
219
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
220
+ export const RESPONSE_PAYLOAD_SCHEMA = {
221
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
222
+ "$ref": "#/$defs/Response",
223
+ "$defs": {
224
+ "Response": {
225
+ "$anchor": "response",
226
+ "title": "Auth Passkey Enroll Invite — response payload",
227
+ "description": "The issued invite. Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/enroll/invite/0.2#response.",
228
+ "type": "object",
229
+ "additionalProperties": false,
230
+ "required": [
231
+ "invite",
232
+ "subject",
233
+ "purpose",
234
+ "expiresAt",
235
+ "claimCode"
236
+ ],
237
+ "properties": {
238
+ "invite": {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": [
242
+ "token",
243
+ "url"
244
+ ],
245
+ "properties": {
246
+ "token": {
247
+ "type": "string",
248
+ "minLength": 16,
249
+ "description": "Opaque single-use invite token. The invitee presents it to the consumer during enrollment. ≥128 bits entropy."
250
+ },
251
+ "url": {
252
+ "type": "string",
253
+ "format": "uri",
254
+ "description": "Operator-shareable URL that, when opened in a WebAuthn-capable browser, drives the redemption ceremony (auth/passkey/enroll/redeem/start). Carries the token. MUST NOT carry the claim code."
255
+ }
256
+ }
257
+ },
258
+ "subject": {
259
+ "type": "string",
260
+ "description": "Echo of the invitee's VID."
261
+ },
262
+ "purpose": {
263
+ "type": "string",
264
+ "enum": [
265
+ "session",
266
+ "stepUp"
267
+ ],
268
+ "description": "Echo of the purpose the redeemed credential will have."
269
+ },
270
+ "expiresAt": {
271
+ "type": "string",
272
+ "format": "date-time"
273
+ },
274
+ "ext": {
275
+ "$ref": "#/$defs/Ext"
276
+ },
277
+ "claimCode": {
278
+ "type": "string",
279
+ "minLength": 8,
280
+ "maxLength": 64,
281
+ "description": "A short code the invitee types at redemption, returned exactly once. The administrator delivers it over a different channel from `url`, so that intercepting one channel is not enough to redeem. The consumer stores only a slow hash of it."
282
+ }
283
+ }
284
+ },
285
+ "Ext": {
286
+ "title": "Ext",
287
+ "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.",
288
+ "type": "object",
289
+ "minProperties": 1,
290
+ "additionalProperties": true,
291
+ "propertyNames": {
292
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
293
+ }
294
+ }
295
+ }
296
+ } as const;
297
+
298
+ /**
299
+ * SPEC.md §7.2 policy for the request variant, from this specification's
300
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
301
+ * per-specification and cannot be derived from the document alone, and
302
+ * item 2 needs the schema this carries.
303
+ */
304
+ export const SPEC = {
305
+ typeUri: TYPE_URI,
306
+ isBearer: false,
307
+ isProofRequired: true,
308
+ isRecipientRequired: true,
309
+ isIssuedAtRequired: true,
310
+ payloadSchema: PAYLOAD_SCHEMA,
311
+ } as const;
312
+
313
+ /**
314
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
315
+ * tracks the *issuer* party's requirement because a response swaps the
316
+ * parties (§7.3 item 5).
317
+ */
318
+ export const RESPONSE_SPEC = {
319
+ typeUri: RESPONSE_TYPE_URI,
320
+ isBearer: false,
321
+ isProofRequired: true,
322
+ isRecipientRequired: true,
323
+ isIssuedAtRequired: true,
324
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
325
+ } as const;