@openvtc/trust-tasks 0.23.7 → 0.23.9

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 (312) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/dist/_shared/components.d.ts +2451 -4
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/auth/oob/_shared/0.1/oob.d.ts +16 -0
  5. package/dist/auth/oob/_shared/0.1/oob.d.ts.map +1 -0
  6. package/dist/auth/oob/_shared/0.1/oob.js +6 -0
  7. package/dist/auth/oob/_shared/0.1/oob.js.map +1 -0
  8. package/dist/auth/oob/cancel/0.1/payload.d.ts +262 -0
  9. package/dist/auth/oob/cancel/0.1/payload.d.ts.map +1 -0
  10. package/dist/auth/oob/cancel/0.1/payload.js +153 -0
  11. package/dist/auth/oob/cancel/0.1/payload.js.map +1 -0
  12. package/dist/auth/oob/claim/0.1/payload.d.ts +463 -0
  13. package/dist/auth/oob/claim/0.1/payload.d.ts.map +1 -0
  14. package/dist/auth/oob/claim/0.1/payload.js +264 -0
  15. package/dist/auth/oob/claim/0.1/payload.js.map +1 -0
  16. package/dist/auth/oob/grant/0.1/payload.d.ts +212 -0
  17. package/dist/auth/oob/grant/0.1/payload.d.ts.map +1 -0
  18. package/dist/auth/oob/grant/0.1/payload.js +117 -0
  19. package/dist/auth/oob/grant/0.1/payload.js.map +1 -0
  20. package/dist/auth/oob/identify/0.1/payload.d.ts +145 -0
  21. package/dist/auth/oob/identify/0.1/payload.d.ts.map +1 -0
  22. package/dist/auth/oob/identify/0.1/payload.js +81 -0
  23. package/dist/auth/oob/identify/0.1/payload.js.map +1 -0
  24. package/dist/auth/oob/prove/0.1/payload.d.ts +740 -0
  25. package/dist/auth/oob/prove/0.1/payload.d.ts.map +1 -0
  26. package/dist/auth/oob/prove/0.1/payload.js +422 -0
  27. package/dist/auth/oob/prove/0.1/payload.js.map +1 -0
  28. package/dist/auth/oob/redeem/0.1/payload.d.ts +364 -0
  29. package/dist/auth/oob/redeem/0.1/payload.d.ts.map +1 -0
  30. package/dist/auth/oob/redeem/0.1/payload.js +199 -0
  31. package/dist/auth/oob/redeem/0.1/payload.js.map +1 -0
  32. package/dist/auth/oob/request/0.1/payload.d.ts +330 -0
  33. package/dist/auth/oob/request/0.1/payload.d.ts.map +1 -0
  34. package/dist/auth/oob/request/0.1/payload.js +193 -0
  35. package/dist/auth/oob/request/0.1/payload.js.map +1 -0
  36. package/dist/auth/oob/respond/0.1/payload.d.ts +235 -0
  37. package/dist/auth/oob/respond/0.1/payload.d.ts.map +1 -0
  38. package/dist/auth/oob/respond/0.1/payload.js +140 -0
  39. package/dist/auth/oob/respond/0.1/payload.js.map +1 -0
  40. package/dist/device/list/0.1/payload.d.ts +4 -4
  41. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  42. package/dist/device/list/0.1/payload.js +6 -2
  43. package/dist/device/list/0.1/payload.js.map +1 -1
  44. package/dist/device/list/0.2/payload.d.ts +4 -4
  45. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  46. package/dist/device/list/0.2/payload.js +6 -2
  47. package/dist/device/list/0.2/payload.js.map +1 -1
  48. package/dist/device/register/0.1/payload.d.ts +4 -4
  49. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  50. package/dist/device/register/0.1/payload.js +6 -2
  51. package/dist/device/register/0.1/payload.js.map +1 -1
  52. package/dist/device/register/0.2/payload.d.ts +4 -4
  53. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  54. package/dist/device/register/0.2/payload.js +6 -2
  55. package/dist/device/register/0.2/payload.js.map +1 -1
  56. package/dist/external/_shared/0.1/accounts.d.ts +18 -0
  57. package/dist/external/_shared/0.1/accounts.d.ts.map +1 -0
  58. package/dist/external/_shared/0.1/accounts.js +6 -0
  59. package/dist/external/_shared/0.1/accounts.js.map +1 -0
  60. package/dist/external/accounts/archive/0.1/payload.d.ts +2945 -0
  61. package/dist/external/accounts/archive/0.1/payload.d.ts.map +1 -0
  62. package/dist/external/accounts/archive/0.1/payload.js +1736 -0
  63. package/dist/external/accounts/archive/0.1/payload.js.map +1 -0
  64. package/dist/external/accounts/bindings/grant/0.1/payload.d.ts +2938 -0
  65. package/dist/external/accounts/bindings/grant/0.1/payload.d.ts.map +1 -0
  66. package/dist/external/accounts/bindings/grant/0.1/payload.js +1735 -0
  67. package/dist/external/accounts/bindings/grant/0.1/payload.js.map +1 -0
  68. package/dist/external/accounts/bindings/revoke/0.1/payload.d.ts +2958 -0
  69. package/dist/external/accounts/bindings/revoke/0.1/payload.d.ts.map +1 -0
  70. package/dist/external/accounts/bindings/revoke/0.1/payload.js +1743 -0
  71. package/dist/external/accounts/bindings/revoke/0.1/payload.js.map +1 -0
  72. package/dist/external/accounts/create/0.1/payload.d.ts +2954 -0
  73. package/dist/external/accounts/create/0.1/payload.d.ts.map +1 -0
  74. package/dist/external/accounts/create/0.1/payload.js +1742 -0
  75. package/dist/external/accounts/create/0.1/payload.js.map +1 -0
  76. package/dist/external/accounts/delete/0.1/payload.d.ts +310 -0
  77. package/dist/external/accounts/delete/0.1/payload.d.ts.map +1 -0
  78. package/dist/external/accounts/delete/0.1/payload.js +176 -0
  79. package/dist/external/accounts/delete/0.1/payload.js.map +1 -0
  80. package/dist/external/accounts/get/0.1/payload.d.ts +2931 -0
  81. package/dist/external/accounts/get/0.1/payload.d.ts.map +1 -0
  82. package/dist/external/accounts/get/0.1/payload.js +1731 -0
  83. package/dist/external/accounts/get/0.1/payload.js.map +1 -0
  84. package/dist/external/accounts/keys/rotate/0.1/payload.d.ts +3216 -0
  85. package/dist/external/accounts/keys/rotate/0.1/payload.d.ts.map +1 -0
  86. package/dist/external/accounts/keys/rotate/0.1/payload.js +1912 -0
  87. package/dist/external/accounts/keys/rotate/0.1/payload.js.map +1 -0
  88. package/dist/external/accounts/list/0.1/payload.d.ts +3034 -0
  89. package/dist/external/accounts/list/0.1/payload.d.ts.map +1 -0
  90. package/dist/external/accounts/list/0.1/payload.js +1791 -0
  91. package/dist/external/accounts/list/0.1/payload.js.map +1 -0
  92. package/dist/external/accounts/probe/0.1/payload.d.ts +511 -0
  93. package/dist/external/accounts/probe/0.1/payload.d.ts.map +1 -0
  94. package/dist/external/accounts/probe/0.1/payload.js +307 -0
  95. package/dist/external/accounts/probe/0.1/payload.js.map +1 -0
  96. package/dist/external/accounts/restore/0.1/payload.d.ts +2945 -0
  97. package/dist/external/accounts/restore/0.1/payload.d.ts.map +1 -0
  98. package/dist/external/accounts/restore/0.1/payload.js +1736 -0
  99. package/dist/external/accounts/restore/0.1/payload.js.map +1 -0
  100. package/dist/external/accounts/resume/0.1/payload.d.ts +2945 -0
  101. package/dist/external/accounts/resume/0.1/payload.d.ts.map +1 -0
  102. package/dist/external/accounts/resume/0.1/payload.js +1736 -0
  103. package/dist/external/accounts/resume/0.1/payload.js.map +1 -0
  104. package/dist/external/accounts/secret/set/0.1/payload.d.ts +379 -0
  105. package/dist/external/accounts/secret/set/0.1/payload.d.ts.map +1 -0
  106. package/dist/external/accounts/secret/set/0.1/payload.js +212 -0
  107. package/dist/external/accounts/secret/set/0.1/payload.js.map +1 -0
  108. package/dist/external/accounts/setup/0.1/payload.d.ts +535 -0
  109. package/dist/external/accounts/setup/0.1/payload.d.ts.map +1 -0
  110. package/dist/external/accounts/setup/0.1/payload.js +325 -0
  111. package/dist/external/accounts/setup/0.1/payload.js.map +1 -0
  112. package/dist/external/accounts/suspend/0.1/payload.d.ts +2945 -0
  113. package/dist/external/accounts/suspend/0.1/payload.d.ts.map +1 -0
  114. package/dist/external/accounts/suspend/0.1/payload.js +1736 -0
  115. package/dist/external/accounts/suspend/0.1/payload.js.map +1 -0
  116. package/dist/external/accounts/update/0.1/payload.d.ts +2949 -0
  117. package/dist/external/accounts/update/0.1/payload.d.ts.map +1 -0
  118. package/dist/external/accounts/update/0.1/payload.js +1739 -0
  119. package/dist/external/accounts/update/0.1/payload.js.map +1 -0
  120. package/dist/external/credentials/issue/0.1/payload.d.ts +586 -0
  121. package/dist/external/credentials/issue/0.1/payload.d.ts.map +1 -0
  122. package/dist/external/credentials/issue/0.1/payload.js +322 -0
  123. package/dist/external/credentials/issue/0.1/payload.js.map +1 -0
  124. package/dist/external/sign/0.1/payload.d.ts +348 -0
  125. package/dist/external/sign/0.1/payload.d.ts.map +1 -0
  126. package/dist/external/sign/0.1/payload.js +193 -0
  127. package/dist/external/sign/0.1/payload.js.map +1 -0
  128. package/dist/index.d.ts +53 -0
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +53 -0
  131. package/dist/index.js.map +1 -1
  132. package/dist/rooms/_shared/0.1/blobs.d.ts +16 -0
  133. package/dist/rooms/_shared/0.1/blobs.d.ts.map +1 -0
  134. package/dist/rooms/_shared/0.1/blobs.js +6 -0
  135. package/dist/rooms/_shared/0.1/blobs.js.map +1 -0
  136. package/dist/rooms/_shared/0.1/room.d.ts +1 -1
  137. package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
  138. package/dist/rooms/blobs/chunk/0.1/payload.d.ts +375 -0
  139. package/dist/rooms/blobs/chunk/0.1/payload.d.ts.map +1 -0
  140. package/dist/rooms/blobs/chunk/0.1/payload.js +213 -0
  141. package/dist/rooms/blobs/chunk/0.1/payload.js.map +1 -0
  142. package/dist/rooms/blobs/get/0.1/payload.d.ts +743 -0
  143. package/dist/rooms/blobs/get/0.1/payload.d.ts.map +1 -0
  144. package/dist/rooms/blobs/get/0.1/payload.js +415 -0
  145. package/dist/rooms/blobs/get/0.1/payload.js.map +1 -0
  146. package/dist/rooms/blobs/upload/abort/0.1/payload.d.ts +263 -0
  147. package/dist/rooms/blobs/upload/abort/0.1/payload.d.ts.map +1 -0
  148. package/dist/rooms/blobs/upload/abort/0.1/payload.js +151 -0
  149. package/dist/rooms/blobs/upload/abort/0.1/payload.js.map +1 -0
  150. package/dist/rooms/blobs/upload/begin/0.1/payload.d.ts +793 -0
  151. package/dist/rooms/blobs/upload/begin/0.1/payload.d.ts.map +1 -0
  152. package/dist/rooms/blobs/upload/begin/0.1/payload.js +437 -0
  153. package/dist/rooms/blobs/upload/begin/0.1/payload.js.map +1 -0
  154. package/dist/rooms/blobs/upload/chunk/0.1/payload.d.ts +459 -0
  155. package/dist/rooms/blobs/upload/chunk/0.1/payload.d.ts.map +1 -0
  156. package/dist/rooms/blobs/upload/chunk/0.1/payload.js +256 -0
  157. package/dist/rooms/blobs/upload/chunk/0.1/payload.js.map +1 -0
  158. package/dist/rooms/blobs/upload/commit/0.1/payload.d.ts +326 -0
  159. package/dist/rooms/blobs/upload/commit/0.1/payload.d.ts.map +1 -0
  160. package/dist/rooms/blobs/upload/commit/0.1/payload.js +185 -0
  161. package/dist/rooms/blobs/upload/commit/0.1/payload.js.map +1 -0
  162. package/dist/rooms/info/0.1/payload.d.ts +897 -0
  163. package/dist/rooms/info/0.1/payload.d.ts.map +1 -0
  164. package/dist/rooms/info/0.1/payload.js +498 -0
  165. package/dist/rooms/info/0.1/payload.js.map +1 -0
  166. package/dist/rooms/keys/file-key/0.1/payload.d.ts +306 -0
  167. package/dist/rooms/keys/file-key/0.1/payload.d.ts.map +1 -0
  168. package/dist/rooms/keys/file-key/0.1/payload.js +167 -0
  169. package/dist/rooms/keys/file-key/0.1/payload.js.map +1 -0
  170. package/dist/rooms/records/get/0.2/payload.d.ts +954 -0
  171. package/dist/rooms/records/get/0.2/payload.d.ts.map +1 -0
  172. package/dist/rooms/records/get/0.2/payload.js +515 -0
  173. package/dist/rooms/records/get/0.2/payload.js.map +1 -0
  174. package/dist/rooms/records/list/0.2/payload.d.ts +854 -0
  175. package/dist/rooms/records/list/0.2/payload.d.ts.map +1 -0
  176. package/dist/rooms/records/list/0.2/payload.js +462 -0
  177. package/dist/rooms/records/list/0.2/payload.js.map +1 -0
  178. package/dist/rooms/records/put/0.2/payload.d.ts +679 -0
  179. package/dist/rooms/records/put/0.2/payload.d.ts.map +1 -0
  180. package/dist/rooms/records/put/0.2/payload.js +357 -0
  181. package/dist/rooms/records/put/0.2/payload.js.map +1 -0
  182. package/dist/rooms/usage/0.1/payload.d.ts +795 -0
  183. package/dist/rooms/usage/0.1/payload.d.ts.map +1 -0
  184. package/dist/rooms/usage/0.1/payload.js +417 -0
  185. package/dist/rooms/usage/0.1/payload.js.map +1 -0
  186. package/dist/vtc/_shared/0.1/room-storage.d.ts +16 -0
  187. package/dist/vtc/_shared/0.1/room-storage.d.ts.map +1 -0
  188. package/dist/vtc/_shared/0.1/room-storage.js +6 -0
  189. package/dist/vtc/_shared/0.1/room-storage.js.map +1 -0
  190. package/dist/vtc/rooms/get/0.1/payload.d.ts +1813 -0
  191. package/dist/vtc/rooms/get/0.1/payload.d.ts.map +1 -0
  192. package/dist/vtc/rooms/get/0.1/payload.js +892 -0
  193. package/dist/vtc/rooms/get/0.1/payload.js.map +1 -0
  194. package/dist/vtc/rooms/limits/set/0.1/payload.d.ts +873 -0
  195. package/dist/vtc/rooms/limits/set/0.1/payload.d.ts.map +1 -0
  196. package/dist/vtc/rooms/limits/set/0.1/payload.js +489 -0
  197. package/dist/vtc/rooms/limits/set/0.1/payload.js.map +1 -0
  198. package/dist/vtc/rooms/storage/assign/0.1/payload.d.ts +341 -0
  199. package/dist/vtc/rooms/storage/assign/0.1/payload.d.ts.map +1 -0
  200. package/dist/vtc/rooms/storage/assign/0.1/payload.js +191 -0
  201. package/dist/vtc/rooms/storage/assign/0.1/payload.js.map +1 -0
  202. package/dist/vtc/rooms/storage/migrate/0.1/payload.d.ts +452 -0
  203. package/dist/vtc/rooms/storage/migrate/0.1/payload.d.ts.map +1 -0
  204. package/dist/vtc/rooms/storage/migrate/0.1/payload.js +260 -0
  205. package/dist/vtc/rooms/storage/migrate/0.1/payload.js.map +1 -0
  206. package/dist/vtc/rooms/usage/0.1/payload.d.ts +880 -0
  207. package/dist/vtc/rooms/usage/0.1/payload.d.ts.map +1 -0
  208. package/dist/vtc/rooms/usage/0.1/payload.js +457 -0
  209. package/dist/vtc/rooms/usage/0.1/payload.js.map +1 -0
  210. package/dist/vtc/storage/configs/create/0.1/payload.d.ts +1272 -0
  211. package/dist/vtc/storage/configs/create/0.1/payload.d.ts.map +1 -0
  212. package/dist/vtc/storage/configs/create/0.1/payload.js +737 -0
  213. package/dist/vtc/storage/configs/create/0.1/payload.js.map +1 -0
  214. package/dist/vtc/storage/configs/get/0.1/payload.d.ts +1750 -0
  215. package/dist/vtc/storage/configs/get/0.1/payload.d.ts.map +1 -0
  216. package/dist/vtc/storage/configs/get/0.1/payload.js +1019 -0
  217. package/dist/vtc/storage/configs/get/0.1/payload.js.map +1 -0
  218. package/dist/vtc/storage/configs/list/0.1/payload.d.ts +1851 -0
  219. package/dist/vtc/storage/configs/list/0.1/payload.d.ts.map +1 -0
  220. package/dist/vtc/storage/configs/list/0.1/payload.js +1069 -0
  221. package/dist/vtc/storage/configs/list/0.1/payload.js.map +1 -0
  222. package/dist/vtc/storage/configs/probe/0.1/payload.d.ts +459 -0
  223. package/dist/vtc/storage/configs/probe/0.1/payload.d.ts.map +1 -0
  224. package/dist/vtc/storage/configs/probe/0.1/payload.js +267 -0
  225. package/dist/vtc/storage/configs/probe/0.1/payload.js.map +1 -0
  226. package/dist/vtc/storage/configs/retire/0.1/payload.d.ts +294 -0
  227. package/dist/vtc/storage/configs/retire/0.1/payload.d.ts.map +1 -0
  228. package/dist/vtc/storage/configs/retire/0.1/payload.js +176 -0
  229. package/dist/vtc/storage/configs/retire/0.1/payload.js.map +1 -0
  230. package/dist/vtc/storage/configs/update/0.1/payload.d.ts +1274 -0
  231. package/dist/vtc/storage/configs/update/0.1/payload.d.ts.map +1 -0
  232. package/dist/vtc/storage/configs/update/0.1/payload.js +736 -0
  233. package/dist/vtc/storage/configs/update/0.1/payload.js.map +1 -0
  234. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts +511 -0
  235. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts.map +1 -0
  236. package/dist/vtc/storage/credentials/set/0.1/payload.js +293 -0
  237. package/dist/vtc/storage/credentials/set/0.1/payload.js.map +1 -0
  238. package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts +69 -8
  239. package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts.map +1 -1
  240. package/dist/vtc/vetting/hidden/publish/0.1/payload.js +31 -0
  241. package/dist/vtc/vetting/hidden/publish/0.1/payload.js.map +1 -1
  242. package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts +62 -8
  243. package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts.map +1 -1
  244. package/dist/vtc/vetting/hidden/show/0.1/payload.js +28 -0
  245. package/dist/vtc/vetting/hidden/show/0.1/payload.js.map +1 -1
  246. package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.d.ts +3 -3
  247. package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.js +1 -1
  248. package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.js.map +1 -1
  249. package/package.json +1 -1
  250. package/src/_shared/components.ts +2539 -4
  251. package/src/auth/oob/_shared/0.1/oob.ts +17 -0
  252. package/src/auth/oob/cancel/0.1/payload.ts +188 -0
  253. package/src/auth/oob/claim/0.1/payload.ts +306 -0
  254. package/src/auth/oob/grant/0.1/payload.ts +159 -0
  255. package/src/auth/oob/identify/0.1/payload.ts +110 -0
  256. package/src/auth/oob/prove/0.1/payload.ts +473 -0
  257. package/src/auth/oob/redeem/0.1/payload.ts +248 -0
  258. package/src/auth/oob/request/0.1/payload.ts +230 -0
  259. package/src/auth/oob/respond/0.1/payload.ts +178 -0
  260. package/src/device/list/0.1/payload.ts +6 -2
  261. package/src/device/list/0.2/payload.ts +6 -2
  262. package/src/device/register/0.1/payload.ts +6 -2
  263. package/src/device/register/0.2/payload.ts +6 -2
  264. package/src/external/_shared/0.1/accounts.ts +19 -0
  265. package/src/external/accounts/archive/0.1/payload.ts +1770 -0
  266. package/src/external/accounts/bindings/grant/0.1/payload.ts +1766 -0
  267. package/src/external/accounts/bindings/revoke/0.1/payload.ts +1778 -0
  268. package/src/external/accounts/create/0.1/payload.ts +1777 -0
  269. package/src/external/accounts/delete/0.1/payload.ts +211 -0
  270. package/src/external/accounts/get/0.1/payload.ts +1761 -0
  271. package/src/external/accounts/keys/rotate/0.1/payload.ts +1947 -0
  272. package/src/external/accounts/list/0.1/payload.ts +1834 -0
  273. package/src/external/accounts/probe/0.1/payload.ts +337 -0
  274. package/src/external/accounts/restore/0.1/payload.ts +1770 -0
  275. package/src/external/accounts/resume/0.1/payload.ts +1770 -0
  276. package/src/external/accounts/secret/set/0.1/payload.ts +248 -0
  277. package/src/external/accounts/setup/0.1/payload.ts +355 -0
  278. package/src/external/accounts/suspend/0.1/payload.ts +1770 -0
  279. package/src/external/accounts/update/0.1/payload.ts +1771 -0
  280. package/src/external/credentials/issue/0.1/payload.ts +365 -0
  281. package/src/external/sign/0.1/payload.ts +234 -0
  282. package/src/index.ts +53 -0
  283. package/src/rooms/_shared/0.1/blobs.ts +17 -0
  284. package/src/rooms/_shared/0.1/room.ts +1 -1
  285. package/src/rooms/blobs/chunk/0.1/payload.ts +251 -0
  286. package/src/rooms/blobs/get/0.1/payload.ts +463 -0
  287. package/src/rooms/blobs/upload/abort/0.1/payload.ts +187 -0
  288. package/src/rooms/blobs/upload/begin/0.1/payload.ts +491 -0
  289. package/src/rooms/blobs/upload/chunk/0.1/payload.ts +304 -0
  290. package/src/rooms/blobs/upload/commit/0.1/payload.ts +224 -0
  291. package/src/rooms/info/0.1/payload.ts +572 -0
  292. package/src/rooms/keys/file-key/0.1/payload.ts +224 -0
  293. package/src/rooms/records/get/0.2/payload.ts +614 -0
  294. package/src/rooms/records/list/0.2/payload.ts +533 -0
  295. package/src/rooms/records/put/0.2/payload.ts +441 -0
  296. package/src/rooms/usage/0.1/payload.ts +499 -0
  297. package/src/vtc/_shared/0.1/room-storage.ts +17 -0
  298. package/src/vtc/rooms/get/0.1/payload.ts +1275 -0
  299. package/src/vtc/rooms/limits/set/0.1/payload.ts +555 -0
  300. package/src/vtc/rooms/storage/assign/0.1/payload.ts +237 -0
  301. package/src/vtc/rooms/storage/migrate/0.1/payload.ts +317 -0
  302. package/src/vtc/rooms/usage/0.1/payload.ts +568 -0
  303. package/src/vtc/storage/configs/create/0.1/payload.ts +784 -0
  304. package/src/vtc/storage/configs/get/0.1/payload.ts +1054 -0
  305. package/src/vtc/storage/configs/list/0.1/payload.ts +1121 -0
  306. package/src/vtc/storage/configs/probe/0.1/payload.ts +329 -0
  307. package/src/vtc/storage/configs/retire/0.1/payload.ts +211 -0
  308. package/src/vtc/storage/configs/update/0.1/payload.ts +783 -0
  309. package/src/vtc/storage/credentials/set/0.1/payload.ts +339 -0
  310. package/src/vtc/vetting/hidden/publish/0.1/payload.ts +39 -0
  311. package/src/vtc/vetting/hidden/show/0.1/payload.ts +35 -0
  312. package/src/vtc/vetting/vetters/pcs-tokens/0.1/payload.ts +2 -2
@@ -0,0 +1,1121 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vtc/storage/configs/list/0.1/payload.schema.json
4
+ */
5
+
6
+ import type { ConfigState, CredentialState, DigestMultibase, Ext, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageKind, StorageSettings, WalrusSettings } from "../../../../../_shared/components.js";
7
+
8
+
9
+ /**
10
+ * Page through the community's storage configs. The outer document members are owned by the framework — SPEC §6.3.
11
+ */
12
+ export interface VTCStorageConfigsListPayload {
13
+ state?: ConfigState;
14
+ kind?: StorageKind;
15
+ /**
16
+ * Opaque continuation token from a previous page's `nextCursor`.
17
+ */
18
+ cursor?: string;
19
+ /**
20
+ * Page size. The community chooses when absent (50 in the reference implementation).
21
+ */
22
+ limit?: number;
23
+ ext?: Ext;
24
+ }
25
+ export interface VTCStorageConfigsListResponsePayload {
26
+ /**
27
+ * @maxItems 100
28
+ */
29
+ items: ConfigItem[];
30
+ /**
31
+ * Present when more remain; pass it as `cursor`.
32
+ */
33
+ nextCursor?: string;
34
+ ext?: Ext;
35
+ }
36
+ /**
37
+ * One config and what it holds.
38
+ */
39
+ export interface ConfigItem {
40
+ config: StorageConfig;
41
+ facts: StorageConfigFacts;
42
+ }
43
+
44
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
45
+ export type { ConfigState, CredentialState, DigestMultibase, Ext, ExternalAccountId, GcsSettings, LocalSettings, ObjectPrefix, S3Settings, StorageAuth, StorageConfig, StorageConfigFacts, StorageConfigId, StorageHealth, StorageKind, StorageSettings, WalrusSettings };
46
+
47
+ /** Trust Task type URI. */
48
+ export const TYPE_URI = "https://trusttasks.org/spec/vtc/storage/configs/list/0.1" as const;
49
+
50
+ /** Stable alias for this specification's request payload shape. */
51
+ export type Payload = VTCStorageConfigsListPayload;
52
+
53
+ /** Trust Task response type URI (request type URI + "#response"). */
54
+ export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/vtc/storage/configs/list/0.1#response" as const;
55
+
56
+ /** Stable alias for this specification's success-response payload shape. */
57
+ export type Response = VTCStorageConfigsListResponsePayload;
58
+
59
+ /**
60
+ * This specification's payload schema, as a value.
61
+ *
62
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
63
+ * rather than only as a `.json` file because TypeScript types are erased
64
+ * at runtime: without a schema a consumer has nothing to validate, and
65
+ * every REQUIRED payload member is optional in practice. Cross-file
66
+ * `$ref`s are already inlined, so it needs no resolver.
67
+ */
68
+ export const PAYLOAD_SCHEMA = {
69
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
70
+ "$id": "https://trusttasks.org/spec/vtc/storage/configs/list/0.1",
71
+ "title": "VTC Storage — Configs — List — payload",
72
+ "description": "Page through the community's storage configs. The outer document members are owned by the framework — SPEC §6.3.",
73
+ "type": "object",
74
+ "additionalProperties": false,
75
+ "properties": {
76
+ "state": {
77
+ "$ref": "#/$defs/ConfigState"
78
+ },
79
+ "kind": {
80
+ "$ref": "#/$defs/StorageKind"
81
+ },
82
+ "cursor": {
83
+ "type": "string",
84
+ "minLength": 1,
85
+ "maxLength": 1024,
86
+ "description": "Opaque continuation token from a previous page's `nextCursor`."
87
+ },
88
+ "limit": {
89
+ "type": "integer",
90
+ "minimum": 1,
91
+ "maximum": 100,
92
+ "description": "Page size. The community chooses when absent (50 in the reference implementation)."
93
+ },
94
+ "ext": {
95
+ "$ref": "#/$defs/Ext"
96
+ }
97
+ },
98
+ "$defs": {
99
+ "ConfigItem": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "description": "One config and what it holds.",
103
+ "required": [
104
+ "config",
105
+ "facts"
106
+ ],
107
+ "properties": {
108
+ "config": {
109
+ "$ref": "#/$defs/StorageConfig"
110
+ },
111
+ "facts": {
112
+ "$ref": "#/$defs/StorageConfigFacts"
113
+ }
114
+ }
115
+ },
116
+ "Response": {
117
+ "$anchor": "response",
118
+ "title": "VTC Storage — Configs — List — response payload",
119
+ "type": "object",
120
+ "additionalProperties": false,
121
+ "required": [
122
+ "items"
123
+ ],
124
+ "properties": {
125
+ "items": {
126
+ "type": "array",
127
+ "maxItems": 100,
128
+ "items": {
129
+ "$ref": "#/$defs/ConfigItem"
130
+ }
131
+ },
132
+ "nextCursor": {
133
+ "type": "string",
134
+ "minLength": 1,
135
+ "maxLength": 1024,
136
+ "description": "Present when more remain; pass it as `cursor`."
137
+ },
138
+ "ext": {
139
+ "$ref": "#/$defs/Ext"
140
+ }
141
+ }
142
+ },
143
+ "Ext": {
144
+ "title": "Ext",
145
+ "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.",
146
+ "type": "object",
147
+ "minProperties": 1,
148
+ "additionalProperties": true,
149
+ "propertyNames": {
150
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
151
+ }
152
+ },
153
+ "StorageConfigFacts": {
154
+ "title": "StorageConfigFacts",
155
+ "type": "object",
156
+ "additionalProperties": false,
157
+ "required": [
158
+ "rooms",
159
+ "files",
160
+ "bytes",
161
+ "pendingDeleteBytes",
162
+ "credential",
163
+ "health"
164
+ ],
165
+ "description": "What a config holds and whether it works, computed at the time of the read. Ciphertext bytes throughout.",
166
+ "properties": {
167
+ "rooms": {
168
+ "type": "integer",
169
+ "minimum": 0,
170
+ "description": "Rooms assigned to this config."
171
+ },
172
+ "files": {
173
+ "type": "integer",
174
+ "minimum": 0,
175
+ "description": "Blobs stored on this config that are not yet deleted, wherever their rooms are now assigned."
176
+ },
177
+ "bytes": {
178
+ "type": "integer",
179
+ "minimum": 0,
180
+ "description": "Their total size. Counts against `capacityBytes` until the backend deletion has actually happened, unlike room and member usage, which stop counting an orphaned blob at once."
181
+ },
182
+ "pendingDeleteBytes": {
183
+ "type": "integer",
184
+ "minimum": 0,
185
+ "description": "Bytes of orphaned blobs awaiting deletion after their grace window."
186
+ },
187
+ "credential": {
188
+ "$ref": "#/$defs/CredentialState"
189
+ },
190
+ "health": {
191
+ "$ref": "#/$defs/StorageHealth"
192
+ },
193
+ "walrus": {
194
+ "type": "object",
195
+ "additionalProperties": false,
196
+ "description": "Present on a `walrus` config.",
197
+ "properties": {
198
+ "signerAddress": {
199
+ "type": "string",
200
+ "pattern": "^0x[0-9a-f]{64}$",
201
+ "description": "The Sui address that pays for storage, derived from the VTA account's key."
202
+ },
203
+ "nextExtensionDueAt": {
204
+ "type": "string",
205
+ "format": "date-time"
206
+ }
207
+ }
208
+ }
209
+ }
210
+ },
211
+ "StorageHealth": {
212
+ "title": "StorageHealth",
213
+ "type": "object",
214
+ "additionalProperties": false,
215
+ "description": "The last evidence the community has that a config works. Every member is optional: a config never probed and never used has none.",
216
+ "properties": {
217
+ "lastProbeAt": {
218
+ "type": "string",
219
+ "format": "date-time"
220
+ },
221
+ "lastProbeOk": {
222
+ "type": "boolean"
223
+ },
224
+ "lastPutAt": {
225
+ "type": "string",
226
+ "format": "date-time",
227
+ "description": "The last successful blob write."
228
+ },
229
+ "lastGetAt": {
230
+ "type": "string",
231
+ "format": "date-time",
232
+ "description": "The last successful chunk read."
233
+ },
234
+ "lastDeleteAt": {
235
+ "type": "string",
236
+ "format": "date-time",
237
+ "description": "The last successful deletion (on `walrus`, the last lapse the community observed)."
238
+ }
239
+ }
240
+ },
241
+ "CredentialState": {
242
+ "title": "CredentialState",
243
+ "type": "object",
244
+ "additionalProperties": false,
245
+ "required": [
246
+ "status"
247
+ ],
248
+ "description": "Whether a config can authenticate now, and how — never the credential. `status`: `vta-account`, `ambient` and `sealed` are usable; `required` means the config cannot store until a credential is provided (a `sealed` config never set, or set before a restore, which carries no credential); `none` is a `local` config.",
249
+ "properties": {
250
+ "status": {
251
+ "type": "string",
252
+ "enum": [
253
+ "vta-account",
254
+ "ambient",
255
+ "sealed",
256
+ "required",
257
+ "none"
258
+ ]
259
+ },
260
+ "account": {
261
+ "$ref": "#/$defs/ExternalAccountId",
262
+ "description": "Present with `vta-account`."
263
+ },
264
+ "fingerprint": {
265
+ "$ref": "#/$defs/DigestMultibase",
266
+ "description": "Present with `sealed`: a digest identifying the stored credential, so an administrator can tell which one is set without anyone being able to read it. Computed over the credential with a community-held key, never a bare hash of a low-entropy secret."
267
+ },
268
+ "setAt": {
269
+ "type": "string",
270
+ "format": "date-time",
271
+ "description": "Present with `sealed`: when the stored credential was last set."
272
+ },
273
+ "roomsHoldingCredentials": {
274
+ "type": "integer",
275
+ "minimum": 0,
276
+ "description": "Present with `vta-account`: how many rooms the community currently holds a live room-scoped credential for."
277
+ }
278
+ }
279
+ },
280
+ "ExternalAccountId": {
281
+ "title": "ExternalAccountId",
282
+ "type": "string",
283
+ "minLength": 1,
284
+ "maxLength": 64,
285
+ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
286
+ "description": "The identifier of an external account held by the community's VTA (the external/accounts/* family), which issues the community short-lived, room-scoped credentials and holds the long-lived authority itself."
287
+ },
288
+ "DigestMultibase": {
289
+ "title": "DigestMultibase",
290
+ "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`.",
291
+ "type": "string",
292
+ "minLength": 16,
293
+ "pattern": "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$",
294
+ "examples": [
295
+ "zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"
296
+ ]
297
+ },
298
+ "StorageConfig": {
299
+ "title": "StorageConfig",
300
+ "type": "object",
301
+ "additionalProperties": false,
302
+ "required": [
303
+ "id",
304
+ "label",
305
+ "settings",
306
+ "state",
307
+ "createdBy",
308
+ "createdAt"
309
+ ],
310
+ "description": "One storage config as the community holds it. Carries no secret.",
311
+ "properties": {
312
+ "id": {
313
+ "$ref": "#/$defs/StorageConfigId"
314
+ },
315
+ "label": {
316
+ "type": "string",
317
+ "minLength": 1,
318
+ "maxLength": 128,
319
+ "description": "A display name for administrators (`EU — S3 (main account)`). Shown to a room's creator with the config's kind when the community lets them choose."
320
+ },
321
+ "settings": {
322
+ "$ref": "#/$defs/StorageSettings"
323
+ },
324
+ "auth": {
325
+ "$ref": "#/$defs/StorageAuth"
326
+ },
327
+ "capacityBytes": {
328
+ "type": "integer",
329
+ "minimum": 0,
330
+ "description": "Total ciphertext bytes the community will store on this config, across every room assigned to it. A capacity, not a policy: an upload that would cross it is refused with scope `storage`. Absent means no capacity set."
331
+ },
332
+ "state": {
333
+ "$ref": "#/$defs/ConfigState"
334
+ },
335
+ "isDefault": {
336
+ "type": "boolean",
337
+ "description": "True for the config a room is assigned to when neither the community's policy nor its creator names one."
338
+ },
339
+ "createdBy": {
340
+ "type": "string",
341
+ "pattern": "^did:",
342
+ "maxLength": 2048
343
+ },
344
+ "createdAt": {
345
+ "type": "string",
346
+ "format": "date-time"
347
+ },
348
+ "updatedBy": {
349
+ "type": "string",
350
+ "pattern": "^did:",
351
+ "maxLength": 2048
352
+ },
353
+ "updatedAt": {
354
+ "type": "string",
355
+ "format": "date-time"
356
+ }
357
+ }
358
+ },
359
+ "ConfigState": {
360
+ "title": "ConfigState",
361
+ "type": "string",
362
+ "enum": [
363
+ "active",
364
+ "draining",
365
+ "retired"
366
+ ],
367
+ "description": "`active`: accepts new rooms and new uploads. `draining`: retired by an administrator while blobs still name it — refuses new rooms and new uploads, keeps serving reads, and becomes `retired` when a migration has emptied it. `retired`: refuses new rooms and new uploads and holds no blob. A config is never deleted while a blob names it."
368
+ },
369
+ "StorageAuth": {
370
+ "title": "StorageAuth",
371
+ "description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
372
+ "oneOf": [
373
+ {
374
+ "type": "object",
375
+ "additionalProperties": false,
376
+ "required": [
377
+ "mode",
378
+ "account"
379
+ ],
380
+ "properties": {
381
+ "mode": {
382
+ "const": "vta-account"
383
+ },
384
+ "account": {
385
+ "$ref": "#/$defs/ExternalAccountId"
386
+ }
387
+ }
388
+ },
389
+ {
390
+ "type": "object",
391
+ "additionalProperties": false,
392
+ "required": [
393
+ "mode"
394
+ ],
395
+ "properties": {
396
+ "mode": {
397
+ "const": "ambient"
398
+ }
399
+ }
400
+ },
401
+ {
402
+ "type": "object",
403
+ "additionalProperties": false,
404
+ "required": [
405
+ "mode"
406
+ ],
407
+ "properties": {
408
+ "mode": {
409
+ "const": "sealed"
410
+ }
411
+ }
412
+ }
413
+ ]
414
+ },
415
+ "StorageSettings": {
416
+ "title": "StorageSettings",
417
+ "description": "A config's backend settings, discriminated by `kind`. Never a secret: a credential is a StorageAuth, held elsewhere.",
418
+ "oneOf": [
419
+ {
420
+ "$ref": "#/$defs/LocalSettings"
421
+ },
422
+ {
423
+ "$ref": "#/$defs/S3Settings"
424
+ },
425
+ {
426
+ "$ref": "#/$defs/GcsSettings"
427
+ },
428
+ {
429
+ "$ref": "#/$defs/WalrusSettings"
430
+ }
431
+ ]
432
+ },
433
+ "WalrusSettings": {
434
+ "title": "WalrusSettings",
435
+ "type": "object",
436
+ "additionalProperties": false,
437
+ "required": [
438
+ "kind",
439
+ "relayUrl",
440
+ "aggregatorUrl",
441
+ "epochs",
442
+ "extendBeforeEpochs"
443
+ ],
444
+ "properties": {
445
+ "kind": {
446
+ "const": "walrus"
447
+ },
448
+ "relayUrl": {
449
+ "type": "string",
450
+ "format": "uri",
451
+ "maxLength": 2048,
452
+ "pattern": "^https://",
453
+ "description": "The Walrus upload relay the community writes through. The community never runs a publisher: a publisher holds a hot wallet in its own configuration, which is the long-lived secret these tasks exist to avoid."
454
+ },
455
+ "aggregatorUrl": {
456
+ "type": "string",
457
+ "format": "uri",
458
+ "maxLength": 2048,
459
+ "pattern": "^https://",
460
+ "description": "The Walrus aggregator the community reads through."
461
+ },
462
+ "epochs": {
463
+ "type": "integer",
464
+ "minimum": 1,
465
+ "maximum": 53,
466
+ "description": "Storage epochs to buy when a blob is registered. Walrus sells storage in epochs (two weeks on mainnet) and caps one purchase at 53."
467
+ },
468
+ "extendBeforeEpochs": {
469
+ "type": "integer",
470
+ "minimum": 1,
471
+ "maximum": 52,
472
+ "description": "How many epochs before a live blob's end epoch the community extends it. A blob that has become an orphan is not extended, and lapses: the Walrus form of deletion."
473
+ }
474
+ }
475
+ },
476
+ "GcsSettings": {
477
+ "title": "GcsSettings",
478
+ "type": "object",
479
+ "additionalProperties": false,
480
+ "required": [
481
+ "kind",
482
+ "bucket"
483
+ ],
484
+ "properties": {
485
+ "kind": {
486
+ "const": "gcs"
487
+ },
488
+ "bucket": {
489
+ "type": "string",
490
+ "minLength": 3,
491
+ "maxLength": 222,
492
+ "pattern": "^[a-z0-9][a-z0-9._-]{1,220}[a-z0-9]$",
493
+ "description": "The bucket name. Validated against GCS naming rules here, because it is placed in a Credential Access Boundary condition and must never carry anything but a name."
494
+ },
495
+ "prefix": {
496
+ "$ref": "#/$defs/ObjectPrefix"
497
+ }
498
+ }
499
+ },
500
+ "ObjectPrefix": {
501
+ "title": "ObjectPrefix",
502
+ "type": "string",
503
+ "minLength": 1,
504
+ "maxLength": 256,
505
+ "pattern": "^[A-Za-z0-9!_.*'()/-]+/$",
506
+ "description": "A key prefix inside the bucket, ending in `/`, under which the config's `rooms/` tree is placed. Restricted to the S3 safe-character set so that it can be placed in a downscoped policy without escaping."
507
+ },
508
+ "S3Settings": {
509
+ "title": "S3Settings",
510
+ "type": "object",
511
+ "additionalProperties": false,
512
+ "required": [
513
+ "kind",
514
+ "region",
515
+ "bucket"
516
+ ],
517
+ "properties": {
518
+ "kind": {
519
+ "const": "s3"
520
+ },
521
+ "endpoint": {
522
+ "type": "string",
523
+ "format": "uri",
524
+ "maxLength": 2048,
525
+ "pattern": "^https://",
526
+ "description": "The S3 API endpoint, for a store other than AWS (R2, B2, MinIO). Absent means AWS S3 in `region`. HTTPS only."
527
+ },
528
+ "region": {
529
+ "type": "string",
530
+ "minLength": 1,
531
+ "maxLength": 64,
532
+ "pattern": "^[a-z0-9-]+$",
533
+ "description": "The bucket's region, as the store names it (`eu-west-1`; `auto` for R2)."
534
+ },
535
+ "bucket": {
536
+ "type": "string",
537
+ "minLength": 3,
538
+ "maxLength": 63,
539
+ "pattern": "^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$",
540
+ "description": "The bucket name. Validated against S3 naming rules here, because it is placed in downscoped session policies and must never carry anything but a name."
541
+ },
542
+ "prefix": {
543
+ "$ref": "#/$defs/ObjectPrefix"
544
+ },
545
+ "pathStyle": {
546
+ "type": "boolean",
547
+ "description": "Address the bucket in the path rather than the host name, as MinIO usually needs. Absent means virtual-hosted style."
548
+ }
549
+ }
550
+ },
551
+ "LocalSettings": {
552
+ "title": "LocalSettings",
553
+ "type": "object",
554
+ "additionalProperties": false,
555
+ "required": [
556
+ "kind",
557
+ "root"
558
+ ],
559
+ "properties": {
560
+ "kind": {
561
+ "const": "local"
562
+ },
563
+ "root": {
564
+ "type": "string",
565
+ "minLength": 1,
566
+ "maxLength": 1024,
567
+ "pattern": "^/",
568
+ "description": "Absolute path of the directory the community writes blobs under, on its own host. Created owner-only. Not carried by the community's backup: back it up beside it."
569
+ }
570
+ }
571
+ },
572
+ "StorageConfigId": {
573
+ "title": "StorageConfigId",
574
+ "type": "string",
575
+ "minLength": 1,
576
+ "maxLength": 64,
577
+ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
578
+ "description": "A storage config's identifier, chosen by the administrator who creates it and immutable thereafter: lowercase letters, digits and inner hyphens, at most 64 characters (`eu-s3-primary`, `walrus-main`). Unique within the community. Never reused after a config is retired, because blobs name their config by this value."
579
+ },
580
+ "StorageKind": {
581
+ "title": "StorageKind",
582
+ "type": "string",
583
+ "enum": [
584
+ "local",
585
+ "s3",
586
+ "gcs",
587
+ "walrus"
588
+ ],
589
+ "description": "Which backend a config stores to. `local`: plain files in a directory on the community's own host. `s3`: an S3-compatible object store (AWS S3, Cloudflare R2, Backblaze B2, MinIO). `gcs`: native Google Cloud Storage. `walrus`: the Walrus decentralised store, where every blob is public ciphertext and deletion is a lapse, not an erasure."
590
+ }
591
+ }
592
+ } as const;
593
+
594
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
595
+ export const RESPONSE_PAYLOAD_SCHEMA = {
596
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
597
+ "$ref": "#/$defs/Response",
598
+ "$defs": {
599
+ "ConfigItem": {
600
+ "type": "object",
601
+ "additionalProperties": false,
602
+ "description": "One config and what it holds.",
603
+ "required": [
604
+ "config",
605
+ "facts"
606
+ ],
607
+ "properties": {
608
+ "config": {
609
+ "$ref": "#/$defs/StorageConfig"
610
+ },
611
+ "facts": {
612
+ "$ref": "#/$defs/StorageConfigFacts"
613
+ }
614
+ }
615
+ },
616
+ "Response": {
617
+ "$anchor": "response",
618
+ "title": "VTC Storage — Configs — List — response payload",
619
+ "type": "object",
620
+ "additionalProperties": false,
621
+ "required": [
622
+ "items"
623
+ ],
624
+ "properties": {
625
+ "items": {
626
+ "type": "array",
627
+ "maxItems": 100,
628
+ "items": {
629
+ "$ref": "#/$defs/ConfigItem"
630
+ }
631
+ },
632
+ "nextCursor": {
633
+ "type": "string",
634
+ "minLength": 1,
635
+ "maxLength": 1024,
636
+ "description": "Present when more remain; pass it as `cursor`."
637
+ },
638
+ "ext": {
639
+ "$ref": "#/$defs/Ext"
640
+ }
641
+ }
642
+ },
643
+ "Ext": {
644
+ "title": "Ext",
645
+ "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.",
646
+ "type": "object",
647
+ "minProperties": 1,
648
+ "additionalProperties": true,
649
+ "propertyNames": {
650
+ "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
651
+ }
652
+ },
653
+ "StorageConfigFacts": {
654
+ "title": "StorageConfigFacts",
655
+ "type": "object",
656
+ "additionalProperties": false,
657
+ "required": [
658
+ "rooms",
659
+ "files",
660
+ "bytes",
661
+ "pendingDeleteBytes",
662
+ "credential",
663
+ "health"
664
+ ],
665
+ "description": "What a config holds and whether it works, computed at the time of the read. Ciphertext bytes throughout.",
666
+ "properties": {
667
+ "rooms": {
668
+ "type": "integer",
669
+ "minimum": 0,
670
+ "description": "Rooms assigned to this config."
671
+ },
672
+ "files": {
673
+ "type": "integer",
674
+ "minimum": 0,
675
+ "description": "Blobs stored on this config that are not yet deleted, wherever their rooms are now assigned."
676
+ },
677
+ "bytes": {
678
+ "type": "integer",
679
+ "minimum": 0,
680
+ "description": "Their total size. Counts against `capacityBytes` until the backend deletion has actually happened, unlike room and member usage, which stop counting an orphaned blob at once."
681
+ },
682
+ "pendingDeleteBytes": {
683
+ "type": "integer",
684
+ "minimum": 0,
685
+ "description": "Bytes of orphaned blobs awaiting deletion after their grace window."
686
+ },
687
+ "credential": {
688
+ "$ref": "#/$defs/CredentialState"
689
+ },
690
+ "health": {
691
+ "$ref": "#/$defs/StorageHealth"
692
+ },
693
+ "walrus": {
694
+ "type": "object",
695
+ "additionalProperties": false,
696
+ "description": "Present on a `walrus` config.",
697
+ "properties": {
698
+ "signerAddress": {
699
+ "type": "string",
700
+ "pattern": "^0x[0-9a-f]{64}$",
701
+ "description": "The Sui address that pays for storage, derived from the VTA account's key."
702
+ },
703
+ "nextExtensionDueAt": {
704
+ "type": "string",
705
+ "format": "date-time"
706
+ }
707
+ }
708
+ }
709
+ }
710
+ },
711
+ "StorageHealth": {
712
+ "title": "StorageHealth",
713
+ "type": "object",
714
+ "additionalProperties": false,
715
+ "description": "The last evidence the community has that a config works. Every member is optional: a config never probed and never used has none.",
716
+ "properties": {
717
+ "lastProbeAt": {
718
+ "type": "string",
719
+ "format": "date-time"
720
+ },
721
+ "lastProbeOk": {
722
+ "type": "boolean"
723
+ },
724
+ "lastPutAt": {
725
+ "type": "string",
726
+ "format": "date-time",
727
+ "description": "The last successful blob write."
728
+ },
729
+ "lastGetAt": {
730
+ "type": "string",
731
+ "format": "date-time",
732
+ "description": "The last successful chunk read."
733
+ },
734
+ "lastDeleteAt": {
735
+ "type": "string",
736
+ "format": "date-time",
737
+ "description": "The last successful deletion (on `walrus`, the last lapse the community observed)."
738
+ }
739
+ }
740
+ },
741
+ "CredentialState": {
742
+ "title": "CredentialState",
743
+ "type": "object",
744
+ "additionalProperties": false,
745
+ "required": [
746
+ "status"
747
+ ],
748
+ "description": "Whether a config can authenticate now, and how — never the credential. `status`: `vta-account`, `ambient` and `sealed` are usable; `required` means the config cannot store until a credential is provided (a `sealed` config never set, or set before a restore, which carries no credential); `none` is a `local` config.",
749
+ "properties": {
750
+ "status": {
751
+ "type": "string",
752
+ "enum": [
753
+ "vta-account",
754
+ "ambient",
755
+ "sealed",
756
+ "required",
757
+ "none"
758
+ ]
759
+ },
760
+ "account": {
761
+ "$ref": "#/$defs/ExternalAccountId",
762
+ "description": "Present with `vta-account`."
763
+ },
764
+ "fingerprint": {
765
+ "$ref": "#/$defs/DigestMultibase",
766
+ "description": "Present with `sealed`: a digest identifying the stored credential, so an administrator can tell which one is set without anyone being able to read it. Computed over the credential with a community-held key, never a bare hash of a low-entropy secret."
767
+ },
768
+ "setAt": {
769
+ "type": "string",
770
+ "format": "date-time",
771
+ "description": "Present with `sealed`: when the stored credential was last set."
772
+ },
773
+ "roomsHoldingCredentials": {
774
+ "type": "integer",
775
+ "minimum": 0,
776
+ "description": "Present with `vta-account`: how many rooms the community currently holds a live room-scoped credential for."
777
+ }
778
+ }
779
+ },
780
+ "ExternalAccountId": {
781
+ "title": "ExternalAccountId",
782
+ "type": "string",
783
+ "minLength": 1,
784
+ "maxLength": 64,
785
+ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
786
+ "description": "The identifier of an external account held by the community's VTA (the external/accounts/* family), which issues the community short-lived, room-scoped credentials and holds the long-lived authority itself."
787
+ },
788
+ "DigestMultibase": {
789
+ "title": "DigestMultibase",
790
+ "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`.",
791
+ "type": "string",
792
+ "minLength": 16,
793
+ "pattern": "^(z[1-9A-HJ-NP-Za-km-z]+|u[A-Za-z0-9_-]+)$",
794
+ "examples": [
795
+ "zQmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR"
796
+ ]
797
+ },
798
+ "StorageConfig": {
799
+ "title": "StorageConfig",
800
+ "type": "object",
801
+ "additionalProperties": false,
802
+ "required": [
803
+ "id",
804
+ "label",
805
+ "settings",
806
+ "state",
807
+ "createdBy",
808
+ "createdAt"
809
+ ],
810
+ "description": "One storage config as the community holds it. Carries no secret.",
811
+ "properties": {
812
+ "id": {
813
+ "$ref": "#/$defs/StorageConfigId"
814
+ },
815
+ "label": {
816
+ "type": "string",
817
+ "minLength": 1,
818
+ "maxLength": 128,
819
+ "description": "A display name for administrators (`EU — S3 (main account)`). Shown to a room's creator with the config's kind when the community lets them choose."
820
+ },
821
+ "settings": {
822
+ "$ref": "#/$defs/StorageSettings"
823
+ },
824
+ "auth": {
825
+ "$ref": "#/$defs/StorageAuth"
826
+ },
827
+ "capacityBytes": {
828
+ "type": "integer",
829
+ "minimum": 0,
830
+ "description": "Total ciphertext bytes the community will store on this config, across every room assigned to it. A capacity, not a policy: an upload that would cross it is refused with scope `storage`. Absent means no capacity set."
831
+ },
832
+ "state": {
833
+ "$ref": "#/$defs/ConfigState"
834
+ },
835
+ "isDefault": {
836
+ "type": "boolean",
837
+ "description": "True for the config a room is assigned to when neither the community's policy nor its creator names one."
838
+ },
839
+ "createdBy": {
840
+ "type": "string",
841
+ "pattern": "^did:",
842
+ "maxLength": 2048
843
+ },
844
+ "createdAt": {
845
+ "type": "string",
846
+ "format": "date-time"
847
+ },
848
+ "updatedBy": {
849
+ "type": "string",
850
+ "pattern": "^did:",
851
+ "maxLength": 2048
852
+ },
853
+ "updatedAt": {
854
+ "type": "string",
855
+ "format": "date-time"
856
+ }
857
+ }
858
+ },
859
+ "ConfigState": {
860
+ "title": "ConfigState",
861
+ "type": "string",
862
+ "enum": [
863
+ "active",
864
+ "draining",
865
+ "retired"
866
+ ],
867
+ "description": "`active`: accepts new rooms and new uploads. `draining`: retired by an administrator while blobs still name it — refuses new rooms and new uploads, keeps serving reads, and becomes `retired` when a migration has emptied it. `retired`: refuses new rooms and new uploads and holds no blob. A config is never deleted while a blob names it."
868
+ },
869
+ "StorageAuth": {
870
+ "title": "StorageAuth",
871
+ "description": "How the community authenticates to a config's backend. Absent on a `local` config, which needs none.\n\n`vta-account` (RECOMMENDED): an external account in the community's VTA. The VTA holds the long-lived authority; the community holds nothing that outlives a credential lifetime, and asks for credentials scoped to one room's prefix for at most 15 minutes, every issuance audited at the VTA. Required for a `walrus` config other than a `sealed` one, since the VTA's `sui-signer` account signs its storage transactions.\n\n`ambient`: the cloud identity of the machine the community runs on (an instance role, workload identity), downscoped to one room's prefix by the community itself. Not audited or rate-limited by the VTA, and usable by anything on that machine that reaches the metadata endpoint. Not valid for `walrus`.\n\n`sealed` (discouraged): a long-lived credential stored by the community, set with vtc/storage/credentials/set. Protects against every administrator through every surface the community offers; does not protect against whoever operates the machine.",
872
+ "oneOf": [
873
+ {
874
+ "type": "object",
875
+ "additionalProperties": false,
876
+ "required": [
877
+ "mode",
878
+ "account"
879
+ ],
880
+ "properties": {
881
+ "mode": {
882
+ "const": "vta-account"
883
+ },
884
+ "account": {
885
+ "$ref": "#/$defs/ExternalAccountId"
886
+ }
887
+ }
888
+ },
889
+ {
890
+ "type": "object",
891
+ "additionalProperties": false,
892
+ "required": [
893
+ "mode"
894
+ ],
895
+ "properties": {
896
+ "mode": {
897
+ "const": "ambient"
898
+ }
899
+ }
900
+ },
901
+ {
902
+ "type": "object",
903
+ "additionalProperties": false,
904
+ "required": [
905
+ "mode"
906
+ ],
907
+ "properties": {
908
+ "mode": {
909
+ "const": "sealed"
910
+ }
911
+ }
912
+ }
913
+ ]
914
+ },
915
+ "StorageSettings": {
916
+ "title": "StorageSettings",
917
+ "description": "A config's backend settings, discriminated by `kind`. Never a secret: a credential is a StorageAuth, held elsewhere.",
918
+ "oneOf": [
919
+ {
920
+ "$ref": "#/$defs/LocalSettings"
921
+ },
922
+ {
923
+ "$ref": "#/$defs/S3Settings"
924
+ },
925
+ {
926
+ "$ref": "#/$defs/GcsSettings"
927
+ },
928
+ {
929
+ "$ref": "#/$defs/WalrusSettings"
930
+ }
931
+ ]
932
+ },
933
+ "WalrusSettings": {
934
+ "title": "WalrusSettings",
935
+ "type": "object",
936
+ "additionalProperties": false,
937
+ "required": [
938
+ "kind",
939
+ "relayUrl",
940
+ "aggregatorUrl",
941
+ "epochs",
942
+ "extendBeforeEpochs"
943
+ ],
944
+ "properties": {
945
+ "kind": {
946
+ "const": "walrus"
947
+ },
948
+ "relayUrl": {
949
+ "type": "string",
950
+ "format": "uri",
951
+ "maxLength": 2048,
952
+ "pattern": "^https://",
953
+ "description": "The Walrus upload relay the community writes through. The community never runs a publisher: a publisher holds a hot wallet in its own configuration, which is the long-lived secret these tasks exist to avoid."
954
+ },
955
+ "aggregatorUrl": {
956
+ "type": "string",
957
+ "format": "uri",
958
+ "maxLength": 2048,
959
+ "pattern": "^https://",
960
+ "description": "The Walrus aggregator the community reads through."
961
+ },
962
+ "epochs": {
963
+ "type": "integer",
964
+ "minimum": 1,
965
+ "maximum": 53,
966
+ "description": "Storage epochs to buy when a blob is registered. Walrus sells storage in epochs (two weeks on mainnet) and caps one purchase at 53."
967
+ },
968
+ "extendBeforeEpochs": {
969
+ "type": "integer",
970
+ "minimum": 1,
971
+ "maximum": 52,
972
+ "description": "How many epochs before a live blob's end epoch the community extends it. A blob that has become an orphan is not extended, and lapses: the Walrus form of deletion."
973
+ }
974
+ }
975
+ },
976
+ "GcsSettings": {
977
+ "title": "GcsSettings",
978
+ "type": "object",
979
+ "additionalProperties": false,
980
+ "required": [
981
+ "kind",
982
+ "bucket"
983
+ ],
984
+ "properties": {
985
+ "kind": {
986
+ "const": "gcs"
987
+ },
988
+ "bucket": {
989
+ "type": "string",
990
+ "minLength": 3,
991
+ "maxLength": 222,
992
+ "pattern": "^[a-z0-9][a-z0-9._-]{1,220}[a-z0-9]$",
993
+ "description": "The bucket name. Validated against GCS naming rules here, because it is placed in a Credential Access Boundary condition and must never carry anything but a name."
994
+ },
995
+ "prefix": {
996
+ "$ref": "#/$defs/ObjectPrefix"
997
+ }
998
+ }
999
+ },
1000
+ "ObjectPrefix": {
1001
+ "title": "ObjectPrefix",
1002
+ "type": "string",
1003
+ "minLength": 1,
1004
+ "maxLength": 256,
1005
+ "pattern": "^[A-Za-z0-9!_.*'()/-]+/$",
1006
+ "description": "A key prefix inside the bucket, ending in `/`, under which the config's `rooms/` tree is placed. Restricted to the S3 safe-character set so that it can be placed in a downscoped policy without escaping."
1007
+ },
1008
+ "S3Settings": {
1009
+ "title": "S3Settings",
1010
+ "type": "object",
1011
+ "additionalProperties": false,
1012
+ "required": [
1013
+ "kind",
1014
+ "region",
1015
+ "bucket"
1016
+ ],
1017
+ "properties": {
1018
+ "kind": {
1019
+ "const": "s3"
1020
+ },
1021
+ "endpoint": {
1022
+ "type": "string",
1023
+ "format": "uri",
1024
+ "maxLength": 2048,
1025
+ "pattern": "^https://",
1026
+ "description": "The S3 API endpoint, for a store other than AWS (R2, B2, MinIO). Absent means AWS S3 in `region`. HTTPS only."
1027
+ },
1028
+ "region": {
1029
+ "type": "string",
1030
+ "minLength": 1,
1031
+ "maxLength": 64,
1032
+ "pattern": "^[a-z0-9-]+$",
1033
+ "description": "The bucket's region, as the store names it (`eu-west-1`; `auto` for R2)."
1034
+ },
1035
+ "bucket": {
1036
+ "type": "string",
1037
+ "minLength": 3,
1038
+ "maxLength": 63,
1039
+ "pattern": "^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$",
1040
+ "description": "The bucket name. Validated against S3 naming rules here, because it is placed in downscoped session policies and must never carry anything but a name."
1041
+ },
1042
+ "prefix": {
1043
+ "$ref": "#/$defs/ObjectPrefix"
1044
+ },
1045
+ "pathStyle": {
1046
+ "type": "boolean",
1047
+ "description": "Address the bucket in the path rather than the host name, as MinIO usually needs. Absent means virtual-hosted style."
1048
+ }
1049
+ }
1050
+ },
1051
+ "LocalSettings": {
1052
+ "title": "LocalSettings",
1053
+ "type": "object",
1054
+ "additionalProperties": false,
1055
+ "required": [
1056
+ "kind",
1057
+ "root"
1058
+ ],
1059
+ "properties": {
1060
+ "kind": {
1061
+ "const": "local"
1062
+ },
1063
+ "root": {
1064
+ "type": "string",
1065
+ "minLength": 1,
1066
+ "maxLength": 1024,
1067
+ "pattern": "^/",
1068
+ "description": "Absolute path of the directory the community writes blobs under, on its own host. Created owner-only. Not carried by the community's backup: back it up beside it."
1069
+ }
1070
+ }
1071
+ },
1072
+ "StorageConfigId": {
1073
+ "title": "StorageConfigId",
1074
+ "type": "string",
1075
+ "minLength": 1,
1076
+ "maxLength": 64,
1077
+ "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$",
1078
+ "description": "A storage config's identifier, chosen by the administrator who creates it and immutable thereafter: lowercase letters, digits and inner hyphens, at most 64 characters (`eu-s3-primary`, `walrus-main`). Unique within the community. Never reused after a config is retired, because blobs name their config by this value."
1079
+ },
1080
+ "StorageKind": {
1081
+ "title": "StorageKind",
1082
+ "type": "string",
1083
+ "enum": [
1084
+ "local",
1085
+ "s3",
1086
+ "gcs",
1087
+ "walrus"
1088
+ ],
1089
+ "description": "Which backend a config stores to. `local`: plain files in a directory on the community's own host. `s3`: an S3-compatible object store (AWS S3, Cloudflare R2, Backblaze B2, MinIO). `gcs`: native Google Cloud Storage. `walrus`: the Walrus decentralised store, where every blob is public ciphertext and deletion is a lapse, not an erasure."
1090
+ }
1091
+ }
1092
+ } as const;
1093
+
1094
+ /**
1095
+ * SPEC.md §7.2 policy for the request variant, from this specification's
1096
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
1097
+ * per-specification and cannot be derived from the document alone, and
1098
+ * item 2 needs the schema this carries.
1099
+ */
1100
+ export const SPEC = {
1101
+ typeUri: TYPE_URI,
1102
+ isBearer: false,
1103
+ isProofRequired: false,
1104
+ isRecipientRequired: true,
1105
+ isIssuedAtRequired: false,
1106
+ payloadSchema: PAYLOAD_SCHEMA,
1107
+ } as const;
1108
+
1109
+ /**
1110
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
1111
+ * tracks the *issuer* party's requirement because a response swaps the
1112
+ * parties (§7.3 item 5).
1113
+ */
1114
+ export const RESPONSE_SPEC = {
1115
+ typeUri: RESPONSE_TYPE_URI,
1116
+ isBearer: false,
1117
+ isProofRequired: false,
1118
+ isRecipientRequired: true,
1119
+ isIssuedAtRequired: false,
1120
+ payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
1121
+ } as const;