@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.
- package/CHANGELOG.md +65 -0
- package/dist/_shared/components.d.ts +2451 -4
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/auth/oob/_shared/0.1/oob.d.ts +16 -0
- package/dist/auth/oob/_shared/0.1/oob.d.ts.map +1 -0
- package/dist/auth/oob/_shared/0.1/oob.js +6 -0
- package/dist/auth/oob/_shared/0.1/oob.js.map +1 -0
- package/dist/auth/oob/cancel/0.1/payload.d.ts +262 -0
- package/dist/auth/oob/cancel/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/cancel/0.1/payload.js +153 -0
- package/dist/auth/oob/cancel/0.1/payload.js.map +1 -0
- package/dist/auth/oob/claim/0.1/payload.d.ts +463 -0
- package/dist/auth/oob/claim/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/claim/0.1/payload.js +264 -0
- package/dist/auth/oob/claim/0.1/payload.js.map +1 -0
- package/dist/auth/oob/grant/0.1/payload.d.ts +212 -0
- package/dist/auth/oob/grant/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/grant/0.1/payload.js +117 -0
- package/dist/auth/oob/grant/0.1/payload.js.map +1 -0
- package/dist/auth/oob/identify/0.1/payload.d.ts +145 -0
- package/dist/auth/oob/identify/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/identify/0.1/payload.js +81 -0
- package/dist/auth/oob/identify/0.1/payload.js.map +1 -0
- package/dist/auth/oob/prove/0.1/payload.d.ts +740 -0
- package/dist/auth/oob/prove/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/prove/0.1/payload.js +422 -0
- package/dist/auth/oob/prove/0.1/payload.js.map +1 -0
- package/dist/auth/oob/redeem/0.1/payload.d.ts +364 -0
- package/dist/auth/oob/redeem/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/redeem/0.1/payload.js +199 -0
- package/dist/auth/oob/redeem/0.1/payload.js.map +1 -0
- package/dist/auth/oob/request/0.1/payload.d.ts +330 -0
- package/dist/auth/oob/request/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/request/0.1/payload.js +193 -0
- package/dist/auth/oob/request/0.1/payload.js.map +1 -0
- package/dist/auth/oob/respond/0.1/payload.d.ts +235 -0
- package/dist/auth/oob/respond/0.1/payload.d.ts.map +1 -0
- package/dist/auth/oob/respond/0.1/payload.js +140 -0
- package/dist/auth/oob/respond/0.1/payload.js.map +1 -0
- package/dist/device/list/0.1/payload.d.ts +4 -4
- package/dist/device/list/0.1/payload.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.js +6 -2
- package/dist/device/list/0.1/payload.js.map +1 -1
- package/dist/device/list/0.2/payload.d.ts +4 -4
- package/dist/device/list/0.2/payload.d.ts.map +1 -1
- package/dist/device/list/0.2/payload.js +6 -2
- package/dist/device/list/0.2/payload.js.map +1 -1
- package/dist/device/register/0.1/payload.d.ts +4 -4
- package/dist/device/register/0.1/payload.d.ts.map +1 -1
- package/dist/device/register/0.1/payload.js +6 -2
- package/dist/device/register/0.1/payload.js.map +1 -1
- package/dist/device/register/0.2/payload.d.ts +4 -4
- package/dist/device/register/0.2/payload.d.ts.map +1 -1
- package/dist/device/register/0.2/payload.js +6 -2
- package/dist/device/register/0.2/payload.js.map +1 -1
- package/dist/external/_shared/0.1/accounts.d.ts +18 -0
- package/dist/external/_shared/0.1/accounts.d.ts.map +1 -0
- package/dist/external/_shared/0.1/accounts.js +6 -0
- package/dist/external/_shared/0.1/accounts.js.map +1 -0
- package/dist/external/accounts/archive/0.1/payload.d.ts +2945 -0
- package/dist/external/accounts/archive/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/archive/0.1/payload.js +1736 -0
- package/dist/external/accounts/archive/0.1/payload.js.map +1 -0
- package/dist/external/accounts/bindings/grant/0.1/payload.d.ts +2938 -0
- package/dist/external/accounts/bindings/grant/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/bindings/grant/0.1/payload.js +1735 -0
- package/dist/external/accounts/bindings/grant/0.1/payload.js.map +1 -0
- package/dist/external/accounts/bindings/revoke/0.1/payload.d.ts +2958 -0
- package/dist/external/accounts/bindings/revoke/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/bindings/revoke/0.1/payload.js +1743 -0
- package/dist/external/accounts/bindings/revoke/0.1/payload.js.map +1 -0
- package/dist/external/accounts/create/0.1/payload.d.ts +2954 -0
- package/dist/external/accounts/create/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/create/0.1/payload.js +1742 -0
- package/dist/external/accounts/create/0.1/payload.js.map +1 -0
- package/dist/external/accounts/delete/0.1/payload.d.ts +310 -0
- package/dist/external/accounts/delete/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/delete/0.1/payload.js +176 -0
- package/dist/external/accounts/delete/0.1/payload.js.map +1 -0
- package/dist/external/accounts/get/0.1/payload.d.ts +2931 -0
- package/dist/external/accounts/get/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/get/0.1/payload.js +1731 -0
- package/dist/external/accounts/get/0.1/payload.js.map +1 -0
- package/dist/external/accounts/keys/rotate/0.1/payload.d.ts +3216 -0
- package/dist/external/accounts/keys/rotate/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/keys/rotate/0.1/payload.js +1912 -0
- package/dist/external/accounts/keys/rotate/0.1/payload.js.map +1 -0
- package/dist/external/accounts/list/0.1/payload.d.ts +3034 -0
- package/dist/external/accounts/list/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/list/0.1/payload.js +1791 -0
- package/dist/external/accounts/list/0.1/payload.js.map +1 -0
- package/dist/external/accounts/probe/0.1/payload.d.ts +511 -0
- package/dist/external/accounts/probe/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/probe/0.1/payload.js +307 -0
- package/dist/external/accounts/probe/0.1/payload.js.map +1 -0
- package/dist/external/accounts/restore/0.1/payload.d.ts +2945 -0
- package/dist/external/accounts/restore/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/restore/0.1/payload.js +1736 -0
- package/dist/external/accounts/restore/0.1/payload.js.map +1 -0
- package/dist/external/accounts/resume/0.1/payload.d.ts +2945 -0
- package/dist/external/accounts/resume/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/resume/0.1/payload.js +1736 -0
- package/dist/external/accounts/resume/0.1/payload.js.map +1 -0
- package/dist/external/accounts/secret/set/0.1/payload.d.ts +379 -0
- package/dist/external/accounts/secret/set/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/secret/set/0.1/payload.js +212 -0
- package/dist/external/accounts/secret/set/0.1/payload.js.map +1 -0
- package/dist/external/accounts/setup/0.1/payload.d.ts +535 -0
- package/dist/external/accounts/setup/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/setup/0.1/payload.js +325 -0
- package/dist/external/accounts/setup/0.1/payload.js.map +1 -0
- package/dist/external/accounts/suspend/0.1/payload.d.ts +2945 -0
- package/dist/external/accounts/suspend/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/suspend/0.1/payload.js +1736 -0
- package/dist/external/accounts/suspend/0.1/payload.js.map +1 -0
- package/dist/external/accounts/update/0.1/payload.d.ts +2949 -0
- package/dist/external/accounts/update/0.1/payload.d.ts.map +1 -0
- package/dist/external/accounts/update/0.1/payload.js +1739 -0
- package/dist/external/accounts/update/0.1/payload.js.map +1 -0
- package/dist/external/credentials/issue/0.1/payload.d.ts +586 -0
- package/dist/external/credentials/issue/0.1/payload.d.ts.map +1 -0
- package/dist/external/credentials/issue/0.1/payload.js +322 -0
- package/dist/external/credentials/issue/0.1/payload.js.map +1 -0
- package/dist/external/sign/0.1/payload.d.ts +348 -0
- package/dist/external/sign/0.1/payload.d.ts.map +1 -0
- package/dist/external/sign/0.1/payload.js +193 -0
- package/dist/external/sign/0.1/payload.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/_shared/0.1/blobs.d.ts +16 -0
- package/dist/rooms/_shared/0.1/blobs.d.ts.map +1 -0
- package/dist/rooms/_shared/0.1/blobs.js +6 -0
- package/dist/rooms/_shared/0.1/blobs.js.map +1 -0
- package/dist/rooms/_shared/0.1/room.d.ts +1 -1
- package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
- package/dist/rooms/blobs/chunk/0.1/payload.d.ts +375 -0
- package/dist/rooms/blobs/chunk/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/blobs/chunk/0.1/payload.js +213 -0
- package/dist/rooms/blobs/chunk/0.1/payload.js.map +1 -0
- package/dist/rooms/blobs/get/0.1/payload.d.ts +743 -0
- package/dist/rooms/blobs/get/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/blobs/get/0.1/payload.js +415 -0
- package/dist/rooms/blobs/get/0.1/payload.js.map +1 -0
- package/dist/rooms/blobs/upload/abort/0.1/payload.d.ts +263 -0
- package/dist/rooms/blobs/upload/abort/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/blobs/upload/abort/0.1/payload.js +151 -0
- package/dist/rooms/blobs/upload/abort/0.1/payload.js.map +1 -0
- package/dist/rooms/blobs/upload/begin/0.1/payload.d.ts +793 -0
- package/dist/rooms/blobs/upload/begin/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/blobs/upload/begin/0.1/payload.js +437 -0
- package/dist/rooms/blobs/upload/begin/0.1/payload.js.map +1 -0
- package/dist/rooms/blobs/upload/chunk/0.1/payload.d.ts +459 -0
- package/dist/rooms/blobs/upload/chunk/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/blobs/upload/chunk/0.1/payload.js +256 -0
- package/dist/rooms/blobs/upload/chunk/0.1/payload.js.map +1 -0
- package/dist/rooms/blobs/upload/commit/0.1/payload.d.ts +326 -0
- package/dist/rooms/blobs/upload/commit/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/blobs/upload/commit/0.1/payload.js +185 -0
- package/dist/rooms/blobs/upload/commit/0.1/payload.js.map +1 -0
- package/dist/rooms/info/0.1/payload.d.ts +897 -0
- package/dist/rooms/info/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/info/0.1/payload.js +498 -0
- package/dist/rooms/info/0.1/payload.js.map +1 -0
- package/dist/rooms/keys/file-key/0.1/payload.d.ts +306 -0
- package/dist/rooms/keys/file-key/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/keys/file-key/0.1/payload.js +167 -0
- package/dist/rooms/keys/file-key/0.1/payload.js.map +1 -0
- package/dist/rooms/records/get/0.2/payload.d.ts +954 -0
- package/dist/rooms/records/get/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/records/get/0.2/payload.js +515 -0
- package/dist/rooms/records/get/0.2/payload.js.map +1 -0
- package/dist/rooms/records/list/0.2/payload.d.ts +854 -0
- package/dist/rooms/records/list/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/records/list/0.2/payload.js +462 -0
- package/dist/rooms/records/list/0.2/payload.js.map +1 -0
- package/dist/rooms/records/put/0.2/payload.d.ts +679 -0
- package/dist/rooms/records/put/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/records/put/0.2/payload.js +357 -0
- package/dist/rooms/records/put/0.2/payload.js.map +1 -0
- package/dist/rooms/usage/0.1/payload.d.ts +795 -0
- package/dist/rooms/usage/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/usage/0.1/payload.js +417 -0
- package/dist/rooms/usage/0.1/payload.js.map +1 -0
- package/dist/vtc/_shared/0.1/room-storage.d.ts +16 -0
- package/dist/vtc/_shared/0.1/room-storage.d.ts.map +1 -0
- package/dist/vtc/_shared/0.1/room-storage.js +6 -0
- package/dist/vtc/_shared/0.1/room-storage.js.map +1 -0
- package/dist/vtc/rooms/get/0.1/payload.d.ts +1813 -0
- package/dist/vtc/rooms/get/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/get/0.1/payload.js +892 -0
- package/dist/vtc/rooms/get/0.1/payload.js.map +1 -0
- package/dist/vtc/rooms/limits/set/0.1/payload.d.ts +873 -0
- package/dist/vtc/rooms/limits/set/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/limits/set/0.1/payload.js +489 -0
- package/dist/vtc/rooms/limits/set/0.1/payload.js.map +1 -0
- package/dist/vtc/rooms/storage/assign/0.1/payload.d.ts +341 -0
- package/dist/vtc/rooms/storage/assign/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/storage/assign/0.1/payload.js +191 -0
- package/dist/vtc/rooms/storage/assign/0.1/payload.js.map +1 -0
- package/dist/vtc/rooms/storage/migrate/0.1/payload.d.ts +452 -0
- package/dist/vtc/rooms/storage/migrate/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/storage/migrate/0.1/payload.js +260 -0
- package/dist/vtc/rooms/storage/migrate/0.1/payload.js.map +1 -0
- package/dist/vtc/rooms/usage/0.1/payload.d.ts +880 -0
- package/dist/vtc/rooms/usage/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/usage/0.1/payload.js +457 -0
- package/dist/vtc/rooms/usage/0.1/payload.js.map +1 -0
- package/dist/vtc/storage/configs/create/0.1/payload.d.ts +1272 -0
- package/dist/vtc/storage/configs/create/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/create/0.1/payload.js +737 -0
- package/dist/vtc/storage/configs/create/0.1/payload.js.map +1 -0
- package/dist/vtc/storage/configs/get/0.1/payload.d.ts +1750 -0
- package/dist/vtc/storage/configs/get/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/get/0.1/payload.js +1019 -0
- package/dist/vtc/storage/configs/get/0.1/payload.js.map +1 -0
- package/dist/vtc/storage/configs/list/0.1/payload.d.ts +1851 -0
- package/dist/vtc/storage/configs/list/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/list/0.1/payload.js +1069 -0
- package/dist/vtc/storage/configs/list/0.1/payload.js.map +1 -0
- package/dist/vtc/storage/configs/probe/0.1/payload.d.ts +459 -0
- package/dist/vtc/storage/configs/probe/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/probe/0.1/payload.js +267 -0
- package/dist/vtc/storage/configs/probe/0.1/payload.js.map +1 -0
- package/dist/vtc/storage/configs/retire/0.1/payload.d.ts +294 -0
- package/dist/vtc/storage/configs/retire/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/retire/0.1/payload.js +176 -0
- package/dist/vtc/storage/configs/retire/0.1/payload.js.map +1 -0
- package/dist/vtc/storage/configs/update/0.1/payload.d.ts +1274 -0
- package/dist/vtc/storage/configs/update/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/update/0.1/payload.js +736 -0
- package/dist/vtc/storage/configs/update/0.1/payload.js.map +1 -0
- package/dist/vtc/storage/credentials/set/0.1/payload.d.ts +511 -0
- package/dist/vtc/storage/credentials/set/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/storage/credentials/set/0.1/payload.js +293 -0
- package/dist/vtc/storage/credentials/set/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts +69 -8
- package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/vetting/hidden/publish/0.1/payload.js +31 -0
- package/dist/vtc/vetting/hidden/publish/0.1/payload.js.map +1 -1
- package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts +62 -8
- package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/vetting/hidden/show/0.1/payload.js +28 -0
- package/dist/vtc/vetting/hidden/show/0.1/payload.js.map +1 -1
- package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.d.ts +3 -3
- package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.js +1 -1
- package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.js.map +1 -1
- package/package.json +1 -1
- package/src/_shared/components.ts +2539 -4
- package/src/auth/oob/_shared/0.1/oob.ts +17 -0
- package/src/auth/oob/cancel/0.1/payload.ts +188 -0
- package/src/auth/oob/claim/0.1/payload.ts +306 -0
- package/src/auth/oob/grant/0.1/payload.ts +159 -0
- package/src/auth/oob/identify/0.1/payload.ts +110 -0
- package/src/auth/oob/prove/0.1/payload.ts +473 -0
- package/src/auth/oob/redeem/0.1/payload.ts +248 -0
- package/src/auth/oob/request/0.1/payload.ts +230 -0
- package/src/auth/oob/respond/0.1/payload.ts +178 -0
- package/src/device/list/0.1/payload.ts +6 -2
- package/src/device/list/0.2/payload.ts +6 -2
- package/src/device/register/0.1/payload.ts +6 -2
- package/src/device/register/0.2/payload.ts +6 -2
- package/src/external/_shared/0.1/accounts.ts +19 -0
- package/src/external/accounts/archive/0.1/payload.ts +1770 -0
- package/src/external/accounts/bindings/grant/0.1/payload.ts +1766 -0
- package/src/external/accounts/bindings/revoke/0.1/payload.ts +1778 -0
- package/src/external/accounts/create/0.1/payload.ts +1777 -0
- package/src/external/accounts/delete/0.1/payload.ts +211 -0
- package/src/external/accounts/get/0.1/payload.ts +1761 -0
- package/src/external/accounts/keys/rotate/0.1/payload.ts +1947 -0
- package/src/external/accounts/list/0.1/payload.ts +1834 -0
- package/src/external/accounts/probe/0.1/payload.ts +337 -0
- package/src/external/accounts/restore/0.1/payload.ts +1770 -0
- package/src/external/accounts/resume/0.1/payload.ts +1770 -0
- package/src/external/accounts/secret/set/0.1/payload.ts +248 -0
- package/src/external/accounts/setup/0.1/payload.ts +355 -0
- package/src/external/accounts/suspend/0.1/payload.ts +1770 -0
- package/src/external/accounts/update/0.1/payload.ts +1771 -0
- package/src/external/credentials/issue/0.1/payload.ts +365 -0
- package/src/external/sign/0.1/payload.ts +234 -0
- package/src/index.ts +53 -0
- package/src/rooms/_shared/0.1/blobs.ts +17 -0
- package/src/rooms/_shared/0.1/room.ts +1 -1
- package/src/rooms/blobs/chunk/0.1/payload.ts +251 -0
- package/src/rooms/blobs/get/0.1/payload.ts +463 -0
- package/src/rooms/blobs/upload/abort/0.1/payload.ts +187 -0
- package/src/rooms/blobs/upload/begin/0.1/payload.ts +491 -0
- package/src/rooms/blobs/upload/chunk/0.1/payload.ts +304 -0
- package/src/rooms/blobs/upload/commit/0.1/payload.ts +224 -0
- package/src/rooms/info/0.1/payload.ts +572 -0
- package/src/rooms/keys/file-key/0.1/payload.ts +224 -0
- package/src/rooms/records/get/0.2/payload.ts +614 -0
- package/src/rooms/records/list/0.2/payload.ts +533 -0
- package/src/rooms/records/put/0.2/payload.ts +441 -0
- package/src/rooms/usage/0.1/payload.ts +499 -0
- package/src/vtc/_shared/0.1/room-storage.ts +17 -0
- package/src/vtc/rooms/get/0.1/payload.ts +1275 -0
- package/src/vtc/rooms/limits/set/0.1/payload.ts +555 -0
- package/src/vtc/rooms/storage/assign/0.1/payload.ts +237 -0
- package/src/vtc/rooms/storage/migrate/0.1/payload.ts +317 -0
- package/src/vtc/rooms/usage/0.1/payload.ts +568 -0
- package/src/vtc/storage/configs/create/0.1/payload.ts +784 -0
- package/src/vtc/storage/configs/get/0.1/payload.ts +1054 -0
- package/src/vtc/storage/configs/list/0.1/payload.ts +1121 -0
- package/src/vtc/storage/configs/probe/0.1/payload.ts +329 -0
- package/src/vtc/storage/configs/retire/0.1/payload.ts +211 -0
- package/src/vtc/storage/configs/update/0.1/payload.ts +783 -0
- package/src/vtc/storage/credentials/set/0.1/payload.ts +339 -0
- package/src/vtc/vetting/hidden/publish/0.1/payload.ts +39 -0
- package/src/vtc/vetting/hidden/show/0.1/payload.ts +35 -0
- package/src/vtc/vetting/vetters/pcs-tokens/0.1/payload.ts +2 -2
|
@@ -0,0 +1,586 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/external/credentials/issue/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
import type { AccountContextId, AccountId, CredentialScope, Ext, ProviderObjectAction, ProviderObjectPrefix, SealedTransferBundle } from "../../../../_shared/components.js";
|
|
6
|
+
/**
|
|
7
|
+
* Obtain a short-lived, downscoped provider credential from an external account, sealed to the caller. The outer document members are owned by the framework — SPEC §6.3.
|
|
8
|
+
*/
|
|
9
|
+
export interface ExternalCredentialsIssuePayload {
|
|
10
|
+
context: AccountContextId;
|
|
11
|
+
account: AccountId;
|
|
12
|
+
scope: CredentialScope;
|
|
13
|
+
/**
|
|
14
|
+
* Requested lifetime; never more than the binding's `maxTtlSeconds`.
|
|
15
|
+
*/
|
|
16
|
+
ttlSeconds: number;
|
|
17
|
+
ext?: Ext;
|
|
18
|
+
}
|
|
19
|
+
export interface ExternalCredentialsIssueResponsePayload {
|
|
20
|
+
sealedCredential: SealedTransferBundle;
|
|
21
|
+
/**
|
|
22
|
+
* The provider's expiry for the credential, in the clear.
|
|
23
|
+
*/
|
|
24
|
+
expiresAt: string;
|
|
25
|
+
/**
|
|
26
|
+
* The scope actually granted, which equals the requested one.
|
|
27
|
+
*/
|
|
28
|
+
scope: CredentialScope;
|
|
29
|
+
ext?: Ext;
|
|
30
|
+
}
|
|
31
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
32
|
+
export type { AccountContextId, AccountId, CredentialScope, Ext, ProviderObjectAction, ProviderObjectPrefix, SealedTransferBundle };
|
|
33
|
+
/** Trust Task type URI. */
|
|
34
|
+
export declare const TYPE_URI: "https://trusttasks.org/spec/external/credentials/issue/0.1";
|
|
35
|
+
/** Stable alias for this specification's request payload shape. */
|
|
36
|
+
export type Payload = ExternalCredentialsIssuePayload;
|
|
37
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
38
|
+
export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/external/credentials/issue/0.1#response";
|
|
39
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
40
|
+
export type Response = ExternalCredentialsIssueResponsePayload;
|
|
41
|
+
/**
|
|
42
|
+
* This specification's payload schema, as a value.
|
|
43
|
+
*
|
|
44
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
45
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
46
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
47
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
48
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
49
|
+
*/
|
|
50
|
+
export declare const PAYLOAD_SCHEMA: {
|
|
51
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
52
|
+
readonly $id: "https://trusttasks.org/spec/external/credentials/issue/0.1";
|
|
53
|
+
readonly title: "External Credentials — Issue — payload";
|
|
54
|
+
readonly description: "Obtain a short-lived, downscoped provider credential from an external account, sealed to the caller. The outer document members are owned by the framework — SPEC §6.3.";
|
|
55
|
+
readonly type: "object";
|
|
56
|
+
readonly additionalProperties: false;
|
|
57
|
+
readonly required: readonly ["context", "account", "scope", "ttlSeconds"];
|
|
58
|
+
readonly properties: {
|
|
59
|
+
readonly context: {
|
|
60
|
+
readonly $ref: "#/$defs/AccountContextId";
|
|
61
|
+
};
|
|
62
|
+
readonly account: {
|
|
63
|
+
readonly $ref: "#/$defs/AccountId";
|
|
64
|
+
};
|
|
65
|
+
readonly scope: {
|
|
66
|
+
readonly $ref: "#/$defs/CredentialScope";
|
|
67
|
+
};
|
|
68
|
+
readonly ttlSeconds: {
|
|
69
|
+
readonly type: "integer";
|
|
70
|
+
readonly minimum: 60;
|
|
71
|
+
readonly maximum: 3600;
|
|
72
|
+
readonly description: "Requested lifetime; never more than the binding's `maxTtlSeconds`.";
|
|
73
|
+
};
|
|
74
|
+
readonly ext: {
|
|
75
|
+
readonly $ref: "#/$defs/Ext";
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
readonly $defs: {
|
|
79
|
+
readonly Response: {
|
|
80
|
+
readonly $anchor: "response";
|
|
81
|
+
readonly title: "External Credentials — Issue — response payload";
|
|
82
|
+
readonly type: "object";
|
|
83
|
+
readonly additionalProperties: false;
|
|
84
|
+
readonly required: readonly ["sealedCredential", "expiresAt", "scope"];
|
|
85
|
+
readonly properties: {
|
|
86
|
+
readonly sealedCredential: {
|
|
87
|
+
readonly $ref: "#/$defs/SealedTransferBundle";
|
|
88
|
+
};
|
|
89
|
+
readonly expiresAt: {
|
|
90
|
+
readonly type: "string";
|
|
91
|
+
readonly format: "date-time";
|
|
92
|
+
readonly description: "The provider's expiry for the credential, in the clear.";
|
|
93
|
+
};
|
|
94
|
+
readonly scope: {
|
|
95
|
+
readonly $ref: "#/$defs/CredentialScope";
|
|
96
|
+
readonly description: "The scope actually granted, which equals the requested one.";
|
|
97
|
+
};
|
|
98
|
+
readonly ext: {
|
|
99
|
+
readonly $ref: "#/$defs/Ext";
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
readonly Ext: {
|
|
104
|
+
readonly title: "Ext";
|
|
105
|
+
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.";
|
|
106
|
+
readonly type: "object";
|
|
107
|
+
readonly minProperties: 1;
|
|
108
|
+
readonly additionalProperties: true;
|
|
109
|
+
readonly propertyNames: {
|
|
110
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
readonly CredentialScope: {
|
|
114
|
+
readonly title: "CredentialScope";
|
|
115
|
+
readonly type: "object";
|
|
116
|
+
readonly additionalProperties: false;
|
|
117
|
+
readonly description: "What one issuance may do. For storage models, `prefix` and `actions` (both required, a rule this schema leaves to the custodian because other models use neither); for `s3-static-presign`, also `objectKey`, since a presigned URL is one operation on one object; for `oauth2-private-key-jwt`, `scopes`.";
|
|
118
|
+
readonly properties: {
|
|
119
|
+
readonly prefix: {
|
|
120
|
+
readonly $ref: "#/$defs/ProviderObjectPrefix";
|
|
121
|
+
};
|
|
122
|
+
readonly actions: {
|
|
123
|
+
readonly type: "array";
|
|
124
|
+
readonly minItems: 1;
|
|
125
|
+
readonly maxItems: 3;
|
|
126
|
+
readonly uniqueItems: true;
|
|
127
|
+
readonly items: {
|
|
128
|
+
readonly $ref: "#/$defs/ProviderObjectAction";
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
readonly objectKey: {
|
|
132
|
+
readonly type: "string";
|
|
133
|
+
readonly minLength: 1;
|
|
134
|
+
readonly maxLength: 1024;
|
|
135
|
+
readonly pattern: "^[A-Za-z0-9._-]+$";
|
|
136
|
+
readonly description: "`s3-static-presign` only: the object's name within `prefix`. The presigned URL names `prefix` + `objectKey` and nothing else, and `actions` must hold exactly one action.";
|
|
137
|
+
};
|
|
138
|
+
readonly scopes: {
|
|
139
|
+
readonly type: "array";
|
|
140
|
+
readonly maxItems: 64;
|
|
141
|
+
readonly uniqueItems: true;
|
|
142
|
+
readonly items: {
|
|
143
|
+
readonly type: "string";
|
|
144
|
+
readonly maxLength: 256;
|
|
145
|
+
readonly pattern: "^[!#-\\[\\]-~]+$";
|
|
146
|
+
};
|
|
147
|
+
readonly description: "`oauth2-private-key-jwt` only: the OAuth scopes requested.";
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
readonly ProviderObjectAction: {
|
|
152
|
+
readonly title: "ProviderObjectAction";
|
|
153
|
+
readonly type: "string";
|
|
154
|
+
readonly enum: readonly ["put", "get", "delete"];
|
|
155
|
+
readonly description: "`put`: write an object. `get`: read one. `delete`: remove one. No list, ACL, policy or bucket-level action exists here, so none can be granted.";
|
|
156
|
+
};
|
|
157
|
+
readonly ProviderObjectPrefix: {
|
|
158
|
+
readonly title: "ProviderObjectPrefix";
|
|
159
|
+
readonly type: "string";
|
|
160
|
+
readonly minLength: 2;
|
|
161
|
+
readonly maxLength: 512;
|
|
162
|
+
readonly pattern: "^([a-z0-9][a-z0-9._-]{0,127}/){1,16}$";
|
|
163
|
+
readonly description: "An object-key prefix within the account's bucket: one or more segments of lowercase letters, digits, `.`, `_` and `-`, each beginning with a letter or digit and ending with `/`. No quote, backslash, wildcard, whitespace, `..` segment or empty segment can appear. That is deliberate: the custodian places this value inside a provider policy — an IAM session policy (JSON), a GCS Credential Access Boundary condition (CEL) — and a value able to carry a metacharacter can break out of the string it is placed in and widen the policy. That is a known class of defect (CVE-2026-42811, a CEL injection in downscoped GCS credentials). Even with this pattern, a custodian MUST build provider policies with the provider language's own encoder, never by string interpolation.";
|
|
164
|
+
};
|
|
165
|
+
readonly SealedTransferBundle: {
|
|
166
|
+
readonly title: "SealedTransferBundle";
|
|
167
|
+
readonly type: "string";
|
|
168
|
+
readonly minLength: 64;
|
|
169
|
+
readonly maxLength: 65536;
|
|
170
|
+
readonly pattern: "^-----BEGIN VTA SEALED BUNDLE-----[\\s\\S]+-----END VTA SEALED BUNDLE-----\\s*$";
|
|
171
|
+
readonly description: "A sealed-transfer bundle: OpenPGP-style ASCII armor around an HPKE-sealed `SealedPayloadV1` (base mode, X25519-HKDF-SHA256 KEM, HKDF-SHA256 KDF, ChaCha20-Poly1305 AEAD, info string `vta-sealed-transfer/v1`), with a producer assertion and Bundle-Id, Chunk and Digest-Algo headers bound into the associated data. Each task states the key it is sealed to: a single-use wrapping key from keys/import-wrapping-key for external/accounts/secret/set, and the caller's key-agreement key for external/credentials/issue. Its cleartext is an ExternalSecretPayload or an ExternalCredentialPayload. The only form in which secret material crosses the wire in this family, in either direction: the seal is what keeps a terminating proxy, a relay, a request log or a debug dump of \"the response\" from ever holding a usable secret, whatever transport carried the document.";
|
|
172
|
+
};
|
|
173
|
+
readonly AccountId: {
|
|
174
|
+
readonly title: "AccountId";
|
|
175
|
+
readonly type: "string";
|
|
176
|
+
readonly minLength: 1;
|
|
177
|
+
readonly maxLength: 64;
|
|
178
|
+
readonly pattern: "^[a-z0-9][a-z0-9-]*$";
|
|
179
|
+
readonly description: "The account's identifier within its context, chosen by whoever creates it. Lowercase letters, digits and hyphens, so that it can be embedded in a certificate subject, a token subject or a provider-side condition without escaping. Unique per context; never reused after deletion while anything that names it (a provider-side trust policy, an audit row) may still exist.";
|
|
180
|
+
};
|
|
181
|
+
readonly AccountContextId: {
|
|
182
|
+
readonly title: "AccountContextId";
|
|
183
|
+
readonly type: "string";
|
|
184
|
+
readonly minLength: 1;
|
|
185
|
+
readonly maxLength: 256;
|
|
186
|
+
readonly description: "The custodian context that owns the account. Act scope in this context decides who may manage the account and who may consume it; the account's keys are derived in this context's key space.";
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
191
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
192
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
193
|
+
readonly $ref: "#/$defs/Response";
|
|
194
|
+
readonly $defs: {
|
|
195
|
+
readonly Response: {
|
|
196
|
+
readonly $anchor: "response";
|
|
197
|
+
readonly title: "External Credentials — Issue — response payload";
|
|
198
|
+
readonly type: "object";
|
|
199
|
+
readonly additionalProperties: false;
|
|
200
|
+
readonly required: readonly ["sealedCredential", "expiresAt", "scope"];
|
|
201
|
+
readonly properties: {
|
|
202
|
+
readonly sealedCredential: {
|
|
203
|
+
readonly $ref: "#/$defs/SealedTransferBundle";
|
|
204
|
+
};
|
|
205
|
+
readonly expiresAt: {
|
|
206
|
+
readonly type: "string";
|
|
207
|
+
readonly format: "date-time";
|
|
208
|
+
readonly description: "The provider's expiry for the credential, in the clear.";
|
|
209
|
+
};
|
|
210
|
+
readonly scope: {
|
|
211
|
+
readonly $ref: "#/$defs/CredentialScope";
|
|
212
|
+
readonly description: "The scope actually granted, which equals the requested one.";
|
|
213
|
+
};
|
|
214
|
+
readonly ext: {
|
|
215
|
+
readonly $ref: "#/$defs/Ext";
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
};
|
|
219
|
+
readonly Ext: {
|
|
220
|
+
readonly title: "Ext";
|
|
221
|
+
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.";
|
|
222
|
+
readonly type: "object";
|
|
223
|
+
readonly minProperties: 1;
|
|
224
|
+
readonly additionalProperties: true;
|
|
225
|
+
readonly propertyNames: {
|
|
226
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
227
|
+
};
|
|
228
|
+
};
|
|
229
|
+
readonly CredentialScope: {
|
|
230
|
+
readonly title: "CredentialScope";
|
|
231
|
+
readonly type: "object";
|
|
232
|
+
readonly additionalProperties: false;
|
|
233
|
+
readonly description: "What one issuance may do. For storage models, `prefix` and `actions` (both required, a rule this schema leaves to the custodian because other models use neither); for `s3-static-presign`, also `objectKey`, since a presigned URL is one operation on one object; for `oauth2-private-key-jwt`, `scopes`.";
|
|
234
|
+
readonly properties: {
|
|
235
|
+
readonly prefix: {
|
|
236
|
+
readonly $ref: "#/$defs/ProviderObjectPrefix";
|
|
237
|
+
};
|
|
238
|
+
readonly actions: {
|
|
239
|
+
readonly type: "array";
|
|
240
|
+
readonly minItems: 1;
|
|
241
|
+
readonly maxItems: 3;
|
|
242
|
+
readonly uniqueItems: true;
|
|
243
|
+
readonly items: {
|
|
244
|
+
readonly $ref: "#/$defs/ProviderObjectAction";
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
readonly objectKey: {
|
|
248
|
+
readonly type: "string";
|
|
249
|
+
readonly minLength: 1;
|
|
250
|
+
readonly maxLength: 1024;
|
|
251
|
+
readonly pattern: "^[A-Za-z0-9._-]+$";
|
|
252
|
+
readonly description: "`s3-static-presign` only: the object's name within `prefix`. The presigned URL names `prefix` + `objectKey` and nothing else, and `actions` must hold exactly one action.";
|
|
253
|
+
};
|
|
254
|
+
readonly scopes: {
|
|
255
|
+
readonly type: "array";
|
|
256
|
+
readonly maxItems: 64;
|
|
257
|
+
readonly uniqueItems: true;
|
|
258
|
+
readonly items: {
|
|
259
|
+
readonly type: "string";
|
|
260
|
+
readonly maxLength: 256;
|
|
261
|
+
readonly pattern: "^[!#-\\[\\]-~]+$";
|
|
262
|
+
};
|
|
263
|
+
readonly description: "`oauth2-private-key-jwt` only: the OAuth scopes requested.";
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
readonly ProviderObjectAction: {
|
|
268
|
+
readonly title: "ProviderObjectAction";
|
|
269
|
+
readonly type: "string";
|
|
270
|
+
readonly enum: readonly ["put", "get", "delete"];
|
|
271
|
+
readonly description: "`put`: write an object. `get`: read one. `delete`: remove one. No list, ACL, policy or bucket-level action exists here, so none can be granted.";
|
|
272
|
+
};
|
|
273
|
+
readonly ProviderObjectPrefix: {
|
|
274
|
+
readonly title: "ProviderObjectPrefix";
|
|
275
|
+
readonly type: "string";
|
|
276
|
+
readonly minLength: 2;
|
|
277
|
+
readonly maxLength: 512;
|
|
278
|
+
readonly pattern: "^([a-z0-9][a-z0-9._-]{0,127}/){1,16}$";
|
|
279
|
+
readonly description: "An object-key prefix within the account's bucket: one or more segments of lowercase letters, digits, `.`, `_` and `-`, each beginning with a letter or digit and ending with `/`. No quote, backslash, wildcard, whitespace, `..` segment or empty segment can appear. That is deliberate: the custodian places this value inside a provider policy — an IAM session policy (JSON), a GCS Credential Access Boundary condition (CEL) — and a value able to carry a metacharacter can break out of the string it is placed in and widen the policy. That is a known class of defect (CVE-2026-42811, a CEL injection in downscoped GCS credentials). Even with this pattern, a custodian MUST build provider policies with the provider language's own encoder, never by string interpolation.";
|
|
280
|
+
};
|
|
281
|
+
readonly SealedTransferBundle: {
|
|
282
|
+
readonly title: "SealedTransferBundle";
|
|
283
|
+
readonly type: "string";
|
|
284
|
+
readonly minLength: 64;
|
|
285
|
+
readonly maxLength: 65536;
|
|
286
|
+
readonly pattern: "^-----BEGIN VTA SEALED BUNDLE-----[\\s\\S]+-----END VTA SEALED BUNDLE-----\\s*$";
|
|
287
|
+
readonly description: "A sealed-transfer bundle: OpenPGP-style ASCII armor around an HPKE-sealed `SealedPayloadV1` (base mode, X25519-HKDF-SHA256 KEM, HKDF-SHA256 KDF, ChaCha20-Poly1305 AEAD, info string `vta-sealed-transfer/v1`), with a producer assertion and Bundle-Id, Chunk and Digest-Algo headers bound into the associated data. Each task states the key it is sealed to: a single-use wrapping key from keys/import-wrapping-key for external/accounts/secret/set, and the caller's key-agreement key for external/credentials/issue. Its cleartext is an ExternalSecretPayload or an ExternalCredentialPayload. The only form in which secret material crosses the wire in this family, in either direction: the seal is what keeps a terminating proxy, a relay, a request log or a debug dump of \"the response\" from ever holding a usable secret, whatever transport carried the document.";
|
|
288
|
+
};
|
|
289
|
+
readonly AccountId: {
|
|
290
|
+
readonly title: "AccountId";
|
|
291
|
+
readonly type: "string";
|
|
292
|
+
readonly minLength: 1;
|
|
293
|
+
readonly maxLength: 64;
|
|
294
|
+
readonly pattern: "^[a-z0-9][a-z0-9-]*$";
|
|
295
|
+
readonly description: "The account's identifier within its context, chosen by whoever creates it. Lowercase letters, digits and hyphens, so that it can be embedded in a certificate subject, a token subject or a provider-side condition without escaping. Unique per context; never reused after deletion while anything that names it (a provider-side trust policy, an audit row) may still exist.";
|
|
296
|
+
};
|
|
297
|
+
readonly AccountContextId: {
|
|
298
|
+
readonly title: "AccountContextId";
|
|
299
|
+
readonly type: "string";
|
|
300
|
+
readonly minLength: 1;
|
|
301
|
+
readonly maxLength: 256;
|
|
302
|
+
readonly description: "The custodian context that owns the account. Act scope in this context decides who may manage the account and who may consume it; the account's keys are derived in this context's key space.";
|
|
303
|
+
};
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
/**
|
|
307
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
308
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
309
|
+
* per-specification and cannot be derived from the document alone, and
|
|
310
|
+
* item 2 needs the schema this carries.
|
|
311
|
+
*/
|
|
312
|
+
export declare const SPEC: {
|
|
313
|
+
readonly typeUri: "https://trusttasks.org/spec/external/credentials/issue/0.1";
|
|
314
|
+
readonly isBearer: false;
|
|
315
|
+
readonly isProofRequired: true;
|
|
316
|
+
readonly isRecipientRequired: true;
|
|
317
|
+
readonly isIssuedAtRequired: true;
|
|
318
|
+
readonly payloadSchema: {
|
|
319
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
320
|
+
readonly $id: "https://trusttasks.org/spec/external/credentials/issue/0.1";
|
|
321
|
+
readonly title: "External Credentials — Issue — payload";
|
|
322
|
+
readonly description: "Obtain a short-lived, downscoped provider credential from an external account, sealed to the caller. The outer document members are owned by the framework — SPEC §6.3.";
|
|
323
|
+
readonly type: "object";
|
|
324
|
+
readonly additionalProperties: false;
|
|
325
|
+
readonly required: readonly ["context", "account", "scope", "ttlSeconds"];
|
|
326
|
+
readonly properties: {
|
|
327
|
+
readonly context: {
|
|
328
|
+
readonly $ref: "#/$defs/AccountContextId";
|
|
329
|
+
};
|
|
330
|
+
readonly account: {
|
|
331
|
+
readonly $ref: "#/$defs/AccountId";
|
|
332
|
+
};
|
|
333
|
+
readonly scope: {
|
|
334
|
+
readonly $ref: "#/$defs/CredentialScope";
|
|
335
|
+
};
|
|
336
|
+
readonly ttlSeconds: {
|
|
337
|
+
readonly type: "integer";
|
|
338
|
+
readonly minimum: 60;
|
|
339
|
+
readonly maximum: 3600;
|
|
340
|
+
readonly description: "Requested lifetime; never more than the binding's `maxTtlSeconds`.";
|
|
341
|
+
};
|
|
342
|
+
readonly ext: {
|
|
343
|
+
readonly $ref: "#/$defs/Ext";
|
|
344
|
+
};
|
|
345
|
+
};
|
|
346
|
+
readonly $defs: {
|
|
347
|
+
readonly Response: {
|
|
348
|
+
readonly $anchor: "response";
|
|
349
|
+
readonly title: "External Credentials — Issue — response payload";
|
|
350
|
+
readonly type: "object";
|
|
351
|
+
readonly additionalProperties: false;
|
|
352
|
+
readonly required: readonly ["sealedCredential", "expiresAt", "scope"];
|
|
353
|
+
readonly properties: {
|
|
354
|
+
readonly sealedCredential: {
|
|
355
|
+
readonly $ref: "#/$defs/SealedTransferBundle";
|
|
356
|
+
};
|
|
357
|
+
readonly expiresAt: {
|
|
358
|
+
readonly type: "string";
|
|
359
|
+
readonly format: "date-time";
|
|
360
|
+
readonly description: "The provider's expiry for the credential, in the clear.";
|
|
361
|
+
};
|
|
362
|
+
readonly scope: {
|
|
363
|
+
readonly $ref: "#/$defs/CredentialScope";
|
|
364
|
+
readonly description: "The scope actually granted, which equals the requested one.";
|
|
365
|
+
};
|
|
366
|
+
readonly ext: {
|
|
367
|
+
readonly $ref: "#/$defs/Ext";
|
|
368
|
+
};
|
|
369
|
+
};
|
|
370
|
+
};
|
|
371
|
+
readonly Ext: {
|
|
372
|
+
readonly title: "Ext";
|
|
373
|
+
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.";
|
|
374
|
+
readonly type: "object";
|
|
375
|
+
readonly minProperties: 1;
|
|
376
|
+
readonly additionalProperties: true;
|
|
377
|
+
readonly propertyNames: {
|
|
378
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
379
|
+
};
|
|
380
|
+
};
|
|
381
|
+
readonly CredentialScope: {
|
|
382
|
+
readonly title: "CredentialScope";
|
|
383
|
+
readonly type: "object";
|
|
384
|
+
readonly additionalProperties: false;
|
|
385
|
+
readonly description: "What one issuance may do. For storage models, `prefix` and `actions` (both required, a rule this schema leaves to the custodian because other models use neither); for `s3-static-presign`, also `objectKey`, since a presigned URL is one operation on one object; for `oauth2-private-key-jwt`, `scopes`.";
|
|
386
|
+
readonly properties: {
|
|
387
|
+
readonly prefix: {
|
|
388
|
+
readonly $ref: "#/$defs/ProviderObjectPrefix";
|
|
389
|
+
};
|
|
390
|
+
readonly actions: {
|
|
391
|
+
readonly type: "array";
|
|
392
|
+
readonly minItems: 1;
|
|
393
|
+
readonly maxItems: 3;
|
|
394
|
+
readonly uniqueItems: true;
|
|
395
|
+
readonly items: {
|
|
396
|
+
readonly $ref: "#/$defs/ProviderObjectAction";
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
readonly objectKey: {
|
|
400
|
+
readonly type: "string";
|
|
401
|
+
readonly minLength: 1;
|
|
402
|
+
readonly maxLength: 1024;
|
|
403
|
+
readonly pattern: "^[A-Za-z0-9._-]+$";
|
|
404
|
+
readonly description: "`s3-static-presign` only: the object's name within `prefix`. The presigned URL names `prefix` + `objectKey` and nothing else, and `actions` must hold exactly one action.";
|
|
405
|
+
};
|
|
406
|
+
readonly scopes: {
|
|
407
|
+
readonly type: "array";
|
|
408
|
+
readonly maxItems: 64;
|
|
409
|
+
readonly uniqueItems: true;
|
|
410
|
+
readonly items: {
|
|
411
|
+
readonly type: "string";
|
|
412
|
+
readonly maxLength: 256;
|
|
413
|
+
readonly pattern: "^[!#-\\[\\]-~]+$";
|
|
414
|
+
};
|
|
415
|
+
readonly description: "`oauth2-private-key-jwt` only: the OAuth scopes requested.";
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
};
|
|
419
|
+
readonly ProviderObjectAction: {
|
|
420
|
+
readonly title: "ProviderObjectAction";
|
|
421
|
+
readonly type: "string";
|
|
422
|
+
readonly enum: readonly ["put", "get", "delete"];
|
|
423
|
+
readonly description: "`put`: write an object. `get`: read one. `delete`: remove one. No list, ACL, policy or bucket-level action exists here, so none can be granted.";
|
|
424
|
+
};
|
|
425
|
+
readonly ProviderObjectPrefix: {
|
|
426
|
+
readonly title: "ProviderObjectPrefix";
|
|
427
|
+
readonly type: "string";
|
|
428
|
+
readonly minLength: 2;
|
|
429
|
+
readonly maxLength: 512;
|
|
430
|
+
readonly pattern: "^([a-z0-9][a-z0-9._-]{0,127}/){1,16}$";
|
|
431
|
+
readonly description: "An object-key prefix within the account's bucket: one or more segments of lowercase letters, digits, `.`, `_` and `-`, each beginning with a letter or digit and ending with `/`. No quote, backslash, wildcard, whitespace, `..` segment or empty segment can appear. That is deliberate: the custodian places this value inside a provider policy — an IAM session policy (JSON), a GCS Credential Access Boundary condition (CEL) — and a value able to carry a metacharacter can break out of the string it is placed in and widen the policy. That is a known class of defect (CVE-2026-42811, a CEL injection in downscoped GCS credentials). Even with this pattern, a custodian MUST build provider policies with the provider language's own encoder, never by string interpolation.";
|
|
432
|
+
};
|
|
433
|
+
readonly SealedTransferBundle: {
|
|
434
|
+
readonly title: "SealedTransferBundle";
|
|
435
|
+
readonly type: "string";
|
|
436
|
+
readonly minLength: 64;
|
|
437
|
+
readonly maxLength: 65536;
|
|
438
|
+
readonly pattern: "^-----BEGIN VTA SEALED BUNDLE-----[\\s\\S]+-----END VTA SEALED BUNDLE-----\\s*$";
|
|
439
|
+
readonly description: "A sealed-transfer bundle: OpenPGP-style ASCII armor around an HPKE-sealed `SealedPayloadV1` (base mode, X25519-HKDF-SHA256 KEM, HKDF-SHA256 KDF, ChaCha20-Poly1305 AEAD, info string `vta-sealed-transfer/v1`), with a producer assertion and Bundle-Id, Chunk and Digest-Algo headers bound into the associated data. Each task states the key it is sealed to: a single-use wrapping key from keys/import-wrapping-key for external/accounts/secret/set, and the caller's key-agreement key for external/credentials/issue. Its cleartext is an ExternalSecretPayload or an ExternalCredentialPayload. The only form in which secret material crosses the wire in this family, in either direction: the seal is what keeps a terminating proxy, a relay, a request log or a debug dump of \"the response\" from ever holding a usable secret, whatever transport carried the document.";
|
|
440
|
+
};
|
|
441
|
+
readonly AccountId: {
|
|
442
|
+
readonly title: "AccountId";
|
|
443
|
+
readonly type: "string";
|
|
444
|
+
readonly minLength: 1;
|
|
445
|
+
readonly maxLength: 64;
|
|
446
|
+
readonly pattern: "^[a-z0-9][a-z0-9-]*$";
|
|
447
|
+
readonly description: "The account's identifier within its context, chosen by whoever creates it. Lowercase letters, digits and hyphens, so that it can be embedded in a certificate subject, a token subject or a provider-side condition without escaping. Unique per context; never reused after deletion while anything that names it (a provider-side trust policy, an audit row) may still exist.";
|
|
448
|
+
};
|
|
449
|
+
readonly AccountContextId: {
|
|
450
|
+
readonly title: "AccountContextId";
|
|
451
|
+
readonly type: "string";
|
|
452
|
+
readonly minLength: 1;
|
|
453
|
+
readonly maxLength: 256;
|
|
454
|
+
readonly description: "The custodian context that owns the account. Act scope in this context decides who may manage the account and who may consume it; the account's keys are derived in this context's key space.";
|
|
455
|
+
};
|
|
456
|
+
};
|
|
457
|
+
};
|
|
458
|
+
};
|
|
459
|
+
/**
|
|
460
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
461
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
462
|
+
* parties (§7.3 item 5).
|
|
463
|
+
*/
|
|
464
|
+
export declare const RESPONSE_SPEC: {
|
|
465
|
+
readonly typeUri: "https://trusttasks.org/spec/external/credentials/issue/0.1#response";
|
|
466
|
+
readonly isBearer: false;
|
|
467
|
+
readonly isProofRequired: true;
|
|
468
|
+
readonly isRecipientRequired: true;
|
|
469
|
+
readonly isIssuedAtRequired: true;
|
|
470
|
+
readonly payloadSchema: {
|
|
471
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
472
|
+
readonly $ref: "#/$defs/Response";
|
|
473
|
+
readonly $defs: {
|
|
474
|
+
readonly Response: {
|
|
475
|
+
readonly $anchor: "response";
|
|
476
|
+
readonly title: "External Credentials — Issue — response payload";
|
|
477
|
+
readonly type: "object";
|
|
478
|
+
readonly additionalProperties: false;
|
|
479
|
+
readonly required: readonly ["sealedCredential", "expiresAt", "scope"];
|
|
480
|
+
readonly properties: {
|
|
481
|
+
readonly sealedCredential: {
|
|
482
|
+
readonly $ref: "#/$defs/SealedTransferBundle";
|
|
483
|
+
};
|
|
484
|
+
readonly expiresAt: {
|
|
485
|
+
readonly type: "string";
|
|
486
|
+
readonly format: "date-time";
|
|
487
|
+
readonly description: "The provider's expiry for the credential, in the clear.";
|
|
488
|
+
};
|
|
489
|
+
readonly scope: {
|
|
490
|
+
readonly $ref: "#/$defs/CredentialScope";
|
|
491
|
+
readonly description: "The scope actually granted, which equals the requested one.";
|
|
492
|
+
};
|
|
493
|
+
readonly ext: {
|
|
494
|
+
readonly $ref: "#/$defs/Ext";
|
|
495
|
+
};
|
|
496
|
+
};
|
|
497
|
+
};
|
|
498
|
+
readonly Ext: {
|
|
499
|
+
readonly title: "Ext";
|
|
500
|
+
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.";
|
|
501
|
+
readonly type: "object";
|
|
502
|
+
readonly minProperties: 1;
|
|
503
|
+
readonly additionalProperties: true;
|
|
504
|
+
readonly propertyNames: {
|
|
505
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
506
|
+
};
|
|
507
|
+
};
|
|
508
|
+
readonly CredentialScope: {
|
|
509
|
+
readonly title: "CredentialScope";
|
|
510
|
+
readonly type: "object";
|
|
511
|
+
readonly additionalProperties: false;
|
|
512
|
+
readonly description: "What one issuance may do. For storage models, `prefix` and `actions` (both required, a rule this schema leaves to the custodian because other models use neither); for `s3-static-presign`, also `objectKey`, since a presigned URL is one operation on one object; for `oauth2-private-key-jwt`, `scopes`.";
|
|
513
|
+
readonly properties: {
|
|
514
|
+
readonly prefix: {
|
|
515
|
+
readonly $ref: "#/$defs/ProviderObjectPrefix";
|
|
516
|
+
};
|
|
517
|
+
readonly actions: {
|
|
518
|
+
readonly type: "array";
|
|
519
|
+
readonly minItems: 1;
|
|
520
|
+
readonly maxItems: 3;
|
|
521
|
+
readonly uniqueItems: true;
|
|
522
|
+
readonly items: {
|
|
523
|
+
readonly $ref: "#/$defs/ProviderObjectAction";
|
|
524
|
+
};
|
|
525
|
+
};
|
|
526
|
+
readonly objectKey: {
|
|
527
|
+
readonly type: "string";
|
|
528
|
+
readonly minLength: 1;
|
|
529
|
+
readonly maxLength: 1024;
|
|
530
|
+
readonly pattern: "^[A-Za-z0-9._-]+$";
|
|
531
|
+
readonly description: "`s3-static-presign` only: the object's name within `prefix`. The presigned URL names `prefix` + `objectKey` and nothing else, and `actions` must hold exactly one action.";
|
|
532
|
+
};
|
|
533
|
+
readonly scopes: {
|
|
534
|
+
readonly type: "array";
|
|
535
|
+
readonly maxItems: 64;
|
|
536
|
+
readonly uniqueItems: true;
|
|
537
|
+
readonly items: {
|
|
538
|
+
readonly type: "string";
|
|
539
|
+
readonly maxLength: 256;
|
|
540
|
+
readonly pattern: "^[!#-\\[\\]-~]+$";
|
|
541
|
+
};
|
|
542
|
+
readonly description: "`oauth2-private-key-jwt` only: the OAuth scopes requested.";
|
|
543
|
+
};
|
|
544
|
+
};
|
|
545
|
+
};
|
|
546
|
+
readonly ProviderObjectAction: {
|
|
547
|
+
readonly title: "ProviderObjectAction";
|
|
548
|
+
readonly type: "string";
|
|
549
|
+
readonly enum: readonly ["put", "get", "delete"];
|
|
550
|
+
readonly description: "`put`: write an object. `get`: read one. `delete`: remove one. No list, ACL, policy or bucket-level action exists here, so none can be granted.";
|
|
551
|
+
};
|
|
552
|
+
readonly ProviderObjectPrefix: {
|
|
553
|
+
readonly title: "ProviderObjectPrefix";
|
|
554
|
+
readonly type: "string";
|
|
555
|
+
readonly minLength: 2;
|
|
556
|
+
readonly maxLength: 512;
|
|
557
|
+
readonly pattern: "^([a-z0-9][a-z0-9._-]{0,127}/){1,16}$";
|
|
558
|
+
readonly description: "An object-key prefix within the account's bucket: one or more segments of lowercase letters, digits, `.`, `_` and `-`, each beginning with a letter or digit and ending with `/`. No quote, backslash, wildcard, whitespace, `..` segment or empty segment can appear. That is deliberate: the custodian places this value inside a provider policy — an IAM session policy (JSON), a GCS Credential Access Boundary condition (CEL) — and a value able to carry a metacharacter can break out of the string it is placed in and widen the policy. That is a known class of defect (CVE-2026-42811, a CEL injection in downscoped GCS credentials). Even with this pattern, a custodian MUST build provider policies with the provider language's own encoder, never by string interpolation.";
|
|
559
|
+
};
|
|
560
|
+
readonly SealedTransferBundle: {
|
|
561
|
+
readonly title: "SealedTransferBundle";
|
|
562
|
+
readonly type: "string";
|
|
563
|
+
readonly minLength: 64;
|
|
564
|
+
readonly maxLength: 65536;
|
|
565
|
+
readonly pattern: "^-----BEGIN VTA SEALED BUNDLE-----[\\s\\S]+-----END VTA SEALED BUNDLE-----\\s*$";
|
|
566
|
+
readonly description: "A sealed-transfer bundle: OpenPGP-style ASCII armor around an HPKE-sealed `SealedPayloadV1` (base mode, X25519-HKDF-SHA256 KEM, HKDF-SHA256 KDF, ChaCha20-Poly1305 AEAD, info string `vta-sealed-transfer/v1`), with a producer assertion and Bundle-Id, Chunk and Digest-Algo headers bound into the associated data. Each task states the key it is sealed to: a single-use wrapping key from keys/import-wrapping-key for external/accounts/secret/set, and the caller's key-agreement key for external/credentials/issue. Its cleartext is an ExternalSecretPayload or an ExternalCredentialPayload. The only form in which secret material crosses the wire in this family, in either direction: the seal is what keeps a terminating proxy, a relay, a request log or a debug dump of \"the response\" from ever holding a usable secret, whatever transport carried the document.";
|
|
567
|
+
};
|
|
568
|
+
readonly AccountId: {
|
|
569
|
+
readonly title: "AccountId";
|
|
570
|
+
readonly type: "string";
|
|
571
|
+
readonly minLength: 1;
|
|
572
|
+
readonly maxLength: 64;
|
|
573
|
+
readonly pattern: "^[a-z0-9][a-z0-9-]*$";
|
|
574
|
+
readonly description: "The account's identifier within its context, chosen by whoever creates it. Lowercase letters, digits and hyphens, so that it can be embedded in a certificate subject, a token subject or a provider-side condition without escaping. Unique per context; never reused after deletion while anything that names it (a provider-side trust policy, an audit row) may still exist.";
|
|
575
|
+
};
|
|
576
|
+
readonly AccountContextId: {
|
|
577
|
+
readonly title: "AccountContextId";
|
|
578
|
+
readonly type: "string";
|
|
579
|
+
readonly minLength: 1;
|
|
580
|
+
readonly maxLength: 256;
|
|
581
|
+
readonly description: "The custodian context that owns the account. Act scope in this context decides who may manage the account and who may consume it; the account's keys are derived in this context's key space.";
|
|
582
|
+
};
|
|
583
|
+
};
|
|
584
|
+
};
|
|
585
|
+
};
|
|
586
|
+
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/external/credentials/issue/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG7K;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IACvB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AACD,MAAM,WAAW,uCAAuC;IACtD,gBAAgB,EAAE,oBAAoB,CAAC;IACvC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,eAAe,CAAC;IACvB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,kHAAkH;AAClH,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;AAEpI,2BAA2B;AAC3B,eAAO,MAAM,QAAQ,EAAG,4DAAqE,CAAC;AAE9F,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,+BAA+B,CAAC;AAEtD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAG,qEAA8E,CAAC;AAEhH,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,uCAAuC,CAAC;AAE/D;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwJjB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0H1B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC"}
|