@openvtc/trust-tasks 0.23.8 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -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/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
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/external/accounts/secret/set/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { AccountContextId, AccountId, Ext, SealedTransferBundle, SecretFingerprint } from "../../../../../_shared/components.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Set a static external account's secret, sealed to the custodian. Write-only. The outer document members are owned by the framework — SPEC §6.3.
|
|
11
|
+
*/
|
|
12
|
+
export interface ExternalAccountsSecretSetPayload {
|
|
13
|
+
context: AccountContextId;
|
|
14
|
+
id: AccountId;
|
|
15
|
+
/**
|
|
16
|
+
* The `keyId` keys/import-wrapping-key returned with the wrapping key `sealedSecret` is sealed to. The custodian opens the bundle with that key only, and discards it whether or not the bundle opens, so a failed attempt cannot be retried against the same key.
|
|
17
|
+
*/
|
|
18
|
+
wrappingKeyId: string;
|
|
19
|
+
sealedSecret: SealedTransferBundle;
|
|
20
|
+
ext?: Ext;
|
|
21
|
+
}
|
|
22
|
+
export interface ExternalAccountsSecretSetResponsePayload {
|
|
23
|
+
fingerprint: SecretFingerprint;
|
|
24
|
+
setAt: string;
|
|
25
|
+
ext?: Ext;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
29
|
+
export type { AccountContextId, AccountId, Ext, SealedTransferBundle, SecretFingerprint };
|
|
30
|
+
|
|
31
|
+
/** Trust Task type URI. */
|
|
32
|
+
export const TYPE_URI = "https://trusttasks.org/spec/external/accounts/secret/set/0.1" as const;
|
|
33
|
+
|
|
34
|
+
/** Stable alias for this specification's request payload shape. */
|
|
35
|
+
export type Payload = ExternalAccountsSecretSetPayload;
|
|
36
|
+
|
|
37
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
38
|
+
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/external/accounts/secret/set/0.1#response" as const;
|
|
39
|
+
|
|
40
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
41
|
+
export type Response = ExternalAccountsSecretSetResponsePayload;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* This specification's payload schema, as a value.
|
|
45
|
+
*
|
|
46
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
47
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
48
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
49
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
50
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
51
|
+
*/
|
|
52
|
+
export const PAYLOAD_SCHEMA = {
|
|
53
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
54
|
+
"$id": "https://trusttasks.org/spec/external/accounts/secret/set/0.1",
|
|
55
|
+
"title": "External Accounts — Secret — Set — payload",
|
|
56
|
+
"description": "Set a static external account's secret, sealed to the custodian. Write-only. The outer document members are owned by the framework — SPEC §6.3.",
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": false,
|
|
59
|
+
"required": [
|
|
60
|
+
"context",
|
|
61
|
+
"id",
|
|
62
|
+
"wrappingKeyId",
|
|
63
|
+
"sealedSecret"
|
|
64
|
+
],
|
|
65
|
+
"properties": {
|
|
66
|
+
"context": {
|
|
67
|
+
"$ref": "#/$defs/AccountContextId"
|
|
68
|
+
},
|
|
69
|
+
"id": {
|
|
70
|
+
"$ref": "#/$defs/AccountId"
|
|
71
|
+
},
|
|
72
|
+
"wrappingKeyId": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"minLength": 1,
|
|
75
|
+
"maxLength": 128,
|
|
76
|
+
"description": "The `keyId` keys/import-wrapping-key returned with the wrapping key `sealedSecret` is sealed to. The custodian opens the bundle with that key only, and discards it whether or not the bundle opens, so a failed attempt cannot be retried against the same key."
|
|
77
|
+
},
|
|
78
|
+
"sealedSecret": {
|
|
79
|
+
"$ref": "#/$defs/SealedTransferBundle"
|
|
80
|
+
},
|
|
81
|
+
"ext": {
|
|
82
|
+
"$ref": "#/$defs/Ext"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"$defs": {
|
|
86
|
+
"Response": {
|
|
87
|
+
"$anchor": "response",
|
|
88
|
+
"title": "External Accounts — Secret — Set — response payload",
|
|
89
|
+
"type": "object",
|
|
90
|
+
"additionalProperties": false,
|
|
91
|
+
"required": [
|
|
92
|
+
"fingerprint",
|
|
93
|
+
"setAt"
|
|
94
|
+
],
|
|
95
|
+
"properties": {
|
|
96
|
+
"fingerprint": {
|
|
97
|
+
"$ref": "#/$defs/SecretFingerprint"
|
|
98
|
+
},
|
|
99
|
+
"setAt": {
|
|
100
|
+
"type": "string",
|
|
101
|
+
"format": "date-time"
|
|
102
|
+
},
|
|
103
|
+
"ext": {
|
|
104
|
+
"$ref": "#/$defs/Ext"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"Ext": {
|
|
109
|
+
"title": "Ext",
|
|
110
|
+
"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.",
|
|
111
|
+
"type": "object",
|
|
112
|
+
"minProperties": 1,
|
|
113
|
+
"additionalProperties": true,
|
|
114
|
+
"propertyNames": {
|
|
115
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"SecretFingerprint": {
|
|
119
|
+
"title": "SecretFingerprint",
|
|
120
|
+
"type": "string",
|
|
121
|
+
"pattern": "^hmacsha256:[A-Za-z0-9_-]{22}$",
|
|
122
|
+
"maxLength": 33,
|
|
123
|
+
"description": "Which secret is set, without being a way to test guesses at it. `hmacsha256:` followed by the base64url encoding, without padding, of the first 16 bytes of HMAC-SHA256 over the secret's bytes under a fingerprint key the custodian holds and never discloses. Comparable only between fingerprints made by the same custodian: a re-entered value can be confirmed, while the same secret at two custodians gives unrelated fingerprints. Never a bare hash of the secret, which would let anyone who reads it run a dictionary against it offline; and deliberately not a DigestMultibase, since multihash has no code for a keyed digest."
|
|
124
|
+
},
|
|
125
|
+
"SealedTransferBundle": {
|
|
126
|
+
"title": "SealedTransferBundle",
|
|
127
|
+
"type": "string",
|
|
128
|
+
"minLength": 64,
|
|
129
|
+
"maxLength": 65536,
|
|
130
|
+
"pattern": "^-----BEGIN VTA SEALED BUNDLE-----[\\s\\S]+-----END VTA SEALED BUNDLE-----\\s*$",
|
|
131
|
+
"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."
|
|
132
|
+
},
|
|
133
|
+
"AccountId": {
|
|
134
|
+
"title": "AccountId",
|
|
135
|
+
"type": "string",
|
|
136
|
+
"minLength": 1,
|
|
137
|
+
"maxLength": 64,
|
|
138
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
139
|
+
"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."
|
|
140
|
+
},
|
|
141
|
+
"AccountContextId": {
|
|
142
|
+
"title": "AccountContextId",
|
|
143
|
+
"type": "string",
|
|
144
|
+
"minLength": 1,
|
|
145
|
+
"maxLength": 256,
|
|
146
|
+
"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."
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
} as const;
|
|
150
|
+
|
|
151
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
152
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
153
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
154
|
+
"$ref": "#/$defs/Response",
|
|
155
|
+
"$defs": {
|
|
156
|
+
"Response": {
|
|
157
|
+
"$anchor": "response",
|
|
158
|
+
"title": "External Accounts — Secret — Set — response payload",
|
|
159
|
+
"type": "object",
|
|
160
|
+
"additionalProperties": false,
|
|
161
|
+
"required": [
|
|
162
|
+
"fingerprint",
|
|
163
|
+
"setAt"
|
|
164
|
+
],
|
|
165
|
+
"properties": {
|
|
166
|
+
"fingerprint": {
|
|
167
|
+
"$ref": "#/$defs/SecretFingerprint"
|
|
168
|
+
},
|
|
169
|
+
"setAt": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"format": "date-time"
|
|
172
|
+
},
|
|
173
|
+
"ext": {
|
|
174
|
+
"$ref": "#/$defs/Ext"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"Ext": {
|
|
179
|
+
"title": "Ext",
|
|
180
|
+
"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.",
|
|
181
|
+
"type": "object",
|
|
182
|
+
"minProperties": 1,
|
|
183
|
+
"additionalProperties": true,
|
|
184
|
+
"propertyNames": {
|
|
185
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"SecretFingerprint": {
|
|
189
|
+
"title": "SecretFingerprint",
|
|
190
|
+
"type": "string",
|
|
191
|
+
"pattern": "^hmacsha256:[A-Za-z0-9_-]{22}$",
|
|
192
|
+
"maxLength": 33,
|
|
193
|
+
"description": "Which secret is set, without being a way to test guesses at it. `hmacsha256:` followed by the base64url encoding, without padding, of the first 16 bytes of HMAC-SHA256 over the secret's bytes under a fingerprint key the custodian holds and never discloses. Comparable only between fingerprints made by the same custodian: a re-entered value can be confirmed, while the same secret at two custodians gives unrelated fingerprints. Never a bare hash of the secret, which would let anyone who reads it run a dictionary against it offline; and deliberately not a DigestMultibase, since multihash has no code for a keyed digest."
|
|
194
|
+
},
|
|
195
|
+
"SealedTransferBundle": {
|
|
196
|
+
"title": "SealedTransferBundle",
|
|
197
|
+
"type": "string",
|
|
198
|
+
"minLength": 64,
|
|
199
|
+
"maxLength": 65536,
|
|
200
|
+
"pattern": "^-----BEGIN VTA SEALED BUNDLE-----[\\s\\S]+-----END VTA SEALED BUNDLE-----\\s*$",
|
|
201
|
+
"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."
|
|
202
|
+
},
|
|
203
|
+
"AccountId": {
|
|
204
|
+
"title": "AccountId",
|
|
205
|
+
"type": "string",
|
|
206
|
+
"minLength": 1,
|
|
207
|
+
"maxLength": 64,
|
|
208
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
209
|
+
"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."
|
|
210
|
+
},
|
|
211
|
+
"AccountContextId": {
|
|
212
|
+
"title": "AccountContextId",
|
|
213
|
+
"type": "string",
|
|
214
|
+
"minLength": 1,
|
|
215
|
+
"maxLength": 256,
|
|
216
|
+
"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."
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
} as const;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
223
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
224
|
+
* per-specification and cannot be derived from the document alone, and
|
|
225
|
+
* item 2 needs the schema this carries.
|
|
226
|
+
*/
|
|
227
|
+
export const SPEC = {
|
|
228
|
+
typeUri: TYPE_URI,
|
|
229
|
+
isBearer: false,
|
|
230
|
+
isProofRequired: true,
|
|
231
|
+
isRecipientRequired: true,
|
|
232
|
+
isIssuedAtRequired: true,
|
|
233
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
234
|
+
} as const;
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
238
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
239
|
+
* parties (§7.3 item 5).
|
|
240
|
+
*/
|
|
241
|
+
export const RESPONSE_SPEC = {
|
|
242
|
+
typeUri: RESPONSE_TYPE_URI,
|
|
243
|
+
isBearer: false,
|
|
244
|
+
isProofRequired: true,
|
|
245
|
+
isRecipientRequired: true,
|
|
246
|
+
isIssuedAtRequired: true,
|
|
247
|
+
payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
|
|
248
|
+
} as const;
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/external/accounts/setup/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { AccountContextId, AccountId, AccountSetupArtifacts, AuthModel, Ext } from "../../../../_shared/components.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Generate the provider-side setup for an external account. The outer document members are owned by the framework — SPEC §6.3.
|
|
11
|
+
*/
|
|
12
|
+
export interface ExternalAccountsSetupPayload {
|
|
13
|
+
context: AccountContextId;
|
|
14
|
+
id: AccountId;
|
|
15
|
+
ext?: Ext;
|
|
16
|
+
}
|
|
17
|
+
export interface ExternalAccountsSetupResponsePayload {
|
|
18
|
+
setup: AccountSetupArtifacts;
|
|
19
|
+
ext?: Ext;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
23
|
+
export type { AccountContextId, AccountId, AccountSetupArtifacts, AuthModel, Ext };
|
|
24
|
+
|
|
25
|
+
/** Trust Task type URI. */
|
|
26
|
+
export const TYPE_URI = "https://trusttasks.org/spec/external/accounts/setup/0.1" as const;
|
|
27
|
+
|
|
28
|
+
/** Stable alias for this specification's request payload shape. */
|
|
29
|
+
export type Payload = ExternalAccountsSetupPayload;
|
|
30
|
+
|
|
31
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
32
|
+
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/external/accounts/setup/0.1#response" as const;
|
|
33
|
+
|
|
34
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
35
|
+
export type Response = ExternalAccountsSetupResponsePayload;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* This specification's payload schema, as a value.
|
|
39
|
+
*
|
|
40
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
41
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
42
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
43
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
44
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
45
|
+
*/
|
|
46
|
+
export const PAYLOAD_SCHEMA = {
|
|
47
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
48
|
+
"$id": "https://trusttasks.org/spec/external/accounts/setup/0.1",
|
|
49
|
+
"title": "External Accounts — Setup — payload",
|
|
50
|
+
"description": "Generate the provider-side setup for an external account. The outer document members are owned by the framework — SPEC §6.3.",
|
|
51
|
+
"type": "object",
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"required": [
|
|
54
|
+
"context",
|
|
55
|
+
"id"
|
|
56
|
+
],
|
|
57
|
+
"properties": {
|
|
58
|
+
"context": {
|
|
59
|
+
"$ref": "#/$defs/AccountContextId"
|
|
60
|
+
},
|
|
61
|
+
"id": {
|
|
62
|
+
"$ref": "#/$defs/AccountId"
|
|
63
|
+
},
|
|
64
|
+
"ext": {
|
|
65
|
+
"$ref": "#/$defs/Ext"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"$defs": {
|
|
69
|
+
"Response": {
|
|
70
|
+
"$anchor": "response",
|
|
71
|
+
"title": "External Accounts — Setup — response payload",
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": false,
|
|
74
|
+
"required": [
|
|
75
|
+
"setup"
|
|
76
|
+
],
|
|
77
|
+
"properties": {
|
|
78
|
+
"setup": {
|
|
79
|
+
"$ref": "#/$defs/AccountSetupArtifacts"
|
|
80
|
+
},
|
|
81
|
+
"ext": {
|
|
82
|
+
"$ref": "#/$defs/Ext"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"Ext": {
|
|
87
|
+
"title": "Ext",
|
|
88
|
+
"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.",
|
|
89
|
+
"type": "object",
|
|
90
|
+
"minProperties": 1,
|
|
91
|
+
"additionalProperties": true,
|
|
92
|
+
"propertyNames": {
|
|
93
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"AccountSetupArtifacts": {
|
|
97
|
+
"title": "AccountSetupArtifacts",
|
|
98
|
+
"type": "object",
|
|
99
|
+
"additionalProperties": false,
|
|
100
|
+
"required": [
|
|
101
|
+
"model",
|
|
102
|
+
"artifacts",
|
|
103
|
+
"steps"
|
|
104
|
+
],
|
|
105
|
+
"description": "What an administrator does at the provider to make an account usable, generated by the custodian from the account's settings, public material and bindings. Public material and policy only: never a private key or secret, and the custodian never asks for the provider's administrator credentials.",
|
|
106
|
+
"properties": {
|
|
107
|
+
"model": {
|
|
108
|
+
"$ref": "#/$defs/AuthModel"
|
|
109
|
+
},
|
|
110
|
+
"artifacts": {
|
|
111
|
+
"type": "array",
|
|
112
|
+
"maxItems": 16,
|
|
113
|
+
"items": {
|
|
114
|
+
"type": "object",
|
|
115
|
+
"additionalProperties": false,
|
|
116
|
+
"required": [
|
|
117
|
+
"name",
|
|
118
|
+
"mediaType",
|
|
119
|
+
"content"
|
|
120
|
+
],
|
|
121
|
+
"properties": {
|
|
122
|
+
"name": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"maxLength": 128,
|
|
125
|
+
"pattern": "^[A-Za-z0-9._-]+$",
|
|
126
|
+
"description": "File name to save it under: `trust-anchor.pem`, `jwks.json`, `permissions-policy.json`, `crl.pem`."
|
|
127
|
+
},
|
|
128
|
+
"mediaType": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"maxLength": 128,
|
|
131
|
+
"pattern": "^[a-z]+/[a-z0-9.+-]+$"
|
|
132
|
+
},
|
|
133
|
+
"content": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"maxLength": 65536
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"steps": {
|
|
141
|
+
"type": "array",
|
|
142
|
+
"maxItems": 32,
|
|
143
|
+
"items": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"additionalProperties": false,
|
|
146
|
+
"required": [
|
|
147
|
+
"description"
|
|
148
|
+
],
|
|
149
|
+
"properties": {
|
|
150
|
+
"description": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"maxLength": 1024
|
|
153
|
+
},
|
|
154
|
+
"command": {
|
|
155
|
+
"type": "string",
|
|
156
|
+
"maxLength": 8192,
|
|
157
|
+
"description": "A provider CLI command (`aws rolesanywhere create-trust-anchor …`, `gcloud iam workload-identity-pools providers create-oidc … --jwk-json-path`, `az ad app credential reset --cert …`), referring to artifacts by `name`."
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"AuthModel": {
|
|
165
|
+
"title": "AuthModel",
|
|
166
|
+
"type": "string",
|
|
167
|
+
"enum": [
|
|
168
|
+
"aws-roles-anywhere",
|
|
169
|
+
"gcp-wif-pinned",
|
|
170
|
+
"azure-cert",
|
|
171
|
+
"oauth2-private-key-jwt",
|
|
172
|
+
"s3-static-presign",
|
|
173
|
+
"sui-signer",
|
|
174
|
+
"static-secret"
|
|
175
|
+
],
|
|
176
|
+
"description": "How the account authenticates to its provider. Every model pins the custodian's verification material in the provider's own account, uploaded once, so no model requires the custodian to be reachable from the internet. `aws-roles-anywhere`: the custodian is the certificate authority of an IAM Roles Anywhere trust anchor, and signs CreateSession with a short-lived end-entity certificate it issued to the account's own key. `gcp-wif-pinned`: a Workload Identity Federation pool provider holds an uploaded JWKS; the custodian signs an ID token and exchanges it at Google's STS. `azure-cert`: a certificate uploaded to an Entra app registration; the custodian signs an RFC 7523 client assertion. `oauth2-private-key-jwt`: the same RFC 7523 client authentication against any token endpoint that registered the custodian's public key. `s3-static-presign`: an access-key pair for an S3-compatible store that cannot federate; the custodian presigns per-object URLs and never releases the key. `sui-signer`: a Sui address derived from the custodian's key; the custodian signs only allow-listed transactions. `static-secret`: an API key or token used inside the custodian by a named driver; last resort, never released.\n\nPlain OpenID Connect discovery federation is deliberately absent. It works by the provider fetching the issuer's JWKS from a public URL, which either makes the custodian reachable from the internet or makes whoever hosts a copy of the JWKS able to mint credentials for every federated role."
|
|
177
|
+
},
|
|
178
|
+
"AccountId": {
|
|
179
|
+
"title": "AccountId",
|
|
180
|
+
"type": "string",
|
|
181
|
+
"minLength": 1,
|
|
182
|
+
"maxLength": 64,
|
|
183
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
184
|
+
"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."
|
|
185
|
+
},
|
|
186
|
+
"AccountContextId": {
|
|
187
|
+
"title": "AccountContextId",
|
|
188
|
+
"type": "string",
|
|
189
|
+
"minLength": 1,
|
|
190
|
+
"maxLength": 256,
|
|
191
|
+
"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."
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
} as const;
|
|
195
|
+
|
|
196
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
197
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
198
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
199
|
+
"$ref": "#/$defs/Response",
|
|
200
|
+
"$defs": {
|
|
201
|
+
"Response": {
|
|
202
|
+
"$anchor": "response",
|
|
203
|
+
"title": "External Accounts — Setup — response payload",
|
|
204
|
+
"type": "object",
|
|
205
|
+
"additionalProperties": false,
|
|
206
|
+
"required": [
|
|
207
|
+
"setup"
|
|
208
|
+
],
|
|
209
|
+
"properties": {
|
|
210
|
+
"setup": {
|
|
211
|
+
"$ref": "#/$defs/AccountSetupArtifacts"
|
|
212
|
+
},
|
|
213
|
+
"ext": {
|
|
214
|
+
"$ref": "#/$defs/Ext"
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
"Ext": {
|
|
219
|
+
"title": "Ext",
|
|
220
|
+
"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.",
|
|
221
|
+
"type": "object",
|
|
222
|
+
"minProperties": 1,
|
|
223
|
+
"additionalProperties": true,
|
|
224
|
+
"propertyNames": {
|
|
225
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
"AccountSetupArtifacts": {
|
|
229
|
+
"title": "AccountSetupArtifacts",
|
|
230
|
+
"type": "object",
|
|
231
|
+
"additionalProperties": false,
|
|
232
|
+
"required": [
|
|
233
|
+
"model",
|
|
234
|
+
"artifacts",
|
|
235
|
+
"steps"
|
|
236
|
+
],
|
|
237
|
+
"description": "What an administrator does at the provider to make an account usable, generated by the custodian from the account's settings, public material and bindings. Public material and policy only: never a private key or secret, and the custodian never asks for the provider's administrator credentials.",
|
|
238
|
+
"properties": {
|
|
239
|
+
"model": {
|
|
240
|
+
"$ref": "#/$defs/AuthModel"
|
|
241
|
+
},
|
|
242
|
+
"artifacts": {
|
|
243
|
+
"type": "array",
|
|
244
|
+
"maxItems": 16,
|
|
245
|
+
"items": {
|
|
246
|
+
"type": "object",
|
|
247
|
+
"additionalProperties": false,
|
|
248
|
+
"required": [
|
|
249
|
+
"name",
|
|
250
|
+
"mediaType",
|
|
251
|
+
"content"
|
|
252
|
+
],
|
|
253
|
+
"properties": {
|
|
254
|
+
"name": {
|
|
255
|
+
"type": "string",
|
|
256
|
+
"maxLength": 128,
|
|
257
|
+
"pattern": "^[A-Za-z0-9._-]+$",
|
|
258
|
+
"description": "File name to save it under: `trust-anchor.pem`, `jwks.json`, `permissions-policy.json`, `crl.pem`."
|
|
259
|
+
},
|
|
260
|
+
"mediaType": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"maxLength": 128,
|
|
263
|
+
"pattern": "^[a-z]+/[a-z0-9.+-]+$"
|
|
264
|
+
},
|
|
265
|
+
"content": {
|
|
266
|
+
"type": "string",
|
|
267
|
+
"maxLength": 65536
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
"steps": {
|
|
273
|
+
"type": "array",
|
|
274
|
+
"maxItems": 32,
|
|
275
|
+
"items": {
|
|
276
|
+
"type": "object",
|
|
277
|
+
"additionalProperties": false,
|
|
278
|
+
"required": [
|
|
279
|
+
"description"
|
|
280
|
+
],
|
|
281
|
+
"properties": {
|
|
282
|
+
"description": {
|
|
283
|
+
"type": "string",
|
|
284
|
+
"maxLength": 1024
|
|
285
|
+
},
|
|
286
|
+
"command": {
|
|
287
|
+
"type": "string",
|
|
288
|
+
"maxLength": 8192,
|
|
289
|
+
"description": "A provider CLI command (`aws rolesanywhere create-trust-anchor …`, `gcloud iam workload-identity-pools providers create-oidc … --jwk-json-path`, `az ad app credential reset --cert …`), referring to artifacts by `name`."
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"AuthModel": {
|
|
297
|
+
"title": "AuthModel",
|
|
298
|
+
"type": "string",
|
|
299
|
+
"enum": [
|
|
300
|
+
"aws-roles-anywhere",
|
|
301
|
+
"gcp-wif-pinned",
|
|
302
|
+
"azure-cert",
|
|
303
|
+
"oauth2-private-key-jwt",
|
|
304
|
+
"s3-static-presign",
|
|
305
|
+
"sui-signer",
|
|
306
|
+
"static-secret"
|
|
307
|
+
],
|
|
308
|
+
"description": "How the account authenticates to its provider. Every model pins the custodian's verification material in the provider's own account, uploaded once, so no model requires the custodian to be reachable from the internet. `aws-roles-anywhere`: the custodian is the certificate authority of an IAM Roles Anywhere trust anchor, and signs CreateSession with a short-lived end-entity certificate it issued to the account's own key. `gcp-wif-pinned`: a Workload Identity Federation pool provider holds an uploaded JWKS; the custodian signs an ID token and exchanges it at Google's STS. `azure-cert`: a certificate uploaded to an Entra app registration; the custodian signs an RFC 7523 client assertion. `oauth2-private-key-jwt`: the same RFC 7523 client authentication against any token endpoint that registered the custodian's public key. `s3-static-presign`: an access-key pair for an S3-compatible store that cannot federate; the custodian presigns per-object URLs and never releases the key. `sui-signer`: a Sui address derived from the custodian's key; the custodian signs only allow-listed transactions. `static-secret`: an API key or token used inside the custodian by a named driver; last resort, never released.\n\nPlain OpenID Connect discovery federation is deliberately absent. It works by the provider fetching the issuer's JWKS from a public URL, which either makes the custodian reachable from the internet or makes whoever hosts a copy of the JWKS able to mint credentials for every federated role."
|
|
309
|
+
},
|
|
310
|
+
"AccountId": {
|
|
311
|
+
"title": "AccountId",
|
|
312
|
+
"type": "string",
|
|
313
|
+
"minLength": 1,
|
|
314
|
+
"maxLength": 64,
|
|
315
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
316
|
+
"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."
|
|
317
|
+
},
|
|
318
|
+
"AccountContextId": {
|
|
319
|
+
"title": "AccountContextId",
|
|
320
|
+
"type": "string",
|
|
321
|
+
"minLength": 1,
|
|
322
|
+
"maxLength": 256,
|
|
323
|
+
"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."
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
} as const;
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
330
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
331
|
+
* per-specification and cannot be derived from the document alone, and
|
|
332
|
+
* item 2 needs the schema this carries.
|
|
333
|
+
*/
|
|
334
|
+
export const SPEC = {
|
|
335
|
+
typeUri: TYPE_URI,
|
|
336
|
+
isBearer: false,
|
|
337
|
+
isProofRequired: false,
|
|
338
|
+
isRecipientRequired: true,
|
|
339
|
+
isIssuedAtRequired: false,
|
|
340
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
341
|
+
} as const;
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
345
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
346
|
+
* parties (§7.3 item 5).
|
|
347
|
+
*/
|
|
348
|
+
export const RESPONSE_SPEC = {
|
|
349
|
+
typeUri: RESPONSE_TYPE_URI,
|
|
350
|
+
isBearer: false,
|
|
351
|
+
isProofRequired: false,
|
|
352
|
+
isRecipientRequired: true,
|
|
353
|
+
isIssuedAtRequired: false,
|
|
354
|
+
payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
|
|
355
|
+
} as const;
|