From 37f03758b0a12dd89eef428ac5639539dcf03d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 10 Jul 2026 10:12:09 +0200 Subject: [PATCH 01/28] feat(example-test-token-v1-registry): create dummy registry server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/README.md | 1 + examples/test-token-v1-registry/package.json | 58 ++++ examples/test-token-v1-registry/src/index.ts | 9 + examples/test-token-v1-registry/src/router.ts | 13 + examples/test-token-v1-registry/src/sdk.ts | 20 ++ examples/test-token-v1-registry/tsconfig.json | 8 + .../test-token-v1-registry/tsup.config.ts | 10 + .../test-token-v1-registry/vitest.config.ts | 48 ++++ yarn.lock | 260 +++++++++++++++++- 9 files changed, 412 insertions(+), 15 deletions(-) create mode 100644 examples/test-token-v1-registry/README.md create mode 100644 examples/test-token-v1-registry/package.json create mode 100644 examples/test-token-v1-registry/src/index.ts create mode 100644 examples/test-token-v1-registry/src/router.ts create mode 100644 examples/test-token-v1-registry/src/sdk.ts create mode 100644 examples/test-token-v1-registry/tsconfig.json create mode 100644 examples/test-token-v1-registry/tsup.config.ts create mode 100644 examples/test-token-v1-registry/vitest.config.ts diff --git a/examples/test-token-v1-registry/README.md b/examples/test-token-v1-registry/README.md new file mode 100644 index 000000000..ef4f25601 --- /dev/null +++ b/examples/test-token-v1-registry/README.md @@ -0,0 +1 @@ +# @canton-network/example-test-token-v1-registry diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json new file mode 100644 index 000000000..6de02959b --- /dev/null +++ b/examples/test-token-v1-registry/package.json @@ -0,0 +1,58 @@ +{ + "name": "@canton-network/example-test-token-v1-registry", + "version": "1.0.0", + "type": "module", + "description": "Example registry backend app for CIP-0056 token.", + "license": "Apache-2.0", + "author": "Mateusz Piątkowski ", + "main": "dist/index.cjs", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup --onSuccess \"tsc\"", + "dev": "node --experimental-transform-types --watch src/index.ts", + "clean": "tsc -b --clean; rm -rf dist", + "flatpack": "yarn pack --out \"$FLATPACK_OUTDIR\"", + "test": "vitest run --project node --project browser", + "test:coverage": "vitest run --project node --project browser --coverage" + }, + "devDependencies": { + "@types/koa": "^3", + "@types/node": "^25.9.3", + "@vitest/browser-playwright": "^4.1.8", + "@vitest/coverage-v8": "^4.1.8", + "openapi-typescript": "^7.13.0", + "playwright": "^1.60.0", + "tsup": "^8.5.1", + "typescript": "^5.9.3", + "vitest": "^4.1.8" + }, + "dependencies": { + "@canton-network/wallet-sdk": "workspace:^", + "@koa/router": "^15.7.0", + "koa": "^3.2.1" + }, + "files": [ + "dist/**" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/canton-network/wallet.git", + "directory": "examples/test-token-v1-registry" + }, + "homepage": "https://github.com/canton-network/wallet/tree/main/examples/test-token-v1-registry#readme", + "bugs": { + "url": "https://github.com/canton-network/wallet/issues" + } +} diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts new file mode 100644 index 000000000..5a8cfba0a --- /dev/null +++ b/examples/test-token-v1-registry/src/index.ts @@ -0,0 +1,9 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Koa from 'koa' +import router from './router' + +const app = new Koa() + +app.use(router.routes()).use(router.allowedMethods()).listen(3000) diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts new file mode 100644 index 000000000..338909808 --- /dev/null +++ b/examples/test-token-v1-registry/src/router.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Router from '@koa/router' + +const router = new Router() + +router.get('/', (ctx, next) => { + console.log('TEST') + return next() +}) + +export default router diff --git a/examples/test-token-v1-registry/src/sdk.ts b/examples/test-token-v1-registry/src/sdk.ts new file mode 100644 index 000000000..a188e40d5 --- /dev/null +++ b/examples/test-token-v1-registry/src/sdk.ts @@ -0,0 +1,20 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { localNetStaticConfig, SDK } from '@canton-network/wallet-sdk' + +const sdk = await SDK.create({ + auth: { + method: 'self_signed', + issuer: 'unsafe-auth', + credentials: { + clientId: localNetStaticConfig.LOCALNET_USER_ID, + clientSecret: 'unsafe', + audience: 'https://canton.network.global', + scope: '', + }, + }, + ledgerClientUrl: localNetStaticConfig.LOCALNET_APP_USER_LEDGER_URL, +}) + +export default sdk diff --git a/examples/test-token-v1-registry/tsconfig.json b/examples/test-token-v1-registry/tsconfig.json new file mode 100644 index 000000000..9cf98da56 --- /dev/null +++ b/examples/test-token-v1-registry/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/examples/test-token-v1-registry/tsup.config.ts b/examples/test-token-v1-registry/tsup.config.ts new file mode 100644 index 000000000..1f4074292 --- /dev/null +++ b/examples/test-token-v1-registry/tsup.config.ts @@ -0,0 +1,10 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { defineConfig } from 'tsup' +import { base } from '../../tsup.base' + +export default defineConfig({ + ...base, + entry: ['src/index.ts'], +}) diff --git a/examples/test-token-v1-registry/vitest.config.ts b/examples/test-token-v1-registry/vitest.config.ts new file mode 100644 index 000000000..d52fa766e --- /dev/null +++ b/examples/test-token-v1-registry/vitest.config.ts @@ -0,0 +1,48 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { defineConfig, defineProject } from 'vitest/config' +import { playwright } from '@vitest/browser-playwright' + +export default defineConfig({ + test: { + coverage: { + include: ['src/**/*.ts'], + provider: 'v8', + reporter: ['text', 'html', 'lcov', 'json-summary'], + thresholds: { + lines: 80, + functions: 80, + branches: 70, + statements: 80, + }, + }, + environment: 'node', + include: ['src/**/*.test.ts'], + projects: [ + defineProject({ + test: { + name: 'node', + environment: 'node', + include: ['src/**/*.test.ts'], + }, + }), + defineProject({ + test: { + name: 'browser', + include: ['src/**/*.test.ts'], + browser: { + enabled: true, + provider: playwright({ + trace: 'off', + screenshot: 'off', + video: 'off', + }), + instances: [{ browser: 'chromium' }], + headless: true, + }, + }, + }), + ], + }, +}) diff --git a/yarn.lock b/yarn.lock index 18ec2659f..993c71521 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2157,6 +2157,25 @@ __metadata: languageName: unknown linkType: soft +"@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry": + version: 0.0.0-use.local + resolution: "@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry" + dependencies: + "@canton-network/wallet-sdk": "workspace:^" + "@koa/router": "npm:^15.7.0" + "@types/koa": "npm:^3" + "@types/node": "npm:^25.9.3" + "@vitest/browser-playwright": "npm:^4.1.8" + "@vitest/coverage-v8": "npm:^4.1.8" + koa: "npm:^3.2.1" + openapi-typescript: "npm:^7.13.0" + playwright: "npm:^1.60.0" + tsup: "npm:^8.5.1" + typescript: "npm:^5.9.3" + vitest: "npm:^4.1.8" + languageName: unknown + linkType: soft + "@canton-network/example-walletconnect@workspace:examples/walletconnect": version: 0.0.0-use.local resolution: "@canton-network/example-walletconnect@workspace:examples/walletconnect" @@ -4404,6 +4423,23 @@ __metadata: languageName: node linkType: hard +"@koa/router@npm:^15.7.0": + version: 15.7.0 + resolution: "@koa/router@npm:15.7.0" + dependencies: + debug: "npm:^4.4.3" + http-errors: "npm:^2.0.1" + koa-compose: "npm:^4.1.0" + path-to-regexp: "npm:^8.4.2" + peerDependencies: + koa: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + koa: + optional: false + checksum: 10c0/da1f23f07684f5b39db5536cd6d4b77f7e38930786c2c0c13cf27d84ab90b6c9eea5ecf17f8f4c1b87ccc822a874f64c351b6e9b4c2e6c9324765564fce689cb + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -7887,6 +7923,15 @@ __metadata: languageName: node linkType: hard +"@types/accepts@npm:*": + version: 1.3.7 + resolution: "@types/accepts@npm:1.3.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/7b21efc78b98ed57063ac31588f871f11501c080cd1201ca3743cf02ee0aee74bdb5a634183bc0987dc8dc582b26316789fd203650319ccc89a66cf88311d64f + languageName: node + linkType: hard + "@types/argparse@npm:1.0.38": version: 1.0.38 resolution: "@types/argparse@npm:1.0.38" @@ -7991,6 +8036,13 @@ __metadata: languageName: node linkType: hard +"@types/content-disposition@npm:*": + version: 0.5.9 + resolution: "@types/content-disposition@npm:0.5.9" + checksum: 10c0/9fd520dae1a9c7b85909e59f548f905a670a6e2f83642f9734d1b05126f64ac8c8e2c282a663edf27d58bc34fbbacf46a4d4a95d3802b42106174a19a68175c8 + languageName: node + linkType: hard + "@types/cookiejar@npm:^2.1.5": version: 2.1.5 resolution: "@types/cookiejar@npm:2.1.5" @@ -7998,6 +8050,18 @@ __metadata: languageName: node linkType: hard +"@types/cookies@npm:*": + version: 0.9.2 + resolution: "@types/cookies@npm:0.9.2" + dependencies: + "@types/connect": "npm:*" + "@types/express": "npm:*" + "@types/keygrip": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/75f00c83d50998b610d4fe2ddb2544fde7eb6dc683f5e68831a4ecb458b465260b8e2df4e369880a67c5b946558322c4627403781eb076ff72ca16c7ab8c47dd + languageName: node + linkType: hard + "@types/cors@npm:^2.8.19": version: 2.8.19 resolution: "@types/cors@npm:2.8.19" @@ -8086,7 +8150,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:^5.0.6": +"@types/express@npm:*, @types/express@npm:^5.0.6": version: 5.0.6 resolution: "@types/express@npm:5.0.6" dependencies: @@ -8116,7 +8180,14 @@ __metadata: languageName: node linkType: hard -"@types/http-errors@npm:*": +"@types/http-assert@npm:*": + version: 1.5.6 + resolution: "@types/http-assert@npm:1.5.6" + checksum: 10c0/62d536440a5e09f4b7968112f4b235212407937033de800993f95b6f140181b4b2ad6075b73094e7ca0ccf7d9c80d68b93ca53fb1af196cc6d0257f3a4c3d5ba + languageName: node + linkType: hard + +"@types/http-errors@npm:*, @types/http-errors@npm:^2": version: 2.0.5 resolution: "@types/http-errors@npm:2.0.5" checksum: 10c0/00f8140fbc504f47356512bd88e1910c2f07e04233d99c88c854b3600ce0523c8cd0ba7d1897667243282eb44c59abb9245959e2428b9de004f93937f52f7c15 @@ -8153,6 +8224,38 @@ __metadata: languageName: node linkType: hard +"@types/keygrip@npm:*": + version: 1.0.6 + resolution: "@types/keygrip@npm:1.0.6" + checksum: 10c0/1045a79913259f539ac1d04384ea8f61cf29f1d299040eb4b67d92304ec3bcea59b7e4b83cf95a73aa251ff62e55924e380d0c563a21fe8f6e91de20cc610386 + languageName: node + linkType: hard + +"@types/koa-compose@npm:*": + version: 3.2.9 + resolution: "@types/koa-compose@npm:3.2.9" + dependencies: + "@types/koa": "npm:*" + checksum: 10c0/d89993ffadac74488cdb2ab0fc519ec43eab5e3e7b8baa37cb7fc5043c86d812c24a179efae1324d5e80c2f7b7ddfbc944df7052cab6ff98daf1df4a084ac348 + languageName: node + linkType: hard + +"@types/koa@npm:*, @types/koa@npm:^3": + version: 3.0.3 + resolution: "@types/koa@npm:3.0.3" + dependencies: + "@types/accepts": "npm:*" + "@types/content-disposition": "npm:*" + "@types/cookies": "npm:*" + "@types/http-assert": "npm:*" + "@types/http-errors": "npm:^2" + "@types/keygrip": "npm:*" + "@types/koa-compose": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/f5bb89fe7b35611ef0e96888ad15727b0b7e9153145f88100a2c9ef43f70e5fcc4ae496cc975efabb1f945dce8b1b2f33bcd6d752ad34e6a3a2ba7e523ee9596 + languageName: node + linkType: hard + "@types/lodash@npm:^4.17.20, @types/lodash@npm:^4.17.24, @types/lodash@npm:^4.5": version: 4.17.24 resolution: "@types/lodash@npm:4.17.24" @@ -9331,6 +9434,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + "accepts@npm:^2.0.0": version: 2.0.0 resolution: "accepts@npm:2.0.0" @@ -11053,7 +11166,7 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:^1.0.0": +"content-disposition@npm:^1.0.0, content-disposition@npm:~1.0.1": version: 1.0.1 resolution: "content-disposition@npm:1.0.1" checksum: 10c0/bd7ff1fe8d2542d3a2b9a29428cc3591f6ac27bb5595bba2c69664408a68f9538b14cbd92479796ea835b317a09a527c8c7209c4200381dedb0c34d3b658849e @@ -11146,6 +11259,16 @@ __metadata: languageName: node linkType: hard +"cookies@npm:~0.9.1": + version: 0.9.1 + resolution: "cookies@npm:0.9.1" + dependencies: + depd: "npm:~2.0.0" + keygrip: "npm:~1.1.0" + checksum: 10c0/3ffa1c0e992b62ee119adae4dd2ddd4a89166fa5434cd9bd9ff84ec4d2f14dfe2318a601280abfe32a4f64f884ec9345fb1912e488b002d188d2efa0d3919ba3 + languageName: node + linkType: hard + "core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": version: 3.48.0 resolution: "core-js-compat@npm:3.48.0" @@ -11478,6 +11601,13 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:~1.0.1": + version: 1.0.1 + resolution: "deep-equal@npm:1.0.1" + checksum: 10c0/bef838ef9824e124d10335deb9c7540bfc9f2f0eab17ad1bb870d0eee83ee4e7e6f6f892e5eebc2bd82759a76676926ad5246180097e28e57752176ff7dae888 + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -11564,6 +11694,13 @@ __metadata: languageName: node linkType: hard +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + languageName: node + linkType: hard + "depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" @@ -11571,6 +11708,13 @@ __metadata: languageName: node linkType: hard +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + languageName: node + linkType: hard + "destr@npm:^2.0.5": version: 2.0.5 resolution: "destr@npm:2.0.5" @@ -11578,7 +11722,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0, destroy@npm:~1.2.0": +"destroy@npm:1.2.0, destroy@npm:^1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 @@ -13667,6 +13811,16 @@ __metadata: languageName: node linkType: hard +"http-assert@npm:^1.5.0": + version: 1.5.0 + resolution: "http-assert@npm:1.5.0" + dependencies: + deep-equal: "npm:~1.0.1" + http-errors: "npm:~1.8.0" + checksum: 10c0/7b4e631114a1a77654f9ba3feb96da305ddbdeb42112fe384b7b3249c7141e460d7177970155bea6e54e655a04850415b744b452c1fe5052eba6f4186d16b095 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" @@ -13687,6 +13841,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:~1.8.0": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:>= 1.5.0 < 2" + toidentifier: "npm:1.0.1" + checksum: 10c0/f01aeecd76260a6fe7f08e192fcbe9b2f39ed20fc717b852669a69930167053b01790998275c6297d44f435cf0e30edd50c05223d1bec9bc484e6cf35b2d6f43 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -14663,6 +14830,15 @@ __metadata: languageName: node linkType: hard +"keygrip@npm:~1.1.0": + version: 1.1.0 + resolution: "keygrip@npm:1.1.0" + dependencies: + tsscmp: "npm:1.0.6" + checksum: 10c0/2aceec1a1e642a0caf938044056ed67b1909cfe67a93a59b32aae2863e0f35a1a53782ecc8f9cd0e3bdb60863fa0f401ccbd257cd7dfae61915f78445139edea + languageName: node + linkType: hard + "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -14679,6 +14855,39 @@ __metadata: languageName: node linkType: hard +"koa-compose@npm:^4.1.0": + version: 4.1.0 + resolution: "koa-compose@npm:4.1.0" + checksum: 10c0/f1f786f994a691931148e7f38f443865bf2702af4a61610d1eea04dab79c04b1232285b59d82a0cf61c830516dd92f10ab0d009b024fcecd4098e7d296ab771a + languageName: node + linkType: hard + +"koa@npm:^3.2.1": + version: 3.2.1 + resolution: "koa@npm:3.2.1" + dependencies: + accepts: "npm:^1.3.8" + content-disposition: "npm:~1.0.1" + content-type: "npm:^1.0.5" + cookies: "npm:~0.9.1" + delegates: "npm:^1.0.0" + destroy: "npm:^1.2.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + fresh: "npm:~0.5.2" + http-assert: "npm:^1.5.0" + http-errors: "npm:^2.0.0" + koa-compose: "npm:^4.1.0" + mime-types: "npm:^3.0.1" + on-finished: "npm:^2.4.1" + parseurl: "npm:^1.3.3" + statuses: "npm:^2.0.1" + type-is: "npm:^2.0.1" + vary: "npm:^1.1.2" + checksum: 10c0/84352ef0ec0f54898f119ac589c7d96442ac21f494f3e1abca55d19c0cd51177f43b75440092d74730261d4d91270b5ba0396156e04b21132ab2251f8b4d2cde + languageName: node + linkType: hard + "kolorist@npm:^1.8.0": version: 1.8.0 resolution: "kolorist@npm:1.8.0" @@ -15284,7 +15493,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24": +"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -15293,7 +15502,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^3.0.0, mime-types@npm:^3.0.2": +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1, mime-types@npm:^3.0.2": version: 3.0.2 resolution: "mime-types@npm:3.0.2" dependencies: @@ -15669,6 +15878,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + "negotiator@npm:^1.0.0": version: 1.0.0 resolution: "negotiator@npm:1.0.0" @@ -16674,6 +16890,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^8.4.2": + version: 8.4.2 + resolution: "path-to-regexp@npm:8.4.2" + checksum: 10c0/05b115c49b47ad252ce05faa32930f643f23769c68b8bcfe78ad833545140c48bbffb3266986d6c8d5db13a64cf12e07e0d72d9882cab830efeefa553533ebaf + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -18380,7 +18603,7 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:~1.2.0": +"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc @@ -18756,6 +18979,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + languageName: node + linkType: hard + "statuses@npm:^2.0.1, statuses@npm:^2.0.2, statuses@npm:~2.0.2": version: 2.0.2 resolution: "statuses@npm:2.0.2" @@ -18763,13 +18993,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:~1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 - languageName: node - linkType: hard - "std-env@npm:^4.0.0-rc.1": version: 4.0.0 resolution: "std-env@npm:4.0.0" @@ -19325,7 +19548,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:~1.0.1": +"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 @@ -19503,6 +19726,13 @@ __metadata: languageName: node linkType: hard +"tsscmp@npm:1.0.6": + version: 1.0.6 + resolution: "tsscmp@npm:1.0.6" + checksum: 10c0/2f79a9455e7e3e8071995f98cdf3487ccfc91b760bec21a9abb4d90519557eafaa37246e87c92fa8bf3fef8fd30cfd0cc3c4212bb929baa9fb62494bfa4d24b2 + languageName: node + linkType: hard + "tsup@npm:^8.5.1": version: 8.5.1 resolution: "tsup@npm:8.5.1" From fedc3a04667d2b0352178d4ca524bb1fd2db05fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 10 Jul 2026 17:03:34 +0200 Subject: [PATCH 02/28] feat: add test token codegen generation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- damljs/test-token-v1/.gitignore | 2 ++ package.json | 1 + scripts/src/generate-test-token.ts | 20 ++++++++++++++++++++ scripts/src/lib/daml-codegen.ts | 16 ++++++++++++---- scripts/src/lib/version-config.json | 4 ++-- 5 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 damljs/test-token-v1/.gitignore create mode 100644 scripts/src/generate-test-token.ts diff --git a/damljs/test-token-v1/.gitignore b/damljs/test-token-v1/.gitignore new file mode 100644 index 000000000..d6b7ef32c --- /dev/null +++ b/damljs/test-token-v1/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/package.json b/package.json index 18a8dfbe4..a23e8c831 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "generate:signing": "yarn workspace @canton-network/core-rpc-generator build && yarn open-rpc-generator generate -c ./rpc-generator-config-signing.json", "generate:grpc": "tsx ./scripts/src/generate-protobufs.ts", "generate:tokenstandard": "tsx ./scripts/src/generate-token-standard.ts", + "generate:test-token": "tsx ./scripts/src/generate-test-token.ts", "generate:all": "yarn generate:dapp && yarn generate:dapp-remote && yarn generate:user && yarn generate:signing && yarn generate:tokenstandard && yarn run prettier . --write > /dev/null 2>&1", "lint": "nx run-many -t lint --parallel", "build:all": "nx run-many -t build --parallel", diff --git a/scripts/src/generate-test-token.ts b/scripts/src/generate-test-token.ts new file mode 100644 index 000000000..b9eb6995f --- /dev/null +++ b/scripts/src/generate-test-token.ts @@ -0,0 +1,20 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import * as path from 'path' +import { getRepoRoot } from './lib/utils.js' +import { installDPM } from './install-dpm.js' +import { runDamlCodegen } from './lib/daml-codegen.js' + +const repoRoot = getRepoRoot() + +async function main() { + await installDPM() + await runDamlCodegen({ + workingDir: path.join(repoRoot, '.localnet/dars'), + darFileName: 'splice-test-token-v1-1.0.0.dar', + outputDir: path.join(repoRoot, 'damljs/test-token-v1'), + }) +} + +main() diff --git a/scripts/src/lib/daml-codegen.ts b/scripts/src/lib/daml-codegen.ts index 46376c69e..b54046d51 100644 --- a/scripts/src/lib/daml-codegen.ts +++ b/scripts/src/lib/daml-codegen.ts @@ -137,11 +137,16 @@ export function runDamlBuild(workingDir: string): void { * Run dpm codegen js for a DAR file * Generates JavaScript/TypeScript bindings from compiled DAR */ -export function runDamlCodegen(workingDir: string, darFileName: string): void { +export function runDamlCodegen(options: { + workingDir: string + darFileName: string + outputDir?: string +}): void { + const { darFileName, workingDir, outputDir = '.' } = options console.log(info('Running "dpm codegen-js"...')) try { console.log(info(`dpm codegen-js`)) - execSync(`dpm codegen-js .daml/dist/${darFileName} -o .`, { + execSync(`dpm codegen-js ${darFileName} -o ${outputDir}`, { cwd: workingDir, stdio: 'inherit', }) @@ -181,6 +186,9 @@ export async function generateDamlJsBindings( runDamlBuild(config.destDir) - const darFileName = `${config.packageName}-${config.version}.dar` - runDamlCodegen(config.destDir, darFileName) + const darFileName = `.daml/dist/${config.packageName}-${config.version}.dar` + runDamlCodegen({ + workingDir: config.destDir, + darFileName, + }) } diff --git a/scripts/src/lib/version-config.json b/scripts/src/lib/version-config.json index 616045722..6a3be400f 100644 --- a/scripts/src/lib/version-config.json +++ b/scripts/src/lib/version-config.json @@ -7,9 +7,9 @@ "hash": "3debf0d5f3a79ea5e29ab682e31428f9f853a5236d56bf9bd1d3af45673a6ca7" }, "splice": { - "version": "0.6.1", + "version": "0.6.12", "hashes": { - "localnet": "1873f3b630823d8b71b6e6e1116e331d66db05c8ac32bb296778ab02420b3da9", + "localnet": "e15e8263156f4f220ce44046332830abf3f83f6f40c68a8152eaae5504ebcd73", "splice": "a075448a786ce91b80079466ba8b8a71fa6d8d2d74864e47f328ddb552441af3", "spliceSpec": "3968a0e4fbb77a6a643a59429bf5ecd6d88df1fbce31c58f5102c0a9924006e2" } From 61cde690b1442d427fbc6b86cb47986115cc573f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Sat, 11 Jul 2026 09:25:45 +0200 Subject: [PATCH 03/28] feat(wallet-sdk,core-token-standard): add codegen, create ts interfaces for commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- core/token-standard/rollup.config.js | 29 ++ core/token-standard/src/types.ts | 23 +- core/token-standard/tsconfig.json | 3 + package.json | 2 +- sdk/wallet-sdk/src/plugins/testToken.test.ts | 308 ++++++++++++++++++ sdk/wallet-sdk/src/plugins/testToken.ts | 118 +++++++ .../src/wallet/namespace/ledger/types.ts | 1 + 7 files changed, 478 insertions(+), 6 deletions(-) create mode 100644 sdk/wallet-sdk/src/plugins/testToken.test.ts create mode 100644 sdk/wallet-sdk/src/plugins/testToken.ts diff --git a/core/token-standard/rollup.config.js b/core/token-standard/rollup.config.js index e05bcec54..36d1fc932 100644 --- a/core/token-standard/rollup.config.js +++ b/core/token-standard/rollup.config.js @@ -16,6 +16,11 @@ const DAML_JS_BASE = path.resolve( '../../damljs/token-standard-models' ) +const TEST_TOKEN_BASE = path.resolve( + import.meta.dirname, + '../../damljs/test-token-v1' +) + const DAML_JS_PACKAGES = { '@daml.js/token-standard-models-1.0.0': path.join( DAML_JS_BASE, @@ -29,6 +34,30 @@ const DAML_JS_PACKAGES = { DAML_JS_BASE, 'daml-stdlib-DA-Time-Types-1.0.0' ), + '@daml.js/test-token-v1': path.join( + TEST_TOKEN_BASE, + 'splice-test-token-v1-1.0.0' + ), + '@daml.js/splice-api-token-allocation-instruction-v1-1.0.0': path.join( + TEST_TOKEN_BASE, + 'splice-api-token-allocation-instruction-v1-1.0.0' + ), + '@daml.js/splice-api-token-transfer-instruction-v1-1.0.0': path.join( + TEST_TOKEN_BASE, + 'splice-api-token-transfer-instruction-v1-1.0.0' + ), + '@daml.js/splice-api-token-holding-v1-1.0.0': path.join( + TEST_TOKEN_BASE, + 'splice-api-token-holding-v1-1.0.0' + ), + '@daml.js/splice-api-token-allocation-v1-1.0.0': path.join( + TEST_TOKEN_BASE, + 'splice-api-token-allocation-v1-1.0.0' + ), + '@daml.js/splice-api-token-metadata-v1-1.0.0': path.join( + TEST_TOKEN_BASE, + 'splice-api-token-metadata-v1-1.0.0' + ), } function buildPathsMap(packageDirs) { diff --git a/core/token-standard/src/types.ts b/core/token-standard/src/types.ts index 2d26221c6..91b35b167 100644 --- a/core/token-standard/src/types.ts +++ b/core/token-standard/src/types.ts @@ -3,6 +3,9 @@ import { Splice } from '@daml.js/token-standard-models-1.0.0' import { PartyId } from '@canton-network/core-types' +import * as testTokenCodegen from '@daml.js/test-token-v1' + +export const TestTokenV1 = testTokenCodegen.Splice.Testing.Tokens.TestTokenV1 export * from './interface-ids.const.js' @@ -23,13 +26,11 @@ export type { export type { Transfer, - TransferInstruction, TransferInstructionView, TransferInstruction_Accept, TransferInstruction_Reject, TransferInstruction_Withdraw, TransferInstruction_Update, - TransferFactory, TransferFactoryView, TransferFactory_PublicFetch, TransferFactory_Transfer, @@ -40,6 +41,12 @@ export type { TransferInstructionInterface, } from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/module.js' +// Export companion objects as values (needed for accessing choice names at runtime) +export { + TransferInstruction, + TransferFactory, +} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/module.js' + export type { AllocationFactory_Allocate, AllocationFactoryView, @@ -49,12 +56,16 @@ export type { AllocationInstructionView, AllocationInstructionResult, AllocationInstructionResult_Output, - AllocationFactory, AllocationFactoryInterface, - AllocationInstruction, AllocationInstructionInterface, } from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/module.js' +// Export companion objects as values (needed for accessing choice names at runtime) +export { + AllocationFactory, + AllocationInstruction, +} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/module.js' + export type { AllocationRequest, AllocationRequestView, @@ -69,7 +80,6 @@ export type { SettlementInfo, Reference, AllocationView, - Allocation, AllocationInterface, Allocation_Withdraw, Allocation_Cancel, @@ -79,6 +89,9 @@ export type { Allocation_ExecuteTransferResult, } from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/module.js' +// Export companion object as value (needed for accessing choice names at runtime) +export { Allocation } from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/module.js' + export type { ExtraArgs, Metadata, diff --git a/core/token-standard/tsconfig.json b/core/token-standard/tsconfig.json index 4561ef21e..7e1442bb6 100644 --- a/core/token-standard/tsconfig.json +++ b/core/token-standard/tsconfig.json @@ -23,6 +23,9 @@ ], "@daml.js/daml-stdlib-DA-Time-Types-1.0.0/*": [ "../../damljs/token-standard-models/daml-stdlib-DA-Time-Types-1.0.0/*" + ], + "@daml.js/test-token-v1": [ + "../../damljs/test-token-v1/splice-test-token-v1-1.0.0/lib/index.d.ts" ] } }, diff --git a/package.json b/package.json index a23e8c831..4db2eea5d 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "generate:grpc": "tsx ./scripts/src/generate-protobufs.ts", "generate:tokenstandard": "tsx ./scripts/src/generate-token-standard.ts", "generate:test-token": "tsx ./scripts/src/generate-test-token.ts", - "generate:all": "yarn generate:dapp && yarn generate:dapp-remote && yarn generate:user && yarn generate:signing && yarn generate:tokenstandard && yarn run prettier . --write > /dev/null 2>&1", + "generate:all": "yarn generate:dapp && yarn generate:dapp-remote && yarn generate:user && yarn generate:signing && yarn generate:tokenstandard && yarn generate:test-token && yarn run prettier . --write > /dev/null 2>&1", "lint": "nx run-many -t lint --parallel", "build:all": "nx run-many -t build --parallel", "build:all:serial": "nx run-many -t build --parallel=1", diff --git a/sdk/wallet-sdk/src/plugins/testToken.test.ts b/sdk/wallet-sdk/src/plugins/testToken.test.ts new file mode 100644 index 000000000..0493069d1 --- /dev/null +++ b/sdk/wallet-sdk/src/plugins/testToken.test.ts @@ -0,0 +1,308 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { beforeEach, describe, expect, it, vi } from 'vitest' +import * as mock from '../wallet/__test__/mocks' +import WalletSDKTestTokenPlugin from './testToken' +import { + Holding, + Transfer, + TestTokenV1, + AllocationSpecification, + TransferLeg, + Metadata, + TransferInstruction, + Allocation, + AllocationFactory, + TransferFactory, +} from '@canton-network/core-token-standard' +import { ContractId, Time } from '@daml/types' +import { PartyId } from '@canton-network/core-types' + +const time: Time = new Date().toISOString() +const meta: Metadata = { + values: {}, +} + +const transferLeg: TransferLeg = { + sender: 'sender', + receiver: 'receiver', + amount: '100.00', + instrumentId: { + id: 'id', + admin: 'admin', + }, + meta, +} + +const transfer: Transfer = { + ...transferLeg, + requestedAt: time, + executeBefore: time, + inputHoldingCids: ['holdingCid' as ContractId], +} + +const allocation: AllocationSpecification = { + settlement: { + executor: 'executor', + settlementRef: { + id: 'id', + cid: null, + }, + requestedAt: time, + allocateBefore: time, + settleBefore: time, + meta, + }, + transferLeg, + transferLegId: 'transferLegId', +} + +const admin: PartyId = 'admin' + +describe('testToken plugin', () => { + let plugin: WalletSDKTestTokenPlugin + + beforeEach(() => { + vi.clearAllMocks() + plugin = new WalletSDKTestTokenPlugin(mock.ctx) + }) + + describe('CreateCommand', () => { + it('should create a transfer offer', () => { + expect( + plugin.create.transferOffer({ + transfer, + }) + ).toStrictEqual({ + CreateCommand: { + templateId: TestTokenV1.TokenTransferOffer.templateId, + createArguments: { transfer }, + }, + }) + }) + + it('should create an allocation', () => { + expect( + plugin.create.allocation({ + allocation, + }) + ).toStrictEqual({ + CreateCommand: { + templateId: TestTokenV1.TokenAllocation.templateId, + createArguments: { allocation }, + }, + }) + }) + + it('should create rules', () => { + expect( + plugin.create.rules({ + admin, + }) + ).toStrictEqual({ + CreateCommand: { + templateId: TestTokenV1.TokenRules.templateId, + createArguments: { admin }, + }, + }) + }) + }) + + describe('ExerciseCommand', () => { + describe('transfer offer', () => { + it('should exercise accept', () => { + expect( + plugin.exercise.transferOffer.accept({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenTransferOffer.templateId, + contractId: 'cid', + choice: TransferInstruction.TransferInstruction_Accept + .choiceName, + choiceArgument: null, + }, + }) + }) + + it('should exercise reject', () => { + expect( + plugin.exercise.transferOffer.reject({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenTransferOffer.templateId, + contractId: 'cid', + choice: TransferInstruction.TransferInstruction_Reject + .choiceName, + choiceArgument: null, + }, + }) + }) + + it('should exercise withdraw', () => { + expect( + plugin.exercise.transferOffer.withdraw({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenTransferOffer.templateId, + contractId: 'cid', + choice: TransferInstruction.TransferInstruction_Withdraw + .choiceName, + choiceArgument: null, + }, + }) + }) + + it('should exercise update', () => { + expect( + plugin.exercise.transferOffer.update({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenTransferOffer.templateId, + contractId: 'cid', + choice: TransferInstruction.TransferInstruction_Update + .choiceName, + choiceArgument: null, + }, + }) + }) + }) + + describe('allocation', () => { + it('should exercise executeTransfer', () => { + expect( + plugin.exercise.allocation.executeTransfer({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenAllocation.templateId, + contractId: 'cid', + choice: Allocation.Allocation_ExecuteTransfer + .choiceName, + choiceArgument: null, + }, + }) + }) + + it('should exercise cancel', () => { + expect( + plugin.exercise.allocation.cancel({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenAllocation.templateId, + contractId: 'cid', + choice: Allocation.Allocation_Cancel.choiceName, + choiceArgument: null, + }, + }) + }) + + it('should exercise withdraw', () => { + expect( + plugin.exercise.allocation.withdraw({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenAllocation.templateId, + contractId: 'cid', + choice: Allocation.Allocation_Withdraw.choiceName, + choiceArgument: null, + }, + }) + }) + }) + + describe('rules', () => { + describe('transfer', () => { + it('should exercise transfer', () => { + expect( + plugin.exercise.rules.transfer.transfer({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenRules.templateId, + contractId: 'cid', + choice: TransferFactory.TransferFactory_Transfer + .choiceName, + choiceArgument: null, + }, + }) + }) + + it('should exercise publicFetch', () => { + expect( + plugin.exercise.rules.transfer.publicFetch({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenRules.templateId, + contractId: 'cid', + choice: TransferFactory.TransferFactory_PublicFetch + .choiceName, + choiceArgument: null, + }, + }) + }) + }) + + describe('allocation', () => { + it('should exercise allocate', () => { + expect( + plugin.exercise.rules.allocation.allocate({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenRules.templateId, + contractId: 'cid', + choice: AllocationFactory.AllocationFactory_Allocate + .choiceName, + choiceArgument: null, + }, + }) + }) + + it('should exercise publicFetch', () => { + expect( + plugin.exercise.rules.allocation.publicFetch({ + contractId: 'cid', + choiceArgument: null, + }) + ).toStrictEqual({ + ExerciseCommand: { + templateId: TestTokenV1.TokenRules.templateId, + contractId: 'cid', + choice: AllocationFactory + .AllocationFactory_PublicFetch.choiceName, + choiceArgument: null, + }, + }) + }) + }) + }) + }) +}) diff --git a/sdk/wallet-sdk/src/plugins/testToken.ts b/sdk/wallet-sdk/src/plugins/testToken.ts new file mode 100644 index 000000000..5d820ea69 --- /dev/null +++ b/sdk/wallet-sdk/src/plugins/testToken.ts @@ -0,0 +1,118 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { + Allocation, + AllocationFactory, + Transfer, + TransferFactory, + TransferInstruction, + TestTokenV1, + AllocationSpecification, +} from '@canton-network/core-token-standard' +import { SDKContext, SDKPlugin } from '../wallet' +import { WrappedCommand } from '@/wallet/namespace/ledger' +import { PartyId } from '@canton-network/core-types' + +export default class WalletSDKTestTokenPlugin extends SDKPlugin { + constructor(protected readonly ctx: SDKContext) { + super('testToken', ctx) + } + + private readonly generateCommand = { + create(templateId: string) { + return ( + createArguments: CreateArgs + ): WrappedCommand<'CreateCommand'> => ({ + CreateCommand: { + templateId, + createArguments, + }, + }) + }, + exercise(templateId: string, choice: string) { + return ( + args: Pick< + WrappedCommand<'ExerciseCommand'>['ExerciseCommand'], + 'contractId' | 'choiceArgument' + > + ): WrappedCommand<'ExerciseCommand'> => ({ + ExerciseCommand: { + templateId, + contractId: args.contractId, + choice, + choiceArgument: args.choiceArgument, + }, + }) + }, + } + + public readonly create = { + transferOffer: this.generateCommand.create<{ transfer: Transfer }>( + TestTokenV1.TokenTransferOffer.templateId + ), + allocation: this.generateCommand.create<{ + allocation: AllocationSpecification + }>(TestTokenV1.TokenAllocation.templateId), + rules: this.generateCommand.create<{ admin: PartyId }>( + TestTokenV1.TokenRules.templateId + ), + } + + public readonly exercise = { + transferOffer: { + accept: this.generateCommand.exercise( + TestTokenV1.TokenTransferOffer.templateId, + TransferInstruction.TransferInstruction_Accept.choiceName + ), + reject: this.generateCommand.exercise( + TestTokenV1.TokenTransferOffer.templateId, + TransferInstruction.TransferInstruction_Reject.choiceName + ), + withdraw: this.generateCommand.exercise( + TestTokenV1.TokenTransferOffer.templateId, + TransferInstruction.TransferInstruction_Withdraw.choiceName + ), + update: this.generateCommand.exercise( + TestTokenV1.TokenTransferOffer.templateId, + TransferInstruction.TransferInstruction_Update.choiceName + ), + }, + allocation: { + executeTransfer: this.generateCommand.exercise( + TestTokenV1.TokenAllocation.templateId, + Allocation.Allocation_ExecuteTransfer.choiceName + ), + cancel: this.generateCommand.exercise( + TestTokenV1.TokenAllocation.templateId, + Allocation.Allocation_Cancel.choiceName + ), + withdraw: this.generateCommand.exercise( + TestTokenV1.TokenAllocation.templateId, + Allocation.Allocation_Withdraw.choiceName + ), + }, + rules: { + transfer: { + transfer: this.generateCommand.exercise( + TestTokenV1.TokenRules.templateId, + TransferFactory.TransferFactory_Transfer.choiceName + ), + publicFetch: this.generateCommand.exercise( + TestTokenV1.TokenRules.templateId, + TransferFactory.TransferFactory_PublicFetch.choiceName + ), + }, + allocation: { + allocate: this.generateCommand.exercise( + TestTokenV1.TokenRules.templateId, + AllocationFactory.AllocationFactory_Allocate.choiceName + ), + publicFetch: this.generateCommand.exercise( + TestTokenV1.TokenRules.templateId, + AllocationFactory.AllocationFactory_PublicFetch.choiceName + ), + }, + }, + } +} diff --git a/sdk/wallet-sdk/src/wallet/namespace/ledger/types.ts b/sdk/wallet-sdk/src/wallet/namespace/ledger/types.ts index f1e5eb3ff..8610ccea9 100644 --- a/sdk/wallet-sdk/src/wallet/namespace/ledger/types.ts +++ b/sdk/wallet-sdk/src/wallet/namespace/ledger/types.ts @@ -23,6 +23,7 @@ export type RawCommandMap = { CreateCommand: LedgerCommonSchemas['CreateCommand'] CreateAndExerciseCommand: LedgerCommonSchemas['CreateAndExerciseCommand'] } + export type WrappedCommand< K extends keyof RawCommandMap = keyof RawCommandMap, > = { From 4e8bba9ec79192cf62380b48c126c996067887f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 10 Jul 2026 10:12:09 +0200 Subject: [PATCH 04/28] feat(example-test-token-v1-registry): create dummy registry server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/README.md | 1 + examples/test-token-v1-registry/package.json | 58 ++++ examples/test-token-v1-registry/src/index.ts | 9 + examples/test-token-v1-registry/src/router.ts | 13 + examples/test-token-v1-registry/src/sdk.ts | 20 ++ examples/test-token-v1-registry/tsconfig.json | 8 + .../test-token-v1-registry/tsup.config.ts | 10 + .../test-token-v1-registry/vitest.config.ts | 48 ++++ yarn.lock | 260 +++++++++++++++++- 9 files changed, 412 insertions(+), 15 deletions(-) create mode 100644 examples/test-token-v1-registry/README.md create mode 100644 examples/test-token-v1-registry/package.json create mode 100644 examples/test-token-v1-registry/src/index.ts create mode 100644 examples/test-token-v1-registry/src/router.ts create mode 100644 examples/test-token-v1-registry/src/sdk.ts create mode 100644 examples/test-token-v1-registry/tsconfig.json create mode 100644 examples/test-token-v1-registry/tsup.config.ts create mode 100644 examples/test-token-v1-registry/vitest.config.ts diff --git a/examples/test-token-v1-registry/README.md b/examples/test-token-v1-registry/README.md new file mode 100644 index 000000000..ef4f25601 --- /dev/null +++ b/examples/test-token-v1-registry/README.md @@ -0,0 +1 @@ +# @canton-network/example-test-token-v1-registry diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json new file mode 100644 index 000000000..6de02959b --- /dev/null +++ b/examples/test-token-v1-registry/package.json @@ -0,0 +1,58 @@ +{ + "name": "@canton-network/example-test-token-v1-registry", + "version": "1.0.0", + "type": "module", + "description": "Example registry backend app for CIP-0056 token.", + "license": "Apache-2.0", + "author": "Mateusz Piątkowski ", + "main": "dist/index.cjs", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup --onSuccess \"tsc\"", + "dev": "node --experimental-transform-types --watch src/index.ts", + "clean": "tsc -b --clean; rm -rf dist", + "flatpack": "yarn pack --out \"$FLATPACK_OUTDIR\"", + "test": "vitest run --project node --project browser", + "test:coverage": "vitest run --project node --project browser --coverage" + }, + "devDependencies": { + "@types/koa": "^3", + "@types/node": "^25.9.3", + "@vitest/browser-playwright": "^4.1.8", + "@vitest/coverage-v8": "^4.1.8", + "openapi-typescript": "^7.13.0", + "playwright": "^1.60.0", + "tsup": "^8.5.1", + "typescript": "^5.9.3", + "vitest": "^4.1.8" + }, + "dependencies": { + "@canton-network/wallet-sdk": "workspace:^", + "@koa/router": "^15.7.0", + "koa": "^3.2.1" + }, + "files": [ + "dist/**" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/canton-network/wallet.git", + "directory": "examples/test-token-v1-registry" + }, + "homepage": "https://github.com/canton-network/wallet/tree/main/examples/test-token-v1-registry#readme", + "bugs": { + "url": "https://github.com/canton-network/wallet/issues" + } +} diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts new file mode 100644 index 000000000..5a8cfba0a --- /dev/null +++ b/examples/test-token-v1-registry/src/index.ts @@ -0,0 +1,9 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Koa from 'koa' +import router from './router' + +const app = new Koa() + +app.use(router.routes()).use(router.allowedMethods()).listen(3000) diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts new file mode 100644 index 000000000..338909808 --- /dev/null +++ b/examples/test-token-v1-registry/src/router.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Router from '@koa/router' + +const router = new Router() + +router.get('/', (ctx, next) => { + console.log('TEST') + return next() +}) + +export default router diff --git a/examples/test-token-v1-registry/src/sdk.ts b/examples/test-token-v1-registry/src/sdk.ts new file mode 100644 index 000000000..a188e40d5 --- /dev/null +++ b/examples/test-token-v1-registry/src/sdk.ts @@ -0,0 +1,20 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { localNetStaticConfig, SDK } from '@canton-network/wallet-sdk' + +const sdk = await SDK.create({ + auth: { + method: 'self_signed', + issuer: 'unsafe-auth', + credentials: { + clientId: localNetStaticConfig.LOCALNET_USER_ID, + clientSecret: 'unsafe', + audience: 'https://canton.network.global', + scope: '', + }, + }, + ledgerClientUrl: localNetStaticConfig.LOCALNET_APP_USER_LEDGER_URL, +}) + +export default sdk diff --git a/examples/test-token-v1-registry/tsconfig.json b/examples/test-token-v1-registry/tsconfig.json new file mode 100644 index 000000000..9cf98da56 --- /dev/null +++ b/examples/test-token-v1-registry/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/examples/test-token-v1-registry/tsup.config.ts b/examples/test-token-v1-registry/tsup.config.ts new file mode 100644 index 000000000..1f4074292 --- /dev/null +++ b/examples/test-token-v1-registry/tsup.config.ts @@ -0,0 +1,10 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { defineConfig } from 'tsup' +import { base } from '../../tsup.base' + +export default defineConfig({ + ...base, + entry: ['src/index.ts'], +}) diff --git a/examples/test-token-v1-registry/vitest.config.ts b/examples/test-token-v1-registry/vitest.config.ts new file mode 100644 index 000000000..d52fa766e --- /dev/null +++ b/examples/test-token-v1-registry/vitest.config.ts @@ -0,0 +1,48 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { defineConfig, defineProject } from 'vitest/config' +import { playwright } from '@vitest/browser-playwright' + +export default defineConfig({ + test: { + coverage: { + include: ['src/**/*.ts'], + provider: 'v8', + reporter: ['text', 'html', 'lcov', 'json-summary'], + thresholds: { + lines: 80, + functions: 80, + branches: 70, + statements: 80, + }, + }, + environment: 'node', + include: ['src/**/*.test.ts'], + projects: [ + defineProject({ + test: { + name: 'node', + environment: 'node', + include: ['src/**/*.test.ts'], + }, + }), + defineProject({ + test: { + name: 'browser', + include: ['src/**/*.test.ts'], + browser: { + enabled: true, + provider: playwright({ + trace: 'off', + screenshot: 'off', + video: 'off', + }), + instances: [{ browser: 'chromium' }], + headless: true, + }, + }, + }), + ], + }, +}) diff --git a/yarn.lock b/yarn.lock index 18ec2659f..993c71521 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2157,6 +2157,25 @@ __metadata: languageName: unknown linkType: soft +"@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry": + version: 0.0.0-use.local + resolution: "@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry" + dependencies: + "@canton-network/wallet-sdk": "workspace:^" + "@koa/router": "npm:^15.7.0" + "@types/koa": "npm:^3" + "@types/node": "npm:^25.9.3" + "@vitest/browser-playwright": "npm:^4.1.8" + "@vitest/coverage-v8": "npm:^4.1.8" + koa: "npm:^3.2.1" + openapi-typescript: "npm:^7.13.0" + playwright: "npm:^1.60.0" + tsup: "npm:^8.5.1" + typescript: "npm:^5.9.3" + vitest: "npm:^4.1.8" + languageName: unknown + linkType: soft + "@canton-network/example-walletconnect@workspace:examples/walletconnect": version: 0.0.0-use.local resolution: "@canton-network/example-walletconnect@workspace:examples/walletconnect" @@ -4404,6 +4423,23 @@ __metadata: languageName: node linkType: hard +"@koa/router@npm:^15.7.0": + version: 15.7.0 + resolution: "@koa/router@npm:15.7.0" + dependencies: + debug: "npm:^4.4.3" + http-errors: "npm:^2.0.1" + koa-compose: "npm:^4.1.0" + path-to-regexp: "npm:^8.4.2" + peerDependencies: + koa: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + koa: + optional: false + checksum: 10c0/da1f23f07684f5b39db5536cd6d4b77f7e38930786c2c0c13cf27d84ab90b6c9eea5ecf17f8f4c1b87ccc822a874f64c351b6e9b4c2e6c9324765564fce689cb + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -7887,6 +7923,15 @@ __metadata: languageName: node linkType: hard +"@types/accepts@npm:*": + version: 1.3.7 + resolution: "@types/accepts@npm:1.3.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/7b21efc78b98ed57063ac31588f871f11501c080cd1201ca3743cf02ee0aee74bdb5a634183bc0987dc8dc582b26316789fd203650319ccc89a66cf88311d64f + languageName: node + linkType: hard + "@types/argparse@npm:1.0.38": version: 1.0.38 resolution: "@types/argparse@npm:1.0.38" @@ -7991,6 +8036,13 @@ __metadata: languageName: node linkType: hard +"@types/content-disposition@npm:*": + version: 0.5.9 + resolution: "@types/content-disposition@npm:0.5.9" + checksum: 10c0/9fd520dae1a9c7b85909e59f548f905a670a6e2f83642f9734d1b05126f64ac8c8e2c282a663edf27d58bc34fbbacf46a4d4a95d3802b42106174a19a68175c8 + languageName: node + linkType: hard + "@types/cookiejar@npm:^2.1.5": version: 2.1.5 resolution: "@types/cookiejar@npm:2.1.5" @@ -7998,6 +8050,18 @@ __metadata: languageName: node linkType: hard +"@types/cookies@npm:*": + version: 0.9.2 + resolution: "@types/cookies@npm:0.9.2" + dependencies: + "@types/connect": "npm:*" + "@types/express": "npm:*" + "@types/keygrip": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/75f00c83d50998b610d4fe2ddb2544fde7eb6dc683f5e68831a4ecb458b465260b8e2df4e369880a67c5b946558322c4627403781eb076ff72ca16c7ab8c47dd + languageName: node + linkType: hard + "@types/cors@npm:^2.8.19": version: 2.8.19 resolution: "@types/cors@npm:2.8.19" @@ -8086,7 +8150,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:^5.0.6": +"@types/express@npm:*, @types/express@npm:^5.0.6": version: 5.0.6 resolution: "@types/express@npm:5.0.6" dependencies: @@ -8116,7 +8180,14 @@ __metadata: languageName: node linkType: hard -"@types/http-errors@npm:*": +"@types/http-assert@npm:*": + version: 1.5.6 + resolution: "@types/http-assert@npm:1.5.6" + checksum: 10c0/62d536440a5e09f4b7968112f4b235212407937033de800993f95b6f140181b4b2ad6075b73094e7ca0ccf7d9c80d68b93ca53fb1af196cc6d0257f3a4c3d5ba + languageName: node + linkType: hard + +"@types/http-errors@npm:*, @types/http-errors@npm:^2": version: 2.0.5 resolution: "@types/http-errors@npm:2.0.5" checksum: 10c0/00f8140fbc504f47356512bd88e1910c2f07e04233d99c88c854b3600ce0523c8cd0ba7d1897667243282eb44c59abb9245959e2428b9de004f93937f52f7c15 @@ -8153,6 +8224,38 @@ __metadata: languageName: node linkType: hard +"@types/keygrip@npm:*": + version: 1.0.6 + resolution: "@types/keygrip@npm:1.0.6" + checksum: 10c0/1045a79913259f539ac1d04384ea8f61cf29f1d299040eb4b67d92304ec3bcea59b7e4b83cf95a73aa251ff62e55924e380d0c563a21fe8f6e91de20cc610386 + languageName: node + linkType: hard + +"@types/koa-compose@npm:*": + version: 3.2.9 + resolution: "@types/koa-compose@npm:3.2.9" + dependencies: + "@types/koa": "npm:*" + checksum: 10c0/d89993ffadac74488cdb2ab0fc519ec43eab5e3e7b8baa37cb7fc5043c86d812c24a179efae1324d5e80c2f7b7ddfbc944df7052cab6ff98daf1df4a084ac348 + languageName: node + linkType: hard + +"@types/koa@npm:*, @types/koa@npm:^3": + version: 3.0.3 + resolution: "@types/koa@npm:3.0.3" + dependencies: + "@types/accepts": "npm:*" + "@types/content-disposition": "npm:*" + "@types/cookies": "npm:*" + "@types/http-assert": "npm:*" + "@types/http-errors": "npm:^2" + "@types/keygrip": "npm:*" + "@types/koa-compose": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/f5bb89fe7b35611ef0e96888ad15727b0b7e9153145f88100a2c9ef43f70e5fcc4ae496cc975efabb1f945dce8b1b2f33bcd6d752ad34e6a3a2ba7e523ee9596 + languageName: node + linkType: hard + "@types/lodash@npm:^4.17.20, @types/lodash@npm:^4.17.24, @types/lodash@npm:^4.5": version: 4.17.24 resolution: "@types/lodash@npm:4.17.24" @@ -9331,6 +9434,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + "accepts@npm:^2.0.0": version: 2.0.0 resolution: "accepts@npm:2.0.0" @@ -11053,7 +11166,7 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:^1.0.0": +"content-disposition@npm:^1.0.0, content-disposition@npm:~1.0.1": version: 1.0.1 resolution: "content-disposition@npm:1.0.1" checksum: 10c0/bd7ff1fe8d2542d3a2b9a29428cc3591f6ac27bb5595bba2c69664408a68f9538b14cbd92479796ea835b317a09a527c8c7209c4200381dedb0c34d3b658849e @@ -11146,6 +11259,16 @@ __metadata: languageName: node linkType: hard +"cookies@npm:~0.9.1": + version: 0.9.1 + resolution: "cookies@npm:0.9.1" + dependencies: + depd: "npm:~2.0.0" + keygrip: "npm:~1.1.0" + checksum: 10c0/3ffa1c0e992b62ee119adae4dd2ddd4a89166fa5434cd9bd9ff84ec4d2f14dfe2318a601280abfe32a4f64f884ec9345fb1912e488b002d188d2efa0d3919ba3 + languageName: node + linkType: hard + "core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": version: 3.48.0 resolution: "core-js-compat@npm:3.48.0" @@ -11478,6 +11601,13 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:~1.0.1": + version: 1.0.1 + resolution: "deep-equal@npm:1.0.1" + checksum: 10c0/bef838ef9824e124d10335deb9c7540bfc9f2f0eab17ad1bb870d0eee83ee4e7e6f6f892e5eebc2bd82759a76676926ad5246180097e28e57752176ff7dae888 + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -11564,6 +11694,13 @@ __metadata: languageName: node linkType: hard +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + languageName: node + linkType: hard + "depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" @@ -11571,6 +11708,13 @@ __metadata: languageName: node linkType: hard +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + languageName: node + linkType: hard + "destr@npm:^2.0.5": version: 2.0.5 resolution: "destr@npm:2.0.5" @@ -11578,7 +11722,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0, destroy@npm:~1.2.0": +"destroy@npm:1.2.0, destroy@npm:^1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 @@ -13667,6 +13811,16 @@ __metadata: languageName: node linkType: hard +"http-assert@npm:^1.5.0": + version: 1.5.0 + resolution: "http-assert@npm:1.5.0" + dependencies: + deep-equal: "npm:~1.0.1" + http-errors: "npm:~1.8.0" + checksum: 10c0/7b4e631114a1a77654f9ba3feb96da305ddbdeb42112fe384b7b3249c7141e460d7177970155bea6e54e655a04850415b744b452c1fe5052eba6f4186d16b095 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" @@ -13687,6 +13841,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:~1.8.0": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:>= 1.5.0 < 2" + toidentifier: "npm:1.0.1" + checksum: 10c0/f01aeecd76260a6fe7f08e192fcbe9b2f39ed20fc717b852669a69930167053b01790998275c6297d44f435cf0e30edd50c05223d1bec9bc484e6cf35b2d6f43 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -14663,6 +14830,15 @@ __metadata: languageName: node linkType: hard +"keygrip@npm:~1.1.0": + version: 1.1.0 + resolution: "keygrip@npm:1.1.0" + dependencies: + tsscmp: "npm:1.0.6" + checksum: 10c0/2aceec1a1e642a0caf938044056ed67b1909cfe67a93a59b32aae2863e0f35a1a53782ecc8f9cd0e3bdb60863fa0f401ccbd257cd7dfae61915f78445139edea + languageName: node + linkType: hard + "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -14679,6 +14855,39 @@ __metadata: languageName: node linkType: hard +"koa-compose@npm:^4.1.0": + version: 4.1.0 + resolution: "koa-compose@npm:4.1.0" + checksum: 10c0/f1f786f994a691931148e7f38f443865bf2702af4a61610d1eea04dab79c04b1232285b59d82a0cf61c830516dd92f10ab0d009b024fcecd4098e7d296ab771a + languageName: node + linkType: hard + +"koa@npm:^3.2.1": + version: 3.2.1 + resolution: "koa@npm:3.2.1" + dependencies: + accepts: "npm:^1.3.8" + content-disposition: "npm:~1.0.1" + content-type: "npm:^1.0.5" + cookies: "npm:~0.9.1" + delegates: "npm:^1.0.0" + destroy: "npm:^1.2.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + fresh: "npm:~0.5.2" + http-assert: "npm:^1.5.0" + http-errors: "npm:^2.0.0" + koa-compose: "npm:^4.1.0" + mime-types: "npm:^3.0.1" + on-finished: "npm:^2.4.1" + parseurl: "npm:^1.3.3" + statuses: "npm:^2.0.1" + type-is: "npm:^2.0.1" + vary: "npm:^1.1.2" + checksum: 10c0/84352ef0ec0f54898f119ac589c7d96442ac21f494f3e1abca55d19c0cd51177f43b75440092d74730261d4d91270b5ba0396156e04b21132ab2251f8b4d2cde + languageName: node + linkType: hard + "kolorist@npm:^1.8.0": version: 1.8.0 resolution: "kolorist@npm:1.8.0" @@ -15284,7 +15493,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24": +"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -15293,7 +15502,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^3.0.0, mime-types@npm:^3.0.2": +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1, mime-types@npm:^3.0.2": version: 3.0.2 resolution: "mime-types@npm:3.0.2" dependencies: @@ -15669,6 +15878,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + "negotiator@npm:^1.0.0": version: 1.0.0 resolution: "negotiator@npm:1.0.0" @@ -16674,6 +16890,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^8.4.2": + version: 8.4.2 + resolution: "path-to-regexp@npm:8.4.2" + checksum: 10c0/05b115c49b47ad252ce05faa32930f643f23769c68b8bcfe78ad833545140c48bbffb3266986d6c8d5db13a64cf12e07e0d72d9882cab830efeefa553533ebaf + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -18380,7 +18603,7 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:~1.2.0": +"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc @@ -18756,6 +18979,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + languageName: node + linkType: hard + "statuses@npm:^2.0.1, statuses@npm:^2.0.2, statuses@npm:~2.0.2": version: 2.0.2 resolution: "statuses@npm:2.0.2" @@ -18763,13 +18993,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:~1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 - languageName: node - linkType: hard - "std-env@npm:^4.0.0-rc.1": version: 4.0.0 resolution: "std-env@npm:4.0.0" @@ -19325,7 +19548,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:~1.0.1": +"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 @@ -19503,6 +19726,13 @@ __metadata: languageName: node linkType: hard +"tsscmp@npm:1.0.6": + version: 1.0.6 + resolution: "tsscmp@npm:1.0.6" + checksum: 10c0/2f79a9455e7e3e8071995f98cdf3487ccfc91b760bec21a9abb4d90519557eafaa37246e87c92fa8bf3fef8fd30cfd0cc3c4212bb929baa9fb62494bfa4d24b2 + languageName: node + linkType: hard + "tsup@npm:^8.5.1": version: 8.5.1 resolution: "tsup@npm:8.5.1" From 7d7c9746e7c85a40128361fa64c0fc2b59d933af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Sat, 11 Jul 2026 11:43:38 +0200 Subject: [PATCH 05/28] refactor(wallet-sdk): export plugins, rearrange files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- sdk/wallet-sdk/src/index.ts | 1 + sdk/wallet-sdk/src/plugins/{ => __test__}/testToken.test.ts | 4 ++-- sdk/wallet-sdk/src/plugins/index.ts | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) rename sdk/wallet-sdk/src/plugins/{ => __test__}/testToken.test.ts (99%) create mode 100644 sdk/wallet-sdk/src/plugins/index.ts diff --git a/sdk/wallet-sdk/src/index.ts b/sdk/wallet-sdk/src/index.ts index c49fe734a..ed8c25bb3 100644 --- a/sdk/wallet-sdk/src/index.ts +++ b/sdk/wallet-sdk/src/index.ts @@ -3,3 +3,4 @@ export * from './wallet/index.js' export * from './config.js' +export * from './plugins/index.js' diff --git a/sdk/wallet-sdk/src/plugins/testToken.test.ts b/sdk/wallet-sdk/src/plugins/__test__/testToken.test.ts similarity index 99% rename from sdk/wallet-sdk/src/plugins/testToken.test.ts rename to sdk/wallet-sdk/src/plugins/__test__/testToken.test.ts index 0493069d1..25d1cb61d 100644 --- a/sdk/wallet-sdk/src/plugins/testToken.test.ts +++ b/sdk/wallet-sdk/src/plugins/__test__/testToken.test.ts @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import { beforeEach, describe, expect, it, vi } from 'vitest' -import * as mock from '../wallet/__test__/mocks' -import WalletSDKTestTokenPlugin from './testToken' +import * as mock from '../../wallet/__test__/mocks' +import WalletSDKTestTokenPlugin from '../testToken' import { Holding, Transfer, diff --git a/sdk/wallet-sdk/src/plugins/index.ts b/sdk/wallet-sdk/src/plugins/index.ts new file mode 100644 index 000000000..896ddb1c0 --- /dev/null +++ b/sdk/wallet-sdk/src/plugins/index.ts @@ -0,0 +1,4 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +export * from './testToken.js' From facaedaf24aa84d1262aa73f2681484b3c4fcbec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 10 Jul 2026 10:12:09 +0200 Subject: [PATCH 06/28] feat(example-test-token-v1-registry): create dummy registry server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/README.md | 1 + examples/test-token-v1-registry/package.json | 58 ++++ examples/test-token-v1-registry/src/index.ts | 9 + examples/test-token-v1-registry/src/router.ts | 13 + examples/test-token-v1-registry/src/sdk.ts | 20 ++ examples/test-token-v1-registry/tsconfig.json | 8 + .../test-token-v1-registry/tsup.config.ts | 10 + .../test-token-v1-registry/vitest.config.ts | 48 ++++ yarn.lock | 260 +++++++++++++++++- 9 files changed, 412 insertions(+), 15 deletions(-) create mode 100644 examples/test-token-v1-registry/README.md create mode 100644 examples/test-token-v1-registry/package.json create mode 100644 examples/test-token-v1-registry/src/index.ts create mode 100644 examples/test-token-v1-registry/src/router.ts create mode 100644 examples/test-token-v1-registry/src/sdk.ts create mode 100644 examples/test-token-v1-registry/tsconfig.json create mode 100644 examples/test-token-v1-registry/tsup.config.ts create mode 100644 examples/test-token-v1-registry/vitest.config.ts diff --git a/examples/test-token-v1-registry/README.md b/examples/test-token-v1-registry/README.md new file mode 100644 index 000000000..ef4f25601 --- /dev/null +++ b/examples/test-token-v1-registry/README.md @@ -0,0 +1 @@ +# @canton-network/example-test-token-v1-registry diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json new file mode 100644 index 000000000..6de02959b --- /dev/null +++ b/examples/test-token-v1-registry/package.json @@ -0,0 +1,58 @@ +{ + "name": "@canton-network/example-test-token-v1-registry", + "version": "1.0.0", + "type": "module", + "description": "Example registry backend app for CIP-0056 token.", + "license": "Apache-2.0", + "author": "Mateusz Piątkowski ", + "main": "dist/index.cjs", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup --onSuccess \"tsc\"", + "dev": "node --experimental-transform-types --watch src/index.ts", + "clean": "tsc -b --clean; rm -rf dist", + "flatpack": "yarn pack --out \"$FLATPACK_OUTDIR\"", + "test": "vitest run --project node --project browser", + "test:coverage": "vitest run --project node --project browser --coverage" + }, + "devDependencies": { + "@types/koa": "^3", + "@types/node": "^25.9.3", + "@vitest/browser-playwright": "^4.1.8", + "@vitest/coverage-v8": "^4.1.8", + "openapi-typescript": "^7.13.0", + "playwright": "^1.60.0", + "tsup": "^8.5.1", + "typescript": "^5.9.3", + "vitest": "^4.1.8" + }, + "dependencies": { + "@canton-network/wallet-sdk": "workspace:^", + "@koa/router": "^15.7.0", + "koa": "^3.2.1" + }, + "files": [ + "dist/**" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/canton-network/wallet.git", + "directory": "examples/test-token-v1-registry" + }, + "homepage": "https://github.com/canton-network/wallet/tree/main/examples/test-token-v1-registry#readme", + "bugs": { + "url": "https://github.com/canton-network/wallet/issues" + } +} diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts new file mode 100644 index 000000000..5a8cfba0a --- /dev/null +++ b/examples/test-token-v1-registry/src/index.ts @@ -0,0 +1,9 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Koa from 'koa' +import router from './router' + +const app = new Koa() + +app.use(router.routes()).use(router.allowedMethods()).listen(3000) diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts new file mode 100644 index 000000000..338909808 --- /dev/null +++ b/examples/test-token-v1-registry/src/router.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Router from '@koa/router' + +const router = new Router() + +router.get('/', (ctx, next) => { + console.log('TEST') + return next() +}) + +export default router diff --git a/examples/test-token-v1-registry/src/sdk.ts b/examples/test-token-v1-registry/src/sdk.ts new file mode 100644 index 000000000..a188e40d5 --- /dev/null +++ b/examples/test-token-v1-registry/src/sdk.ts @@ -0,0 +1,20 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { localNetStaticConfig, SDK } from '@canton-network/wallet-sdk' + +const sdk = await SDK.create({ + auth: { + method: 'self_signed', + issuer: 'unsafe-auth', + credentials: { + clientId: localNetStaticConfig.LOCALNET_USER_ID, + clientSecret: 'unsafe', + audience: 'https://canton.network.global', + scope: '', + }, + }, + ledgerClientUrl: localNetStaticConfig.LOCALNET_APP_USER_LEDGER_URL, +}) + +export default sdk diff --git a/examples/test-token-v1-registry/tsconfig.json b/examples/test-token-v1-registry/tsconfig.json new file mode 100644 index 000000000..9cf98da56 --- /dev/null +++ b/examples/test-token-v1-registry/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/examples/test-token-v1-registry/tsup.config.ts b/examples/test-token-v1-registry/tsup.config.ts new file mode 100644 index 000000000..1f4074292 --- /dev/null +++ b/examples/test-token-v1-registry/tsup.config.ts @@ -0,0 +1,10 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { defineConfig } from 'tsup' +import { base } from '../../tsup.base' + +export default defineConfig({ + ...base, + entry: ['src/index.ts'], +}) diff --git a/examples/test-token-v1-registry/vitest.config.ts b/examples/test-token-v1-registry/vitest.config.ts new file mode 100644 index 000000000..d52fa766e --- /dev/null +++ b/examples/test-token-v1-registry/vitest.config.ts @@ -0,0 +1,48 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { defineConfig, defineProject } from 'vitest/config' +import { playwright } from '@vitest/browser-playwright' + +export default defineConfig({ + test: { + coverage: { + include: ['src/**/*.ts'], + provider: 'v8', + reporter: ['text', 'html', 'lcov', 'json-summary'], + thresholds: { + lines: 80, + functions: 80, + branches: 70, + statements: 80, + }, + }, + environment: 'node', + include: ['src/**/*.test.ts'], + projects: [ + defineProject({ + test: { + name: 'node', + environment: 'node', + include: ['src/**/*.test.ts'], + }, + }), + defineProject({ + test: { + name: 'browser', + include: ['src/**/*.test.ts'], + browser: { + enabled: true, + provider: playwright({ + trace: 'off', + screenshot: 'off', + video: 'off', + }), + instances: [{ browser: 'chromium' }], + headless: true, + }, + }, + }), + ], + }, +}) diff --git a/yarn.lock b/yarn.lock index 18ec2659f..993c71521 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2157,6 +2157,25 @@ __metadata: languageName: unknown linkType: soft +"@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry": + version: 0.0.0-use.local + resolution: "@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry" + dependencies: + "@canton-network/wallet-sdk": "workspace:^" + "@koa/router": "npm:^15.7.0" + "@types/koa": "npm:^3" + "@types/node": "npm:^25.9.3" + "@vitest/browser-playwright": "npm:^4.1.8" + "@vitest/coverage-v8": "npm:^4.1.8" + koa: "npm:^3.2.1" + openapi-typescript: "npm:^7.13.0" + playwright: "npm:^1.60.0" + tsup: "npm:^8.5.1" + typescript: "npm:^5.9.3" + vitest: "npm:^4.1.8" + languageName: unknown + linkType: soft + "@canton-network/example-walletconnect@workspace:examples/walletconnect": version: 0.0.0-use.local resolution: "@canton-network/example-walletconnect@workspace:examples/walletconnect" @@ -4404,6 +4423,23 @@ __metadata: languageName: node linkType: hard +"@koa/router@npm:^15.7.0": + version: 15.7.0 + resolution: "@koa/router@npm:15.7.0" + dependencies: + debug: "npm:^4.4.3" + http-errors: "npm:^2.0.1" + koa-compose: "npm:^4.1.0" + path-to-regexp: "npm:^8.4.2" + peerDependencies: + koa: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + koa: + optional: false + checksum: 10c0/da1f23f07684f5b39db5536cd6d4b77f7e38930786c2c0c13cf27d84ab90b6c9eea5ecf17f8f4c1b87ccc822a874f64c351b6e9b4c2e6c9324765564fce689cb + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -7887,6 +7923,15 @@ __metadata: languageName: node linkType: hard +"@types/accepts@npm:*": + version: 1.3.7 + resolution: "@types/accepts@npm:1.3.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/7b21efc78b98ed57063ac31588f871f11501c080cd1201ca3743cf02ee0aee74bdb5a634183bc0987dc8dc582b26316789fd203650319ccc89a66cf88311d64f + languageName: node + linkType: hard + "@types/argparse@npm:1.0.38": version: 1.0.38 resolution: "@types/argparse@npm:1.0.38" @@ -7991,6 +8036,13 @@ __metadata: languageName: node linkType: hard +"@types/content-disposition@npm:*": + version: 0.5.9 + resolution: "@types/content-disposition@npm:0.5.9" + checksum: 10c0/9fd520dae1a9c7b85909e59f548f905a670a6e2f83642f9734d1b05126f64ac8c8e2c282a663edf27d58bc34fbbacf46a4d4a95d3802b42106174a19a68175c8 + languageName: node + linkType: hard + "@types/cookiejar@npm:^2.1.5": version: 2.1.5 resolution: "@types/cookiejar@npm:2.1.5" @@ -7998,6 +8050,18 @@ __metadata: languageName: node linkType: hard +"@types/cookies@npm:*": + version: 0.9.2 + resolution: "@types/cookies@npm:0.9.2" + dependencies: + "@types/connect": "npm:*" + "@types/express": "npm:*" + "@types/keygrip": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/75f00c83d50998b610d4fe2ddb2544fde7eb6dc683f5e68831a4ecb458b465260b8e2df4e369880a67c5b946558322c4627403781eb076ff72ca16c7ab8c47dd + languageName: node + linkType: hard + "@types/cors@npm:^2.8.19": version: 2.8.19 resolution: "@types/cors@npm:2.8.19" @@ -8086,7 +8150,7 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:^5.0.6": +"@types/express@npm:*, @types/express@npm:^5.0.6": version: 5.0.6 resolution: "@types/express@npm:5.0.6" dependencies: @@ -8116,7 +8180,14 @@ __metadata: languageName: node linkType: hard -"@types/http-errors@npm:*": +"@types/http-assert@npm:*": + version: 1.5.6 + resolution: "@types/http-assert@npm:1.5.6" + checksum: 10c0/62d536440a5e09f4b7968112f4b235212407937033de800993f95b6f140181b4b2ad6075b73094e7ca0ccf7d9c80d68b93ca53fb1af196cc6d0257f3a4c3d5ba + languageName: node + linkType: hard + +"@types/http-errors@npm:*, @types/http-errors@npm:^2": version: 2.0.5 resolution: "@types/http-errors@npm:2.0.5" checksum: 10c0/00f8140fbc504f47356512bd88e1910c2f07e04233d99c88c854b3600ce0523c8cd0ba7d1897667243282eb44c59abb9245959e2428b9de004f93937f52f7c15 @@ -8153,6 +8224,38 @@ __metadata: languageName: node linkType: hard +"@types/keygrip@npm:*": + version: 1.0.6 + resolution: "@types/keygrip@npm:1.0.6" + checksum: 10c0/1045a79913259f539ac1d04384ea8f61cf29f1d299040eb4b67d92304ec3bcea59b7e4b83cf95a73aa251ff62e55924e380d0c563a21fe8f6e91de20cc610386 + languageName: node + linkType: hard + +"@types/koa-compose@npm:*": + version: 3.2.9 + resolution: "@types/koa-compose@npm:3.2.9" + dependencies: + "@types/koa": "npm:*" + checksum: 10c0/d89993ffadac74488cdb2ab0fc519ec43eab5e3e7b8baa37cb7fc5043c86d812c24a179efae1324d5e80c2f7b7ddfbc944df7052cab6ff98daf1df4a084ac348 + languageName: node + linkType: hard + +"@types/koa@npm:*, @types/koa@npm:^3": + version: 3.0.3 + resolution: "@types/koa@npm:3.0.3" + dependencies: + "@types/accepts": "npm:*" + "@types/content-disposition": "npm:*" + "@types/cookies": "npm:*" + "@types/http-assert": "npm:*" + "@types/http-errors": "npm:^2" + "@types/keygrip": "npm:*" + "@types/koa-compose": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/f5bb89fe7b35611ef0e96888ad15727b0b7e9153145f88100a2c9ef43f70e5fcc4ae496cc975efabb1f945dce8b1b2f33bcd6d752ad34e6a3a2ba7e523ee9596 + languageName: node + linkType: hard + "@types/lodash@npm:^4.17.20, @types/lodash@npm:^4.17.24, @types/lodash@npm:^4.5": version: 4.17.24 resolution: "@types/lodash@npm:4.17.24" @@ -9331,6 +9434,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + "accepts@npm:^2.0.0": version: 2.0.0 resolution: "accepts@npm:2.0.0" @@ -11053,7 +11166,7 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:^1.0.0": +"content-disposition@npm:^1.0.0, content-disposition@npm:~1.0.1": version: 1.0.1 resolution: "content-disposition@npm:1.0.1" checksum: 10c0/bd7ff1fe8d2542d3a2b9a29428cc3591f6ac27bb5595bba2c69664408a68f9538b14cbd92479796ea835b317a09a527c8c7209c4200381dedb0c34d3b658849e @@ -11146,6 +11259,16 @@ __metadata: languageName: node linkType: hard +"cookies@npm:~0.9.1": + version: 0.9.1 + resolution: "cookies@npm:0.9.1" + dependencies: + depd: "npm:~2.0.0" + keygrip: "npm:~1.1.0" + checksum: 10c0/3ffa1c0e992b62ee119adae4dd2ddd4a89166fa5434cd9bd9ff84ec4d2f14dfe2318a601280abfe32a4f64f884ec9345fb1912e488b002d188d2efa0d3919ba3 + languageName: node + linkType: hard + "core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": version: 3.48.0 resolution: "core-js-compat@npm:3.48.0" @@ -11478,6 +11601,13 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:~1.0.1": + version: 1.0.1 + resolution: "deep-equal@npm:1.0.1" + checksum: 10c0/bef838ef9824e124d10335deb9c7540bfc9f2f0eab17ad1bb870d0eee83ee4e7e6f6f892e5eebc2bd82759a76676926ad5246180097e28e57752176ff7dae888 + languageName: node + linkType: hard + "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -11564,6 +11694,13 @@ __metadata: languageName: node linkType: hard +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + languageName: node + linkType: hard + "depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" @@ -11571,6 +11708,13 @@ __metadata: languageName: node linkType: hard +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + languageName: node + linkType: hard + "destr@npm:^2.0.5": version: 2.0.5 resolution: "destr@npm:2.0.5" @@ -11578,7 +11722,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0, destroy@npm:~1.2.0": +"destroy@npm:1.2.0, destroy@npm:^1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 @@ -13667,6 +13811,16 @@ __metadata: languageName: node linkType: hard +"http-assert@npm:^1.5.0": + version: 1.5.0 + resolution: "http-assert@npm:1.5.0" + dependencies: + deep-equal: "npm:~1.0.1" + http-errors: "npm:~1.8.0" + checksum: 10c0/7b4e631114a1a77654f9ba3feb96da305ddbdeb42112fe384b7b3249c7141e460d7177970155bea6e54e655a04850415b744b452c1fe5052eba6f4186d16b095 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" @@ -13687,6 +13841,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:~1.8.0": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:>= 1.5.0 < 2" + toidentifier: "npm:1.0.1" + checksum: 10c0/f01aeecd76260a6fe7f08e192fcbe9b2f39ed20fc717b852669a69930167053b01790998275c6297d44f435cf0e30edd50c05223d1bec9bc484e6cf35b2d6f43 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -14663,6 +14830,15 @@ __metadata: languageName: node linkType: hard +"keygrip@npm:~1.1.0": + version: 1.1.0 + resolution: "keygrip@npm:1.1.0" + dependencies: + tsscmp: "npm:1.0.6" + checksum: 10c0/2aceec1a1e642a0caf938044056ed67b1909cfe67a93a59b32aae2863e0f35a1a53782ecc8f9cd0e3bdb60863fa0f401ccbd257cd7dfae61915f78445139edea + languageName: node + linkType: hard + "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -14679,6 +14855,39 @@ __metadata: languageName: node linkType: hard +"koa-compose@npm:^4.1.0": + version: 4.1.0 + resolution: "koa-compose@npm:4.1.0" + checksum: 10c0/f1f786f994a691931148e7f38f443865bf2702af4a61610d1eea04dab79c04b1232285b59d82a0cf61c830516dd92f10ab0d009b024fcecd4098e7d296ab771a + languageName: node + linkType: hard + +"koa@npm:^3.2.1": + version: 3.2.1 + resolution: "koa@npm:3.2.1" + dependencies: + accepts: "npm:^1.3.8" + content-disposition: "npm:~1.0.1" + content-type: "npm:^1.0.5" + cookies: "npm:~0.9.1" + delegates: "npm:^1.0.0" + destroy: "npm:^1.2.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + fresh: "npm:~0.5.2" + http-assert: "npm:^1.5.0" + http-errors: "npm:^2.0.0" + koa-compose: "npm:^4.1.0" + mime-types: "npm:^3.0.1" + on-finished: "npm:^2.4.1" + parseurl: "npm:^1.3.3" + statuses: "npm:^2.0.1" + type-is: "npm:^2.0.1" + vary: "npm:^1.1.2" + checksum: 10c0/84352ef0ec0f54898f119ac589c7d96442ac21f494f3e1abca55d19c0cd51177f43b75440092d74730261d4d91270b5ba0396156e04b21132ab2251f8b4d2cde + languageName: node + linkType: hard + "kolorist@npm:^1.8.0": version: 1.8.0 resolution: "kolorist@npm:1.8.0" @@ -15284,7 +15493,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24": +"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -15293,7 +15502,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^3.0.0, mime-types@npm:^3.0.2": +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1, mime-types@npm:^3.0.2": version: 3.0.2 resolution: "mime-types@npm:3.0.2" dependencies: @@ -15669,6 +15878,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + "negotiator@npm:^1.0.0": version: 1.0.0 resolution: "negotiator@npm:1.0.0" @@ -16674,6 +16890,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^8.4.2": + version: 8.4.2 + resolution: "path-to-regexp@npm:8.4.2" + checksum: 10c0/05b115c49b47ad252ce05faa32930f643f23769c68b8bcfe78ad833545140c48bbffb3266986d6c8d5db13a64cf12e07e0d72d9882cab830efeefa553533ebaf + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -18380,7 +18603,7 @@ __metadata: languageName: node linkType: hard -"setprototypeof@npm:~1.2.0": +"setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc @@ -18756,6 +18979,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + languageName: node + linkType: hard + "statuses@npm:^2.0.1, statuses@npm:^2.0.2, statuses@npm:~2.0.2": version: 2.0.2 resolution: "statuses@npm:2.0.2" @@ -18763,13 +18993,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:~1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 - languageName: node - linkType: hard - "std-env@npm:^4.0.0-rc.1": version: 4.0.0 resolution: "std-env@npm:4.0.0" @@ -19325,7 +19548,7 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:~1.0.1": +"toidentifier@npm:1.0.1, toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 @@ -19503,6 +19726,13 @@ __metadata: languageName: node linkType: hard +"tsscmp@npm:1.0.6": + version: 1.0.6 + resolution: "tsscmp@npm:1.0.6" + checksum: 10c0/2f79a9455e7e3e8071995f98cdf3487ccfc91b760bec21a9abb4d90519557eafaa37246e87c92fa8bf3fef8fd30cfd0cc3c4212bb929baa9fb62494bfa4d24b2 + languageName: node + linkType: hard + "tsup@npm:^8.5.1": version: 8.5.1 resolution: "tsup@npm:8.5.1" From 7991b87d1b8eebb8a263ec4fd4926b2cb54413e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Mon, 13 Jul 2026 09:03:37 +0200 Subject: [PATCH 07/28] feat(example-test-token-v1-registry): begin adding api with openapi :wip: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- api-specs/ledger-api/3.5.8/asyncapi.yaml | 2545 +++++ api-specs/ledger-api/3.5.8/openapi.yaml | 8778 ++++++++++++++++ api-specs/splice/0.6.12/README.md | 5 + .../0.6.12/allocation-instruction-v1.yaml | 147 + .../0.6.12/allocation-instruction-v2.yaml | 255 + api-specs/splice/0.6.12/allocation-v1.yaml | 191 + api-specs/splice/0.6.12/allocation-v2.yaml | 257 + api-specs/splice/0.6.12/ans-external.yaml | 187 + api-specs/splice/0.6.12/common-external.yaml | 223 + api-specs/splice/0.6.12/common-internal.yaml | 396 + api-specs/splice/0.6.12/scan-proxy.yaml | 855 ++ .../splice/0.6.12/scan-stream-server.yaml | 64 + api-specs/splice/0.6.12/scan.yaml | 4839 +++++++++ .../splice/0.6.12/splitwell-internal.yaml | 468 + api-specs/splice/0.6.12/sv-internal.yaml | 1606 +++ .../splice/0.6.12/token-metadata-v1.yaml | 243 + .../0.6.12/transfer-instruction-v1.yaml | 264 + .../0.6.12/transfer-instruction-v2.yaml | 287 + .../splice/0.6.12/validator-internal.yaml | 1203 +++ api-specs/splice/0.6.12/wallet-external.yaml | 519 + api-specs/splice/0.6.12/wallet-internal.yaml | 2379 +++++ .../src/generated-clients/asyncapi-3.5.8.ts | 1408 +++ .../openapi-3.5.8-provider-types.ts | 1931 ++++ .../src/generated-clients/openapi-3.5.8.ts | 8988 +++++++++++++++++ .../src/generated-clients/scan-proxy.ts | 106 +- .../src/generated-clients/scan.ts | 907 +- .../generated-clients/validator-internal.ts | 92 +- .../token-metadata-v1.ts | 49 + examples/test-token-v1-registry/package.json | 14 +- .../src/api/metadata/index.ts | 21 + .../src/common/generateTypes.ts | 32 + .../src/common/getOpenApiPath.ts | 40 + examples/test-token-v1-registry/src/index.ts | 5 +- .../src/openapi-ts/.gitignore | 2 + examples/test-token-v1-registry/src/router.ts | 13 - examples/test-token-v1-registry/src/sdk.ts | 32 +- examples/test-token-v1-registry/tsconfig.json | 5 +- scripts/src/lib/version-config.json | 10 +- .../src/plugins/__test__/testToken.test.ts | 2 +- sdk/wallet-sdk/src/plugins/testToken.ts | 2 +- yarn.lock | 4868 ++++++++- 41 files changed, 43297 insertions(+), 941 deletions(-) create mode 100644 api-specs/ledger-api/3.5.8/asyncapi.yaml create mode 100644 api-specs/ledger-api/3.5.8/openapi.yaml create mode 100644 api-specs/splice/0.6.12/README.md create mode 100644 api-specs/splice/0.6.12/allocation-instruction-v1.yaml create mode 100644 api-specs/splice/0.6.12/allocation-instruction-v2.yaml create mode 100644 api-specs/splice/0.6.12/allocation-v1.yaml create mode 100644 api-specs/splice/0.6.12/allocation-v2.yaml create mode 100644 api-specs/splice/0.6.12/ans-external.yaml create mode 100644 api-specs/splice/0.6.12/common-external.yaml create mode 100644 api-specs/splice/0.6.12/common-internal.yaml create mode 100644 api-specs/splice/0.6.12/scan-proxy.yaml create mode 100644 api-specs/splice/0.6.12/scan-stream-server.yaml create mode 100644 api-specs/splice/0.6.12/scan.yaml create mode 100644 api-specs/splice/0.6.12/splitwell-internal.yaml create mode 100644 api-specs/splice/0.6.12/sv-internal.yaml create mode 100644 api-specs/splice/0.6.12/token-metadata-v1.yaml create mode 100644 api-specs/splice/0.6.12/transfer-instruction-v1.yaml create mode 100644 api-specs/splice/0.6.12/transfer-instruction-v2.yaml create mode 100644 api-specs/splice/0.6.12/validator-internal.yaml create mode 100644 api-specs/splice/0.6.12/wallet-external.yaml create mode 100644 api-specs/splice/0.6.12/wallet-internal.yaml create mode 100644 core/ledger-client-types/src/generated-clients/asyncapi-3.5.8.ts create mode 100644 core/ledger-client-types/src/generated-clients/openapi-3.5.8-provider-types.ts create mode 100644 core/ledger-client-types/src/generated-clients/openapi-3.5.8.ts create mode 100644 examples/test-token-v1-registry/src/api/metadata/index.ts create mode 100644 examples/test-token-v1-registry/src/common/generateTypes.ts create mode 100644 examples/test-token-v1-registry/src/common/getOpenApiPath.ts create mode 100644 examples/test-token-v1-registry/src/openapi-ts/.gitignore delete mode 100644 examples/test-token-v1-registry/src/router.ts diff --git a/api-specs/ledger-api/3.5.8/asyncapi.yaml b/api-specs/ledger-api/3.5.8/asyncapi.yaml new file mode 100644 index 000000000..7f58daae3 --- /dev/null +++ b/api-specs/ledger-api/3.5.8/asyncapi.yaml @@ -0,0 +1,2545 @@ +asyncapi: 2.6.0 +info: + title: JSON Ledger API WebSocket endpoints + version: 3.5.8 + description: |- + This specification version fixes the API inconsistencies where certain fields marked as required in the spec are in fact optional. + If you use code generation tool based on this file, you might need to adjust the existing application code to handle those fields as optional. + If you do not want to change your client code, continue using the OpenAPI specification for the latest Canton 3.4 patch release. + MINIMUM_CANTON_VERSION=3.5.8 +channels: + /v2/commands/completions: + description: |- + Deprecated: please use ``GetCompletions`` instead. + Subscribe to command completion events. + subscribe: + operationId: onV2CommandsCompletions + message: + $ref: '#/components/messages/Either_JsCantonError_CompletionStreamResponse' + publish: + operationId: sendV2CommandsCompletions + message: + $ref: '#/components/messages/CompletionStreamRequest' + bindings: + ws: + method: GET + /v2/commands/command-completions: + description: |- + Subscribe to command completion events. + This streaming endpoint provides more flexibility in filtering than the predecessor ``CompletionStream``. + subscribe: + operationId: onV2CommandsCommand-completions + message: + $ref: '#/components/messages/Either_JsCantonError_CompletionStreamResponse' + publish: + operationId: sendV2CommandsCommand-completions + message: + $ref: '#/components/messages/GetCompletionsRequest' + bindings: + ws: + method: GET + /v2/state/active-contracts: + description: |- + Returns a stream of the snapshot of the active contracts and incomplete (un)assignments at a ledger offset. + Once the stream of GetActiveContractsResponses completes, + the client SHOULD begin streaming updates from the update service, + starting at the GetActiveContractsRequest.active_at_offset specified in this request. + Clients SHOULD NOT assume that the set of active contracts they receive reflects the state at the ledger end. + subscribe: + operationId: onV2StateActive-contracts + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetActiveContractsResponse' + publish: + operationId: sendV2StateActive-contracts + message: + $ref: '#/components/messages/GetActiveContractsRequest' + bindings: + ws: + method: GET + /v2/updates: + description: |- + Read the ledger's filtered update stream for the specified contents and filters. + It returns the event types in accordance with the stream contents selected. Also the selection criteria + for individual events depends on the transaction shape chosen. + + - ACS delta: a requesting party must be a stakeholder of an event for it to be included. + - ledger effects: a requesting party must be a witness of an event for it to be included. + subscribe: + operationId: onV2Updates + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetUpdatesResponse' + publish: + operationId: sendV2Updates + message: + $ref: '#/components/messages/GetUpdatesRequest' + bindings: + ws: + method: GET + /v2/updates/flats: + description: Get flat transactions update stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + subscribe: + operationId: onV2UpdatesFlats + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetUpdatesResponse' + publish: + operationId: sendV2UpdatesFlats + message: + $ref: '#/components/messages/GetUpdatesRequest' + bindings: + ws: + method: GET + /v2/updates/trees: + description: Get update transactions tree stream. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates instead. + subscribe: + operationId: onV2UpdatesTrees + message: + $ref: '#/components/messages/Either_JsCantonError_JsGetUpdateTreesResponse' + publish: + operationId: sendV2UpdatesTrees + message: + $ref: '#/components/messages/GetUpdatesRequest' + bindings: + ws: + method: GET +components: + schemas: + JsCantonError: + title: JsCantonError + type: object + required: + - code + - cause + - context + - errorCategory + properties: + code: + type: string + cause: + type: string + correlationId: + type: string + traceId: + type: string + context: + $ref: '#/components/schemas/Map_String' + resources: + type: array + items: + $ref: '#/components/schemas/Tuple2_String_String' + errorCategory: + type: integer + format: int32 + grpcCodeValue: + type: integer + format: int32 + retryInfo: + type: string + definiteAnswer: + type: boolean + Map_String: + title: Map_String + type: object + additionalProperties: + type: string + Tuple2_String_String: + title: Tuple2_String_String + type: array + prefixItems: + - type: string + - type: string + CompletionStreamRequest: + title: CompletionStreamRequest + type: object + required: + - parties + properties: + userId: + description: |- + Only completions of commands submitted with the same user_id will be visible in the stream. + Must be a valid UserIdString (as described in ``value.proto``). + + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + + Optional + type: string + parties: + description: |- + Non-empty list of parties whose data should be included. + The stream shows only completions of commands for which at least one of the ``act_as`` parties is in the given set of parties. + Must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + beginExclusive: + description: |- + This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + If not set the ledger uses the ledger begin offset instead. + If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. + + Optional + type: integer + format: int64 + Either_JsCantonError_CompletionStreamResponse: + title: Either_JsCantonError_CompletionStreamResponse + oneOf: + - $ref: '#/components/schemas/CompletionStreamResponse' + - $ref: '#/components/schemas/JsCantonError' + Map_K_V: + title: Map_K_V + type: object + additionalProperties: + type: string + CompletionStreamResponse: + title: CompletionStreamResponse + type: object + properties: + completionResponse: + $ref: '#/components/schemas/CompletionResponse' + CompletionResponse: + title: CompletionResponse + oneOf: + - type: object + required: + - Completion + properties: + Completion: + $ref: '#/components/schemas/Completion' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty1' + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint' + Completion: + title: Completion + description: 'A completion represents the status of a submitted command on the + ledger: it can be successful or failed.' + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Completion1' + Completion1: + title: Completion + description: 'A completion represents the status of a submitted command on the + ledger: it can be successful or failed.' + type: object + required: + - commandId + - userId + - offset + - actAs + - synchronizerTime + properties: + commandId: + description: |- + The ID of the succeeded or failed command. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + status: + $ref: '#/components/schemas/JsStatus' + description: |- + Identifies the exact type of the error. + It uses the same format of conveying error details as it is used for the RPC responses of the APIs. + + Optional + updateId: + description: |- + The update_id of the transaction or reassignment that resulted from the command with command_id. + + Only set for successfully executed commands. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + userId: + description: |- + The user-id that was used for the submission, as described in ``commands.proto``. + Must be a valid UserIdString (as described in ``value.proto``). + + Required + type: string + actAs: + description: |- + The set of parties on whose behalf the commands were executed. + Contains the ``act_as`` parties from ``commands.proto`` + filtered to the requesting parties in CompletionStreamRequest. + The order of the parties need not be the same as in the submission. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + submissionId: + description: |- + The submission ID this completion refers to, as described in ``commands.proto``. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + The Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + offset: + description: |- + May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time. + Must be a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerTime: + $ref: '#/components/schemas/SynchronizerTime' + description: |- + The synchronizer along with its record time. + The synchronizer id provided, in case of + + - successful/failed transactions: identifies the synchronizer of the transaction + - for successful/failed unassign commands: identifies the source synchronizer + - for successful/failed assign commands: identifies the target synchronizer + + Required + paidTrafficCost: + description: |- + The traffic cost paid by this participant node for the confirmation request + for the submitted command. + + Commands whose execution is rejected before their corresponding + confirmation request is ordered by the synchronizer will report a paid + traffic cost of zero. + If a confirmation request is ordered for a command, but the request fails + (e.g., due to contention with a concurrent contract archival), the traffic + cost is paid and reported on the failed completion for the request. + + If you want to correlate the traffic cost of a successful completion + with the transaction that resulted from the command, you can use the + ``offset`` field to retrieve the transaction using + ``UpdateService.GetUpdateByOffset`` on the same participant node; or alternatively use the ``update_id`` + field to retrieve the transaction using ``UpdateService.GetUpdateById`` on any participant node + that sees the transaction. + + Note: for completions processed before the participant started serving + traffic cost on the Ledger API, this field will be set to zero. + Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater + than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. + The cost reported here is the one paid for ordering the confirmation request. + + Optional + type: integer + format: int64 + JsStatus: + title: JsStatus + type: object + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + $ref: '#/components/schemas/ProtoAny' + ProtoAny: + title: ProtoAny + type: object + required: + - typeUrl + - value + - unknownFields + properties: + typeUrl: + type: string + value: + type: string + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + valueDecoded: + type: string + UnknownFieldSet: + title: UnknownFieldSet + type: object + required: + - fields + properties: + fields: + $ref: '#/components/schemas/Map_Int_Field' + Map_Int_Field: + title: Map_Int_Field + type: object + additionalProperties: + $ref: '#/components/schemas/Field' + Field: + title: Field + type: object + properties: + varint: + type: array + items: + type: integer + format: int64 + fixed64: + type: array + items: + type: integer + format: int64 + fixed32: + type: array + items: + type: integer + format: int32 + lengthDelimited: + type: array + items: + type: string + DeduplicationPeriod: + title: DeduplicationPeriod + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty' + DeduplicationDuration: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + Duration: + title: Duration + type: object + required: + - seconds + - nanos + properties: + seconds: + type: integer + format: int64 + nanos: + type: integer + format: int32 + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + description: This field is automatically added as part of protobuf to json + mapping + DeduplicationOffset: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + Empty: + title: Empty + type: object + TraceContext: + title: TraceContext + type: object + properties: + traceparent: + description: |- + https://www.w3.org/TR/trace-context/ + + Optional + type: string + tracestate: + description: Optional + type: string + SynchronizerTime: + title: SynchronizerTime + type: object + required: + - synchronizerId + - recordTime + properties: + synchronizerId: + description: |- + The id of the synchronizer. + + Required + type: string + recordTime: + description: |- + All commands with a maximum record time below this value MUST be considered lost if their completion has not arrived before this checkpoint. + + Required + type: string + Empty1: + title: Empty + type: object + OffsetCheckpoint: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/OffsetCheckpoint1' + OffsetCheckpoint1: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - offset + properties: + offset: + description: |- + The participant's offset, the details of the offset field are described in ``community/ledger-api/README.md``. + Must be a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerTimes: + description: |- + The times associated with each synchronizer at this offset. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/SynchronizerTime' + GetCompletionsRequest: + title: GetCompletionsRequest + type: object + properties: + parties: + description: |- + If specified, only completions of commands are included, which have at least one of the ``act_as`` parties + in the given set of parties. + Only Ledger API users with CanReadAsAnyParty permission allowed to provide no ``parties``. + Must be a valid PartyIdString (as described in ``value.proto``). + + Optional: can be empty + type: array + items: + type: string + beginExclusive: + description: |- + This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + If not set the ledger uses the ledger begin offset instead. + If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. (the pruning + offset is accessible on the StateService.GetLatestPrunedOffsets endpoint) + + Optional + type: integer + format: int64 + GetActiveContractsRequest: + title: GetActiveContractsRequest + description: |- + If the given offset is different than the ledger end, and there are (un)assignments in-flight at the given offset, + the snapshot may fail with "FAILED_PRECONDITION/PARTICIPANT_PRUNED_DATA_ACCESSED". + Note that it is ok to request acs snapshots for party migration with offsets other than ledger end, because party + migration is not concerned with incomplete (un)assignments. + type: object + required: + - activeAtOffset + properties: + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Templates to include in the served snapshot, per party. + Optional, if specified event_format must be unset, if not specified event_format must be set. + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + Optional, if specified event_format must be unset. + type: boolean + activeAtOffset: + description: |- + The offset at which the snapshot of the active contracts will be computed. + Must be no greater than the current ledger end offset. + Must be greater than or equal to the last pruning offset. + Must be a valid absolute offset (positive integer) or ledger begin offset (zero). + If zero, the empty set will be returned. + + Required + type: integer + format: int64 + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of + TRANSACTION_SHAPE_ACS_DELTA. + Optional for backwards compatibility, defaults to an EventFormat where: + + - filters_by_party is the filter.filters_by_party from this request + - filters_for_any_party is the filter.filters_for_any_party from this request + - verbose is the verbose field from this request + streamContinuationToken: + description: |- + Opaque representation of a continuation token defining a position in the active contracts snapshot. + The prefix of the active contracts snapshot will be omitted up to and including the element from which + the continuation token was read. + To reuse the continuation token from a `GetActiveContractsPageResponse`: + + - subsequent request must be executed on the same participant with the same version of canton, + - subsequent request must have the same active_at_offset, + - subsequent request must have the same event_format + - and the participant must not have been pruned after the active_at_offset. + + If not specified, the whole active contracts snapshot will be returned. + + Optional: can be empty + type: string + TransactionFilter: + title: TransactionFilter + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Used both for filtering create and archive events as well as for filtering transaction trees. + type: object + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **transaction trees** (used in GetUpdateTreesResponse for backwards compatibility) all party keys used as + wildcard filters, and all subtrees whose root has one of the listed parties as an informee are returned. + If there are ``CumulativeFilter``s, those will control returned ``CreatedEvent`` fields where applicable, but will + not be used for template/interface filtering. + 2. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 3. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + Map_Filters: + title: Map_Filters + type: object + additionalProperties: + $ref: '#/components/schemas/Filters' + Filters: + title: Filters + description: The union of a set of template filters, interface filters, or a + wildcard. + type: object + properties: + cumulative: + description: |- + Every filter in the cumulative list expands the scope of the resulting stream. Each interface, + template or wildcard filter means additional events that will match the query. + The impact of include_interface_view and include_created_event_blob fields in the filters will + also be accumulated. + A template or an interface SHOULD NOT appear twice in the accumulative field. + A wildcard filter SHOULD NOT be defined more than once in the accumulative field. + If no ``CumulativeFilter`` defined, the default of a single ``WildcardFilter`` with + include_created_event_blob unset is used. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/CumulativeFilter' + CumulativeFilter: + title: CumulativeFilter + description: |- + A filter that matches all contracts that are either an instance of one of + the ``template_filters`` or that match one of the ``interface_filters``. + type: object + properties: + identifierFilter: + $ref: '#/components/schemas/IdentifierFilter' + IdentifierFilter: + title: IdentifierFilter + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty2' + - type: object + required: + - InterfaceFilter + properties: + InterfaceFilter: + $ref: '#/components/schemas/InterfaceFilter' + - type: object + required: + - TemplateFilter + properties: + TemplateFilter: + $ref: '#/components/schemas/TemplateFilter' + - type: object + required: + - WildcardFilter + properties: + WildcardFilter: + $ref: '#/components/schemas/WildcardFilter' + Empty2: + title: Empty + type: object + InterfaceFilter: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/InterfaceFilter1' + InterfaceFilter1: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - interfaceId + properties: + interfaceId: + description: |- + The interface that a matching contract must implement. + The ``interface_id`` needs to be valid: corresponding interface should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeInterfaceView: + description: |- + Whether to include the interface view on the contract in the returned ``CreatedEvent``. + Use this to access contract data in a uniform manner in your API client. + + Optional + type: boolean + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + + Optional + type: boolean + TemplateFilter: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/TemplateFilter1' + TemplateFilter1: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - templateId + properties: + templateId: + description: |- + A template for which the payload should be included in the response. + The ``template_id`` needs to be valid: corresponding template should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract event payload in your API client + for submitting it as a disclosed contract with future commands. + + Optional + type: boolean + WildcardFilter: + title: WildcardFilter + description: This filter matches all templates. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/WildcardFilter1' + WildcardFilter1: + title: WildcardFilter + description: This filter matches all templates. + type: object + properties: + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + + Optional + type: boolean + EventFormat: + title: EventFormat + description: |- + A format for events which defines both which events should be included + and what data should be computed and included for them. + + Note that some of the filtering behavior depends on the `TransactionShape`, + which is expected to be specified alongside usages of `EventFormat`. + type: object + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 2. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + + Optional: can be empty + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + + Optional + verbose: + description: |- + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + + Optional + type: boolean + Either_JsCantonError_JsGetActiveContractsResponse: + title: Either_JsCantonError_JsGetActiveContractsResponse + oneOf: + - $ref: '#/components/schemas/JsCantonError' + - $ref: '#/components/schemas/JsGetActiveContractsResponse' + JsGetActiveContractsResponse: + title: JsGetActiveContractsResponse + type: object + properties: + workflowId: + description: |- + The workflow ID used in command submission which corresponds to the contract_entry. Only set if + the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + contractEntry: + $ref: '#/components/schemas/JsContractEntry' + streamContinuationToken: + description: |- + Opaque representation of a continuation token which can be used in the request to bypass the already processed part + of the active contracts snapshot. + Only populated for the streaming ``GetActiveContracts`` rpc call. + + Optional: can be empty + type: string + JsContractEntry: + title: JsContractEntry + oneOf: + - type: object + required: + - JsActiveContract + properties: + JsActiveContract: + $ref: '#/components/schemas/JsActiveContract' + - type: object + required: + - JsEmpty + properties: + JsEmpty: + $ref: '#/components/schemas/JsEmpty' + - type: object + required: + - JsIncompleteAssigned + properties: + JsIncompleteAssigned: + $ref: '#/components/schemas/JsIncompleteAssigned' + - type: object + required: + - JsIncompleteUnassigned + properties: + JsIncompleteUnassigned: + $ref: '#/components/schemas/JsIncompleteUnassigned' + JsActiveContract: + title: JsActiveContract + type: object + required: + - createdEvent + - synchronizerId + - reassignmentCounter + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The event as it appeared in the context of its last update (i.e. daml transaction or + reassignment). In particular, the last offset, node_id pair is preserved. + The last update is the most recent update created or assigned this contract on synchronizer_id synchronizer. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + + Required + synchronizerId: + description: |- + A valid synchronizer id + + Required + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + This field will be the reassignment_counter of the latest observable activation event on this synchronizer, which is + before the active_at_offset. + + Required + type: integer + format: int64 + CreatedEvent: + title: CreatedEvent + description: Records that a contract has been created, and choices may now be + exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - createdAt + - packageName + - representativePackageId + - acsDelta + - createArgument + - witnessParties + - signatories + properties: + offset: + description: |- + The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + It is a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + The origin has contextual meaning, please see description at messages that include a CreatedEvent. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + contractId: + description: |- + The ID of the created contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + The template of the created contract. + The identifier uses the package-id reference format. + + Required + type: string + contractKey: + description: |- + The key of the created contract. + This will be set if and only if ``template_id`` defines a contract key. + + Optional + contractKeyHash: + description: |- + The hash of contract_key. + This will be set if and only if ``template_id`` defines a contract key. + + Optional: can be empty + type: string + createArgument: + description: |- + The arguments that have been used to create the contract. + + Required + createdEventBlob: + description: |- + Opaque representation of contract create event payload intended for forwarding + to an API server as a contract disclosed as part of a command + submission. + + Optional: can be empty + type: string + interfaceViews: + description: |- + Interface views specified in the transaction filter. + Includes an ``InterfaceView`` for each interface for which there is a ``InterfaceFilter`` with + + - its party in the ``witness_parties`` of this event, + - and which is implemented by the template of this event, + - and which has ``include_interface_view`` set. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/JsInterfaceView' + witnessParties: + description: |- + The parties that are notified of this event. When a ``CreatedEvent`` + is returned as part of a transaction tree or ledger-effects transaction, this will include all + the parties specified in the ``TransactionFilter`` that are witnesses of the event + (the stakeholders of the contract and all informees of all the ancestors + of this create action that this participant knows about). + If served as part of a ACS delta transaction those will + be limited to all parties specified in the ``TransactionFilter`` that + are stakeholders of the contract (i.e. either signatories or observers). + If the ``CreatedEvent`` is returned as part of an AssignedEvent, + ActiveContract or IncompleteUnassigned (so the event is related to + an assignment or unassignment): this will include all parties of the + ``TransactionFilter`` that are stakeholders of the contract. + + The behavior of reading create events visible to parties not hosted + on the participant node serving the Ledger API is undefined. Concretely, + there is neither a guarantee that the participant node will serve all their + create events on the ACS stream, nor is there a guarantee that matching archive + events are delivered for such create events. + + For most clients this is not a problem, as they only read events for parties + that are hosted on the participant node. If you need to read events + for parties that may not be hosted at all times on the participant node, + subscribe to the ``TopologyEvent``s for that party by setting a corresponding + ``UpdateFormat``. Using these events, query the ACS as-of an offset where the + party is hosted on the participant node, and ignore create events at offsets + where the party is not hosted on the participant node. + + Required: must be non-empty + type: array + items: + type: string + signatories: + description: |- + The signatories for this contract as specified by the template. + + Required: must be non-empty + type: array + items: + type: string + observers: + description: |- + The observers for this contract as specified explicitly by the template or implicitly as choice controllers. + This field never contains parties that are signatories. + + Optional: can be empty + type: array + items: + type: string + createdAt: + description: |- + Ledger effective time of the transaction that created the contract. + + Required + type: string + packageName: + description: |- + The package name of the created contract. + + Required + type: string + representativePackageId: + description: |- + A package-id present in the participant package store that typechecks the contract's argument. + This may differ from the package-id of the template used to create the contract. + For contracts created before Canton 3.4, this field matches the contract's creation package-id. + + NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice. + + Required + type: string + acsDelta: + description: |- + Whether this event would be part of respective ACS_DELTA shaped stream, + and should therefore considered when tracking contract activeness on the client-side. + + Required + type: boolean + JsInterfaceView: + title: JsInterfaceView + description: View of a create event matched by an interface filter. + type: object + required: + - interfaceId + - viewStatus + properties: + interfaceId: + description: |- + The interface implemented by the matched event. + The identifier uses the package-id reference format. + + Required + type: string + viewStatus: + $ref: '#/components/schemas/JsStatus' + description: |- + Whether the view was successfully computed, and if not, + the reason for the error. The error is reported using the same rules + for error codes and messages as the errors returned for API requests. + + Required + viewValue: + description: |- + The value of the interface's view method on this event. + Set if it was requested in the ``InterfaceFilter`` and it could be + successfully computed. + + Optional + implementationPackageId: + description: |- + The package defining the interface implementation used to compute the view. + Can be different from the package that was used to create the contract itself, + as the contract arguments can be upgraded or downgraded using smart-contract upgrading + as part of computing the interface view. + Populated if the view computation is successful, otherwise empty. + + Optional + type: string + JsEmpty: + title: JsEmpty + type: object + JsIncompleteAssigned: + title: JsIncompleteAssigned + type: object + required: + - assignedEvent + properties: + assignedEvent: + $ref: '#/components/schemas/JsAssignedEvent' + description: Required + JsAssignedEvent: + title: JsAssignedEvent + description: Records that a contract has been assigned, and it can be used on + the target synchronizer. + type: object + required: + - source + - target + - reassignmentId + - reassignmentCounter + - createdEvent + properties: + source: + description: |- + The ID of the source synchronizer. + Must be a valid synchronizer id. + + Required + type: string + target: + description: |- + The ID of the target synchronizer. + Must be a valid synchronizer id. + + Required + type: string + reassignmentId: + description: |- + The ID from the unassigned event. + For correlation capabilities. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + submitter: + description: |- + Party on whose behalf the assign command was executed. + Empty if the assignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + + Required + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The offset of this event refers to the offset of the assignment, + while the node_id is the index of within the batch. + + Required + JsIncompleteUnassigned: + title: JsIncompleteUnassigned + type: object + required: + - createdEvent + - unassignedEvent + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The event as it appeared in the context of its last activation update (i.e. daml transaction or + reassignment). In particular, the last activation offset, node_id pair is preserved. + The last activation update is the most recent update created or assigned this contract on synchronizer_id synchronizer before + the unassigned_event. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + + Required + unassignedEvent: + $ref: '#/components/schemas/UnassignedEvent' + description: Required + UnassignedEvent: + title: UnassignedEvent + description: Records that a contract has been unassigned, and it becomes unusable + on the source synchronizer + type: object + required: + - reassignmentId + - contractId + - source + - target + - reassignmentCounter + - packageName + - offset + - nodeId + - templateId + - witnessParties + properties: + reassignmentId: + description: |- + The ID of the unassignment. This needs to be used as an input for a assign ReassignmentCommand. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + contractId: + description: |- + The ID of the reassigned contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + The template of the reassigned contract. + The identifier uses the package-id reference format. + + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + + Required + type: string + submitter: + description: |- + Party on whose behalf the unassign command was executed. + Empty if the unassignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + + Required + type: integer + format: int64 + assignmentExclusivity: + description: |- + Assignment exclusivity + Before this time (measured on the target synchronizer), only the submitter of the unassignment can initiate the assignment + Defined for reassigning participants. + + Optional + type: string + witnessParties: + description: |- + The parties that are notified of this event. + + Required: must be non-empty + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + + Required + type: string + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Reassignments can thus NOT be assumed to have the same offsets on different participant nodes. + Must be a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of reassignments. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + GetUpdatesRequest: + title: GetUpdatesRequest + type: object + required: + - beginExclusive + properties: + beginExclusive: + description: |- + Exclusive lower bound offset of the requested ledger section (non-negative integer). + The response will only contain transactions whose offset is strictly greater than this. + If set to zero, the lower bound is set to the beginning of the ledger. + If the participant has been pruned, this parameter must be greater or equal than the pruning offset. + Required + type: integer + format: int64 + endInclusive: + description: |- + Inclusive higher bound offset of the requested ledger section. + If specified the response will only contain transactions whose offset is less than or equal to this. + If not specified, + + - the descending_order must not be selected, + - the stream will not terminate. + + Optional + type: integer + format: int64 + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Requesting parties with template filters. + Template filters must be empty for GetUpdateTrees requests. + Optional for backwards compatibility, if defined update_format must be unset + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels, record and variant type ids + for record fields. + Optional for backwards compatibility, if defined update_format must be unset + type: boolean + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + Must be unset for GetUpdateTrees request. + Optional for backwards compatibility for GetUpdates request: defaults to an UpdateFormat where: + + - include_transactions.event_format.filters_by_party = the filter.filters_by_party on this request + - include_transactions.event_format.filters_for_any_party = the filter.filters_for_any_party on this request + - include_transactions.event_format.verbose = the same flag specified on this request + - include_transactions.transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + - include_reassignments.filter = the same filter specified on this request + - include_reassignments.verbose = the same flag specified on this request + - include_topology_events.include_participant_authorization_events.parties = all the parties specified in filter + descendingOrder: + description: |- + If set, the stream will populate the elements in descending order. + + Optional + type: boolean + UpdateFormat: + title: UpdateFormat + description: A format specifying what updates to include and how to render them. + type: object + properties: + includeTransactions: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Include Daml transactions in streams. + If unset, no transactions are emitted in the stream. + + Optional + includeReassignments: + $ref: '#/components/schemas/EventFormat' + description: |- + Include (un)assignments in the stream. + The events in the result take the shape TRANSACTION_SHAPE_ACS_DELTA. + If unset, no (un)assignments are emitted in the stream. + + Optional + includeTopologyEvents: + $ref: '#/components/schemas/TopologyFormat' + description: |- + Include topology events in streams. + If unset no topology events are emitted in the stream. + + Optional + TransactionFormat: + title: TransactionFormat + description: |- + A format that specifies what events to include in Daml transactions + and what data to compute and include for them. + type: object + required: + - transactionShape + - eventFormat + properties: + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: Required + transactionShape: + description: |- + What transaction shape to use for interpreting the filters of the event format. + + Required + type: string + enum: + - TRANSACTION_SHAPE_UNSPECIFIED + - TRANSACTION_SHAPE_ACS_DELTA + - TRANSACTION_SHAPE_LEDGER_EFFECTS + TopologyFormat: + title: TopologyFormat + description: A format specifying which topology transactions to include and + how to render them. + type: object + properties: + includeParticipantAuthorizationEvents: + $ref: '#/components/schemas/ParticipantAuthorizationTopologyFormat' + description: |- + Include participant authorization topology events in streams. + If unset, no participant authorization topology events are emitted in the stream. + + Optional + ParticipantAuthorizationTopologyFormat: + title: ParticipantAuthorizationTopologyFormat + description: A format specifying which participant authorization topology transactions + to include and how to render them. + type: object + properties: + parties: + description: |- + List of parties for which the topology transactions should be sent. + Empty means: for all parties. + + Optional: can be empty + type: array + items: + type: string + Either_JsCantonError_JsGetUpdatesResponse: + title: Either_JsCantonError_JsGetUpdatesResponse + oneOf: + - $ref: '#/components/schemas/JsCantonError' + - $ref: '#/components/schemas/JsGetUpdatesResponse' + JsGetUpdatesResponse: + title: JsGetUpdatesResponse + type: object + properties: + update: + $ref: '#/components/schemas/Update' + Update: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint2' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment' + - type: object + required: + - TopologyTransaction + properties: + TopologyTransaction: + $ref: '#/components/schemas/TopologyTransaction' + - type: object + required: + - Transaction + properties: + Transaction: + $ref: '#/components/schemas/Transaction' + OffsetCheckpoint2: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/OffsetCheckpoint1' + Reassignment: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + JsReassignment: + title: JsReassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - updateId + - offset + - recordTime + - synchronizerId + - events + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this reassignment. Missing for everyone except the submitting party on the submitting participant. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + workflowId: + description: |- + The workflow ID used in reassignment command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + offset: + description: |- + The participant's offset. The details of this field are described in ``community/ledger-api/README.md``. + Must be a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + events: + description: |- + The collection of reassignment events. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/JsReassignmentEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + recordTime: + description: |- + The time at which the reassignment was recorded. The record time refers to the source/target + synchronizer for an unassign/assign event respectively. + + Required + type: string + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized this Reassignment. + + Required + type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the corresponding (un)assignment request. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional + type: integer + format: int64 + JsReassignmentEvent: + title: JsReassignmentEvent + oneOf: + - type: object + required: + - JsAssignmentEvent + properties: + JsAssignmentEvent: + $ref: '#/components/schemas/JsAssignmentEvent' + - type: object + required: + - JsUnassignedEvent + properties: + JsUnassignedEvent: + $ref: '#/components/schemas/JsUnassignedEvent' + JsAssignmentEvent: + title: JsAssignmentEvent + type: object + required: + - source + - target + - reassignmentId + - submitter + - reassignmentCounter + - createdEvent + properties: + source: + type: string + target: + type: string + reassignmentId: + type: string + submitter: + type: string + reassignmentCounter: + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + JsUnassignedEvent: + title: JsUnassignedEvent + description: Records that a contract has been unassigned, and it becomes unusable + on the source synchronizer + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/UnassignedEvent' + TopologyTransaction: + title: TopologyTransaction + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTopologyTransaction' + JsTopologyTransaction: + title: JsTopologyTransaction + type: object + required: + - updateId + - offset + - synchronizerId + - recordTime + - events + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + It is a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the topology transaction. + + Required + type: string + recordTime: + description: |- + The time at which the changes in the topology transaction become effective. There is a small delay between a + topology transaction being sequenced and the changes it contains becoming effective. Topology transactions appear + in order relative to a synchronizer based on their effective time rather than their sequencing time. + + Required + type: string + events: + description: |- + A non-empty list of topology events. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/TopologyEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + TopologyEvent: + title: TopologyEvent + type: object + properties: + event: + $ref: '#/components/schemas/TopologyEventEvent' + TopologyEventEvent: + title: TopologyEventEvent + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty3' + - type: object + required: + - ParticipantAuthorizationAdded + properties: + ParticipantAuthorizationAdded: + $ref: '#/components/schemas/ParticipantAuthorizationAdded' + - type: object + required: + - ParticipantAuthorizationChanged + properties: + ParticipantAuthorizationChanged: + $ref: '#/components/schemas/ParticipantAuthorizationChanged' + - type: object + required: + - ParticipantAuthorizationOnboarding + properties: + ParticipantAuthorizationOnboarding: + $ref: '#/components/schemas/ParticipantAuthorizationOnboarding' + - type: object + required: + - ParticipantAuthorizationRevoked + properties: + ParticipantAuthorizationRevoked: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked' + Empty3: + title: Empty + type: object + ParticipantAuthorizationAdded: + title: ParticipantAuthorizationAdded + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationAdded1' + ParticipantAuthorizationAdded1: + title: ParticipantAuthorizationAdded + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationChanged: + title: ParticipantAuthorizationChanged + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationChanged1' + ParticipantAuthorizationChanged1: + title: ParticipantAuthorizationChanged + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationOnboarding: + title: ParticipantAuthorizationOnboarding + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationOnboarding1' + ParticipantAuthorizationOnboarding1: + title: ParticipantAuthorizationOnboarding + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationRevoked: + title: ParticipantAuthorizationRevoked + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked1' + ParticipantAuthorizationRevoked1: + title: ParticipantAuthorizationRevoked + type: object + required: + - partyId + - participantId + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + Transaction: + title: Transaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTransaction' + JsTransaction: + title: JsTransaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - updateId + - effectiveAt + - offset + - synchronizerId + - recordTime + - events + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + + Required + type: string + events: + description: |- + The collection of events. + Contains: + + - ``CreatedEvent`` or ``ArchivedEvent`` in case of ACS_DELTA transaction shape + - ``CreatedEvent`` or ``ExercisedEvent`` in case of LEDGER_EFFECTS transaction shape + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/Event' + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + It is a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + + Required + type: string + externalTransactionHash: + description: |- + For transaction externally signed, contains the external transaction hash + signed by the external party. Can be used to correlate an external submission with a committed transaction. + + Optional: can be empty + type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the confirmation + request for this transaction. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional + type: integer + format: int64 + Event: + title: Event + description: |- + Events in transactions can have two primary shapes: + + - ACS delta: events can be CreatedEvent or ArchivedEvent + - ledger effects: events can be CreatedEvent or ExercisedEvent + + In the update service the events are restricted to the events + visible for the parties specified in the transaction filter. Each + event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + oneOf: + - type: object + required: + - ArchivedEvent + properties: + ArchivedEvent: + $ref: '#/components/schemas/ArchivedEvent' + - type: object + required: + - CreatedEvent + properties: + CreatedEvent: + $ref: '#/components/schemas/CreatedEvent' + - type: object + required: + - ExercisedEvent + properties: + ExercisedEvent: + $ref: '#/components/schemas/ExercisedEvent' + ArchivedEvent: + title: ArchivedEvent + description: Records that a contract has been archived, and choices may no longer + be exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - packageName + - witnessParties + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + It is a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + contractId: + description: |- + The ID of the archived contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + Identifies the template that defines the choice that archived the contract. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + witnessParties: + description: |- + The parties that are notified of this event. For an ``ArchivedEvent``, + these are the intersection of the stakeholders of the contract in + question and the parties specified in the ``TransactionFilter``. The + stakeholders are the union of the signatories and the observers of + the contract. + Each one of its elements must be a valid PartyIdString (as described + in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + + Required + type: string + implementedInterfaces: + description: |- + The interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + If defined, the identifier uses the package-id reference format. + + Optional: can be empty + type: array + items: + type: string + ExercisedEvent: + title: ExercisedEvent + description: Records that a choice has been exercised on a target contract. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - choice + - choiceArgument + - consuming + - lastDescendantNodeId + - packageName + - acsDelta + - actingParties + - witnessParties + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + It is a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + contractId: + description: |- + The ID of the target contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + Identifies the template that defines the executed choice. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + interfaceId: + description: |- + The interface where the choice is defined, if inherited. + If defined, the identifier uses the package-id reference format. + + Optional + type: string + choice: + description: |- + The choice that was exercised on the target contract. + Must be a valid NameString (as described in ``value.proto``). + + Required + type: string + choiceArgument: + description: |- + The argument of the exercised choice. + + Required + actingParties: + description: |- + The parties that exercised the choice. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + consuming: + description: |- + If true, the target contract may no longer be exercised. + + Required + type: boolean + witnessParties: + description: |- + The parties that are notified of this event. The witnesses of an exercise + node will depend on whether the exercise was consuming or not. + If consuming, the witnesses are the union of the stakeholders, + the actors and all informees of all the ancestors of this event this + participant knows about. + If not consuming, the witnesses are the union of the signatories, + the actors and all informees of all the ancestors of this event this + participant knows about. + In both cases the witnesses are limited to the querying parties, or not + limited in case anyParty filters are used. + Note that the actors might not necessarily be observers + and thus stakeholders. This is the case when the controllers of a + choice are specified using "flexible controllers", using the + ``choice ... controller`` syntax, and said controllers are not + explicitly marked as observers. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + lastDescendantNodeId: + description: |- + Specifies the upper boundary of the node ids of the events in the same transaction that appeared as a result of + this ``ExercisedEvent``. This allows unambiguous identification of all the members of the subtree rooted at this + node. A full subtree can be constructed when all descendant nodes are present in the stream. If nodes are heavily + filtered, it is only possible to determine if a node is in a consequent subtree or not. + + Required + type: integer + format: int32 + exerciseResult: + description: |- + The result of exercising the choice. + + Optional + packageName: + description: |- + The package name of the contract. + + Required + type: string + implementedInterfaces: + description: |- + If the event is consuming, the interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + The identifier uses the package-id reference format. + + Optional: can be empty + type: array + items: + type: string + acsDelta: + description: |- + Whether this event would be part of respective ACS_DELTA shaped stream, + and should therefore considered when tracking contract activeness on the client-side. + + Required + type: boolean + Either_JsCantonError_JsGetUpdateTreesResponse: + title: Either_JsCantonError_JsGetUpdateTreesResponse + oneOf: + - $ref: '#/components/schemas/JsCantonError' + - $ref: '#/components/schemas/JsGetUpdateTreesResponse' + JsGetUpdateTreesResponse: + title: JsGetUpdateTreesResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + properties: + update: + $ref: '#/components/schemas/Update1' + Update1: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint3' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment1' + - type: object + required: + - TransactionTree + properties: + TransactionTree: + $ref: '#/components/schemas/TransactionTree' + OffsetCheckpoint3: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/OffsetCheckpoint1' + Reassignment1: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + TransactionTree: + title: TransactionTree + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Complete view of an on-ledger transaction. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTransactionTree' + JsTransactionTree: + title: JsTransactionTree + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Complete view of an on-ledger transaction. + type: object + required: + - updateId + - effectiveAt + - offset + - eventsById + - synchronizerId + - recordTime + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + eventsById: + $ref: '#/components/schemas/Map_Int_TreeEvent' + description: |- + Changes to the ledger that were caused by this transaction. Nodes of the transaction tree. + Each key must be a valid node ID (non-negative integer). + Required + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + Required + type: string + Map_Int_TreeEvent: + title: Map_Int_TreeEvent + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + TreeEvent: + title: TreeEvent + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Each tree event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + + Note that transaction trees might contain events with + _no_ witness parties, which were included simply because they were + children of events which have witnesses. + oneOf: + - type: object + required: + - CreatedTreeEvent + properties: + CreatedTreeEvent: + $ref: '#/components/schemas/CreatedTreeEvent' + - type: object + required: + - ExercisedTreeEvent + properties: + ExercisedTreeEvent: + $ref: '#/components/schemas/ExercisedTreeEvent' + CreatedTreeEvent: + title: CreatedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CreatedEvent' + ExercisedTreeEvent: + title: ExercisedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ExercisedEvent' + messages: + CompletionStreamRequest: + payload: + $ref: '#/components/schemas/CompletionStreamRequest' + contentType: application/json + Either_JsCantonError_CompletionStreamResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_CompletionStreamResponse' + contentType: application/json + GetCompletionsRequest: + payload: + $ref: '#/components/schemas/GetCompletionsRequest' + contentType: application/json + GetActiveContractsRequest: + payload: + $ref: '#/components/schemas/GetActiveContractsRequest' + contentType: application/json + Either_JsCantonError_JsGetActiveContractsResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_JsGetActiveContractsResponse' + contentType: application/json + GetUpdatesRequest: + payload: + $ref: '#/components/schemas/GetUpdatesRequest' + contentType: application/json + Either_JsCantonError_JsGetUpdatesResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_JsGetUpdatesResponse' + contentType: application/json + Either_JsCantonError_JsGetUpdateTreesResponse: + payload: + $ref: '#/components/schemas/Either_JsCantonError_JsGetUpdateTreesResponse' + contentType: application/json + securitySchemes: + httpAuth: + type: http + description: Ledger API standard JWT token + scheme: bearer + httpApiKeyAuth: + type: httpApiKey + description: Ledger API standard JWT token (websocket) + name: Sec-WebSocket-Protocol + in: header diff --git a/api-specs/ledger-api/3.5.8/openapi.yaml b/api-specs/ledger-api/3.5.8/openapi.yaml new file mode 100644 index 000000000..8f239938d --- /dev/null +++ b/api-specs/ledger-api/3.5.8/openapi.yaml @@ -0,0 +1,8778 @@ +openapi: 3.0.3 +info: + title: JSON Ledger API HTTP endpoints + version: 3.5.8 + description: |- + This specification version fixes the API inconsistencies where certain fields marked as required in the spec are in fact optional. + If you use code generation tool based on this file, you might need to adjust the existing application code to handle those fields as optional. + If you do not want to change your client code, continue using the OpenAPI specification for the latest Canton 3.4 patch release. + MINIMUM_CANTON_VERSION=3.5.8 +paths: + /v2/commands/submit-and-wait: + post: + description: |- + Submits a single composite command and waits for its result. + Propagates the gRPC error of failed submissions including Daml interpretation errors. + operationId: postV2CommandsSubmit-and-wait + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsCommands' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAndWaitResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/submit-and-wait-for-transaction: + post: + description: |- + Submits a single composite command, waits for its result, and returns the transaction. + Propagates the gRPC error of failed submissions including Daml interpretation errors. + operationId: postV2CommandsSubmit-and-wait-for-transaction + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForTransactionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForTransactionResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/submit-and-wait-for-reassignment: + post: + description: |- + Submits a single composite reassignment command, waits for its result, and returns the reassignment. + Propagates the gRPC error of failed submission. + operationId: postV2CommandsSubmit-and-wait-for-reassignment + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAndWaitForReassignmentRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForReassignmentResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/submit-and-wait-for-transaction-tree: + post: + description: Submit a batch of commands and wait for the transaction trees response. + Provided for backwards compatibility, it will be removed in the Canton version + 3.5.0, use submit-and-wait-for-transaction instead. + operationId: postV2CommandsSubmit-and-wait-for-transaction-tree + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsCommands' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsSubmitAndWaitForTransactionTreeResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/async/submit: + post: + description: Submit a single composite command. + operationId: postV2CommandsAsyncSubmit + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsCommands' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/async/submit-reassignment: + post: + description: Submit a single reassignment. + operationId: postV2CommandsAsyncSubmit-reassignment + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitReassignmentRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitReassignmentResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/completions: + post: + description: |- + Query completions list (blocking call) + + Deprecated: please use ``GetCompletions`` instead. + Subscribe to command completion events. + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2CommandsCompletions + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CompletionStreamRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/CompletionStreamResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/commands/command-completions: + post: + description: |- + Query completions list (blocking call) + + Subscribe to command completion events. + This streaming endpoint provides more flexibility in filtering than the predecessor ``CompletionStream``. + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2CommandsCommand-completions + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetCompletionsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/CompletionStreamResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/events/events-by-contract-id: + post: + description: |- + Get the create and the consuming exercise event for the contract with the provided ID. + No events will be returned for contracts that have been pruned because they + have already been archived before the latest pruning offset. + If the contract cannot be found for the request, or all the contract-events are filtered, a CONTRACT_EVENTS_NOT_FOUND error will be raised. + operationId: postV2EventsEvents-by-contract-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetEventsByContractIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetEventsByContractIdResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/version: + get: + description: Read the Ledger API version + operationId: getV2Version + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetLedgerApiVersionResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/dars/validate: + post: + description: |- + Validates the DAR and checks the upgrade compatibility of the DAR's packages + with the set of the already vetted packages on the target vetting synchronizer. + See ValidateDarFileRequest for details regarding the target vetting synchronizer. + + The operation has no effect on the state of the participant or the Canton ledger: + the DAR payload and its packages are not persisted neither are the packages vetted. + operationId: postV2DarsValidate + parameters: + - name: synchronizerId + in: query + required: false + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + responses: + '200': + description: '' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter synchronizerId' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/dars: + post: + description: Upload a DAR to the participant node + operationId: postV2Dars + parameters: + - name: vetAllPackages + in: query + required: false + schema: + type: boolean + - name: synchronizerId + in: query + required: false + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UploadDarFileResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter vetAllPackages, Invalid value for: query parameter synchronizerId' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/packages: + get: + description: Returns the identifiers of all supported packages. + operationId: getV2Packages + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListPackagesResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: |- + Behaves the same as /dars. This endpoint will be deprecated and removed in a future release. + Upload a DAR file to the participant. + + If vetting is enabled in the request, the DAR is checked for upgrade compatibility + with the set of the already vetted packages on the target vetting synchronizer + See UploadDarFileRequest for details regarding vetting and the target vetting synchronizer. + operationId: postV2Packages + parameters: + - name: vetAllPackages + in: query + required: false + schema: + type: boolean + - name: synchronizerId + in: query + required: false + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UploadDarFileResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter vetAllPackages, Invalid value for: query parameter synchronizerId' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/packages/{package-id}: + get: + description: Returns the contents of a single package. + operationId: getV2PackagesPackage-id + parameters: + - name: package-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + headers: + Canton-Package-Hash: + required: true + schema: + type: string + content: + application/octet-stream: + schema: + type: string + format: binary + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/packages/{package-id}/status: + get: + description: Returns the status of a single package. + operationId: getV2PackagesPackage-idStatus + parameters: + - name: package-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPackageStatusResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/package-vetting: + get: + description: |- + Lists which participant node vetted what packages on which synchronizer. + This endpoint (GET /package-vetting) is deprecated and will be removed in a future release. Please use POST /package-vetting/list instead. + operationId: getV2Package-vetting + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListVettedPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListVettedPackagesResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: |- + Update the vetted packages of this participant + This endpoint (POST /package-vetting) is deprecated and will be removed in a future release. Please use POST /package-vetting/update instead. + operationId: postV2Package-vetting + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateVettedPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateVettedPackagesResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/package-vetting/list: + post: + description: |- + Lists which participant node vetted what packages on which synchronizer. + Can be called by any authenticated user. + operationId: postV2Package-vettingList + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ListVettedPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListVettedPackagesResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/package-vetting/update: + post: + description: Update the vetted packages of this participant + operationId: postV2Package-vettingUpdate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateVettedPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateVettedPackagesResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties: + get: + description: |- + List the parties known by the participant. + The list returned contains parties whose ledger access is facilitated by + the participant and the ones maintained elsewhere. + operationId: getV2Parties + parameters: + - name: identity-provider-id + in: query + required: false + schema: + type: string + - name: filter-party + in: query + required: false + schema: + type: string + - name: pageSize + in: query + description: maximum number of elements in a returned page + required: false + schema: + type: integer + format: int32 + - name: pageToken + in: query + description: token - to continue results from a given page, leave empty to + start from the beginning of the list, obtain token from the result of previous + page + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListKnownPartiesResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter identity-provider-id, + Invalid value for: query parameter filter-party, Invalid value for: query + parameter pageSize, Invalid value for: query parameter pageToken' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: |- + Allocates a new party on a ledger and adds it to the set managed by the participant. + Caller specifies a party identifier suggestion, the actual identifier + allocated might be different and is implementation specific. + Caller can specify party metadata that is stored locally on the participant. + This call may: + + - Succeed, in which case the actual allocated identifier is visible in + the response. + - Respond with a gRPC error + + daml-on-kv-ledger: suggestion's uniqueness is checked by the validators in + the consensus layer and call rejected if the identifier is already present. + canton: completely different globally unique identifier is allocated. + Behind the scenes calls to an internal protocol are made. As that protocol + is richer than the surface protocol, the arguments take implicit values + The party identifier suggestion must be a valid party name. Party names are required to be non-empty US-ASCII strings built from letters, digits, space, + colon, minus and underscore limited to 255 chars + operationId: postV2Parties + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AllocatePartyRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AllocatePartyResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/external/allocate: + post: + description: |- + The external party must be hosted (at least) on this node with either confirmation or observation permissions + It can optionally be hosted on other nodes (then called a multi-hosted party). + If hosted on additional nodes, explicit authorization of the hosting relationship must be performed on those nodes + before the party can be used. + Decentralized namespaces are supported but must be provided fully authorized by their owners. + The individual owner namespace transactions can be submitted in the same call (fully authorized as well). + In the simple case of a non-multi hosted, non-decentralized party, the RPC will return once the party is + effectively allocated and ready to use, similarly to the AllocateParty behavior. + For more complex scenarios applications may need to query the party status explicitly (only through the admin API as of now). + operationId: postV2PartiesExternalAllocate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateExternalPartyRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateExternalPartyResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/participant-id: + get: + description: |- + Return the identifier of the participant. + All horizontally scaled replicas should return the same id. + daml-on-kv-ledger: returns an identifier supplied on command line at launch time + canton: returns globally unique identifier of the participant + operationId: getV2PartiesParticipant-id + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetParticipantIdResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/{party}: + get: + description: |- + Get the party details of the given parties. Only known parties will be + returned in the list. + operationId: getV2PartiesParty + parameters: + - name: party + in: path + required: true + schema: + type: string + - name: identity-provider-id + in: query + required: false + schema: + type: string + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPartiesResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter identity-provider-id, + Invalid value for: query parameter parties' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: |- + Update selected modifiable participant-local attributes of a party details resource. + Can update the participant's local information for local parties. + operationId: patchV2PartiesParty + parameters: + - name: party + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePartyDetailsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePartyDetailsResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/parties/external/generate-topology: + post: + description: |- + You may use this endpoint to generate the common external topology transactions + which can be signed externally and uploaded as part of the allocate party process + + Note that this request will create a normal namespace using the same key for the + identity as for signing. More elaborate schemes such as multi-signature + or decentralized parties require you to construct the topology transactions yourself. + operationId: postV2PartiesExternalGenerate-topology + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/active-contracts: + post: + description: |- + Query active contracts list (blocking call). + Querying active contracts is an expensive operation and if possible should not be repeated often. + Consider querying active contracts initially (for a given offset) + and then repeatedly call one of `/v2/updates/...`endpoints to get subsequent modifications. + You can also use websockets to get updates with better performance. + + Returns a stream of the snapshot of the active contracts and incomplete (un)assignments at a ledger offset. + Once the stream of GetActiveContractsResponses completes, + the client SHOULD begin streaming updates from the update service, + starting at the GetActiveContractsRequest.active_at_offset specified in this request. + Clients SHOULD NOT assume that the set of active contracts they receive reflects the state at the ledger end. + + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2StateActive-contracts + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetActiveContractsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetActiveContractsResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/active-contracts-page: + get: + description: |- + Returns a page of the snapshot of the active contracts and incomplete (un)assignments at a ledger offset. + Once all pages are fetched by repeated calls to ``GetActiveContractsPage``, + the client SHOULD begin retrieving updates from the update service, + starting at the ``GetActiveContractsPageResponse``.``active_at_offset`` specified in this request. + Clients SHOULD NOT assume that the set of active contracts they receive reflects the state at the ledger end. + operationId: getV2StateActive-contracts-page + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetActiveContractsPageRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetActiveContractsPageResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/connected-synchronizers: + get: + description: Get the list of connected synchronizers at the time of the query. + operationId: getV2StateConnected-synchronizers + parameters: + - name: party + in: query + required: false + schema: + type: string + - name: participantId + in: query + required: false + schema: + type: string + - name: identityProviderId + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetConnectedSynchronizersResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter party, Invalid + value for: query parameter participantId, Invalid value for: query parameter + identityProviderId' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/ledger-end: + get: + description: |- + Get the current ledger end. + Subscriptions started with the returned offset will serve events after this RPC was called. + operationId: getV2StateLedger-end + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetLedgerEndResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/state/latest-pruned-offsets: + get: + description: Get the latest successfully pruned ledger offsets + operationId: getV2StateLatest-pruned-offsets + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetLatestPrunedOffsetsResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates: + post: + description: |- + Read the ledger's filtered update stream for the specified contents and filters. + It returns the event types in accordance with the stream contents selected. Also the selection criteria + for individual events depends on the transaction shape chosen. + + - ACS delta: a requesting party must be a stakeholder of an event for it to be included. + - ledger effects: a requesting party must be a witness of an event for it to be included. + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2Updates + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetUpdatesResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/flats: + post: + description: |- + Query flat transactions update list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2UpdatesFlats + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetUpdatesResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/trees: + post: + description: |- + Query update transactions tree list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. + Notice: This endpoint should be used for small results set. + When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + there will be an error (`413 Content Too Large`) returned. + Increasing this limit may lead to performance issues and high memory consumption. + Consider using websockets (asyncapi) for better efficiency with larger results. + operationId: postV2UpdatesTrees + parameters: + - name: limit + in: query + description: maximum number of elements to return, this param is ignored if + is bigger than server setting + required: false + schema: + type: integer + format: int64 + - name: stream_idle_timeout_ms + in: query + description: timeout to complete and send result if no new elements are received + (for open ended streams) + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/JsGetUpdateTreesResponse' + '400': + description: 'Invalid value, Invalid value for: body, Invalid value for: + query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-tree-by-offset/{offset}: + get: + description: Get transaction tree by offset. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates/update-by-offset + instead. + operationId: getV2UpdatesTransaction-tree-by-offsetOffset + parameters: + - name: offset + in: path + required: true + schema: + type: integer + format: int64 + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionTreeResponse' + '400': + description: 'Invalid value, Invalid value for: path parameter offset, Invalid + value for: query parameter parties' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-by-offset: + post: + description: Get transaction by offset. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates/update-by-offset + instead. + operationId: postV2UpdatesTransaction-by-offset + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTransactionByOffsetRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/update-by-offset: + post: + description: |- + Lookup an update by its offset. + If there is no update with this offset, or all the events are filtered, an UPDATE_NOT_FOUND error will be raised. + operationId: postV2UpdatesUpdate-by-offset + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdateByOffsetRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetUpdateResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-by-id: + post: + description: Get transaction by id. Provided for backwards compatibility, it + will be removed in the Canton version 3.5.0, use v2/updates/update-by-id instead. + operationId: postV2UpdatesTransaction-by-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetTransactionByIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/update-by-id: + post: + description: |- + Lookup an update by its ID. + If there is no update with this ID, or all the events are filtered, an UPDATE_NOT_FOUND error will be raised. + operationId: postV2UpdatesUpdate-by-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdateByIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetUpdateResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/transaction-tree-by-id/{update-id}: + get: + description: Get transaction tree by id. Provided for backwards compatibility, + it will be removed in the Canton version 3.5.0, use v2/updates/update-by-id + instead. + operationId: getV2UpdatesTransaction-tree-by-idUpdate-id + parameters: + - name: update-id + in: path + required: true + schema: + type: string + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetTransactionTreeResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter parties' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/updates/get-updates-page: + post: + description: |- + Read a page of ledger's filtered updates. It returns the event types in accordance with + the specified contents and filters. + Additionally, the selection criteria for individual events depends on the transaction shape chosen. + + - ACS delta: an event is included only if the requesting party is a stakeholder. + - ledger effects: an event is included if the requesting party is a witness. + operationId: postV2UpdatesGet-updates-page + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesPageRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsGetUpdatesPageResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users: + get: + description: List all existing users. + operationId: getV2Users + parameters: + - name: pageSize + in: query + description: maximum number of elements in a returned page + required: false + schema: + type: integer + format: int32 + - name: pageToken + in: query + description: token - to continue results from a given page, leave empty to + start from the beginning of the list, obtain token from the result of previous + page + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter pageSize, + Invalid value for: query parameter pageToken' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: Create a new user. + operationId: postV2Users + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUserRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUserResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users/{user-id}: + get: + description: Get the user data of a specific user or the authenticated user. + operationId: getV2UsersUser-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + - name: identity-provider-id + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter identity-provider-id' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + delete: + description: Delete an existing user and all its rights. + operationId: deleteV2UsersUser-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + type: object + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: Update selected modifiable attribute of a user resource described + by the ``User`` message. + operationId: patchV2UsersUser-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/authenticated-user: + get: + description: Get the user data of the current authenticated user. + operationId: getV2Authenticated-user + parameters: + - name: identity-provider-id + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter identity-provider-id' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users/{user-id}/rights: + get: + description: List the set of all rights granted to a user. + operationId: getV2UsersUser-idRights + parameters: + - name: user-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListUserRightsResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: |- + Grant rights to a user. + Granting rights does not affect the resource version of the corresponding user. + operationId: postV2UsersUser-idRights + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrantUserRightsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GrantUserRightsResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: |- + Revoke rights from a user. + Revoking rights does not affect the resource version of the corresponding user. + operationId: patchV2UsersUser-idRights + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeUserRightsRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeUserRightsResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/users/{user-id}/identity-provider-id: + patch: + description: Update the assignment of a user from one IDP to another. + operationId: patchV2UsersUser-idIdentity-provider-id + parameters: + - name: user-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserIdentityProviderIdRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserIdentityProviderIdResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/idps: + get: + description: List all existing identity provider configurations. + operationId: getV2Idps + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ListIdentityProviderConfigsResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + post: + description: |- + Create a new identity provider configuration. + The request will fail if the maximum allowed number of separate configurations is reached. + operationId: postV2Idps + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIdentityProviderConfigRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIdentityProviderConfigResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/idps/{idp-id}: + get: + description: Get the identity provider configuration data by id. + operationId: getV2IdpsIdp-id + parameters: + - name: idp-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetIdentityProviderConfigResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + delete: + description: Delete an existing identity provider configuration. + operationId: deleteV2IdpsIdp-id + parameters: + - name: idp-id + in: path + required: true + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteIdentityProviderConfigResponse' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + patch: + description: |- + Update selected modifiable attribute of an identity provider config resource described + by the ``IdentityProviderConfig`` message. + operationId: patchV2IdpsIdp-id + parameters: + - name: idp-id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIdentityProviderConfigRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIdentityProviderConfigResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/prepare: + post: + description: Requires `readAs` scope for the submitting party when LAPI User + authorization is enabled + operationId: postV2Interactive-submissionPrepare + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsPrepareSubmissionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsPrepareSubmissionResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/execute: + post: + description: |- + Execute a prepared submission _asynchronously_ on the ledger. + Requires `actAs` or `executeAs` scope for the submitting party when LAPI User authorization is enabled + Requires a signature of the transaction from the submitting external party. + operationId: postV2Interactive-submissionExecute + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExecuteSubmissionResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/executeAndWait: + post: + description: Similar to ExecuteSubmission but _synchronously_ wait for the completion + of the transaction + operationId: postV2Interactive-submissionExecuteandwait + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionAndWaitRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ExecuteSubmissionAndWaitResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/executeAndWaitForTransaction: + post: + description: Similar to ExecuteSubmissionAndWait but additionally returns the + transaction + operationId: postV2Interactive-submissionExecuteandwaitfortransaction + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionAndWaitForTransactionRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsExecuteSubmissionAndWaitForTransactionResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/preferred-package-version: + get: + description: |- + Get the preferred package version for constructing a command submission. + This endpoint (GET /interactive-submission/preferred-package-version) is deprecated and will be removed in Canton 3.6. Please use POST /interactive-submission/preferred-packages instead. + operationId: getV2Interactive-submissionPreferred-package-version + parameters: + - name: parties + in: query + required: false + schema: + type: array + items: + type: string + - name: package-name + in: query + required: true + schema: + type: string + - name: vetting_valid_at + in: query + required: false + schema: + type: string + format: date-time + - name: synchronizer-id + in: query + required: false + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPreferredPackageVersionResponse' + '400': + description: 'Invalid value, Invalid value for: query parameter parties, + Invalid value for: query parameter package-name, Invalid value for: query + parameter vetting_valid_at, Invalid value for: query parameter synchronizer-id' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + deprecated: true + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/interactive-submission/preferred-packages: + post: + description: |- + Compute the preferred packages for the vetting requirements in the request. + A preferred package is the highest-versioned package for a provided package-name + that is vetted by all the participants hosting the provided parties. + + Ledger API clients should use this endpoint for constructing command submissions + that are compatible with the provided preferred packages, by making informed decisions on: + - which are the compatible packages that can be used to create contracts + - which contract or exercise choice argument version can be used in the command + - which choices can be executed on a template or interface of a contract + + If the package preferences could not be computed due to no selection satisfying the requirements, + a `FAILED_PRECONDITION` error will be returned. + + Can be accessed by any Ledger API client with a valid token when Ledger API authorization is enabled. + + Experimental API: this endpoint is not guaranteed to provide backwards compatibility in future releases + operationId: postV2Interactive-submissionPreferred-packages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetPreferredPackagesRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetPreferredPackagesResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /livez: + get: + description: Checks if the service is alive + operationId: getLivez + responses: + '200': + description: 'OK: service is alive' + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /readyz: + get: + description: Checks if the service is ready to serve requests + operationId: getReadyz + responses: + '200': + description: 'OK: readiness message' + content: + text/plain: + schema: + type: string + '400': + description: Invalid value + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] + /v2/contracts/contract-by-id: + post: + description: |- + Looking up contract data by contract ID. + This endpoint is experimental / alpha, therefore no backwards compatibility is guaranteed. + This endpoint must not be used to look up contracts which entered the participant via party replication + or repair service. + operationId: postV2ContractsContract-by-id + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetContractRequest' + required: true + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/GetContractResponse' + '400': + description: 'Invalid value, Invalid value for: body' + content: + text/plain: + schema: + type: string + default: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/JsCantonError' + security: + - httpAuth: [] + - apiKeyAuth: [] +components: + schemas: + AllocateExternalPartyRequest: + title: AllocateExternalPartyRequest + description: |- + Required authorization: + ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id) OR IsAuthenticatedUser(user_id)`` + type: object + required: + - synchronizer + - onboardingTransactions + properties: + synchronizer: + description: |- + TODO(#27670) support synchronizer aliases + Synchronizer ID on which to onboard the party + + Required + type: string + onboardingTransactions: + description: |- + TopologyTransactions to onboard the external party + Can contain: + - A namespace for the party. + This can be either a single NamespaceDelegation, + or DecentralizedNamespaceDefinition along with its authorized namespace owners in the form of NamespaceDelegations. + May be provided, if so it must be fully authorized by the signatures in this request combined with the existing topology state. + - A PartyToParticipant to register the hosting relationship of the party, and the party's signing keys and threshold. + Must be provided. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/SignedTransaction' + multiHashSignatures: + description: |- + Optional signatures of the combined hash of all onboarding_transactions + This may be used instead of providing signatures on each individual transaction + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Signature' + identityProviderId: + description: |- + The id of the ``Identity Provider`` + If not set, assume the party is managed by the default identity provider. + + Optional + type: string + waitForAllocation: + description: |- + When true, this RPC will attempt to wait for the party to be allocated on the synchronizer before returning. + When false, the allocation will happen asynchronously. + This is a best effort only as this synchronization is only possible for non decentralized parties (single hosting node). + For decentralized parties, this flag is ignored. + Defaults to true. + + Optional + type: boolean + userId: + description: |- + The user who will get the act_as rights to the newly allocated party. + If set to an empty string (the default), no user will get rights to the party. + + Optional + type: string + AllocateExternalPartyResponse: + title: AllocateExternalPartyResponse + type: object + required: + - partyId + properties: + partyId: + description: |- + The allocated party id + + Required + type: string + AllocatePartyRequest: + title: AllocatePartyRequest + description: |- + Required authorization: + ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id) OR IsAuthenticatedUser(user_id)`` + type: object + properties: + partyIdHint: + description: |- + A hint to the participant which party ID to allocate. It can be + ignored. + Must be a valid PartyIdString (as described in ``value.proto``). + + Optional + type: string + localMetadata: + $ref: '#/components/schemas/ObjectMeta' + description: |- + Formerly "display_name" + Participant-local metadata to be stored in the ``PartyDetails`` of this newly allocated party. + + Optional + identityProviderId: + description: |- + The id of the ``Identity Provider`` + If not set, assume the party is managed by the default identity provider or party is not hosted by the participant. + + Optional + type: string + synchronizerId: + description: |- + The synchronizer, on which the party should be allocated. + For backwards compatibility, this field may be omitted, if the participant is connected to only one synchronizer. + Otherwise a synchronizer must be specified. + + Optional + type: string + userId: + description: |- + The user who will get the act_as rights to the newly allocated party. + If set to an empty string (the default), no user will get rights to the party. + + Optional + type: string + AllocatePartyResponse: + title: AllocatePartyResponse + type: object + required: + - partyDetails + properties: + partyDetails: + $ref: '#/components/schemas/PartyDetails' + description: |- + The allocated party details + + Required + ArchivedEvent: + title: ArchivedEvent + description: Records that a contract has been archived, and choices may no longer + be exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - packageName + - witnessParties + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + It is a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + contractId: + description: |- + The ID of the archived contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + Identifies the template that defines the choice that archived the contract. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + witnessParties: + description: |- + The parties that are notified of this event. For an ``ArchivedEvent``, + these are the intersection of the stakeholders of the contract in + question and the parties specified in the ``TransactionFilter``. The + stakeholders are the union of the signatories and the observers of + the contract. + Each one of its elements must be a valid PartyIdString (as described + in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + + Required + type: string + implementedInterfaces: + description: |- + The interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + If defined, the identifier uses the package-id reference format. + + Optional: can be empty + type: array + items: + type: string + AssignCommand: + title: AssignCommand + description: Assign a contract + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/AssignCommand1' + AssignCommand1: + title: AssignCommand + description: Assign a contract + type: object + required: + - reassignmentId + - source + - target + properties: + reassignmentId: + description: |- + The ID from the unassigned event to be completed by this assignment. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + + Required + type: string + CanActAs: + title: CanActAs + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanActAs1' + CanActAs1: + title: CanActAs + type: object + required: + - party + properties: + party: + description: |- + The right to authorize commands for this party. + + Required + type: string + CanExecuteAs: + title: CanExecuteAs + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanExecuteAs1' + CanExecuteAs1: + title: CanExecuteAs + type: object + required: + - party + properties: + party: + description: |- + The right to prepare and execute submissions as this party. + This right does not entitle the user to perform any reads. + If reading is required, a separate ReadAs right must be added. + Right to execute as a party is also implicitly contained in the CanActAs right. + + Required + type: string + CanExecuteAsAnyParty: + title: CanExecuteAsAnyParty + description: |- + The rights of a user to prepare and execute transactions as any party. + Its utility is predominantly for users that perform interactive submissions + on behalf of many parties. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanExecuteAsAnyParty1' + CanExecuteAsAnyParty1: + title: CanExecuteAsAnyParty + description: |- + The rights of a user to prepare and execute transactions as any party. + Its utility is predominantly for users that perform interactive submissions + on behalf of many parties. + type: object + CanReadAs: + title: CanReadAs + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanReadAs1' + CanReadAs1: + title: CanReadAs + type: object + required: + - party + properties: + party: + description: |- + The right to read ledger data visible to this party. + + Required + type: string + CanReadAsAnyParty: + title: CanReadAsAnyParty + description: |- + The rights of a participant's super reader. Its utility is predominantly for + feeding external tools, such as PQS, continually without the need to change subscriptions + as new parties pop in and out of existence. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CanReadAsAnyParty1' + CanReadAsAnyParty1: + title: CanReadAsAnyParty + description: |- + The rights of a participant's super reader. Its utility is predominantly for + feeding external tools, such as PQS, continually without the need to change subscriptions + as new parties pop in and out of existence. + type: object + Command: + title: Command + description: A command can either create a new contract or exercise a choice + on an existing contract. + oneOf: + - type: object + required: + - CreateAndExerciseCommand + properties: + CreateAndExerciseCommand: + $ref: '#/components/schemas/CreateAndExerciseCommand' + - type: object + required: + - CreateCommand + properties: + CreateCommand: + $ref: '#/components/schemas/CreateCommand' + - type: object + required: + - ExerciseByKeyCommand + properties: + ExerciseByKeyCommand: + $ref: '#/components/schemas/ExerciseByKeyCommand' + - type: object + required: + - ExerciseCommand + properties: + ExerciseCommand: + $ref: '#/components/schemas/ExerciseCommand' + Command1: + title: Command + description: A command can either create a new contract or exercise a choice + on an existing contract. + oneOf: + - type: object + required: + - AssignCommand + properties: + AssignCommand: + $ref: '#/components/schemas/AssignCommand' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty2' + - type: object + required: + - UnassignCommand + properties: + UnassignCommand: + $ref: '#/components/schemas/UnassignCommand' + Completion: + title: Completion + description: 'A completion represents the status of a submitted command on the + ledger: it can be successful or failed.' + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Completion1' + Completion1: + title: Completion + description: 'A completion represents the status of a submitted command on the + ledger: it can be successful or failed.' + type: object + required: + - commandId + - userId + - offset + - actAs + - synchronizerTime + properties: + commandId: + description: |- + The ID of the succeeded or failed command. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + status: + $ref: '#/components/schemas/JsStatus' + description: |- + Identifies the exact type of the error. + It uses the same format of conveying error details as it is used for the RPC responses of the APIs. + + Optional + updateId: + description: |- + The update_id of the transaction or reassignment that resulted from the command with command_id. + + Only set for successfully executed commands. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + userId: + description: |- + The user-id that was used for the submission, as described in ``commands.proto``. + Must be a valid UserIdString (as described in ``value.proto``). + + Required + type: string + actAs: + description: |- + The set of parties on whose behalf the commands were executed. + Contains the ``act_as`` parties from ``commands.proto`` + filtered to the requesting parties in CompletionStreamRequest. + The order of the parties need not be the same as in the submission. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + submissionId: + description: |- + The submission ID this completion refers to, as described in ``commands.proto``. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod1' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + The Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + offset: + description: |- + May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time. + Must be a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerTime: + $ref: '#/components/schemas/SynchronizerTime' + description: |- + The synchronizer along with its record time. + The synchronizer id provided, in case of + + - successful/failed transactions: identifies the synchronizer of the transaction + - for successful/failed unassign commands: identifies the source synchronizer + - for successful/failed assign commands: identifies the target synchronizer + + Required + paidTrafficCost: + description: |- + The traffic cost paid by this participant node for the confirmation request + for the submitted command. + + Commands whose execution is rejected before their corresponding + confirmation request is ordered by the synchronizer will report a paid + traffic cost of zero. + If a confirmation request is ordered for a command, but the request fails + (e.g., due to contention with a concurrent contract archival), the traffic + cost is paid and reported on the failed completion for the request. + + If you want to correlate the traffic cost of a successful completion + with the transaction that resulted from the command, you can use the + ``offset`` field to retrieve the transaction using + ``UpdateService.GetUpdateByOffset`` on the same participant node; or alternatively use the ``update_id`` + field to retrieve the transaction using ``UpdateService.GetUpdateById`` on any participant node + that sees the transaction. + + Note: for completions processed before the participant started serving + traffic cost on the Ledger API, this field will be set to zero. + Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater + than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. + The cost reported here is the one paid for ordering the confirmation request. + + Optional + type: integer + format: int64 + CompletionResponse: + title: CompletionResponse + description: Required + oneOf: + - type: object + required: + - Completion + properties: + Completion: + $ref: '#/components/schemas/Completion' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty4' + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint' + CompletionStreamRequest: + title: CompletionStreamRequest + type: object + required: + - parties + properties: + userId: + description: |- + Only completions of commands submitted with the same user_id will be visible in the stream. + Must be a valid UserIdString (as described in ``value.proto``). + + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + + Optional + type: string + parties: + description: |- + Non-empty list of parties whose data should be included. + The stream shows only completions of commands for which at least one of the ``act_as`` parties is in the given set of parties. + Must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + beginExclusive: + description: |- + This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + If not set the ledger uses the ledger begin offset instead. + If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. + + Optional + type: integer + format: int64 + CompletionStreamResponse: + title: CompletionStreamResponse + type: object + properties: + completionResponse: + $ref: '#/components/schemas/CompletionResponse' + ConnectedSynchronizer: + title: ConnectedSynchronizer + type: object + required: + - synchronizerAlias + - synchronizerId + properties: + synchronizerAlias: + description: |- + The alias of the synchronizer + + Required + type: string + synchronizerId: + description: |- + The ID of the synchronizer + + Required + type: string + permission: + description: |- + The permission on the synchronizer + Set if a party was used in the request, otherwise unspecified. + + Optional + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + CostEstimation: + title: CostEstimation + description: |- + Estimation of the cost of submitting the prepared transaction + The estimation is done against the synchronizer chosen during preparation of the transaction + (or the one explicitly requested). + The cost of re-assigning contracts to another synchronizer when necessary is not included in the estimation. + type: object + required: + - confirmationRequestTrafficCostEstimation + - confirmationResponseTrafficCostEstimation + - totalTrafficCostEstimation + - estimationTimestamp + properties: + estimationTimestamp: + description: |- + Timestamp at which the estimation was made + + Required + type: string + confirmationRequestTrafficCostEstimation: + description: |- + Estimated traffic cost of the confirmation request associated with the transaction + + Required + type: integer + format: int64 + confirmationResponseTrafficCostEstimation: + description: |- + Estimated traffic cost of the confirmation response associated with the transaction + This field can also be used as an indication of the cost that other potential confirming nodes + of the party will incur to approve or reject the transaction + + Required + type: integer + format: int64 + totalTrafficCostEstimation: + description: |- + Sum of the fields above + + Required + type: integer + format: int64 + CostEstimationHints: + title: CostEstimationHints + description: Hints to improve cost estimation precision of a prepared transaction + type: object + properties: + disabled: + description: |- + Disable cost estimation + Default (not set) is false + + Optional + type: boolean + expectedSignatures: + description: |- + Details on the keys that will be used to sign the transaction (how many and of which type). + Signature size impacts the cost of the transaction. + If empty, the signature sizes will be approximated with threshold-many signatures (where threshold is defined + in the PartyToParticipant of the external party), using keys in the order they are registered. + Empty list is equivalent to not providing this field + + Optional: can be empty + type: array + items: + type: string + enum: + - SIGNING_ALGORITHM_SPEC_UNSPECIFIED + - SIGNING_ALGORITHM_SPEC_ED25519 + - SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_256 + - SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_384 + CreateAndExerciseCommand: + title: CreateAndExerciseCommand + description: Create a contract and exercise a choice on it in the same transaction. + type: object + required: + - templateId + - createArguments + - choice + - choiceArgument + properties: + templateId: + description: |- + The template of the contract the client wants to create. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + createArguments: + description: |- + The arguments required for creating a contract from this template. + + Required + choice: + description: |- + The name of the choice the client wants to exercise. + Must be a valid NameString (as described in ``value.proto``). + + Required + type: string + choiceArgument: + description: |- + The argument for this choice. + + Required + CreateCommand: + title: CreateCommand + description: Create a new contract instance based on a template. + type: object + required: + - templateId + - createArguments + properties: + templateId: + description: |- + The template of contract the client wants to create. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + createArguments: + description: |- + The arguments required for creating a contract from this template. + + Required + CreateIdentityProviderConfigRequest: + title: CreateIdentityProviderConfigRequest + type: object + required: + - identityProviderConfig + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: Required + CreateIdentityProviderConfigResponse: + title: CreateIdentityProviderConfigResponse + type: object + required: + - identityProviderConfig + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: Required + CreateUserRequest: + title: CreateUserRequest + description: |2- + RPC requests and responses + /////////////////////////// + Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)`` + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/User' + description: |- + The user to create. + + Required + rights: + description: |- + The rights to be assigned to the user upon creation, + which SHOULD include appropriate rights for the ``user.primary_party``. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Right' + CreateUserResponse: + title: CreateUserResponse + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/User' + description: |- + Created user. + + Required + CreatedEvent: + title: CreatedEvent + description: Records that a contract has been created, and choices may now be + exercised on it. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - createdAt + - packageName + - representativePackageId + - acsDelta + - createArgument + - witnessParties + - signatories + properties: + offset: + description: |- + The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + It is a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + The origin has contextual meaning, please see description at messages that include a CreatedEvent. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + contractId: + description: |- + The ID of the created contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + The template of the created contract. + The identifier uses the package-id reference format. + + Required + type: string + contractKey: + description: |- + The key of the created contract. + This will be set if and only if ``template_id`` defines a contract key. + + Optional + contractKeyHash: + description: |- + The hash of contract_key. + This will be set if and only if ``template_id`` defines a contract key. + + Optional: can be empty + type: string + createArgument: + description: |- + The arguments that have been used to create the contract. + + Required + createdEventBlob: + description: |- + Opaque representation of contract create event payload intended for forwarding + to an API server as a contract disclosed as part of a command + submission. + + Optional: can be empty + type: string + interfaceViews: + description: |- + Interface views specified in the transaction filter. + Includes an ``InterfaceView`` for each interface for which there is a ``InterfaceFilter`` with + + - its party in the ``witness_parties`` of this event, + - and which is implemented by the template of this event, + - and which has ``include_interface_view`` set. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/JsInterfaceView' + witnessParties: + description: |- + The parties that are notified of this event. When a ``CreatedEvent`` + is returned as part of a transaction tree or ledger-effects transaction, this will include all + the parties specified in the ``TransactionFilter`` that are witnesses of the event + (the stakeholders of the contract and all informees of all the ancestors + of this create action that this participant knows about). + If served as part of a ACS delta transaction those will + be limited to all parties specified in the ``TransactionFilter`` that + are stakeholders of the contract (i.e. either signatories or observers). + If the ``CreatedEvent`` is returned as part of an AssignedEvent, + ActiveContract or IncompleteUnassigned (so the event is related to + an assignment or unassignment): this will include all parties of the + ``TransactionFilter`` that are stakeholders of the contract. + + The behavior of reading create events visible to parties not hosted + on the participant node serving the Ledger API is undefined. Concretely, + there is neither a guarantee that the participant node will serve all their + create events on the ACS stream, nor is there a guarantee that matching archive + events are delivered for such create events. + + For most clients this is not a problem, as they only read events for parties + that are hosted on the participant node. If you need to read events + for parties that may not be hosted at all times on the participant node, + subscribe to the ``TopologyEvent``s for that party by setting a corresponding + ``UpdateFormat``. Using these events, query the ACS as-of an offset where the + party is hosted on the participant node, and ignore create events at offsets + where the party is not hosted on the participant node. + + Required: must be non-empty + type: array + items: + type: string + signatories: + description: |- + The signatories for this contract as specified by the template. + + Required: must be non-empty + type: array + items: + type: string + observers: + description: |- + The observers for this contract as specified explicitly by the template or implicitly as choice controllers. + This field never contains parties that are signatories. + + Optional: can be empty + type: array + items: + type: string + createdAt: + description: |- + Ledger effective time of the transaction that created the contract. + + Required + type: string + packageName: + description: |- + The package name of the created contract. + + Required + type: string + representativePackageId: + description: |- + A package-id present in the participant package store that typechecks the contract's argument. + This may differ from the package-id of the template used to create the contract. + For contracts created before Canton 3.4, this field matches the contract's creation package-id. + + NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice. + + Required + type: string + acsDelta: + description: |- + Whether this event would be part of respective ACS_DELTA shaped stream, + and should therefore considered when tracking contract activeness on the client-side. + + Required + type: boolean + CreatedTreeEvent: + title: CreatedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/CreatedEvent' + CumulativeFilter: + title: CumulativeFilter + description: |- + A filter that matches all contracts that are either an instance of one of + the ``template_filters`` or that match one of the ``interface_filters``. + type: object + properties: + identifierFilter: + $ref: '#/components/schemas/IdentifierFilter' + DeduplicationDuration: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + DeduplicationDuration1: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + DeduplicationDuration2: + title: DeduplicationDuration + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + DeduplicationOffset: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + DeduplicationOffset1: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + DeduplicationOffset2: + title: DeduplicationOffset + type: object + required: + - value + properties: + value: + type: integer + format: int64 + DeduplicationPeriod: + title: DeduplicationPeriod + description: |- + Specifies the deduplication period for the change ID. + If omitted, the participant will assume the configured maximum deduplication time. + + Optional + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty' + DeduplicationPeriod1: + title: DeduplicationPeriod + description: |- + The actual deduplication window used for the submission, which is derived from + ``Commands.deduplication_period``. The ledger may convert the deduplication period into other + descriptions and extend the period in implementation-specified ways. + + Used to audit the deduplication guarantee described in ``commands.proto``. + + The deduplication guarantee applies even if the completion omits this field. + + Optional + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration1' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset1' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty3' + DeduplicationPeriod2: + title: DeduplicationPeriod + oneOf: + - type: object + required: + - DeduplicationDuration + properties: + DeduplicationDuration: + $ref: '#/components/schemas/DeduplicationDuration2' + - type: object + required: + - DeduplicationOffset + properties: + DeduplicationOffset: + $ref: '#/components/schemas/DeduplicationOffset2' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty10' + DeleteIdentityProviderConfigResponse: + title: DeleteIdentityProviderConfigResponse + description: Does not (yet) contain any data. + type: object + DisclosedContract: + title: DisclosedContract + description: |- + An additional contract that is used to resolve + contract & contract key lookups. + type: object + required: + - createdEventBlob + properties: + templateId: + description: |- + The template id of the contract. + The identifier uses the package-id reference format. + + If provided, used to validate the template id of the contract serialized in the created_event_blob. + + Optional + type: string + contractId: + description: |- + The contract id + + If provided, used to validate the contract id of the contract serialized in the created_event_blob. + + Optional + type: string + createdEventBlob: + description: |- + Opaque byte string containing the complete payload required by the Daml engine + to reconstruct a contract not known to the receiving participant. + + Required: must be non-empty + type: string + synchronizerId: + description: |- + The ID of the synchronizer where the contract is currently assigned + + Optional + type: string + Duration: + title: Duration + type: object + required: + - seconds + - nanos + properties: + seconds: + type: integer + format: int64 + nanos: + type: integer + format: int32 + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + description: This field is automatically added as part of protobuf to json + mapping + Empty: + title: Empty + type: object + Empty1: + title: Empty + type: object + Empty10: + title: Empty + type: object + Empty2: + title: Empty + type: object + Empty3: + title: Empty + type: object + Empty4: + title: Empty + type: object + Empty5: + title: Empty + type: object + Empty6: + title: Empty + type: object + Empty7: + title: Empty + type: object + Empty8: + title: Empty + type: object + Empty9: + title: Empty + type: object + Event: + title: Event + description: |- + Events in transactions can have two primary shapes: + + - ACS delta: events can be CreatedEvent or ArchivedEvent + - ledger effects: events can be CreatedEvent or ExercisedEvent + + In the update service the events are restricted to the events + visible for the parties specified in the transaction filter. Each + event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + oneOf: + - type: object + required: + - ArchivedEvent + properties: + ArchivedEvent: + $ref: '#/components/schemas/ArchivedEvent' + - type: object + required: + - CreatedEvent + properties: + CreatedEvent: + $ref: '#/components/schemas/CreatedEvent' + - type: object + required: + - ExercisedEvent + properties: + ExercisedEvent: + $ref: '#/components/schemas/ExercisedEvent' + EventFormat: + title: EventFormat + description: |- + A format for events which defines both which events should be included + and what data should be computed and included for them. + + Note that some of the filtering behavior depends on the `TransactionShape`, + which is expected to be specified alongside usages of `EventFormat`. + type: object + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 2. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + + Optional: can be empty + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + + Optional + verbose: + description: |- + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + + Optional + type: boolean + ExecuteSubmissionAndWaitResponse: + title: ExecuteSubmissionAndWaitResponse + type: object + required: + - updateId + - completionOffset + properties: + updateId: + description: |- + The id of the transaction that resulted from the submitted command. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + completionOffset: + description: |- + The details of the offset field are described in ``community/ledger-api/README.md``. + + Required + type: integer + format: int64 + ExecuteSubmissionResponse: + title: ExecuteSubmissionResponse + type: object + ExerciseByKeyCommand: + title: ExerciseByKeyCommand + description: Exercise a choice on an existing contract specified by its key. + type: object + required: + - templateId + - contractKey + - choice + - choiceArgument + properties: + templateId: + description: |- + The template of contract the client wants to exercise. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + contractKey: + description: |- + The key of the contract the client wants to exercise upon. + + Required + choice: + description: |- + The name of the choice the client wants to exercise. + Must be a valid NameString (as described in ``value.proto``) + + Required + type: string + choiceArgument: + description: |- + The argument for this choice. + + Required + ExerciseCommand: + title: ExerciseCommand + description: Exercise a choice on an existing contract. + type: object + required: + - templateId + - contractId + - choice + - choiceArgument + properties: + templateId: + description: |- + The template or interface of the contract the client wants to exercise. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + To exercise a choice on an interface, specify the interface identifier in the template_id field. + + Required + type: string + contractId: + description: |- + The ID of the contract the client wants to exercise upon. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + choice: + description: |- + The name of the choice the client wants to exercise. + Must be a valid NameString (as described in ``value.proto``) + + Required + type: string + choiceArgument: + description: |- + The argument for this choice. + + Required + ExercisedEvent: + title: ExercisedEvent + description: Records that a choice has been exercised on a target contract. + type: object + required: + - offset + - nodeId + - contractId + - templateId + - choice + - choiceArgument + - consuming + - lastDescendantNodeId + - packageName + - acsDelta + - actingParties + - witnessParties + properties: + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + It is a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating transaction or reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of transactions. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + contractId: + description: |- + The ID of the target contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + Identifies the template that defines the executed choice. + This template's package-id may differ from the target contract's package-id + if the target contract has been upgraded or downgraded. + + The identifier uses the package-id reference format. + + Required + type: string + interfaceId: + description: |- + The interface where the choice is defined, if inherited. + If defined, the identifier uses the package-id reference format. + + Optional + type: string + choice: + description: |- + The choice that was exercised on the target contract. + Must be a valid NameString (as described in ``value.proto``). + + Required + type: string + choiceArgument: + description: |- + The argument of the exercised choice. + + Required + actingParties: + description: |- + The parties that exercised the choice. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + consuming: + description: |- + If true, the target contract may no longer be exercised. + + Required + type: boolean + witnessParties: + description: |- + The parties that are notified of this event. The witnesses of an exercise + node will depend on whether the exercise was consuming or not. + If consuming, the witnesses are the union of the stakeholders, + the actors and all informees of all the ancestors of this event this + participant knows about. + If not consuming, the witnesses are the union of the signatories, + the actors and all informees of all the ancestors of this event this + participant knows about. + In both cases the witnesses are limited to the querying parties, or not + limited in case anyParty filters are used. + Note that the actors might not necessarily be observers + and thus stakeholders. This is the case when the controllers of a + choice are specified using "flexible controllers", using the + ``choice ... controller`` syntax, and said controllers are not + explicitly marked as observers. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + lastDescendantNodeId: + description: |- + Specifies the upper boundary of the node ids of the events in the same transaction that appeared as a result of + this ``ExercisedEvent``. This allows unambiguous identification of all the members of the subtree rooted at this + node. A full subtree can be constructed when all descendant nodes are present in the stream. If nodes are heavily + filtered, it is only possible to determine if a node is in a consequent subtree or not. + + Required + type: integer + format: int32 + exerciseResult: + description: |- + The result of exercising the choice. + + Optional + packageName: + description: |- + The package name of the contract. + + Required + type: string + implementedInterfaces: + description: |- + If the event is consuming, the interfaces implemented by the target template that have been + matched from the interface filter query. + Populated only in case interface filters with include_interface_view set. + + The identifier uses the package-id reference format. + + Optional: can be empty + type: array + items: + type: string + acsDelta: + description: |- + Whether this event would be part of respective ACS_DELTA shaped stream, + and should therefore considered when tracking contract activeness on the client-side. + + Required + type: boolean + ExercisedTreeEvent: + title: ExercisedTreeEvent + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ExercisedEvent' + ExperimentalCommandInspectionService: + title: ExperimentalCommandInspectionService + description: Whether the Ledger API supports command inspection service + type: object + required: + - supported + properties: + supported: + description: Required + type: boolean + ExperimentalFeatures: + title: ExperimentalFeatures + description: See the feature message definitions for descriptions. + type: object + properties: + staticTime: + $ref: '#/components/schemas/ExperimentalStaticTime' + description: Optional + commandInspectionService: + $ref: '#/components/schemas/ExperimentalCommandInspectionService' + description: Optional + ExperimentalStaticTime: + title: ExperimentalStaticTime + description: Ledger is in the static time mode and exposes a time service. + type: object + required: + - supported + properties: + supported: + description: Required + type: boolean + FeaturesDescriptor: + title: FeaturesDescriptor + type: object + required: + - experimental + - userManagement + - partyManagement + - offsetCheckpoint + - packageFeature + properties: + experimental: + $ref: '#/components/schemas/ExperimentalFeatures' + description: |- + Features under development or features that are used + for ledger implementation testing purposes only. + + Daml applications SHOULD not depend on these in production. + + Required + userManagement: + $ref: '#/components/schemas/UserManagementFeature' + description: |- + If set, then the Ledger API server supports user management. + It is recommended that clients query this field to gracefully adjust their behavior for + ledgers that do not support user management. + + Required + partyManagement: + $ref: '#/components/schemas/PartyManagementFeature' + description: |- + If set, then the Ledger API server supports party management configurability. + It is recommended that clients query this field to gracefully adjust their behavior to + maximum party page size. + + Required + offsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpointFeature' + description: |- + It contains the timeouts related to the periodic offset checkpoint emission + + Required + packageFeature: + $ref: '#/components/schemas/PackageFeature' + description: |- + If set, then the Ledger API server supports package listing + configurability. It is recommended that clients query this field to + gracefully adjust their behavior to maximum package listing page size. + + Required + Field: + title: Field + type: object + properties: + varint: + type: array + items: + type: integer + format: int64 + fixed64: + type: array + items: + type: integer + format: int64 + fixed32: + type: array + items: + type: integer + format: int32 + lengthDelimited: + type: array + items: + type: string + FieldMask: + title: FieldMask + type: object + required: + - unknownFields + properties: + paths: + type: array + items: + type: string + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + Filters: + title: Filters + description: The union of a set of template filters, interface filters, or a + wildcard. + type: object + properties: + cumulative: + description: |- + Every filter in the cumulative list expands the scope of the resulting stream. Each interface, + template or wildcard filter means additional events that will match the query. + The impact of include_interface_view and include_created_event_blob fields in the filters will + also be accumulated. + A template or an interface SHOULD NOT appear twice in the accumulative field. + A wildcard filter SHOULD NOT be defined more than once in the accumulative field. + If no ``CumulativeFilter`` defined, the default of a single ``WildcardFilter`` with + include_created_event_blob unset is used. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/CumulativeFilter' + GenerateExternalPartyTopologyRequest: + title: GenerateExternalPartyTopologyRequest + type: object + required: + - synchronizer + - partyHint + - publicKey + properties: + synchronizer: + description: |- + Synchronizer-id for which we are building this request. + TODO(#27670) support synchronizer aliases + + Required + type: string + partyHint: + description: |- + The actual party id will be constructed from this hint and a fingerprint of the public key + + Required + type: string + publicKey: + $ref: '#/components/schemas/SigningPublicKey' + description: |- + Public key + + Required + localParticipantObservationOnly: + description: |- + If true, then the local participant will only be observing, not confirming. Default false. + + Optional + type: boolean + otherConfirmingParticipantUids: + description: |- + Other participant ids which should be confirming for this party + + Optional: can be empty + type: array + items: + type: string + confirmationThreshold: + description: |- + Confirmation threshold >= 1 for the party. Defaults to all available confirmers (or if set to 0). + + Optional + type: integer + format: int32 + observingParticipantUids: + description: |- + Other observing participant ids for this party + + Optional: can be empty + type: array + items: + type: string + GenerateExternalPartyTopologyResponse: + title: GenerateExternalPartyTopologyResponse + description: Response message with topology transactions and the multi-hash + to be signed. + type: object + required: + - partyId + - publicKeyFingerprint + - multiHash + - topologyTransactions + properties: + partyId: + description: |- + The generated party id + + Required + type: string + publicKeyFingerprint: + description: |- + The fingerprint of the supplied public key + + Required + type: string + topologyTransactions: + description: |- + The serialized topology transactions which need to be signed and submitted as part of the allocate party process + Note that the serialization includes the versioning information. Therefore, the transaction here is serialized + as an `UntypedVersionedMessage` which in turn contains the serialized `TopologyTransaction` in the version + supported by the synchronizer. + + Required: must be non-empty + type: array + items: + type: string + multiHash: + description: |- + the multi-hash which may be signed instead of each individual transaction + + Required: must be non-empty + type: string + GetActiveContractsPageRequest: + title: GetActiveContractsPageRequest + type: object + required: + - eventFormat + properties: + activeAtOffset: + description: |- + The offset at which the snapshot of the active contracts will be computed. + Must be no greater than the current ledger end offset. + Must be greater than or equal to the last pruning offset. + Optional, if defined, it must be a valid absolute offset (positive integer) or ledger begin offset (zero). + If zero, the empty set will be returned. + If not defined, the current ledger end will be used and it will be populated in the response. + + Optional + type: integer + format: int64 + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of + TRANSACTION_SHAPE_ACS_DELTA. + + Required + maxPageSize: + description: |- + The result page will contain at most max_page_size entries of the respective active contract snapshot. + The server might reject max_page_size breaching the server-specified limit. + Optional, if not defined, the default will be determined by the server. + + Optional + type: integer + format: int32 + pageToken: + description: |- + To get the next page of the active contracts snapshot, the ``page_token`` should be set to the + ``next_page_token`` of the last ``GetActiveContractsPageResponse``. + The page token only works if subsequent requests: + + - are executed on the same participant, + - use the same active_at_offset and event_format, + - and the participant's store was not pruned to after the active_at_offset. + + If not specified, the first page of the active contracts snapshot will be returned. + + Optional: can be empty + type: string + GetActiveContractsRequest: + title: GetActiveContractsRequest + description: |- + If the given offset is different than the ledger end, and there are (un)assignments in-flight at the given offset, + the snapshot may fail with "FAILED_PRECONDITION/PARTICIPANT_PRUNED_DATA_ACCESSED". + Note that it is ok to request acs snapshots for party migration with offsets other than ledger end, because party + migration is not concerned with incomplete (un)assignments. + type: object + required: + - activeAtOffset + properties: + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Templates to include in the served snapshot, per party. + Optional, if specified event_format must be unset, if not specified event_format must be set. + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + Optional, if specified event_format must be unset. + type: boolean + activeAtOffset: + description: |- + The offset at which the snapshot of the active contracts will be computed. + Must be no greater than the current ledger end offset. + Must be greater than or equal to the last pruning offset. + Must be a valid absolute offset (positive integer) or ledger begin offset (zero). + If zero, the empty set will be returned. + + Required + type: integer + format: int64 + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of + TRANSACTION_SHAPE_ACS_DELTA. + Optional for backwards compatibility, defaults to an EventFormat where: + + - filters_by_party is the filter.filters_by_party from this request + - filters_for_any_party is the filter.filters_for_any_party from this request + - verbose is the verbose field from this request + streamContinuationToken: + description: |- + Opaque representation of a continuation token defining a position in the active contracts snapshot. + The prefix of the active contracts snapshot will be omitted up to and including the element from which + the continuation token was read. + To reuse the continuation token from a `GetActiveContractsPageResponse`: + + - subsequent request must be executed on the same participant with the same version of canton, + - subsequent request must have the same active_at_offset, + - subsequent request must have the same event_format + - and the participant must not have been pruned after the active_at_offset. + + If not specified, the whole active contracts snapshot will be returned. + + Optional: can be empty + type: string + GetCompletionsRequest: + title: GetCompletionsRequest + type: object + properties: + parties: + description: |- + If specified, only completions of commands are included, which have at least one of the ``act_as`` parties + in the given set of parties. + Only Ledger API users with CanReadAsAnyParty permission allowed to provide no ``parties``. + Must be a valid PartyIdString (as described in ``value.proto``). + + Optional: can be empty + type: array + items: + type: string + beginExclusive: + description: |- + This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + If not set the ledger uses the ledger begin offset instead. + If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. (the pruning + offset is accessible on the StateService.GetLatestPrunedOffsets endpoint) + + Optional + type: integer + format: int64 + GetConnectedSynchronizersResponse: + title: GetConnectedSynchronizersResponse + type: object + properties: + connectedSynchronizers: + description: 'Optional: can be empty' + type: array + items: + $ref: '#/components/schemas/ConnectedSynchronizer' + GetContractRequest: + title: GetContractRequest + type: object + required: + - contractId + properties: + contractId: + description: |- + The ID of the contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + queryingParties: + description: |- + The list of querying parties + The stakeholders of the referenced contract must have an intersection with any of these parties + to return the result. + If no querying_parties specified, all possible contracts could be returned. + + Optional: can be empty + type: array + items: + type: string + GetContractResponse: + title: GetContractResponse + type: object + required: + - createdEvent + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The representative_package_id will be always set to the contract package ID, therefore this endpoint should + not be used to lookup contract which entered the participant via party replication or repair service. + The witnesses field will contain only the querying_parties which are also stakeholders of the contract as well. + The following fields of the created event cannot be populated, so those should not be used / parsed: + + - offset + - node_id + - created_event_blob + - interface_views + - acs_delta + + Required + GetEventsByContractIdRequest: + title: GetEventsByContractIdRequest + type: object + required: + - contractId + - eventFormat + properties: + contractId: + description: |- + The contract id being queried. + + Required + type: string + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + Format of the events in the result, the presentation will be of TRANSACTION_SHAPE_ACS_DELTA. + + Required + GetIdentityProviderConfigResponse: + title: GetIdentityProviderConfigResponse + type: object + required: + - identityProviderConfig + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: Required + GetLatestPrunedOffsetsResponse: + title: GetLatestPrunedOffsetsResponse + type: object + properties: + participantPrunedUpToInclusive: + description: |- + It will always be a non-negative integer. + If positive, the absolute offset up to which the ledger has been pruned, + disregarding the state of all divulged contracts pruning. + If zero, the ledger has not been pruned yet. + + Optional + type: integer + format: int64 + allDivulgedContractsPrunedUpToInclusive: + description: |- + It will always be a non-negative integer. + If positive, the absolute offset up to which all divulged events have been pruned on the ledger. + It can be at or before the ``participant_pruned_up_to_inclusive`` offset. + For more details about all divulged events pruning, + see ``PruneRequest.prune_all_divulged_contracts`` in ``participant_pruning_service.proto``. + If zero, the divulged events have not been pruned yet. + + Optional + type: integer + format: int64 + GetLedgerApiVersionResponse: + title: GetLedgerApiVersionResponse + type: object + required: + - version + - features + properties: + version: + description: |- + The version of the ledger API. + + Required + type: string + features: + $ref: '#/components/schemas/FeaturesDescriptor' + description: |- + The features supported by this Ledger API endpoint. + + Daml applications CAN use the feature descriptor on top of + version constraints on the Ledger API version to determine + whether a given Ledger API endpoint supports the features + required to run the application. + + See the feature descriptions themselves for the relation between + Ledger API versions and feature presence. + + Required + GetLedgerEndResponse: + title: GetLedgerEndResponse + type: object + properties: + offset: + description: |- + It will always be a non-negative integer. + If zero, the participant view of the ledger is empty. + If positive, the absolute offset of the ledger as viewed by the participant. + + Optional + type: integer + format: int64 + GetPackageStatusResponse: + title: GetPackageStatusResponse + type: object + required: + - packageStatus + properties: + packageStatus: + description: |- + The status of the package. + + Required + type: string + enum: + - PACKAGE_STATUS_UNSPECIFIED + - PACKAGE_STATUS_REGISTERED + GetParticipantIdResponse: + title: GetParticipantIdResponse + type: object + required: + - participantId + properties: + participantId: + description: |- + Identifier of the participant, which SHOULD be globally unique. + Must be a valid LedgerString (as describe in ``value.proto``). + + Required + type: string + GetPartiesResponse: + title: GetPartiesResponse + type: object + required: + - partyDetails + properties: + partyDetails: + description: |- + The details of the requested Daml parties by the participant, if known. + The party details may not be in the same order as requested. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/PartyDetails' + GetPreferredPackageVersionResponse: + title: GetPreferredPackageVersionResponse + type: object + properties: + packagePreference: + $ref: '#/components/schemas/PackagePreference' + description: |- + Not populated when no preferred package is found + + Optional + GetPreferredPackagesRequest: + title: GetPreferredPackagesRequest + type: object + required: + - packageVettingRequirements + properties: + packageVettingRequirements: + description: |- + The package-name vetting requirements for which the preferred packages should be resolved. + + Generally it is enough to provide the requirements for the intended command's root package-names. + Additional package-name requirements can be provided when additional Daml transaction informees need to use + package dependencies of the command's root packages. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/PackageVettingRequirement' + synchronizerId: + description: |- + The synchronizer whose vetting state should be used for resolving this query. + If not specified, the vetting states of all synchronizers to which the participant is connected are used. + + Optional + type: string + vettingValidAt: + description: |- + The timestamp at which the package vetting validity should be computed + on the latest topology snapshot as seen by the participant. + If not provided, the participant's current clock time is used. + + Optional + type: string + GetPreferredPackagesResponse: + title: GetPreferredPackagesResponse + type: object + required: + - synchronizerId + - packageReferences + properties: + packageReferences: + description: |- + The package references of the preferred packages. + Must contain one package reference for each requested package-name. + + If you build command submissions whose content depends on the returned + preferred packages, then we recommend submitting the preferred package-ids + in the ``package_id_selection_preference`` of the command submission to + avoid race conditions with concurrent changes of the on-ledger package vetting state. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/PackageReference' + synchronizerId: + description: |- + The synchronizer for which the package preferences are computed. + If the synchronizer_id was specified in the request, then it matches the request synchronizer_id. + + Required + type: string + GetTransactionByIdRequest: + title: GetTransactionByIdRequest + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - updateId + properties: + updateId: + description: |- + The ID of a particular transaction. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + requestingParties: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + The parties whose events the client expects to see. + Events that are not visible for the parties in this collection will not be present in the response. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Optional for backwards compatibility for GetTransactionById request: if defined transaction_format must be + unset (falling back to defaults). + type: array + items: + type: string + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Optional for GetTransactionById request for backwards compatibility: defaults to a transaction_format, where: + + - event_format.filters_by_party will have template-wildcard filters for all the requesting_parties + - event_format.filters_for_any_party is unset + - event_format.verbose = true + - transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + GetTransactionByOffsetRequest: + title: GetTransactionByOffsetRequest + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - offset + properties: + offset: + description: |- + The offset of the transaction being looked up. + Must be a valid absolute offset (positive integer). + Required + type: integer + format: int64 + requestingParties: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + The parties whose events the client expects to see. + Events that are not visible for the parties in this collection will not be present in the response. + Each element must be a valid PartyIdString (as described in ``value.proto``). + Optional for backwards compatibility for GetTransactionByOffset request: if defined transaction_format must be + unset (falling back to defaults). + type: array + items: + type: string + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Optional for GetTransactionByOffset request for backwards compatibility: defaults to a TransactionFormat, where: + + - event_format.filters_by_party will have template-wildcard filters for all the requesting_parties + - event_format.filters_for_any_party is unset + - event_format.verbose = true + - transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + GetUpdateByIdRequest: + title: GetUpdateByIdRequest + type: object + required: + - updateId + - updateFormat + properties: + updateId: + description: |- + The ID of a particular update. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + The format for the update. + + Required + GetUpdateByOffsetRequest: + title: GetUpdateByOffsetRequest + type: object + required: + - offset + - updateFormat + properties: + offset: + description: |- + The offset of the update being looked up. + Must be a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + The format for the update. + + Required + GetUpdatesPageRequest: + title: GetUpdatesPageRequest + type: object + required: + - updateFormat + properties: + beginOffsetExclusive: + description: |- + Exclusive lower bound offset of the requested ledger section (non-negative integer). + The response page will only contain updates whose offset is strictly greater than this. + If set to zero or not defined, the lower bound is set to the actual pruning offset or to the beginning of the + ledger if the participant was not pruned yet. + If set to positive and the ledger has been pruned, this parameter must be greater or equal than the pruning offset. + + Optional + type: integer + format: int64 + endOffsetInclusive: + description: |- + Inclusive upper bound offset of the requested ledger section. + If specified the response will only contain updates whose offset is less than or equal to this. + If not specified response will only contain updates whose offset is less than the current ledger-end. + + Optional + type: integer + format: int64 + maxPageSize: + description: |- + The result page will contain the first max_page_size Updates of all matching updates. + The server may reject queries with max_page_size above server specified limits. + If not specified, the default max_page_size is determined by the server. + + Optional + type: integer + format: int32 + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: Required + descendingOrder: + description: |- + If set, the page will populate the elements in descending order starting from the end_offset_inclusive. + + Optional + type: boolean + pageToken: + description: |- + To get the next page of updates, the ``page_token`` should be set to the + ``next_page_token`` of the last ``GetUpdatesPageResponse``. + To achieve correct paging: subsequent requests must + + - be executed on the same participant, + - have the same begin_offset_exclusive, + - have the same end_offset_inclusive, + - have the same update_format and + - have the same descending_order. + + If not specified, the first page of updates will be returned. + + Optional: can be empty + type: string + GetUpdatesRequest: + title: GetUpdatesRequest + type: object + required: + - beginExclusive + properties: + beginExclusive: + description: |- + Exclusive lower bound offset of the requested ledger section (non-negative integer). + The response will only contain transactions whose offset is strictly greater than this. + If set to zero, the lower bound is set to the beginning of the ledger. + If the participant has been pruned, this parameter must be greater or equal than the pruning offset. + Required + type: integer + format: int64 + endInclusive: + description: |- + Inclusive higher bound offset of the requested ledger section. + If specified the response will only contain transactions whose offset is less than or equal to this. + If not specified, + + - the descending_order must not be selected, + - the stream will not terminate. + + Optional + type: integer + format: int64 + filter: + $ref: '#/components/schemas/TransactionFilter' + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Requesting parties with template filters. + Template filters must be empty for GetUpdateTrees requests. + Optional for backwards compatibility, if defined update_format must be unset + verbose: + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + In particular, setting the verbose flag to true triggers the ledger to include labels, record and variant type ids + for record fields. + Optional for backwards compatibility, if defined update_format must be unset + type: boolean + updateFormat: + $ref: '#/components/schemas/UpdateFormat' + description: |- + Must be unset for GetUpdateTrees request. + Optional for backwards compatibility for GetUpdates request: defaults to an UpdateFormat where: + + - include_transactions.event_format.filters_by_party = the filter.filters_by_party on this request + - include_transactions.event_format.filters_for_any_party = the filter.filters_for_any_party on this request + - include_transactions.event_format.verbose = the same flag specified on this request + - include_transactions.transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + - include_reassignments.filter = the same filter specified on this request + - include_reassignments.verbose = the same flag specified on this request + - include_topology_events.include_participant_authorization_events.parties = all the parties specified in filter + descendingOrder: + description: |- + If set, the stream will populate the elements in descending order. + + Optional + type: boolean + GetUserResponse: + title: GetUserResponse + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/User' + description: |- + Retrieved user. + + Required + GrantUserRightsRequest: + title: GrantUserRightsRequest + description: |- + Add the rights to the set of rights granted to the user. + + Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)`` + type: object + required: + - userId + properties: + userId: + description: |- + The user to whom to grant rights. + + Required + type: string + rights: + description: |- + The rights to grant. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Right' + identityProviderId: + description: |- + The id of the ``Identity Provider`` + If not set, assume the user is managed by the default identity provider. + + Optional + type: string + GrantUserRightsResponse: + title: GrantUserRightsResponse + type: object + properties: + newlyGrantedRights: + description: |- + The rights that were newly granted by the request. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Right' + IdentifierFilter: + title: IdentifierFilter + description: Required + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty1' + - type: object + required: + - InterfaceFilter + properties: + InterfaceFilter: + $ref: '#/components/schemas/InterfaceFilter' + - type: object + required: + - TemplateFilter + properties: + TemplateFilter: + $ref: '#/components/schemas/TemplateFilter' + - type: object + required: + - WildcardFilter + properties: + WildcardFilter: + $ref: '#/components/schemas/WildcardFilter' + IdentityProviderAdmin: + title: IdentityProviderAdmin + description: |- + The right to administer the identity provider that the user is assigned to. + It means, being able to manage users and parties that are also assigned + to the same identity provider. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/IdentityProviderAdmin1' + IdentityProviderAdmin1: + title: IdentityProviderAdmin + description: |- + The right to administer the identity provider that the user is assigned to. + It means, being able to manage users and parties that are also assigned + to the same identity provider. + type: object + IdentityProviderConfig: + title: IdentityProviderConfig + type: object + required: + - identityProviderId + - issuer + - jwksUrl + properties: + identityProviderId: + description: |- + The identity provider identifier + Must be a valid LedgerString (as describe in ``value.proto``). + + Required + type: string + isDeactivated: + description: |- + When set, the callers using JWT tokens issued by this identity provider are denied all access + to the Ledger API. + Modifiable + + Optional + type: boolean + issuer: + description: |- + Specifies the issuer of the JWT token. + The issuer value is a case sensitive URL using the https scheme that contains scheme, host, + and optionally, port number and path components and no query or fragment components. + Modifiable + + Can be left empty when used in `UpdateIdentityProviderConfigRequest` if the issuer is not being updated. + + Required + type: string + jwksUrl: + description: |- + The JWKS (JSON Web Key Set) URL. + The Ledger API uses JWKs (JSON Web Keys) from the provided URL to verify that the JWT has been + signed with the loaded JWK. Only RS256 (RSA Signature with SHA-256) signing algorithm is supported. + Modifiable + + Required + type: string + audience: + description: |- + Specifies the audience of the JWT token. + When set, the callers using JWT tokens issued by this identity provider are allowed to get an access + only if the "aud" claim includes the string specified here + Modifiable + + Optional + type: string + InterfaceFilter: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/InterfaceFilter1' + InterfaceFilter1: + title: InterfaceFilter + description: This filter matches contracts that implement a specific interface. + type: object + required: + - interfaceId + properties: + interfaceId: + description: |- + The interface that a matching contract must implement. + The ``interface_id`` needs to be valid: corresponding interface should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeInterfaceView: + description: |- + Whether to include the interface view on the contract in the returned ``CreatedEvent``. + Use this to access contract data in a uniform manner in your API client. + + Optional + type: boolean + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + + Optional + type: boolean + JsActiveContract: + title: JsActiveContract + type: object + required: + - createdEvent + - synchronizerId + - reassignmentCounter + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The event as it appeared in the context of its last update (i.e. daml transaction or + reassignment). In particular, the last offset, node_id pair is preserved. + The last update is the most recent update created or assigned this contract on synchronizer_id synchronizer. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + + Required + synchronizerId: + description: |- + A valid synchronizer id + + Required + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + This field will be the reassignment_counter of the latest observable activation event on this synchronizer, which is + before the active_at_offset. + + Required + type: integer + format: int64 + JsArchived: + title: JsArchived + type: object + required: + - archivedEvent + - synchronizerId + properties: + archivedEvent: + $ref: '#/components/schemas/ArchivedEvent' + description: Required + synchronizerId: + description: |- + The synchronizer which sequenced the archival of the contract + + Required + type: string + JsAssignedEvent: + title: JsAssignedEvent + description: Records that a contract has been assigned, and it can be used on + the target synchronizer. + type: object + required: + - source + - target + - reassignmentId + - reassignmentCounter + - createdEvent + properties: + source: + description: |- + The ID of the source synchronizer. + Must be a valid synchronizer id. + + Required + type: string + target: + description: |- + The ID of the target synchronizer. + Must be a valid synchronizer id. + + Required + type: string + reassignmentId: + description: |- + The ID from the unassigned event. + For correlation capabilities. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + submitter: + description: |- + Party on whose behalf the assign command was executed. + Empty if the assignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + + Required + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The offset of this event refers to the offset of the assignment, + while the node_id is the index of within the batch. + + Required + JsAssignmentEvent: + title: JsAssignmentEvent + type: object + required: + - source + - target + - reassignmentId + - submitter + - reassignmentCounter + - createdEvent + properties: + source: + type: string + target: + type: string + reassignmentId: + type: string + submitter: + type: string + reassignmentCounter: + type: integer + format: int64 + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + JsCantonError: + title: JsCantonError + type: object + required: + - code + - cause + - context + - errorCategory + properties: + code: + type: string + cause: + type: string + correlationId: + type: string + traceId: + type: string + context: + $ref: '#/components/schemas/Map_String' + resources: + type: array + items: + $ref: '#/components/schemas/Tuple2_String_String' + errorCategory: + type: integer + format: int32 + grpcCodeValue: + type: integer + format: int32 + retryInfo: + type: string + definiteAnswer: + type: boolean + JsCommands: + title: JsCommands + description: A composite command that groups multiple commands together. + type: object + required: + - commandId + - commands + - actAs + properties: + commands: + description: |- + Individual elements of this atomic command. Must be non-empty. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/Command' + commandId: + description: |- + Uniquely identifies the command. + The triple (user_id, act_as, command_id) constitutes the change ID for the intended ledger change, + where act_as is interpreted as a set of party names. + The change ID can be used for matching the intended ledger changes with all their completions. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + actAs: + description: |- + Set of parties on whose behalf the command should be executed. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to act on behalf of each of the given parties. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + userId: + description: |- + Uniquely identifies the participant user that issued the command. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + + Optional + type: string + readAs: + description: |- + Set of parties on whose behalf (in addition to all parties listed in ``act_as``) contracts can be retrieved. + This affects Daml operations such as ``fetch``, ``fetchByKey``, ``lookupByKey``, ``exercise``, and ``exerciseByKey``. + Note: A participant node of a Daml network can host multiple parties. Each contract present on the participant + node is only visible to a subset of these parties. A command can only use contracts that are visible to at least + one of the parties in ``act_as`` or ``read_as``. This visibility check is independent from the Daml authorization + rules for fetch operations. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to read contract data on behalf of each of the given parties. + + Optional: can be empty + type: array + items: + type: string + workflowId: + description: |- + Identifier of the on-ledger workflow that this command is a part of. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod' + minLedgerTimeAbs: + description: |- + Lower bound for the ledger time assigned to the resulting transaction. + Note: The ledger time of a transaction is assigned as part of command interpretation. + Use this property if you expect that command interpretation will take a considerate amount of time, such that by + the time the resulting transaction is sequenced, its assigned ledger time is not valid anymore. + Must not be set at the same time as min_ledger_time_rel. + + Optional + type: string + minLedgerTimeRel: + $ref: '#/components/schemas/Duration' + description: |- + Same as min_ledger_time_abs, but specified as a duration, starting from the time the command is received by the server. + Must not be set at the same time as min_ledger_time_abs. + + Optional + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + If omitted, the participant or the committer may set a value of their choice. + + Optional + type: string + disclosedContracts: + description: |- + Additional contracts used to resolve contract & contract key lookups. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + synchronizerId: + description: |- + Must be a valid synchronizer id + + Optional + type: string + packageIdSelectionPreference: + description: |- + The package-id selection preference of the client for resolving + package names and interface instances in command submission and interpretation + + Optional: can be empty + type: array + items: + type: string + prefetchContractKeys: + description: |- + Fetches the contract keys into the caches to speed up the command processing. + Each entry specifies a key and a limit on how many contracts to prefetch for that key. + The limit does not count disclosed contracts, and should reflect the number of + additional contracts expected to be resolved during interpretation of the commands. + If a key appears multiple times, the last entry's limit wins. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/PrefetchContractKey' + tapsMaxPasses: + description: |- + The maximum number of passes for the Topology-Aware Package Selection (TAPS). + Higher values can increase the chance of successful package selection for routing of interpreted transactions. + If unset, this defaults to the value defined in the participant configuration. + The provided value must not exceed the limit specified in the participant configuration. + + Optional + type: integer + format: int32 + JsContractEntry: + title: JsContractEntry + description: |- + For a contract there could be multiple contract_entry-s in the entire snapshot. These together define + the state of one contract in the snapshot. + A contract_entry is included in the result, if and only if there is at least one stakeholder party of the contract + that is hosted on the synchronizer at the time of the event and the party satisfies the + ``TransactionFilter`` in the query. + + Required + oneOf: + - type: object + required: + - JsActiveContract + properties: + JsActiveContract: + $ref: '#/components/schemas/JsActiveContract' + - type: object + required: + - JsEmpty + properties: + JsEmpty: + $ref: '#/components/schemas/JsEmpty' + - type: object + required: + - JsIncompleteAssigned + properties: + JsIncompleteAssigned: + $ref: '#/components/schemas/JsIncompleteAssigned' + - type: object + required: + - JsIncompleteUnassigned + properties: + JsIncompleteUnassigned: + $ref: '#/components/schemas/JsIncompleteUnassigned' + JsCreated: + title: JsCreated + type: object + required: + - createdEvent + - synchronizerId + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The event as it appeared in the context of its original update (i.e. daml transaction or + reassignment) on this participant node. You can use its offset and node_id to find the + corresponding update and the node within it. + + Required + synchronizerId: + description: |- + The synchronizer which sequenced the creation of the contract + + Required + type: string + JsEmpty: + title: JsEmpty + type: object + JsExecuteSubmissionAndWaitForTransactionRequest: + title: JsExecuteSubmissionAndWaitForTransactionRequest + type: object + required: + - preparedTransaction + - partySignatures + - submissionId + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + the prepared transaction + Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + obtained from calling `prepareSubmission`. + + Required + type: string + partySignatures: + $ref: '#/components/schemas/PartySignatures' + description: |- + The party(ies) signatures that authorize the prepared submission to be executed by this node. + Each party can provide one or more signatures.. + and one or more parties can sign. + Note that currently, only single party submissions are supported. + + Required + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod2' + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + userId: + description: |- + See [PrepareSubmissionRequest.user_id] + + Optional + type: string + hashingSchemeVersion: + description: |- + The hashing scheme version used when building the hash + + Required + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + - HASHING_SCHEME_VERSION_V3 + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: |- + If set will influence the chosen ledger effective time but will not result in a submission delay so any override + should be scheduled to executed within the window allowed by synchronizer. + + Optional + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + If no ``transaction_format`` is provided, a default will be used where ``transaction_shape`` is set to + TRANSACTION_SHAPE_ACS_DELTA, ``event_format`` is defined with ``filters_by_party`` containing wildcard-template + filter for all original ``act_as`` and ``read_as`` parties and the ``verbose`` flag is set. + When the ``transaction_shape`` TRANSACTION_SHAPE_ACS_DELTA shape is used (explicitly or is defaulted to as explained above), + events will only be returned if the submitting party is hosted on this node. + + Optional + JsExecuteSubmissionAndWaitForTransactionResponse: + title: JsExecuteSubmissionAndWaitForTransactionResponse + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransaction' + description: |- + The transaction that resulted from the submitted command. + The transaction might contain no events (request conditions result in filtering out all of them). + + Required + JsExecuteSubmissionAndWaitRequest: + title: JsExecuteSubmissionAndWaitRequest + type: object + required: + - preparedTransaction + - partySignatures + - submissionId + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + the prepared transaction + Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + obtained from calling `prepareSubmission`. + + Required + type: string + partySignatures: + $ref: '#/components/schemas/PartySignatures' + description: |- + The party(ies) signatures that authorize the prepared submission to be executed by this node. + Each party can provide one or more signatures.. + and one or more parties can sign. + Note that currently, only single party submissions are supported. + + Required + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod2' + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + userId: + description: |- + See [PrepareSubmissionRequest.user_id] + + Optional + type: string + hashingSchemeVersion: + description: |- + The hashing scheme version used when building the hash + + Required + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + - HASHING_SCHEME_VERSION_V3 + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: |- + If set will influence the chosen ledger effective time but will not result in a submission delay so any override + should be scheduled to executed within the window allowed by synchronizer. + + Optional + JsExecuteSubmissionRequest: + title: JsExecuteSubmissionRequest + type: object + required: + - preparedTransaction + - partySignatures + - submissionId + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + the prepared transaction + Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + obtained from calling `prepareSubmission`. + + Required + type: string + partySignatures: + $ref: '#/components/schemas/PartySignatures' + description: |- + The party(ies) signatures that authorize the prepared submission to be executed by this node. + Each party can provide one or more signatures.. + and one or more parties can sign. + Note that currently, only single party submissions are supported. + + Required + deduplicationPeriod: + $ref: '#/components/schemas/DeduplicationPeriod2' + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + userId: + description: |- + See [PrepareSubmissionRequest.user_id] + + Optional + type: string + hashingSchemeVersion: + description: |- + The hashing scheme version used when building the hash + + Required + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + - HASHING_SCHEME_VERSION_V3 + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: |- + If set will influence the chosen ledger effective time but will not result in a submission delay so any override + should be scheduled to executed within the window allowed by synchronizer. + + Optional + JsGetActiveContractsPageResponse: + title: JsGetActiveContractsPageResponse + type: object + required: + - activeAtOffset + - activeContracts + properties: + activeContracts: + description: |- + The collection of active contracts for this page response. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/JsGetActiveContractsResponse' + activeAtOffset: + description: |- + The active_at_offset which was specified in the request, or the calculated active_at_offset from the actual + ledger end from at the evaluation of the request. + + Required + type: integer + format: int64 + nextPageToken: + description: |- + If not present this is the last page. If present, this token must be used to get the next page. + + Optional: can be empty + type: string + JsGetActiveContractsResponse: + title: JsGetActiveContractsResponse + type: object + properties: + workflowId: + description: |- + The workflow ID used in command submission which corresponds to the contract_entry. Only set if + the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + contractEntry: + $ref: '#/components/schemas/JsContractEntry' + streamContinuationToken: + description: |- + Opaque representation of a continuation token which can be used in the request to bypass the already processed part + of the active contracts snapshot. + Only populated for the streaming ``GetActiveContracts`` rpc call. + + Optional: can be empty + type: string + JsGetEventsByContractIdResponse: + title: JsGetEventsByContractIdResponse + type: object + properties: + created: + $ref: '#/components/schemas/JsCreated' + description: |- + The create event for the contract with the ``contract_id`` given in the request + provided it exists and has not yet been pruned. + + Optional + archived: + $ref: '#/components/schemas/JsArchived' + description: |- + The archive event for the contract with the ``contract_id`` given in the request + provided such an archive event exists and it has not yet been pruned. + + Optional + JsGetTransactionResponse: + title: JsGetTransactionResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransaction' + description: Required + JsGetTransactionTreeResponse: + title: JsGetTransactionTreeResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransactionTree' + description: Required + JsGetUpdateResponse: + title: JsGetUpdateResponse + type: object + properties: + update: + $ref: '#/components/schemas/Update' + JsGetUpdateTreesResponse: + title: JsGetUpdateTreesResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + properties: + update: + $ref: '#/components/schemas/Update1' + JsGetUpdatesPageResponse: + title: JsGetUpdatesPageResponse + type: object + required: + - lowestPageOffsetExclusive + - highestPageOffsetInclusive + properties: + updates: + description: |- + The first max_page_size updates that match the filter in the request. + In case descending_order was selected, the order of the updates is in reversed offset order. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/JsGetUpdateResponse' + lowestPageOffsetExclusive: + description: |- + Represents the lower bound of this page. + + Required + type: integer + format: int64 + highestPageOffsetInclusive: + description: |- + Represents the upper bound of the page. + + Required + type: integer + format: int64 + nextPageToken: + description: |- + If the value is not populated, this is the last page. + If the value is populated, this token can be used to get the next page. + If the original ``GetFirstUpdatePageRequest`` end_offset_inclusive was not specified and the request uses + ascending order, then this token will always be populated, so you can use it to "tail" the ledger by + repeatedly polling with the new page token returned. + + Optional: can be empty + type: string + JsGetUpdatesResponse: + title: JsGetUpdatesResponse + type: object + properties: + update: + $ref: '#/components/schemas/Update' + JsIncompleteAssigned: + title: JsIncompleteAssigned + type: object + required: + - assignedEvent + properties: + assignedEvent: + $ref: '#/components/schemas/JsAssignedEvent' + description: Required + JsIncompleteUnassigned: + title: JsIncompleteUnassigned + type: object + required: + - createdEvent + - unassignedEvent + properties: + createdEvent: + $ref: '#/components/schemas/CreatedEvent' + description: |- + The event as it appeared in the context of its last activation update (i.e. daml transaction or + reassignment). In particular, the last activation offset, node_id pair is preserved. + The last activation update is the most recent update created or assigned this contract on synchronizer_id synchronizer before + the unassigned_event. + The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + for lookups. + + Required + unassignedEvent: + $ref: '#/components/schemas/UnassignedEvent' + description: Required + JsInterfaceView: + title: JsInterfaceView + description: View of a create event matched by an interface filter. + type: object + required: + - interfaceId + - viewStatus + properties: + interfaceId: + description: |- + The interface implemented by the matched event. + The identifier uses the package-id reference format. + + Required + type: string + viewStatus: + $ref: '#/components/schemas/JsStatus' + description: |- + Whether the view was successfully computed, and if not, + the reason for the error. The error is reported using the same rules + for error codes and messages as the errors returned for API requests. + + Required + viewValue: + description: |- + The value of the interface's view method on this event. + Set if it was requested in the ``InterfaceFilter`` and it could be + successfully computed. + + Optional + implementationPackageId: + description: |- + The package defining the interface implementation used to compute the view. + Can be different from the package that was used to create the contract itself, + as the contract arguments can be upgraded or downgraded using smart-contract upgrading + as part of computing the interface view. + Populated if the view computation is successful, otherwise empty. + + Optional + type: string + JsPrepareSubmissionRequest: + title: JsPrepareSubmissionRequest + type: object + required: + - commandId + - commands + - actAs + properties: + userId: + description: |- + Uniquely identifies the participant user that prepares the transaction. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + + Optional + type: string + commandId: + description: |- + Uniquely identifies the command. + The triple (user_id, act_as, command_id) constitutes the change ID for the intended ledger change, + where act_as is interpreted as a set of party names. + The change ID can be used for matching the intended ledger changes with all their completions. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + commands: + description: |- + Individual elements of this atomic command. Must be non-empty. + Limitation: Only single command transaction are currently supported by the API. + The field is marked as repeated in preparation for future support of multiple commands. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/Command' + minLedgerTime: + $ref: '#/components/schemas/MinLedgerTime' + description: Optional + actAs: + description: |- + Set of parties on whose behalf the command should be executed, if submitted. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to **read** (not act) on behalf of each of the given parties. This is because this RPC merely prepares a transaction + and does not execute it. Therefore read authorization is sufficient even for actAs parties. + Note: This may change, and more specific authorization scope may be introduced in the future. + Each element must be a valid PartyIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + readAs: + description: |- + Set of parties on whose behalf (in addition to all parties listed in ``act_as``) contracts can be retrieved. + This affects Daml operations such as ``fetch``, ``fetchByKey``, ``lookupByKey``, ``exercise``, and ``exerciseByKey``. + Note: A command can only use contracts that are visible to at least + one of the parties in ``act_as`` or ``read_as``. This visibility check is independent from the Daml authorization + rules for fetch operations. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to read contract data on behalf of each of the given parties. + + Optional: can be empty + type: array + items: + type: string + disclosedContracts: + description: |- + Additional contracts used to resolve contract & contract key lookups. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + synchronizerId: + description: |- + Must be a valid synchronizer id + If not set, a suitable synchronizer that this node is connected to will be chosen + + Optional + type: string + packageIdSelectionPreference: + description: |- + The package-id selection preference of the client for resolving + package names and interface instances in command submission and interpretation + + Optional: can be empty + type: array + items: + type: string + verboseHashing: + description: |- + When true, the response will contain additional details on how the transaction was encoded and hashed + This can be useful for troubleshooting of hash mismatches. Should only be used for debugging. + Defaults to false + + Optional + type: boolean + prefetchContractKeys: + description: |- + Fetches the contract keys into the caches to speed up the command processing. + Should only contain contract keys that are expected to be resolved during interpretation of the commands. + Keys of disclosed contracts do not need prefetching. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/PrefetchContractKey' + maxRecordTime: + description: |- + Maximum timestamp at which the transaction can be recorded onto the ledger via the synchronizer specified in the `PrepareSubmissionResponse`. + If submitted after it will be rejected even if otherwise valid, in which case it needs to be prepared and signed again + with a new valid max_record_time. + Use this to limit the time-to-life of a prepared transaction, + which is useful to know when it can definitely not be accepted + anymore and resorting to preparing another transaction for the same + intent is safe again. + + Optional + type: string + estimateTrafficCost: + $ref: '#/components/schemas/CostEstimationHints' + description: |- + Hints to improve the accuracy of traffic cost estimation. + The estimation logic assumes that this node will be used for the execution of the transaction + If another node is used instead, the estimation may be less precise. + Request amplification is not accounted for in the estimation: each amplified request will + result in the cost of the confirmation request to be charged additionally. + + Traffic cost estimation is enabled by default if this field is not set + To turn off cost estimation, set the CostEstimationHints#disabled field to true + + Optional + tapsMaxPasses: + description: |- + The maximum number of passes for the Topology-Aware Package Selection (TAPS). + Higher values can increase the chance of successful package selection for routing of interpreted transactions. + If unset, this defaults to the value defined in the participant configuration. + The provided value must not exceed the limit specified in the participant configuration. + + Optional + type: integer + format: int32 + hashingSchemeVersion: + description: |- + The hashing scheme version to be used when building the hash. + Defaults to HASHING_SCHEME_VERSION_V2. + + Optional + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + - HASHING_SCHEME_VERSION_V3 + JsPrepareSubmissionResponse: + title: JsPrepareSubmissionResponse + description: '[docs-entry-end: HashingSchemeVersion]' + type: object + required: + - preparedTransaction + - preparedTransactionHash + - hashingSchemeVersion + properties: + preparedTransaction: + description: |- + The interpreted transaction, it represents the ledger changes necessary to execute the commands specified in the request. + Clients MUST display the content of the transaction to the user for them to validate before signing the hash if the preparing participant is not trusted. + + Required + type: string + preparedTransactionHash: + description: |- + Hash of the transaction, this is what needs to be signed by the party to authorize the transaction. + Only provided for convenience, clients MUST recompute the hash from the raw transaction if the preparing participant is not trusted. + May be removed in future versions + + Required: must be non-empty + type: string + hashingSchemeVersion: + description: |- + The hashing scheme version used when building the hash + + Required + type: string + enum: + - HASHING_SCHEME_VERSION_UNSPECIFIED + - HASHING_SCHEME_VERSION_V2 + - HASHING_SCHEME_VERSION_V3 + hashingDetails: + description: |- + Optional additional details on how the transaction was encoded and hashed. Only set if verbose_hashing = true in the request + Note that there are no guarantees on the stability of the format or content of this field. + Its content should NOT be parsed and should only be used for troubleshooting purposes. + + Optional + type: string + costEstimation: + $ref: '#/components/schemas/CostEstimation' + description: |- + Traffic cost estimation of the prepared transaction + + Optional + JsReassignment: + title: JsReassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - updateId + - offset + - recordTime + - synchronizerId + - events + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this reassignment. Missing for everyone except the submitting party on the submitting participant. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + workflowId: + description: |- + The workflow ID used in reassignment command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + offset: + description: |- + The participant's offset. The details of this field are described in ``community/ledger-api/README.md``. + Must be a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + events: + description: |- + The collection of reassignment events. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/JsReassignmentEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + recordTime: + description: |- + The time at which the reassignment was recorded. The record time refers to the source/target + synchronizer for an unassign/assign event respectively. + + Required + type: string + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized this Reassignment. + + Required + type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the corresponding (un)assignment request. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional + type: integer + format: int64 + JsReassignmentEvent: + title: JsReassignmentEvent + oneOf: + - type: object + required: + - JsAssignmentEvent + properties: + JsAssignmentEvent: + $ref: '#/components/schemas/JsAssignmentEvent' + - type: object + required: + - JsUnassignedEvent + properties: + JsUnassignedEvent: + $ref: '#/components/schemas/JsUnassignedEvent' + JsStatus: + title: JsStatus + type: object + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + $ref: '#/components/schemas/ProtoAny' + JsSubmitAndWaitForReassignmentResponse: + title: JsSubmitAndWaitForReassignmentResponse + type: object + required: + - reassignment + properties: + reassignment: + $ref: '#/components/schemas/JsReassignment' + description: |- + The reassignment that resulted from the submitted reassignment command. + The reassignment might contain no events (request conditions result in filtering out all of them). + + Required + JsSubmitAndWaitForTransactionRequest: + title: JsSubmitAndWaitForTransactionRequest + description: These commands are executed as a single atomic transaction. + type: object + required: + - commands + properties: + commands: + $ref: '#/components/schemas/JsCommands' + description: |- + The commands to be submitted. + + Required + transactionFormat: + $ref: '#/components/schemas/TransactionFormat' + description: |- + If no ``transaction_format`` is provided, a default will be used where ``transaction_shape`` is set to + TRANSACTION_SHAPE_ACS_DELTA, ``event_format`` is defined with ``filters_by_party`` containing wildcard-template + filter for all original ``act_as`` and ``read_as`` parties and the ``verbose`` flag is set. + + Optional + JsSubmitAndWaitForTransactionResponse: + title: JsSubmitAndWaitForTransactionResponse + type: object + required: + - transaction + properties: + transaction: + $ref: '#/components/schemas/JsTransaction' + description: |- + The transaction that resulted from the submitted command. + The transaction might contain no events (request conditions result in filtering out all of them). + + Required + JsSubmitAndWaitForTransactionTreeResponse: + title: JsSubmitAndWaitForTransactionTreeResponse + description: Provided for backwards compatibility, it will be removed in the + Canton version 3.5.0. + type: object + properties: + transactionTree: + $ref: '#/components/schemas/JsTransactionTree' + JsTopologyTransaction: + title: JsTopologyTransaction + type: object + required: + - updateId + - offset + - synchronizerId + - recordTime + - events + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + It is a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the topology transaction. + + Required + type: string + recordTime: + description: |- + The time at which the changes in the topology transaction become effective. There is a small delay between a + topology transaction being sequenced and the changes it contains becoming effective. Topology transactions appear + in order relative to a synchronizer based on their effective time rather than their sequencing time. + + Required + type: string + events: + description: |- + A non-empty list of topology events. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/TopologyEvent' + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + JsTransaction: + title: JsTransaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - updateId + - effectiveAt + - offset + - synchronizerId + - recordTime + - events + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + + Required + type: string + events: + description: |- + The collection of events. + Contains: + + - ``CreatedEvent`` or ``ArchivedEvent`` in case of ACS_DELTA transaction shape + - ``CreatedEvent`` or ``ExercisedEvent`` in case of LEDGER_EFFECTS transaction shape + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/Event' + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + It is a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + + Optional + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + + Required + type: string + externalTransactionHash: + description: |- + For transaction externally signed, contains the external transaction hash + signed by the external party. Can be used to correlate an external submission with a committed transaction. + + Optional: can be empty + type: string + paidTrafficCost: + description: |- + The traffic cost that this participant node paid for the confirmation + request for this transaction. + + Not set for transactions that were + - initiated by another participant + - initiated offline via the repair service + - processed before the participant started serving traffic cost on the Ledger API + - returned as part of a query filtering for a non submitting party + + Optional + type: integer + format: int64 + JsTransactionTree: + title: JsTransactionTree + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Complete view of an on-ledger transaction. + type: object + required: + - updateId + - effectiveAt + - offset + - eventsById + - synchronizerId + - recordTime + properties: + updateId: + description: |- + Assigned by the server. Useful for correlating logs. + Must be a valid LedgerString (as described in ``value.proto``). + Required + type: string + commandId: + description: |- + The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + workflowId: + description: |- + The workflow ID used in command submission. Only set if the ``workflow_id`` for the command was set. + Must be a valid LedgerString (as described in ``value.proto``). + Optional + type: string + effectiveAt: + description: |- + Ledger effective time. + Required + type: string + offset: + description: |- + The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + Required, it is a valid absolute offset (positive integer). + type: integer + format: int64 + eventsById: + $ref: '#/components/schemas/Map_Int_TreeEvent' + description: |- + Changes to the ledger that were caused by this transaction. Nodes of the transaction tree. + Each key must be a valid node ID (non-negative integer). + Required + synchronizerId: + description: |- + A valid synchronizer id. + Identifies the synchronizer that synchronized the transaction. + Required + type: string + traceContext: + $ref: '#/components/schemas/TraceContext' + description: |- + Optional; ledger API trace context + + The trace context transported in this message corresponds to the trace context supplied + by the client application in a HTTP2 header of the original command submission. + We typically use a header to transfer this type of information. Here we use message + body, because it is used in gRPC streams which do not support per message headers. + This field will be populated with the trace context contained in the original submission. + If that was not provided, a unique ledger-api-server generated trace context will be used + instead. + recordTime: + description: |- + The time at which the transaction was recorded. The record time refers to the synchronizer + which synchronized the transaction. + Required + type: string + JsUnassignedEvent: + title: JsUnassignedEvent + description: Records that a contract has been unassigned, and it becomes unusable + on the source synchronizer + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/UnassignedEvent' + Kind: + title: Kind + description: Required + oneOf: + - type: object + required: + - CanActAs + properties: + CanActAs: + $ref: '#/components/schemas/CanActAs' + - type: object + required: + - CanExecuteAs + properties: + CanExecuteAs: + $ref: '#/components/schemas/CanExecuteAs' + - type: object + required: + - CanExecuteAsAnyParty + properties: + CanExecuteAsAnyParty: + $ref: '#/components/schemas/CanExecuteAsAnyParty' + - type: object + required: + - CanReadAs + properties: + CanReadAs: + $ref: '#/components/schemas/CanReadAs' + - type: object + required: + - CanReadAsAnyParty + properties: + CanReadAsAnyParty: + $ref: '#/components/schemas/CanReadAsAnyParty' + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty8' + - type: object + required: + - IdentityProviderAdmin + properties: + IdentityProviderAdmin: + $ref: '#/components/schemas/IdentityProviderAdmin' + - type: object + required: + - ParticipantAdmin + properties: + ParticipantAdmin: + $ref: '#/components/schemas/ParticipantAdmin' + ListIdentityProviderConfigsResponse: + title: ListIdentityProviderConfigsResponse + type: object + required: + - identityProviderConfigs + properties: + identityProviderConfigs: + description: |- + The list of identity provider configs + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/IdentityProviderConfig' + ListKnownPartiesResponse: + title: ListKnownPartiesResponse + type: object + required: + - partyDetails + properties: + partyDetails: + description: |- + The details of all Daml parties known by the participant. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/PartyDetails' + nextPageToken: + description: |- + Pagination token to retrieve the next page. + Empty, if there are no further results. + + Optional + type: string + ListPackagesResponse: + title: ListPackagesResponse + type: object + required: + - packageIds + properties: + packageIds: + description: |- + The IDs of all Daml-LF packages supported by the server. + Each element must be a valid PackageIdString (as described in ``value.proto``). + + Required: must be non-empty + type: array + items: + type: string + ListUserRightsResponse: + title: ListUserRightsResponse + type: object + properties: + rights: + description: |- + All rights of the user. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Right' + ListUsersResponse: + title: ListUsersResponse + type: object + properties: + users: + description: |- + A subset of users of the participant node that fit into this page. + Can be empty if no more users + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/User' + nextPageToken: + description: |- + Pagination token to retrieve the next page. + Empty, if there are no further results. + + Optional + type: string + ListVettedPackagesRequest: + title: ListVettedPackagesRequest + type: object + properties: + packageMetadataFilter: + $ref: '#/components/schemas/PackageMetadataFilter' + description: |- + The package metadata filter the returned vetted packages set must satisfy. + + Optional + topologyStateFilter: + $ref: '#/components/schemas/TopologyStateFilter' + description: |- + The topology filter the returned vetted packages set must satisfy. + + Optional + pageToken: + description: |- + Pagination token to determine the specific page to fetch. Using the token + guarantees that ``VettedPackages`` on a subsequent page are all greater + (``VettedPackages`` are sorted by synchronizer ID then participant ID) than + the last ``VettedPackages`` on a previous page. + + The server does not store intermediate results between calls chained by a + series of page tokens. As a consequence, if new vetted packages are being + added and a page is requested twice using the same token, more packages can + be returned on the second call. + + Leave unspecified (i.e. as empty string) to fetch the first page. + + Optional + type: string + pageSize: + description: |- + Maximum number of ``VettedPackages`` results to return in a single page. + + If the page_size is unspecified (i.e. left as 0), the server will decide + the number of results to be returned. + + If the page_size exceeds the maximum supported by the server, an + error will be returned. + + To obtain the server's maximum consult the PackageService descriptor + available in the VersionService. + + Optional + type: integer + format: int32 + ListVettedPackagesResponse: + title: ListVettedPackagesResponse + type: object + properties: + vettedPackages: + description: |- + All ``VettedPackages`` that contain at least one ``VettedPackage`` matching + both a ``PackageMetadataFilter`` and a ``TopologyStateFilter``. + Sorted by synchronizer_id then participant_id. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/VettedPackages' + nextPageToken: + description: |- + Pagination token to retrieve the next page. + Empty string if there are no further results. + + Optional + type: string + Map_Filters: + title: Map_Filters + type: object + additionalProperties: + $ref: '#/components/schemas/Filters' + Map_Int_Field: + title: Map_Int_Field + type: object + additionalProperties: + $ref: '#/components/schemas/Field' + Map_Int_TreeEvent: + title: Map_Int_TreeEvent + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + Map_String: + title: Map_String + type: object + additionalProperties: + type: string + MinLedgerTime: + title: MinLedgerTime + type: object + properties: + time: + $ref: '#/components/schemas/Time' + MinLedgerTimeAbs: + title: MinLedgerTimeAbs + type: object + required: + - value + properties: + value: + type: string + MinLedgerTimeRel: + title: MinLedgerTimeRel + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Duration' + NoPrior: + title: NoPrior + type: object + ObjectMeta: + title: ObjectMeta + description: |- + Represents metadata corresponding to a participant resource (e.g. a participant user or participant local information about a party). + + Based on ``ObjectMeta`` meta used in Kubernetes API. + See https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/generated.proto#L640 + type: object + properties: + resourceVersion: + description: |- + An opaque, non-empty value, populated by a participant server which represents the internal version of the resource + this ``ObjectMeta`` message is attached to. The participant server will change it to a unique value each time the corresponding resource is updated. + You must not rely on the format of resource version. The participant server might change it without notice. + You can obtain the newest resource version value by issuing a read request. + You may use it for concurrent change detection by passing it back unmodified in an update request. + The participant server will then compare the passed value with the value maintained by the system to determine + if any other updates took place since you had read the resource version. + Upon a successful update you are guaranteed that no other update took place during your read-modify-write sequence. + However, if another update took place during your read-modify-write sequence then your update will fail with an appropriate error. + Concurrent change control is optional. It will be applied only if you include a resource version in an update request. + When creating a new instance of a resource you must leave the resource version empty. + Its value will be populated by the participant server upon successful resource creation. + + Optional + type: string + annotations: + $ref: '#/components/schemas/Map_String' + description: |- + A set of modifiable key-value pairs that can be used to represent arbitrary, client-specific metadata. + Constraints: + + 1. The total size over all keys and values cannot exceed 256kb in UTF-8 encoding. + 2. Keys are composed of an optional prefix segment and a required name segment such that: + + - key prefix, when present, must be a valid DNS subdomain with at most 253 characters, followed by a '/' (forward slash) character, + - name segment must have at most 63 characters that are either alphanumeric ([a-z0-9A-Z]), or a '.' (dot), '-' (dash) or '_' (underscore); + and it must start and end with an alphanumeric character. + + 3. Values can be any non-empty strings. + + Keys with empty prefix are reserved for end-users. + Properties set by external tools or internally by the participant server must use non-empty key prefixes. + Duplicate keys are disallowed by the semantics of the protobuf3 maps. + See: https://developers.google.com/protocol-buffers/docs/proto3#maps + Annotations may be a part of a modifiable resource. + Use the resource's update RPC to update its annotations. + In order to add a new annotation or update an existing one using an update RPC, provide the desired annotation in the update request. + In order to remove an annotation using an update RPC, provide the target annotation's key but set its value to the empty string in the update request. + Modifiable + + Optional: can be empty + OffsetCheckpoint: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/OffsetCheckpoint1' + OffsetCheckpoint1: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - offset + properties: + offset: + description: |- + The participant's offset, the details of the offset field are described in ``community/ledger-api/README.md``. + Must be a valid absolute offset (positive integer). + + Required + type: integer + format: int64 + synchronizerTimes: + description: |- + The times associated with each synchronizer at this offset. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/SynchronizerTime' + OffsetCheckpoint2: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/OffsetCheckpoint1' + OffsetCheckpoint3: + title: OffsetCheckpoint + description: |- + OffsetCheckpoints may be used to: + + - detect time out of commands. + - provide an offset which can be used to restart consumption. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/OffsetCheckpoint1' + OffsetCheckpointFeature: + title: OffsetCheckpointFeature + type: object + required: + - maxOffsetCheckpointEmissionDelay + properties: + maxOffsetCheckpointEmissionDelay: + $ref: '#/components/schemas/Duration' + description: |- + The maximum delay to emmit a new OffsetCheckpoint if it exists + + Required + Operation: + title: Operation + description: Required + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty5' + - type: object + required: + - Unvet + properties: + Unvet: + $ref: '#/components/schemas/Unvet' + - type: object + required: + - Vet + properties: + Vet: + $ref: '#/components/schemas/Vet' + PackageFeature: + title: PackageFeature + type: object + required: + - maxVettedPackagesPageSize + properties: + maxVettedPackagesPageSize: + description: |- + The maximum number of vetted packages the server can return in a single + response (page) when listing them. + + Required + type: integer + format: int32 + PackageMetadataFilter: + title: PackageMetadataFilter + description: |- + Filter the VettedPackages by package metadata. + + A PackageMetadataFilter without package_ids and without package_name_prefixes + matches any vetted package. + + Non-empty fields specify candidate values of which at least one must match. + If both fields are set, then a candidate is returned if it matches one of the fields. + type: object + properties: + packageIds: + description: |- + If this list is non-empty, any vetted package with a package ID in this + list will match the filter. + + Optional: can be empty + type: array + items: + type: string + packageNamePrefixes: + description: |- + If this list is non-empty, any vetted package with a name matching at least + one prefix in this list will match the filter. + + Optional: can be empty + type: array + items: + type: string + PackagePreference: + title: PackagePreference + type: object + required: + - synchronizerId + - packageReference + properties: + packageReference: + $ref: '#/components/schemas/PackageReference' + description: |- + The package reference of the preferred package. + + Required + synchronizerId: + description: |- + The synchronizer for which the preferred package was computed. + If the synchronizer_id was specified in the request, then it matches the request synchronizer_id. + + Required + type: string + PackageReference: + title: PackageReference + type: object + required: + - packageId + - packageName + - packageVersion + properties: + packageId: + description: Required + type: string + packageName: + description: Required + type: string + packageVersion: + description: Required + type: string + PackageVettingRequirement: + title: PackageVettingRequirement + description: Defines a package-name for which the commonly vetted package with + the highest version must be found. + type: object + required: + - packageName + - parties + properties: + parties: + description: |- + The parties whose participants' vetting state should be considered when resolving the preferred package. + + Required: must be non-empty + type: array + items: + type: string + packageName: + description: |- + The package-name for which the preferred package should be resolved. + + Required + type: string + ParticipantAdmin: + title: ParticipantAdmin + description: The right to administer the participant node. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAdmin1' + ParticipantAdmin1: + title: ParticipantAdmin + description: The right to administer the participant node. + type: object + ParticipantAuthorizationAdded: + title: ParticipantAuthorizationAdded + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationAdded1' + ParticipantAuthorizationAdded1: + title: ParticipantAuthorizationAdded + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationChanged: + title: ParticipantAuthorizationChanged + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationChanged1' + ParticipantAuthorizationChanged1: + title: ParticipantAuthorizationChanged + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationOnboarding: + title: ParticipantAuthorizationOnboarding + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationOnboarding1' + ParticipantAuthorizationOnboarding1: + title: ParticipantAuthorizationOnboarding + type: object + required: + - partyId + - participantId + - participantPermission + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + participantPermission: + description: Required + type: string + enum: + - PARTICIPANT_PERMISSION_UNSPECIFIED + - PARTICIPANT_PERMISSION_SUBMISSION + - PARTICIPANT_PERMISSION_CONFIRMATION + - PARTICIPANT_PERMISSION_OBSERVATION + ParticipantAuthorizationRevoked: + title: ParticipantAuthorizationRevoked + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked1' + ParticipantAuthorizationRevoked1: + title: ParticipantAuthorizationRevoked + type: object + required: + - partyId + - participantId + properties: + partyId: + description: Required + type: string + participantId: + description: Required + type: string + ParticipantAuthorizationTopologyFormat: + title: ParticipantAuthorizationTopologyFormat + description: A format specifying which participant authorization topology transactions + to include and how to render them. + type: object + properties: + parties: + description: |- + List of parties for which the topology transactions should be sent. + Empty means: for all parties. + + Optional: can be empty + type: array + items: + type: string + PartyDetails: + title: PartyDetails + type: object + required: + - party + properties: + party: + description: |- + The stable unique identifier of a Daml party. + Must be a valid PartyIdString (as described in ``value.proto``). + + Required + type: string + isLocal: + description: |- + true if party is hosted by the participant and the party shares the same identity provider as the user issuing the request. + + Optional + type: boolean + localMetadata: + $ref: '#/components/schemas/ObjectMeta' + description: |- + Participant-local metadata of this party. + Modifiable + + Optional + identityProviderId: + description: |- + The id of the ``Identity Provider`` + Optional, if not set, there could be 3 options: + + 1. the party is managed by the default identity provider. + 2. party is not hosted by the participant. + 3. party is hosted by the participant, but is outside of the user's identity provider. + + Optional + type: string + PartyManagementFeature: + title: PartyManagementFeature + type: object + required: + - maxPartiesPageSize + properties: + maxPartiesPageSize: + description: |- + The maximum number of parties the server can return in a single response (page). + + Required + type: integer + format: int32 + PartySignatures: + title: PartySignatures + description: Additional signatures provided by the submitting parties + type: object + required: + - signatures + properties: + signatures: + description: |- + Additional signatures provided by all individual parties + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/SinglePartySignatures' + PrefetchContractKey: + title: PrefetchContractKey + description: Preload contracts + type: object + required: + - templateId + - contractKey + properties: + templateId: + description: |- + The template of contract the client wants to prefetch. + Both package-name and package-id reference identifier formats for the template-id are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + contractKey: + description: |- + The key of the contract the client wants to prefetch. + + Required + limit: + description: |- + The number of contracts to prefetch for this key, if available. + This is in addition to disclosed contracts. + - for backward compatibility reason, absence is interpreted as 1 + - 0 is forbidden + - capped at 2^31 - 1. The system may impose further limits. + + Optional + type: integer + format: int32 + Prior: + title: Prior + type: object + required: + - value + properties: + value: + type: integer + format: int32 + PriorTopologySerial: + title: PriorTopologySerial + description: |- + The serial of last ``VettedPackages`` topology transaction on a given + participant and synchronizer. + type: object + properties: + serial: + $ref: '#/components/schemas/Serial' + ProtoAny: + title: ProtoAny + type: object + required: + - typeUrl + - value + - unknownFields + properties: + typeUrl: + type: string + value: + type: string + unknownFields: + $ref: '#/components/schemas/UnknownFieldSet' + valueDecoded: + type: string + Reassignment: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + Reassignment1: + title: Reassignment + description: Complete view of an on-ledger reassignment. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsReassignment' + ReassignmentCommand: + title: ReassignmentCommand + type: object + properties: + command: + $ref: '#/components/schemas/Command1' + ReassignmentCommands: + title: ReassignmentCommands + type: object + required: + - commandId + - submitter + - commands + properties: + workflowId: + description: |- + Identifier of the on-ledger workflow that this command is a part of. + Must be a valid LedgerString (as described in ``value.proto``). + + Optional + type: string + userId: + description: |- + Uniquely identifies the participant user that issued the command. + Must be a valid UserIdString (as described in ``value.proto``). + Required unless authentication is used with a user token. + In that case, the token's user-id will be used for the request's user_id. + + Optional + type: string + commandId: + description: |- + Uniquely identifies the command. + The triple (user_id, submitter, command_id) constitutes the change ID for the intended ledger change. + The change ID can be used for matching the intended ledger changes with all their completions. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + submitter: + description: |- + Party on whose behalf the command should be executed. + If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + to act on behalf of the given party. + Must be a valid PartyIdString (as described in ``value.proto``). + + Required + type: string + submissionId: + description: |- + A unique identifier to distinguish completions for different submissions with the same change ID. + Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + with the same change ID. + Must be a valid LedgerString (as described in ``value.proto``). + + If omitted, the participant or the committer may set a value of their choice. + + Optional + type: string + commands: + description: |- + Individual elements of this reassignment. Must be non-empty. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/ReassignmentCommand' + RevokeUserRightsRequest: + title: RevokeUserRightsRequest + description: |- + Remove the rights from the set of rights granted to the user. + + Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)`` + type: object + required: + - userId + properties: + userId: + description: |- + The user from whom to revoke rights. + + Required + type: string + rights: + description: |- + The rights to revoke. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Right' + identityProviderId: + description: |- + The id of the ``Identity Provider`` + If not set, assume the user is managed by the default identity provider. + + Optional + type: string + RevokeUserRightsResponse: + title: RevokeUserRightsResponse + type: object + properties: + newlyRevokedRights: + description: |- + The rights that were actually revoked by the request. + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Right' + Right: + title: Right + description: A right granted to a user. + type: object + properties: + kind: + $ref: '#/components/schemas/Kind' + Serial: + title: Serial + description: Optional + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty6' + - type: object + required: + - NoPrior + properties: + NoPrior: + $ref: '#/components/schemas/NoPrior' + - type: object + required: + - Prior + properties: + Prior: + $ref: '#/components/schemas/Prior' + Signature: + title: Signature + type: object + required: + - format + - signature + - signedBy + - signingAlgorithmSpec + properties: + format: + description: Required + type: string + signature: + description: 'Required: must be non-empty' + type: string + signedBy: + description: |- + The fingerprint/id of the keypair used to create this signature and needed to verify. + + Required + type: string + signingAlgorithmSpec: + description: |- + The signing algorithm specification used to produce this signature + + Required + type: string + SignedTransaction: + title: SignedTransaction + type: object + required: + - transaction + properties: + transaction: + description: |- + The serialized TopologyTransaction + + Required: must be non-empty + type: string + signatures: + description: |- + Additional signatures for this transaction specifically + Use for transactions that require additional signatures beyond the namespace key signatures + e.g: PartyToParticipant must be signed by all registered keys + + Optional: can be empty + type: array + items: + $ref: '#/components/schemas/Signature' + SigningPublicKey: + title: SigningPublicKey + type: object + required: + - format + - keyData + - keySpec + properties: + format: + description: |- + The serialization format of the public key + + Required + example: CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO + type: string + keyData: + description: |- + Serialized public key in the format specified above + + Required: must be non-empty + type: string + keySpec: + description: |- + The key specification + + Required + example: SIGNING_KEY_SPEC_EC_CURVE25519 + type: string + SinglePartySignatures: + title: SinglePartySignatures + description: Signatures provided by a single party + type: object + required: + - party + - signatures + properties: + party: + description: |- + Submitting party + + Required + type: string + signatures: + description: |- + Signatures + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/Signature' + SubmitAndWaitForReassignmentRequest: + title: SubmitAndWaitForReassignmentRequest + description: This reassignment is executed as a single atomic update. + type: object + required: + - reassignmentCommands + properties: + reassignmentCommands: + $ref: '#/components/schemas/ReassignmentCommands' + description: |- + The reassignment commands to be submitted. + + Required + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: |- + If no event_format provided, the result will contain no events. + The events in the result, will take shape TRANSACTION_SHAPE_ACS_DELTA. + + Optional + SubmitAndWaitResponse: + title: SubmitAndWaitResponse + type: object + required: + - updateId + - completionOffset + properties: + updateId: + description: |- + The id of the transaction that resulted from the submitted command. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + completionOffset: + description: |- + The details of the offset field are described in ``community/ledger-api/README.md``. + + Required + type: integer + format: int64 + SubmitReassignmentRequest: + title: SubmitReassignmentRequest + type: object + required: + - reassignmentCommands + properties: + reassignmentCommands: + $ref: '#/components/schemas/ReassignmentCommands' + description: |- + The reassignment command to be submitted. + + Required + SubmitReassignmentResponse: + title: SubmitReassignmentResponse + type: object + SubmitResponse: + title: SubmitResponse + type: object + SynchronizerTime: + title: SynchronizerTime + type: object + required: + - synchronizerId + - recordTime + properties: + synchronizerId: + description: |- + The id of the synchronizer. + + Required + type: string + recordTime: + description: |- + All commands with a maximum record time below this value MUST be considered lost if their completion has not arrived before this checkpoint. + + Required + type: string + TemplateFilter: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/TemplateFilter1' + TemplateFilter1: + title: TemplateFilter + description: This filter matches contracts of a specific template. + type: object + required: + - templateId + properties: + templateId: + description: |- + A template for which the payload should be included in the response. + The ``template_id`` needs to be valid: corresponding template should be defined in + one of the available packages at the time of the query. + Both package-name and package-id reference formats for the identifier are supported. + Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + + Required + type: string + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract event payload in your API client + for submitting it as a disclosed contract with future commands. + + Optional + type: boolean + Time: + title: Time + description: Required + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty9' + - type: object + required: + - MinLedgerTimeAbs + properties: + MinLedgerTimeAbs: + $ref: '#/components/schemas/MinLedgerTimeAbs' + - type: object + required: + - MinLedgerTimeRel + properties: + MinLedgerTimeRel: + $ref: '#/components/schemas/MinLedgerTimeRel' + TopologyEvent: + title: TopologyEvent + type: object + properties: + event: + $ref: '#/components/schemas/TopologyEventEvent' + TopologyEventEvent: + title: TopologyEventEvent + oneOf: + - type: object + required: + - Empty + properties: + Empty: + $ref: '#/components/schemas/Empty7' + - type: object + required: + - ParticipantAuthorizationAdded + properties: + ParticipantAuthorizationAdded: + $ref: '#/components/schemas/ParticipantAuthorizationAdded' + - type: object + required: + - ParticipantAuthorizationChanged + properties: + ParticipantAuthorizationChanged: + $ref: '#/components/schemas/ParticipantAuthorizationChanged' + - type: object + required: + - ParticipantAuthorizationOnboarding + properties: + ParticipantAuthorizationOnboarding: + $ref: '#/components/schemas/ParticipantAuthorizationOnboarding' + - type: object + required: + - ParticipantAuthorizationRevoked + properties: + ParticipantAuthorizationRevoked: + $ref: '#/components/schemas/ParticipantAuthorizationRevoked' + TopologyFormat: + title: TopologyFormat + description: A format specifying which topology transactions to include and + how to render them. + type: object + properties: + includeParticipantAuthorizationEvents: + $ref: '#/components/schemas/ParticipantAuthorizationTopologyFormat' + description: |- + Include participant authorization topology events in streams. + If unset, no participant authorization topology events are emitted in the stream. + + Optional + TopologyStateFilter: + title: TopologyStateFilter + description: |- + Filter the vetted packages by the participant and synchronizer that they are + hosted on. + + Empty fields are ignored, such that a ``TopologyStateFilter`` without + participant_ids and without synchronizer_ids matches a vetted package hosted + on any participant and synchronizer. + + Non-empty fields specify candidate values of which at least one must match. + If both fields are set then at least one candidate value must match from each + field. + type: object + properties: + participantIds: + description: |- + If this list is non-empty, only vetted packages hosted on participants + listed in this field match the filter. + Query the current Ledger API's participant's ID via the public + ``GetParticipantId`` command in ``PartyManagementService``. + + Optional: can be empty + type: array + items: + type: string + synchronizerIds: + description: |- + If this list is non-empty, only vetted packages from the topology state of + the synchronizers in this list match the filter. + + Optional: can be empty + type: array + items: + type: string + TopologyTransaction: + title: TopologyTransaction + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTopologyTransaction' + TraceContext: + title: TraceContext + type: object + properties: + traceparent: + description: |- + https://www.w3.org/TR/trace-context/ + + Optional + type: string + tracestate: + description: Optional + type: string + Transaction: + title: Transaction + description: Filtered view of an on-ledger transaction's create and archive + events. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTransaction' + TransactionFilter: + title: TransactionFilter + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Used both for filtering create and archive events as well as for filtering transaction trees. + type: object + properties: + filtersByParty: + $ref: '#/components/schemas/Map_Filters' + description: |- + Each key must be a valid PartyIdString (as described in ``value.proto``). + The interpretation of the filter depends on the transaction-shape being filtered: + + 1. For **transaction trees** (used in GetUpdateTreesResponse for backwards compatibility) all party keys used as + wildcard filters, and all subtrees whose root has one of the listed parties as an informee are returned. + If there are ``CumulativeFilter``s, those will control returned ``CreatedEvent`` fields where applicable, but will + not be used for template/interface filtering. + 2. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. + 3. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + filtersForAnyParty: + $ref: '#/components/schemas/Filters' + description: |- + Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + with the per-party filter as described above. + TransactionFormat: + title: TransactionFormat + description: |- + A format that specifies what events to include in Daml transactions + and what data to compute and include for them. + type: object + required: + - transactionShape + - eventFormat + properties: + eventFormat: + $ref: '#/components/schemas/EventFormat' + description: Required + transactionShape: + description: |- + What transaction shape to use for interpreting the filters of the event format. + + Required + type: string + enum: + - TRANSACTION_SHAPE_UNSPECIFIED + - TRANSACTION_SHAPE_ACS_DELTA + - TRANSACTION_SHAPE_LEDGER_EFFECTS + TransactionTree: + title: TransactionTree + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Complete view of an on-ledger transaction. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/JsTransactionTree' + TreeEvent: + title: TreeEvent + description: |- + Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + Each tree event message type below contains a ``witness_parties`` field which + indicates the subset of the requested parties that can see the event + in question. + + Note that transaction trees might contain events with + _no_ witness parties, which were included simply because they were + children of events which have witnesses. + oneOf: + - type: object + required: + - CreatedTreeEvent + properties: + CreatedTreeEvent: + $ref: '#/components/schemas/CreatedTreeEvent' + - type: object + required: + - ExercisedTreeEvent + properties: + ExercisedTreeEvent: + $ref: '#/components/schemas/ExercisedTreeEvent' + Tuple2_String_String: + title: Tuple2_String_String + type: array + maxItems: 2 + minItems: 2 + items: + type: string + UnassignCommand: + title: UnassignCommand + description: Unassign a contract + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/UnassignCommand1' + UnassignCommand1: + title: UnassignCommand + description: Unassign a contract + type: object + required: + - contractId + - source + - target + properties: + contractId: + description: |- + The ID of the contract the client wants to unassign. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + + Required + type: string + UnassignedEvent: + title: UnassignedEvent + description: Records that a contract has been unassigned, and it becomes unusable + on the source synchronizer + type: object + required: + - reassignmentId + - contractId + - source + - target + - reassignmentCounter + - packageName + - offset + - nodeId + - templateId + - witnessParties + properties: + reassignmentId: + description: |- + The ID of the unassignment. This needs to be used as an input for a assign ReassignmentCommand. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + contractId: + description: |- + The ID of the reassigned contract. + Must be a valid LedgerString (as described in ``value.proto``). + + Required + type: string + templateId: + description: |- + The template of the reassigned contract. + The identifier uses the package-id reference format. + + Required + type: string + source: + description: |- + The ID of the source synchronizer + Must be a valid synchronizer id + + Required + type: string + target: + description: |- + The ID of the target synchronizer + Must be a valid synchronizer id + + Required + type: string + submitter: + description: |- + Party on whose behalf the unassign command was executed. + Empty if the unassignment happened offline via the repair service. + Must be a valid PartyIdString (as described in ``value.proto``). + + Optional + type: string + reassignmentCounter: + description: |- + Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + equals zero. + + Required + type: integer + format: int64 + assignmentExclusivity: + description: |- + Assignment exclusivity + Before this time (measured on the target synchronizer), only the submitter of the unassignment can initiate the assignment + Defined for reassigning participants. + + Optional + type: string + witnessParties: + description: |- + The parties that are notified of this event. + + Required: must be non-empty + type: array + items: + type: string + packageName: + description: |- + The package name of the contract. + + Required + type: string + offset: + description: |- + The offset of origin. + Offsets are managed by the participant nodes. + Reassignments can thus NOT be assumed to have the same offsets on different participant nodes. + Must be a valid absolute offset (positive integer) + + Required + type: integer + format: int64 + nodeId: + description: |- + The position of this event in the originating reassignment. + Node IDs are not necessarily equal across participants, + as these may see different projections/parts of reassignments. + Must be valid node ID (non-negative integer) + + Required + type: integer + format: int32 + UnknownFieldSet: + title: UnknownFieldSet + type: object + required: + - fields + properties: + fields: + $ref: '#/components/schemas/Map_Int_Field' + Unvet: + title: Unvet + description: Remove packages from the set of vetted packages + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Unvet1' + Unvet1: + title: Unvet + description: Remove packages from the set of vetted packages + type: object + required: + - packages + properties: + packages: + description: |- + Packages to be unvetted. + + If a reference in this list matches multiple packages, they are all + unvetted. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/VettedPackagesRef' + Update: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint2' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment' + - type: object + required: + - TopologyTransaction + properties: + TopologyTransaction: + $ref: '#/components/schemas/TopologyTransaction' + - type: object + required: + - Transaction + properties: + Transaction: + $ref: '#/components/schemas/Transaction' + Update1: + title: Update + oneOf: + - type: object + required: + - OffsetCheckpoint + properties: + OffsetCheckpoint: + $ref: '#/components/schemas/OffsetCheckpoint3' + - type: object + required: + - Reassignment + properties: + Reassignment: + $ref: '#/components/schemas/Reassignment1' + - type: object + required: + - TransactionTree + properties: + TransactionTree: + $ref: '#/components/schemas/TransactionTree' + UpdateFormat: + title: UpdateFormat + description: A format specifying what updates to include and how to render them. + type: object + properties: + includeTransactions: + $ref: '#/components/schemas/TransactionFormat' + description: |- + Include Daml transactions in streams. + If unset, no transactions are emitted in the stream. + + Optional + includeReassignments: + $ref: '#/components/schemas/EventFormat' + description: |- + Include (un)assignments in the stream. + The events in the result take the shape TRANSACTION_SHAPE_ACS_DELTA. + If unset, no (un)assignments are emitted in the stream. + + Optional + includeTopologyEvents: + $ref: '#/components/schemas/TopologyFormat' + description: |- + Include topology events in streams. + If unset no topology events are emitted in the stream. + + Optional + UpdateIdentityProviderConfigRequest: + title: UpdateIdentityProviderConfigRequest + type: object + required: + - identityProviderConfig + - updateMask + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: |- + The identity provider config to update. + Modifiable + + Required + updateMask: + $ref: '#/components/schemas/FieldMask' + description: |- + An update mask specifies how and which properties of the ``IdentityProviderConfig`` message are to be updated. + An update mask consists of a set of update paths. + A valid update path points to a field or a subfield relative to the ``IdentityProviderConfig`` message. + A valid update mask must: + + 1. contain at least one update path, + 2. contain only valid update paths. + + Fields that can be updated are marked as ``Modifiable``. + For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + + Required + UpdateIdentityProviderConfigResponse: + title: UpdateIdentityProviderConfigResponse + type: object + required: + - identityProviderConfig + properties: + identityProviderConfig: + $ref: '#/components/schemas/IdentityProviderConfig' + description: |- + Updated identity provider config + + Required + UpdatePartyDetailsRequest: + title: UpdatePartyDetailsRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(party_details.identity_provider_id)``' + type: object + required: + - partyDetails + - updateMask + properties: + partyDetails: + $ref: '#/components/schemas/PartyDetails' + description: |- + Party to be updated + Modifiable + + Required + updateMask: + $ref: '#/components/schemas/FieldMask' + description: |- + An update mask specifies how and which properties of the ``PartyDetails`` message are to be updated. + An update mask consists of a set of update paths. + A valid update path points to a field or a subfield relative to the ``PartyDetails`` message. + A valid update mask must: + + 1. contain at least one update path, + 2. contain only valid update paths. + + Fields that can be updated are marked as ``Modifiable``. + An update path can also point to non-``Modifiable`` fields such as 'party' and 'local_metadata.resource_version' + because they are used: + + 1. to identify the party details resource subject to the update, + 2. for concurrent change control. + + An update path can also point to non-``Modifiable`` fields such as 'is_local' + as long as the values provided in the update request match the server values. + Examples of update paths: 'local_metadata.annotations', 'local_metadata'. + For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + For similar Ledger API see ``com.daml.ledger.api.v2.admin.UpdateUserRequest``. + + Required + UpdatePartyDetailsResponse: + title: UpdatePartyDetailsResponse + type: object + required: + - partyDetails + properties: + partyDetails: + $ref: '#/components/schemas/PartyDetails' + description: |- + Updated party details + + Required + UpdateUserIdentityProviderIdRequest: + title: UpdateUserIdentityProviderIdRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin)``' + type: object + required: + - userId + properties: + userId: + description: |- + User to update + + Required + type: string + sourceIdentityProviderId: + description: |- + Current identity provider ID of the user + If omitted, the default IDP is assumed + + Optional + type: string + targetIdentityProviderId: + description: |- + Target identity provider ID of the user + If omitted, the default IDP is assumed + + Optional + type: string + UpdateUserIdentityProviderIdResponse: + title: UpdateUserIdentityProviderIdResponse + type: object + UpdateUserRequest: + title: UpdateUserRequest + description: 'Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)``' + type: object + required: + - user + - updateMask + properties: + user: + $ref: '#/components/schemas/User' + description: |- + The user to update. + Modifiable + + Required + updateMask: + $ref: '#/components/schemas/FieldMask' + description: |- + An update mask specifies how and which properties of the ``User`` message are to be updated. + An update mask consists of a set of update paths. + A valid update path points to a field or a subfield relative to the ``User`` message. + A valid update mask must: + + 1. contain at least one update path, + 2. contain only valid update paths. + + Fields that can be updated are marked as ``Modifiable``. + An update path can also point to a non-``Modifiable`` fields such as 'id' and 'metadata.resource_version' + because they are used: + + 1. to identify the user resource subject to the update, + 2. for concurrent change control. + + Examples of valid update paths: 'primary_party', 'metadata', 'metadata.annotations'. + For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + For similar Ledger API see ``com.daml.ledger.api.v2.admin.UpdatePartyDetailsRequest``. + + Required + UpdateUserResponse: + title: UpdateUserResponse + type: object + required: + - user + properties: + user: + $ref: '#/components/schemas/User' + description: |- + Updated user + + Required + UpdateVettedPackagesRequest: + title: UpdateVettedPackagesRequest + type: object + required: + - changes + properties: + changes: + description: |- + Changes to apply to the current vetting state of the participant on the + specified synchronizer. The changes are applied in order. + Any package not changed will keep their previous vetting state. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/VettedPackagesChange' + dryRun: + description: |- + If dry_run is true, then the changes are only prepared, but not applied. If + a request would trigger an error when run (e.g. TOPOLOGY_DEPENDENCIES_NOT_VETTED), + it will also trigger an error when dry_run. + + Use this flag to preview a change before applying it. + Defaults to false. + + Optional + type: boolean + synchronizerId: + description: |- + If set, the requested changes will take place on the specified + synchronizer. If synchronizer_id is unset and the participant is only + connected to a single synchronizer, that synchronizer will be used by + default. If synchronizer_id is unset and the participant is connected to + multiple synchronizers, the request will error out with + PACKAGE_SERVICE_CANNOT_AUTODETECT_SYNCHRONIZER. + + Optional + type: string + expectedTopologySerial: + $ref: '#/components/schemas/PriorTopologySerial' + description: |- + The serial of the last ``VettedPackages`` topology transaction of this + participant and on this synchronizer. + + Execution of the request fails if this is not correct. Use this to guard + against concurrent changes. + + If left unspecified, no validation is done against the last transaction's + serial. + + Optional + updateVettedPackagesForceFlags: + description: |- + Controls whether potentially unsafe vetting updates are allowed. + + Optional: can be empty + type: array + items: + type: string + enum: + - UPDATE_VETTED_PACKAGES_FORCE_FLAG_UNSPECIFIED + - UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_VET_INCOMPATIBLE_UPGRADES + - UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_UNVETTED_DEPENDENCIES + UpdateVettedPackagesResponse: + title: UpdateVettedPackagesResponse + type: object + required: + - newVettedPackages + properties: + pastVettedPackages: + $ref: '#/components/schemas/VettedPackages' + description: |- + All vetted packages on this participant and synchronizer, before the + specified changes. Empty if no vetting state existed beforehand. + + Not populated if no vetted topology state exists prior to the update. + + Optional + newVettedPackages: + $ref: '#/components/schemas/VettedPackages' + description: |- + All vetted packages on this participant and synchronizer, after the specified changes. + + Required + UploadDarFileResponse: + title: UploadDarFileResponse + description: A message that is received when the upload operation succeeded. + type: object + User: + title: User + description: |2- + Users and rights + ///////////////// + Users are used to dynamically manage the rights given to Daml applications. + They are stored and managed per participant node. + type: object + required: + - id + properties: + id: + description: |- + The user identifier, which must be a non-empty string of at most 128 + characters that are either alphanumeric ASCII characters or one of the symbols "@^$.!`-#+'~_|:()". + + Required + type: string + primaryParty: + description: |- + The primary party as which this user reads and acts by default on the ledger + *provided* it has the corresponding ``CanReadAs(primary_party)`` or + ``CanActAs(primary_party)`` rights. + Ledger API clients SHOULD set this field to a non-empty value for all users to + enable the users to act on the ledger using their own Daml party. + Users for participant administrators MAY have an associated primary party. + Modifiable + + Optional + type: string + isDeactivated: + description: |- + When set, then the user is denied all access to the Ledger API. + Otherwise, the user has access to the Ledger API as per the user's rights. + Modifiable + + Optional + type: boolean + metadata: + $ref: '#/components/schemas/ObjectMeta' + description: |- + The metadata of this user. + Note that the ``metadata.resource_version`` tracks changes to the properties described by the ``User`` message and not the user's rights. + Modifiable + + Optional + identityProviderId: + description: |- + The ID of the identity provider configured by ``Identity Provider Config`` + If not set, assume the user is managed by the default identity provider. + + Optional + type: string + primaryPartyAuthentication: + description: |- + If set to true, the user may authenticate against the Ledger API by signing + a Party JWT using the primary party's signing key. + Modifiable + + Optional + type: boolean + UserManagementFeature: + title: UserManagementFeature + type: object + required: + - supported + - maxRightsPerUser + - maxUsersPageSize + properties: + supported: + description: |- + Whether the Ledger API server provides the user management service. + + Required + type: boolean + maxRightsPerUser: + description: |- + The maximum number of rights that can be assigned to a single user. + Servers MUST support at least 100 rights per user. + A value of 0 means that the server enforces no rights per user limit. + + Required + type: integer + format: int32 + maxUsersPageSize: + description: |- + The maximum number of users the server can return in a single response (page). + Servers MUST support at least a 100 users per page. + A value of 0 means that the server enforces no page size limit. + + Required + type: integer + format: int32 + Vet: + title: Vet + description: |- + Set vetting bounds of a list of packages. Packages that were not previously + vetted have their bounds added, previous vetting bounds are overwritten. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/Vet1' + Vet1: + title: Vet + description: |- + Set vetting bounds of a list of packages. Packages that were not previously + vetted have their bounds added, previous vetting bounds are overwritten. + type: object + required: + - packages + properties: + packages: + description: |- + Packages to be vetted. + + If a reference in this list matches more than one package, the change is + considered ambiguous and the entire update request is rejected. In other + words, every reference must match exactly one package. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/VettedPackagesRef' + newValidFromInclusive: + description: |- + The time from which these packages should be vetted, prior lower bounds + are overwritten. + Optional + type: string + newValidUntilExclusive: + description: |- + The time until which these packages should be vetted, prior upper bounds + are overwritten. + Optional + type: string + VettedPackage: + title: VettedPackage + description: |- + A package that is vetting on a given participant and synchronizer, + modelled after ``VettedPackage`` in `topology.proto `_, + enriched with the package name and version. + type: object + required: + - packageId + properties: + packageId: + description: |- + Package ID of this package + + Required + type: string + validFromInclusive: + description: |- + The time from which this package is vetted. Empty if vetting time has no + lower bound. + + Optional + type: string + validUntilExclusive: + description: |- + The time until which this package is vetted. Empty if vetting time has no + upper bound. + + Optional + type: string + packageName: + description: |- + Name of this package. + Only available if the package has been uploaded to the current participant. + + Optional + type: string + packageVersion: + description: |- + Version of this package. + Only available if the package has been uploaded to the current participant. + + Optional + type: string + VettedPackages: + title: VettedPackages + description: |- + The list of packages vetted on a given participant and synchronizer, modelled + after ``VettedPackages`` in `topology.proto `_. + The list only contains packages that matched a filter in the query that + originated it. + type: object + required: + - participantId + - synchronizerId + - topologySerial + - packages + properties: + packages: + description: |- + Sorted by package_name and package_version where known, and package_id as a + last resort. + + Required: must be non-empty + type: array + items: + $ref: '#/components/schemas/VettedPackage' + participantId: + description: |- + Participant on which these packages are vetted. + + Required + type: string + synchronizerId: + description: |- + Synchronizer on which these packages are vetted. + + Required + type: string + topologySerial: + description: |- + Serial of last ``VettedPackages`` topology transaction of this participant + and on this synchronizer. + + Required + type: integer + format: int32 + VettedPackagesChange: + title: VettedPackagesChange + description: A change to the set of vetted packages. + type: object + properties: + operation: + $ref: '#/components/schemas/Operation' + VettedPackagesRef: + title: VettedPackagesRef + description: |- + A reference to identify one or more packages. + + A reference matches a package if its ``package_id`` matches the package's ID, + its ``package_name`` matches the package's name, and its ``package_version`` + matches the package's version. If an attribute in the reference is left + unspecified (i.e. as an empty string), that attribute is treated as a + wildcard. At a minimum, ``package_id`` or the ``package_name`` must be + specified. + + If a reference does not match any package, the reference is considered + unresolved and the entire update request is rejected. + type: object + properties: + packageId: + description: |- + Package's package id must be the same as this field. + + Optional + type: string + packageName: + description: |- + Package's name must be the same as this field. + + Optional + type: string + packageVersion: + description: |- + Package's version must be the same as this field. + + Optional + type: string + WildcardFilter: + title: WildcardFilter + description: This filter matches all templates. + type: object + required: + - value + properties: + value: + $ref: '#/components/schemas/WildcardFilter1' + WildcardFilter1: + title: WildcardFilter + description: This filter matches all templates. + type: object + properties: + includeCreatedEventBlob: + description: |- + Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + Use this to access the contract create event payload in your API client + for submitting it as a disclosed contract with future commands. + + Optional + type: boolean + securitySchemes: + apiKeyAuth: + type: apiKey + description: Ledger API standard JWT token (websocket) + name: Sec-WebSocket-Protocol + in: header + httpAuth: + type: http + description: Ledger API standard JWT token + scheme: bearer diff --git a/api-specs/splice/0.6.12/README.md b/api-specs/splice/0.6.12/README.md new file mode 100644 index 000000000..9de52437e --- /dev/null +++ b/api-specs/splice/0.6.12/README.md @@ -0,0 +1,5 @@ +# OpenAPI + +These are the OpenAPI specification files for the Splice apps. + +Only the ones with the `external` tag should be considered publicly usable. diff --git a/api-specs/splice/0.6.12/allocation-instruction-v1.yaml b/api-specs/splice/0.6.12/allocation-instruction-v1.yaml new file mode 100644 index 000000000..8250300c0 --- /dev/null +++ b/api-specs/splice/0.6.12/allocation-instruction-v1.yaml @@ -0,0 +1,147 @@ +openapi: 3.0.0 +info: + title: allocation instruction off-ledger API + description: | + Implemented by token registries for using and managing + allocation instructions by wallets. + version: 1.0.0 +paths: + /registry/allocation-instruction/v1/allocation-factory: + post: + operationId: getAllocationFactory + description: | + Get the factory and choice context for creating allocations using the `AllocationFactory_Allocate` choice. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetFactoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FactoryWithChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetFactoryRequest: + type: object + properties: + choiceArguments: + type: object + description: | + The arguments that are intended to be passed to the choice provided by the factory. + To avoid repeating the Daml type definitions, they are specified as JSON objects. + However the concrete format is given by how the choice arguments are encoded using the Daml JSON API + (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). + + The choice arguments are provided so that the registry can also provide choice-argument + specific contracts, e.g., the configuration for a specific instrument-id. + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + required: + - choiceArguments + FactoryWithChoiceContext: + description: | + A factory contract together with the choice context required to exercise the choice + provided by the factory. Typically used to implement the generic initiation of on-ledger workflows + via a Daml interface. + + Clients SHOULD avoid reusing the same `FactoryWithChoiceContext` for exercising multiple choices, + as the choice context MAY be specific to the choice being exercised. + type: object + properties: + factoryId: + description: The contract ID of the contract implementing the factory interface. + type: string + choiceContext: + $ref: '#/components/schemas/ChoiceContext' + required: + - factoryId + - choiceContext + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference date that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + type: string + contractId: + type: string + createdEventBlob: + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.6.12/allocation-instruction-v2.yaml b/api-specs/splice/0.6.12/allocation-instruction-v2.yaml new file mode 100644 index 000000000..a47cabb6d --- /dev/null +++ b/api-specs/splice/0.6.12/allocation-instruction-v2.yaml @@ -0,0 +1,255 @@ +openapi: 3.0.0 +info: + title: V2 allocation instruction off-ledger API + description: | + Implemented by token registries to support wallets that use and manage + allocation instructions. + version: 1.0.0 +paths: + /registry/allocation-instruction/v2/allocation-factory: + post: + operationId: getAllocationFactory + description: | + Get the factory and choice context for creating allocations using the `AllocationFactory_Allocate` choice. + + Registries MAY limit the size of the allocations that they support. + + To ensure wide compatibility with apps, registries MUST support creating + allocations that involve at most 25 transfer legs. In a worst case scenario + this means supporting the creation of an allocation with: + + - 25 transfer legs + - 25 distinct instrument ids + - 50 distinct accounts + - 100 distinct parties + + Registries MAY support larger allocations. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetFactoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FactoryWithChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + /registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/accept: + post: + operationId: getAllocationInstructionAcceptContext + description: | + Get the choice context to accept an allocation instruction. + parameters: + - name: allocationInstructionId + description: The contract ID of the allocation instruction to accept. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + /registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/withdraw: + post: + operationId: getAllocationInstructionWithdrawContext + description: | + Get the choice context to withdraw an allocation instruction. + parameters: + - name: allocationInstructionId + description: The contract ID of the allocation instruction to withdraw. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetFactoryRequest: + type: object + properties: + choiceArguments: + type: object + description: | + The arguments that are intended to be passed to the choice provided by the factory. + To avoid repeating the Daml type definitions, they are specified as JSON objects. + However the concrete format is given by how the choice arguments are encoded using the Daml JSON API + (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). + + The choice arguments are provided so that the registry can also provide choice-argument + specific contracts, e.g., the configuration for a specific instrument-id. + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + required: + - choiceArguments + GetChoiceContextRequest: + description: | + A request to get the context for executing a choice on a contract. + type: object + properties: + meta: + description: | + Metadata that will be passed to the choice, and should be incorporated + into the choice context. Provided for extensibility. + type: object + additionalProperties: + type: string + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + FactoryWithChoiceContext: + description: | + A factory contract together with the choice context required to exercise the choice + provided by the factory. Typically used to implement the generic initiation of on-ledger workflows + via a Daml interface. + + Clients SHOULD avoid reusing the same `FactoryWithChoiceContext` for exercising multiple choices, + as the choice context MAY be specific to the choice being exercised. + type: object + properties: + factoryId: + description: The contract ID of the contract implementing the factory interface. + type: string + choiceContext: + $ref: '#/components/schemas/ChoiceContext' + required: + - factoryId + - choiceContext + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference data that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + + Asset implementations SHOULD avoid that this value depends on contract-ids passed + in the choice arguments, so that clients can prefetch choice contexts when chaining + multiple token standard actions together in a single Daml transaction. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + description: The fully qualified template identifier of the disclosed contract. + type: string + contractId: + description: The contract ID of the disclosed contract. + type: string + createdEventBlob: + description: | + The serialized created event of the disclosed contract, forwarded unchanged as retrieved + from the JSON Ledger API. + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.6.12/allocation-v1.yaml b/api-specs/splice/0.6.12/allocation-v1.yaml new file mode 100644 index 000000000..263759e71 --- /dev/null +++ b/api-specs/splice/0.6.12/allocation-v1.yaml @@ -0,0 +1,191 @@ +openapi: 3.0.0 +info: + title: allocation off-ledger API + description: | + Implemented by token registries for the purpose of the use and management of + allocations by wallets and apps orchestrating the settlement of asset transfers. + version: 1.1.0 +paths: + /registry/allocations/v1/{allocationId}/choice-contexts/execute-transfer: + post: + operationId: getAllocationTransferContext + description: | + Get the choice context to execute a transfer on an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation whose transfer the caller wants to execute. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/allocations/v1/{allocationId}/choice-contexts/withdraw: + post: + operationId: getAllocationWithdrawContext + description: | + Get the choice context to withdraw an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation to withdraw. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/allocations/v1/{allocationId}/choice-contexts/cancel: + post: + operationId: getAllocationCancelContext + description: | + Get the choice context to cancel an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation to cancel. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetChoiceContextRequest: + description: | + A request to get the context for executing a choice on a contract. + type: object + properties: + meta: + description: | + Metadata that will be passed to the choice, and should be incorporated + into the choice context. Provided for extensibility. + type: object + additionalProperties: + type: string + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference date that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + type: string + contractId: + type: string + createdEventBlob: + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.6.12/allocation-v2.yaml b/api-specs/splice/0.6.12/allocation-v2.yaml new file mode 100644 index 000000000..4956be802 --- /dev/null +++ b/api-specs/splice/0.6.12/allocation-v2.yaml @@ -0,0 +1,257 @@ +openapi: 3.0.0 +info: + title: V2 allocation off-ledger API + description: | + Implemented by token registries to support wallets and apps that use and manage + allocations while orchestrating the settlement of asset transfers. + version: 1.0.0 +paths: + /registry/allocation/v2/settlement-factory: + post: + operationId: getSettlementFactory + description: | + Get the factory and choice context for settling allocations using the + `SettlementFactory_SettleBatch` choice. + + Registries MAY limit the size of the settlement requests that they support. + + To ensure wide compatibility with apps, registries MUST support all + settlement requests that involve at most 25 transfer legs. In a worst + case scenario this means supporting a settlement request involving: + + - 25 transfer legs + - 25 distinct instrument ids + - 50 allocations + - 50 distinct accounts + - 100 distinct parties + + Registries MAY support larger settlement requests. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetFactoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FactoryWithChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + /registry/allocations/v2/{allocationId}/choice-contexts/withdraw: + post: + operationId: getAllocationWithdrawContext + description: | + Get the choice context to withdraw an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation to withdraw. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + /registry/allocations/v2/{allocationId}/choice-contexts/cancel: + post: + operationId: getAllocationCancelContext + description: | + Get the choice context to cancel an allocation. + parameters: + - name: allocationId + description: The contract ID of the allocation to cancel. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetFactoryRequest: + type: object + properties: + choiceArguments: + type: object + description: | + The arguments that are intended to be passed to the choice provided by the factory. + To avoid repeating the Daml type definitions, they are specified as JSON objects. + However the concrete format is given by how the choice arguments are encoded using the Daml JSON API + (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). + + The choice arguments are provided so that the registry can also provide choice-argument + specific contracts, e.g., the configuration for a specific instrument-id. + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + required: + - choiceArguments + FactoryWithChoiceContext: + description: | + A factory contract together with the choice context required to exercise the choice + provided by the factory. Typically used to implement the generic initiation of on-ledger workflows + via a Daml interface. + + Clients SHOULD avoid reusing the same `FactoryWithChoiceContext` for exercising multiple choices, + as the choice context MAY be specific to the choice being exercised. + type: object + properties: + factoryId: + description: The contract ID of the contract implementing the factory interface. + type: string + choiceContext: + $ref: '#/components/schemas/ChoiceContext' + required: + - factoryId + - choiceContext + GetChoiceContextRequest: + description: | + A request to get the context for executing a choice on a contract. + type: object + properties: + meta: + description: | + Metadata that will be passed to the choice, and should be incorporated + into the choice context. Provided for extensibility. + type: object + additionalProperties: + type: string + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference data that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + + Asset implementations SHOULD avoid that this value depends on contract-ids passed + in the choice arguments, so that clients can prefetch choice contexts when chaining + multiple token standard actions together in a single Daml transaction. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + description: The fully qualified template identifier of the disclosed contract. + type: string + contractId: + description: The contract ID of the disclosed contract. + type: string + createdEventBlob: + description: | + The serialized created event of the disclosed contract, forwarded unchanged as retrieved + from the JSON Ledger API. + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.6.12/ans-external.yaml b/api-specs/splice/0.6.12/ans-external.yaml new file mode 100644 index 000000000..0dcaef9be --- /dev/null +++ b/api-specs/splice/0.6.12/ans-external.yaml @@ -0,0 +1,187 @@ +openapi: 3.0.0 +info: + title: ANS API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: ans +paths: + /v0/entry/create: + post: + description: | + Requests the creation of a new ANS entry. + ANS entries need to be paid and renewed via subscription payments. + + Upon requesting the creation of the ANS entry, a subscription request is created. + The user may accept the subscription request via their wallet by offering the initial payment. + Once the subscription request is accepted, the DSO automation burns the payment and creates the ANS entry. + tags: + - ans + x-jvm-package: external.ans + operationId: createAnsEntry + security: + - userAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAnsEntryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAnsEntryResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/entry/all: + get: + description: | + Lists all ANS entries owned by the user. + Expired entries are not included in the response, even if the corresponding contracts are still active on the ledger. + tags: + - ans + x-jvm-package: external.ans + operationId: listAnsEntries + security: + - userAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAnsEntriesResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' +components: + securitySchemes: + userAuth: + description: | + JWT token as described in [spliceAppBearerAuth](../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth). + The subject of the token must be ledger API user of the user affected by the endpoint. + type: http + scheme: bearer + bearerFormat: JWT + schemas: + CreateAnsEntryRequest: + type: object + required: + - name + - url + - description + properties: + name: + type: string + description: | + The name of the ANS entry. + It must end with `.unverified.` where `` is the ANS acronym chosen by the DSO. + url: + type: string + description: | + A valid URL or an empty string. + Use this to link to a website, such as the homepage of an application + provided by the owner of this entry. + Must not be longer than 255 characters. + description: + type: string + description: | + A human readable description of the ANS entry. + May be empty. + Must not be longer than 140 characters. + CreateAnsEntryResponse: + description: | + The response contains the contract IDs of the corresponding subscription request. + The user must accept the subscription request via their wallet to create the ANS entry. + type: object + required: + - name + - url + - description + - entryContextCid + - subscriptionRequestCid + properties: + entryContextCid: + $ref: '#/components/schemas/ContractId' + subscriptionRequestCid: + $ref: '#/components/schemas/ContractId' + name: + type: string + description: | + The name of the ANS entry, as specified in the request. + url: + type: string + description: | + The URL of the ANS entry, as specified in the request. + description: + type: string + description: | + The description of the ANS entry, as specified in the request. + ListAnsEntriesResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/AnsEntryResponse' + AnsEntryResponse: + type: object + required: + - contractId + - name + - amount + - unit + - expiresAt + - paymentInterval + - paymentDuration + properties: + contractId: + $ref: '#/components/schemas/ContractId' + name: + type: string + amount: + type: string + unit: + type: string + expiresAt: + type: string + paymentInterval: + type: string + paymentDuration: + type: string + ContractId: + type: string + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + responses: + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.6.12/common-external.yaml b/api-specs/splice/0.6.12/common-external.yaml new file mode 100644 index 000000000..f3fc6df97 --- /dev/null +++ b/api-specs/splice/0.6.12/common-external.yaml @@ -0,0 +1,223 @@ +openapi: 3.0.0 +info: + title: Common schemas for Splice API definitions + version: 0.0.1 +paths: + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: not implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + ContractId: + type: string + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + securitySchemes: + spliceAppBearerAuth: + description: | + HTTP bearer authentication with a JWT token of the form: + ``` + { + "sub": "ledger-api-user", + "aud": "audience-of-app" + } + ``` + The subject must be the ledger API user requests should be submitted at, e.g., + if you want to operate as the validator operator this is the ledger-api-user configured in your validator config. + + The audience must be the audience specified in the auth section of your app's configuration. + + The token must be signed with the algorithm and configuration specified in the auth section of your app's configuration. + type: http + scheme: bearer + bearerFormat: JWT diff --git a/api-specs/splice/0.6.12/common-internal.yaml b/api-specs/splice/0.6.12/common-internal.yaml new file mode 100644 index 000000000..4a218340b --- /dev/null +++ b/api-specs/splice/0.6.12/common-internal.yaml @@ -0,0 +1,396 @@ +openapi: 3.0.0 +info: + title: Common schemas for Splice API definitions + version: 0.0.1 +paths: {} +components: + schemas: + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + AssignedContract: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + - domain_id + MaybeCachedContract: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + MaybeCachedContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + MaybeCachedContractMap: + type: object + additionalProperties: + $ref: '#/components/schemas/MaybeCachedContract' + MaybeCachedContractWithStateMap: + description: | + Always created with respect to an input set of contract IDs. If an input + contract ID is absent from the keys of this map, that contract should be + considered removed by the caller; if present, `contract` may be empty, + reflecting that the caller should already have the full contract data + for that contract ID. Contracts not present in the input set will have + full contract data. `domain_id` is always up-to-date; if undefined the + contract is currently unassigned to a synchronizer, i.e. "in-flight". + type: object + additionalProperties: + $ref: '#/components/schemas/MaybeCachedContractWithState' + NodeIdentitiesDump: + type: object + required: + - id + - keys + - authorizedStoreSnapshot + properties: + id: + type: string + keys: + type: array + items: + $ref: '#/components/schemas/NodeKey' + authorizedStoreSnapshot: + description: | + base64 encoded string of authorized store snapshot + type: string + version: + type: string + NodeKey: + oneOf: + - $ref: '#/components/schemas/KeyPair' + - $ref: '#/components/schemas/KmsKeyId' + KeyPair: + type: object + required: + - keyPair + properties: + keyPair: + type: string + name: + type: string + KmsKeyId: + type: object + required: + - type + - keyId + properties: + type: + type: string + enum: + - signing + - encryption + keyId: + type: string + name: + type: string + ParticipantUsersData: + type: object + required: + - identityProviders + - users + properties: + identityProviders: + type: array + items: + $ref: '#/components/schemas/ParticipantIdentityProvider' + users: + type: array + items: + $ref: '#/components/schemas/ParticipantUser' + ParticipantIdentityProvider: + type: object + required: + - id + - isDeactivated + - jwksUrl + - issuer + - audience + properties: + id: + type: string + isDeactivated: + type: boolean + default: false + jwksUrl: + type: string + issuer: + type: string + audience: + type: string + ParticipantUser: + type: object + required: + - id + - rights + - isDeactivated + - annotations + properties: + id: + type: string + primaryParty: + type: string + rights: + type: array + items: + $ref: '#/components/schemas/ParticipantUserRight' + isDeactivated: + type: boolean + default: false + annotations: + type: array + items: + $ref: '#/components/schemas/ParticipantUserAnnotation' + identityProviderId: + type: string + default: '' + ParticipantUserRight: + type: object + required: + - kind + properties: + kind: + type: string + enum: + - participantAdmin + - canActAs + - canReadAs + - canExecuteAs + - identityProviderAdmin + - canReadAsAnyParty + - canExecuteAsAnyParty + party: + type: string + ParticipantUserAnnotation: + type: object + required: + - key + - value + properties: + key: + type: string + value: + type: string + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + BatchListVotesByVoteRequestsRequest: + type: object + required: + - vote_request_contract_ids + properties: + vote_request_contract_ids: + description: Contract IDs of Daml template `Splice.DsoRules:VoteRequest`. + type: array + items: + type: string + ListVoteRequestByTrackingCidResponse: + type: object + required: + - vote_requests + properties: + vote_requests: + description: | + Contracts of Daml template `Splice.DsoRules:VoteRequest` that match + `vote_request_contract_ids` in the request. + type: array + items: + $ref: '#/components/schemas/Contract' + LookupDsoRulesVoteRequestResponse: + description: A contract of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_request + properties: + dso_rules_vote_request: + $ref: '#/components/schemas/Contract' + ListDsoRulesVoteRequestsResponse: + description: Contracts of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_requests + properties: + dso_rules_vote_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListAmuletPriceVotesResponse: + description: Contracts of Daml template `Splice.DSO:AmuletPrice:AmuletPriceVote`. + type: object + required: + - amulet_price_votes + properties: + amulet_price_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + ListVoteResultsRequest: + type: object + required: + - limit + properties: + actionName: + type: string + accepted: + type: boolean + requester: + type: string + effectiveFrom: + type: string + effectiveTo: + type: string + limit: + type: integer + pageToken: + type: integer + description: | + Cursor for pagination. When requesting the next page of results, pass the `next_page_token` from the previous response. + Results are ordered by effective date (the accepted vote's effectiveAt, or the result's completedAt otherwise), descending. + ListDsoRulesVoteResultsResponse: + type: object + required: + - dso_rules_vote_results + properties: + dso_rules_vote_results: + type: array + items: + type: object + next_page_token: + type: integer + description: | + Cursor for the next page of results. Pass this as `pageToken` in the request. + If absent or `null`, there are no more pages. + PreviousSvRewardWeightRequest: + type: object + required: + - svParty + properties: + svParty: + type: string + effectiveBefore: + type: string + description: | + Only consider reward weight changes that took effect strictly before this time. + PreviousSvRewardWeightResponse: + type: object + properties: + rewardWeight: + type: string + description: | + The SV's reward weight set by the most recent accepted `UpdateSvRewardWeight` proposal + before `effectiveBefore`, or absent if there is no such proposal. + ListValidatorLicensesResponse: + type: object + required: + - validator_licenses + properties: + validator_licenses: + description: Contracts of Daml template `Splice.ValidatorLicense:ValidatorLicense`. + type: array + items: + $ref: '#/components/schemas/Contract' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + FeatureSupportResponse: + type: object + required: [] + properties: + dummy: + type: boolean + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at diff --git a/api-specs/splice/0.6.12/scan-proxy.yaml b/api-specs/splice/0.6.12/scan-proxy.yaml new file mode 100644 index 000000000..908ab9630 --- /dev/null +++ b/api-specs/splice/0.6.12/scan-proxy.yaml @@ -0,0 +1,855 @@ +openapi: 3.0.0 +info: + title: Validator API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: validator +paths: + /v0/scan-proxy/dso-party-id: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getDsoPartyId + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoPartyIdResponse' + /v0/scan-proxy/dso: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getDsoInfo + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoInfoResponse' + /v0/scan-proxy/featured-apps/{provider_party_id}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupFeaturedAppRight + parameters: + - name: provider_party_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupFeaturedAppRightResponse' + /v0/scan-proxy/open-and-issuing-mining-rounds: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getOpenAndIssuingMiningRounds + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetOpenAndIssuingMiningRoundsProxyResponse' + /v0/scan-proxy/amulet-rules: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getAmuletRules + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletRulesProxyResponse' + /v0/scan-proxy/ans-entries/by-party/{party}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupAnsEntryByParty + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/scan-proxy/ans-entries: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: listAnsEntries + parameters: + - name: name_prefix + in: query + schema: + type: string + - name: page_size + in: query + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListEntriesResponse' + /v0/scan-proxy/ans-entries/by-name/{name}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupAnsEntryByName + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByNameResponse' + '404': + $ref: '#/components/responses/404' + /v0/scan-proxy/ans-rules: + post: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getAnsRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesResponse' + /v0/scan-proxy/transfer-preapprovals/by-party/{party}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupTransferPreapprovalByParty + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferPreapprovalByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/scan-proxy/transfer-command-counter/{party}: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupTransferCommandCounterByParty + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandCounterByPartyResponse' + '404': + description: No TransferCommandCounter exists for this party. This means the nonce that should be used is 0. + $ref: '#/components/responses/404' + /v0/scan-proxy/transfer-command/status: + get: + description: Retrieve the status of all transfer commands of the given sender for the specified nonce. + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: lookupTransferCommandStatus + parameters: + - name: sender + in: query + required: true + schema: + type: string + - name: nonce + in: query + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandStatusResponse' + '404': + description: No TransferCommand exists with this contract id within the last 24h + $ref: '#/components/responses/404' + /v0/scan-proxy/holdings/summary: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scanproxy + operationId: getHoldingsSummaryAt + description: | + Deprecated. Please use /v1/scan-proxy/holdings/summary instead. Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v1/scan-proxy/holdings/summary: + post: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: getHoldingsSummaryAtV1 + description: | + Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + Unlike /v0/scan-proxy/holdings/summary, this version does not include holding fee fields + as they do not express a meaningful aggregate value. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryRequestV1' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryResponseV1' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/scan-proxy/unclaimed-development-fund-coupons: + get: + tags: + - scan-proxy + x-jvm-package: scanproxy + operationId: listUnclaimedDevelopmentFundCoupons + description: | + List all unclaimed development fund coupons. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListUnclaimedDevelopmentFundCouponsResponse' +components: + schemas: + GetOpenAndIssuingMiningRoundsProxyResponse: + type: object + required: + - open_mining_rounds + - issuing_mining_rounds + properties: + open_mining_rounds: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + issuing_mining_rounds: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + GetAmuletRulesProxyResponse: + type: object + required: + - amulet_rules + properties: + amulet_rules: + $ref: '#/components/schemas/ContractWithState' + GetDsoPartyIdResponse: + type: object + required: + - dso_party_id + properties: + dso_party_id: + type: string + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + LookupFeaturedAppRightResponse: + description: | + If defined, a contract of Daml template `Splice.Amulet.FeaturedAppRight`. + type: object + properties: + featured_app_right: + $ref: '#/components/schemas/Contract' + AnsEntry: + type: object + required: + - user + - name + - url + - description + properties: + contract_id: + description: | + If present, Daml contract ID of template `Splice.Ans:AnsEntry`. + If absent, this is a DSO-provided entry for either the DSO or an SV. + type: string + user: + description: Owner party ID of this ANS entry. + type: string + name: + description: The ANS entry name. + type: string + url: + description: Either empty, or an http/https URL supplied by the `user`. + type: string + description: + description: Arbitrary description text supplied by `user`; may be empty. + type: string + expires_at: + description: | + Time after which this ANS entry expires; if renewed, it will have a + new `contract_id` and `expires_at`. + If `null` or absent, does not expire; this is the case only for + special entries provided by the DSO. + type: string + format: date-time + LookupEntryByPartyResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + ListEntriesResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/AnsEntry' + LookupEntryByNameResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + ContractId: + type: string + GetAnsRulesRequest: + type: object + properties: + cached_ans_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_ans_rules_domain_id: + type: string + MaybeCachedContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + GetAnsRulesResponse: + description: | + A contract state update of Daml template `Splice.Ans.AnsRules`. + type: object + properties: + ans_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - ans_rules_update + LookupTransferPreapprovalByPartyResponse: + description: A Daml contract of template `Splice.AmuletRules:TransferPreapproval`. + type: object + required: + - transfer_preapproval + properties: + transfer_preapproval: + $ref: '#/components/schemas/ContractWithState' + LookupTransferCommandCounterByPartyResponse: + description: A Daml contract of template `Splice.ExternalPartyAmuletRules:TransferCommandCounter`. + type: object + required: + - transfer_command_counter + properties: + transfer_command_counter: + $ref: '#/components/schemas/ContractWithState' + BaseLookupTransferCommandStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the transfer command. + created: + The transfer command has been created and is waiting for automation to complete it. + sent: + The transfer command has been completed and the transfer to the receiver has finished. + failed: + The transfer command has failed permanently and nothing has been transferred. Refer to + failure_reason for details. A new transfer command can be created. + TransferCommandCreatedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandSentResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandFailedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + - type: object + required: + - failure_kind + - reason + properties: + failure_kind: + type: string + description: | + The reason for the failure of the TransferCommand. + failed: + Completing the transfer failed, check the reason for details. + withdrawn: + The sender has withdrawn the TransferCommand before it could be completed. + expired: + The expiry time on the TransferCommand was reached before it could be completed. + enum: + - failed + - expired + - withdrawn + reason: + type: string + description: | + Human readable description of the failure + TransferCommandContractStatus: + type: object + oneOf: + - $ref: '#/components/schemas/TransferCommandCreatedResponse' + - $ref: '#/components/schemas/TransferCommandSentResponse' + - $ref: '#/components/schemas/TransferCommandFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/TransferCommandCreatedResponse' + sent: '#/components/schemas/TransferCommandSentResponse' + failed: '#/components/schemas/TransferCommandFailedResponse' + TransferCommandContractWithStatus: + description: | + A contract of Daml template `Splice.ExternalPartyAmuletRules:TransferCommand`, + and its status determined by the latest transactions. + type: object + required: + - contract + - status + properties: + contract: + $ref: '#/components/schemas/Contract' + status: + $ref: '#/components/schemas/TransferCommandContractStatus' + TransferCommandMap: + type: object + additionalProperties: + $ref: '#/components/schemas/TransferCommandContractWithStatus' + LookupTransferCommandStatusResponse: + type: object + required: + - transfer_commands_by_contract_id + properties: + transfer_commands_by_contract_id: + $ref: '#/components/schemas/TransferCommandMap' + HoldingsSummaryRequest: + type: object + required: + - migration_id + - record_time + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the summary. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + The owners for which to compute the summary. + as_of_round: + type: integer + format: int64 + description: | + Compute holding fees as of this round. Defaults to the earliest open mining round. + HoldingsSummary: + description: Aggregate Amulet totals for a particular owner party ID. + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + - accumulated_holding_fees_unlocked + - accumulated_holding_fees_locked + - accumulated_holding_fees_total + - total_available_coin + properties: + party_id: + description: | + Owner party ID of the amulet. Guaranteed to be unique among `summaries`. + type: string + total_unlocked_coin: + description: | + Sum of unlocked amulet at time of reception, not counting holding + fees deducted since. + type: string + total_locked_coin: + description: | + Sum of locked amulet at time of original amulet reception, not + counting holding fees deducted since. + type: string + total_coin_holdings: + description: | + `total_unlocked_coin` + `total_locked_coin`. + type: string + accumulated_holding_fees_unlocked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + unlocked amulet. + type: string + accumulated_holding_fees_locked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + locked amulet, including fees applied since the amulet's creation + round. + type: string + accumulated_holding_fees_total: + description: | + Same as `accumulated_holding_fees_unlocked` + `accumulated_holding_fees_locked`. + type: string + total_available_coin: + description: Same as `total_unlocked_coin` - `accumulated_holding_fees_unlocked`. + type: string + HoldingsSummaryResponse: + type: object + required: + - record_time + - migration_id + - computed_as_of_round + - summaries + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + computed_as_of_round: + description: The same `as_of_round` as in the request, with the same default. + type: integer + format: int64 + summaries: + type: array + items: + $ref: '#/components/schemas/HoldingsSummary' + HoldingsSummaryRequestV1: + type: object + required: + - migration_id + - record_time + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the summary. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + The owners for which to compute the summary. + HoldingsSummaryV1: + description: Aggregate Amulet totals for a particular owner party ID. + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + properties: + party_id: + description: | + Owner party ID of the amulet. Guaranteed to be unique among `summaries`. + type: string + total_unlocked_coin: + description: | + Sum of unlocked amulet initial amounts, not counting holding + fees deducted since. + type: string + total_locked_coin: + description: | + Sum of locked amulet initial amounts, not + counting holding fees deducted since. + type: string + total_coin_holdings: + description: | + `total_unlocked_coin` + `total_locked_coin`. + type: string + HoldingsSummaryResponseV1: + type: object + required: + - record_time + - migration_id + - summaries + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + summaries: + type: array + items: + $ref: '#/components/schemas/HoldingsSummaryV1' + ListUnclaimedDevelopmentFundCouponsResponse: + type: object + required: + - unclaimed-development-fund-coupons + properties: + unclaimed-development-fund-coupons: + description: | + Contracts of the Daml template `Splice.Amulet:UnclaimedDevelopmentFundCoupon`. + type: array + items: + $ref: '#/components/schemas/ContractWithState' + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.6.12/scan-stream-server.yaml b/api-specs/splice/0.6.12/scan-stream-server.yaml new file mode 100644 index 000000000..4dc565892 --- /dev/null +++ b/api-specs/splice/0.6.12/scan-stream-server.yaml @@ -0,0 +1,64 @@ +openapi: 3.0.0 +info: + title: Scan Streaming API + version: 0.0.1 +servers: + - url: https://example.com/api/scan +tags: + - name: external + description: | + These endpoints are intended for public usage and will remain backward-compatible. + - name: internal + description: | + For internal usage only, not guaranteed to be stable or backward-compatible. + - name: deprecated + description: | + These endpoints are deprecated and will be removed in a future release. + - name: scan + description: | + The internal and external endpoints. + - name: pre-alpha + description: | + Still under active development, highly unstable. Do not use in production. +paths: + /v0/history/bulk/download/{object_key}: + get: + tags: + - pre-alpha + - scan + x-jvm-package: scanStream + operationId: bulkStorageDownload + description: Download a bulk storage object + parameters: + - name: object_key + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/octet-stream: + schema: + type: string + format: binary + x-scala-type: org.apache.pekko.http.scaladsl.model.ResponseEntity + '404': + $ref: '#/components/responses/404' +components: + schemas: + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + responses: + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.6.12/scan.yaml b/api-specs/splice/0.6.12/scan.yaml new file mode 100644 index 000000000..677f48d47 --- /dev/null +++ b/api-specs/splice/0.6.12/scan.yaml @@ -0,0 +1,4839 @@ +openapi: 3.0.0 +info: + title: Scan API + version: 0.0.1 +servers: + - url: https://example.com/api/scan +tags: + - name: external + description: | + These endpoints are intended for public usage and will remain backward-compatible. + - name: internal + description: | + For internal usage only, not guaranteed to be stable or backward-compatible. + - name: deprecated + description: | + These endpoints are deprecated and will be removed in a future release. + - name: scan + description: | + The internal and external endpoints. + - name: pre-alpha + description: | + Still under active development, highly unstable. Do not use in production. +paths: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /v0/dso: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDsoInfo + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoInfoResponse' + /v0/validators/validator-faucets: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getValidatorFaucetsByValidator + description: | + For every argument that is a valid onboarded validator, return + statistics on its liveness activity, according to on-ledger state at the + time of the request. + parameters: + - name: validator_ids + in: query + required: true + description: | + A list of validator party IDs, one per specification of the parameter. + Any party IDs not matching onboarded validators will be ignored + schema: + type: array + items: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetValidatorFaucetsByValidatorResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /v0/scans: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listDsoScans + description: | + Retrieve Canton scan configuration for all SVs, grouped by + connected synchronizer ID + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoScansResponse' + /v0/admin/validator/licenses: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listValidatorLicenses + description: | + List all validators currently approved by members of the DSO, paginated, + sorted newest-first. + parameters: + - name: after + description: | + A `next_page_token` from a prior response; if absent, return the first page. + in: query + required: false + schema: + type: integer + format: int64 + - name: limit + description: Maximum number of elements to return, 1000 by default. + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorLicensesResponse' + /v0/dso-sequencers: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listDsoSequencers + description: | + Retrieve Canton sequencer configuration for all SVs, grouped by + connected synchronizer ID + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoSequencersResponse' + /v0/sv-bft-sequencers: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listSvBftSequencers + description: | + Retrieve Canton BFT sequencer configuration for this SV, for each configured Synchronizer + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSvBftSequencersResponse' + /v0/roll-forward-lsu: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getRollForwardLsu + description: | + Retrieve information on a roll-forward LSU + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRollForwardLsuResponse' + /v0/lsu: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getLsu + description: | + Retrieve information on the next logical synchronizer upgrade (LSU) + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetLsuResponse' + /v0/active-synchronizer-serial: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getActivePhysicalSynchronizerSerial + description: | + Get the current physical synchronizer serial as reported by the SV participant. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetActivePhysicalSynchronizerSerialResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/domains/{domain_id}/parties/{party_id}/participant-id: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getPartyToParticipant + description: | + Get the ID of the participant hosting a given party. This will fail if + there are multiple party-to-participant mappings for the given + synchronizer and party, which is not currently supported. + parameters: + - name: domain_id + description: | + The synchronizer ID to look up a mapping for. + in: path + required: true + schema: + type: string + - name: party_id + description: | + The party ID to lookup a participant ID for. + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetPartyToParticipantResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v1/domains/{domain_id}/parties/{party_id}/participant-id: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getPartyToParticipantV1 + description: | + Get the IDs of the participants hosting a given party. + Unlike /v0, this endpoint supports parties hosted on multiple participants. + parameters: + - name: domain_id + description: | + The synchronizer ID to look up a mapping for. + in: path + required: true + schema: + type: string + - name: party_id + description: | + The party ID to lookup a participant ID for. + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetPartyToParticipantResponseV1' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/domains/{domain_id}/members/{member_id}/traffic-status: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getMemberTrafficStatus + description: | + Get a member's traffic status as reported by the sequencer, according to + ledger state at the time of the request. + parameters: + - name: domain_id + description: | + The synchronizer ID to look up traffic for. + in: path + required: true + schema: + type: string + - name: member_id + description: | + The participant or mediator whose traffic to look up, in the format + `code::id::fingerprint` where `code` is `PAR` or `MED`. + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetMemberTrafficStatusResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/closed-rounds: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getClosedRounds + description: | + Every closed mining round on the ledger still in post-close process for + the connected Splice network, in round number order, earliest-first. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetClosedRoundsResponse' + /v0/open-and-issuing-mining-rounds: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getOpenAndIssuingMiningRounds + description: | + All current open and issuing mining rounds, if the request is empty; + passing contract IDs in the request can reduce the response data for + polling/client-cache-update efficiency. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetOpenAndIssuingMiningRoundsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetOpenAndIssuingMiningRoundsResponse' + /v2/updates: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getUpdateHistoryV2 + description: | + Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. + Compared to `/v1/updates`, the `/v2/updates` removes the `offset` field in responses, + which was hardcoded to 1 in `/v1/updates` for compatibility, and is now removed. + `/v2/updates` sorts events lexicographically in `events_by_id` by `ID` for convenience, which should not be confused with the + order of events in the transaction, for this you should rely on the order of `root_event_ids` and `child_event_ids`. + Updates are ordered lexicographically by `(migration id, record time)`. + For a given migration id, each update has a unique record time. + The record time ranges of different migrations may overlap, i.e., + it is not guaranteed that the maximum record time of one migration is smaller than the minimum record time of the next migration, + and there may be two updates with the same record time but different migration ids. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryRequestV2' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryResponseV2' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v2/updates/{update_id}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getUpdateByIdV2 + description: | + Returns the update with the given update_id. + Compared to `/v1/updates/{update_id}`, the `/v2/updates/{update_id}` removes the `offset` field in responses, + which was hardcoded to 1 in `/v1/updates/{update_id}` for compatibility, and is now removed. + `/v2/updates/{update_id}` sorts events lexicographically in `events_by_id` by `ID` for convenience, which should not be confused with the + order of events in the transaction, for this you should rely on the order of `root_event_ids` and `child_event_ids`. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: daml_value_encoding + in: query + schema: + $ref: '#/components/schemas/DamlValueEncoding' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryItemV2' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v1/updates: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateHistoryV1 + description: | + Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. + Unlike /v0/updates, this endpoint returns responses that are consistent across different + scan instances. Event ids returned by this endpoint are not comparable to event ids returned by /v0/updates. + + Updates are ordered lexicographically by `(migration id, record time)`. + For a given migration id, each update has a unique record time. + The record time ranges of different migrations may overlap, i.e., + it is not guaranteed that the maximum record time of one migration is smaller than the minimum record time of the next migration, + and there may be two updates with the same record time but different migration ids. + The order of items in events_by_id is not defined. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryRequestV1' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v1/updates/{update_id}: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateByIdV1 + description: | + Returns the update with the given update_id. + Unlike /v0/updates/{update_id}, this endpoint returns responses that are consistent across different + scan instances. Event ids returned by this endpoint are not comparable to event ids returned by /v0/updates. + The order of items in events_by_id is not defined. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: daml_value_encoding + in: query + schema: + $ref: '#/components/schemas/DamlValueEncoding' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryItem' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v2/updates/hash/{hash}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getUpdateByHash + description: | + Returns the update associated with the given hash of the prepared transaction. + + This endpoint is not always BFT safe. + For transactions committed before a scan instance started indexing hashes, the instance will return a 404 error. + For transactions committed around the time different scans started indexing hashes, + some scan instances might return a 404 error while others return the matching update. + + This is in contrast to the `v2/updates` and `v2/updates/{update_id}` endpoints, which are guaranteed to be always BFT safe. + parameters: + - name: hash + in: path + required: true + schema: + type: string + - name: daml_value_encoding + in: query + schema: + $ref: '#/components/schemas/DamlValueEncoding' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryItemV2WithHash' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs/snapshot-timestamp: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDateOfMostRecentSnapshotBefore + description: | + Returns the timestamp of the most recent snapshot before the given date, for the given migration_id. + This corresponds to the record time of the last transaction in the snapshot. + parameters: + - name: before + in: query + required: true + schema: + type: string + format: date-time + description: | + The endpoint will return the record time of the most recent snapshot before this parameter. + - name: migration_id + in: query + required: true + schema: + type: integer + format: int64 + description: | + The endpoint will return the record time of the most recent snapshot for this migration id. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsSnapshotTimestampResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs/snapshot-timestamp-after: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDateOfFirstSnapshotAfter + description: | + Returns the timestamp of the first snapshot after the given date, for the given migration_id or larger. + parameters: + - name: after + in: query + required: true + schema: + type: string + format: date-time + description: | + The endpoint will return the record time of the first snapshot after this parameter. + - name: migration_id + in: query + required: true + schema: + type: integer + format: int64 + description: | + The endpoint will return the record time of the first snapshot for this migration id or larger. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsSnapshotTimestampResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getAcsSnapshotAt + description: | + Deprecated. Please use /v1/state/acs instead. Returns the ACS in creation date ascending order, paged, for a given migration id and record time. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v1/state/acs: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getAcsSnapshotAtV1 + description: | + Returns the ACS in creation date ascending order, paged, for a given migration id and record time. + Unlike /v0/state/acs, every contract is identified by an (optional) update_id + (as opposed to the event ID in /v0/state/acs, which was not BFT-safe). + The update_id is the ID of the update in which the contract was created, and can be used to correlate with updates returned by /v2/updates. + For contracts created in an earlier migration ID, the update_id will be absent. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsResponseV1' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/state/acs/force: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: forceAcsSnapshotNow + description: | + Takes a snapshot of the ACS at the current time. + The responses can be used as parameters to `/v0/state/acs` to retrieve the snapshot. + Disabled in production environments due to its persistent alteration of + the behavior of future invocations of `/v0/state/acs`, as it causes an + immediate internal snapshot and delay in the next automatic snapshot. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ForceAcsSnapshotResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/holdings/state: + post: + tags: + - deprecated + x-jvm-package: scan + operationId: getHoldingsStateAt + description: | + Deprecated. Please use /v1/holdings/state instead. Returns the active amulet contracts for a given migration id and record time, in creation date ascending order, paged. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsStateRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v1/holdings/state: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getHoldingsStateAtV1 + description: | + Returns the active amulet contracts for a given migration id and record time, in creation date ascending order, paged. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsStateRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcsResponseV1' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/holdings/summary: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getHoldingsSummaryAt + description: | + Deprecated. Please use /v1/holdings/summary instead. Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v1/holdings/summary: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getHoldingsSummaryAtV1 + description: | + Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + Unlike /v0/holdings/summary, this version does not include holding fee fields + as they do not express a meaningful aggregate value. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryRequestV1' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/HoldingsSummaryResponseV1' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/ans-entries: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listAnsEntries + description: | + Lists all non-expired ANS entries whose names are prefixed with the + `name_prefix`, up to `page_size` entries. + parameters: + - name: name_prefix + description: | + Every result's name will start with this substring; if empty or absent, + all entries will be listed. + Does not have to be a whole word or segment; any substring will be accepted. + in: query + schema: + type: string + - name: page_size + description: | + The maximum number of results returned. + Older (but still non-expired) results are listed first. + in: query + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListEntriesResponse' + /v0/ans-entries/by-party/{party}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: lookupAnsEntryByParty + description: | + If present, the first ANS entry for user `party` according to + `name` lexicographic order. + parameters: + - name: party + description: The user party ID that holds the ANS entry. + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/ans-entries/by-name/{name}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: lookupAnsEntryByName + description: If present, the ANS entry named exactly `name`. + parameters: + - name: name + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupEntryByNameResponse' + '404': + $ref: '#/components/responses/404' + /v0/dso-party-id: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getDsoPartyId + description: | + The party ID of the DSO for the Splice network connected by this Scan app. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoPartyIdResponse' + /v0/amulet-rules: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getAmuletRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletRulesResponse' + /v0/external-party-amulet-rules: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getExternalPartyAmuletRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetExternalPartyAmuletRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetExternalPartyAmuletRulesResponse' + /v0/ans-rules: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getAnsRules + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAnsRulesResponse' + /v0/featured-apps: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listFeaturedAppRights + description: | + List every `FeaturedAppRight` registered with the DSO on the ledger. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListFeaturedAppRightsResponse' + /v0/featured-apps/{provider_party_id}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupFeaturedAppRight + description: | + If `provider_party_id` has a `FeaturedAppRight` registered with the DSO, + return it; `featured_app_right` will be empty otherwise. + parameters: + - name: provider_party_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupFeaturedAppRightResponse' + /v0/featured-apps/by-provider/{provider_party_id}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listFeaturedAppRightsByProvider + description: | + List all `FeaturedAppRight` contracts for the given provider. + parameters: + - name: provider_party_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListFeaturedAppRightsResponse' + /v0/featured-apps/by-contract-id/{contract_id}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupFeaturedAppRightByContractId + description: | + Look up a `FeaturedAppRight` contract by its contract ID. + Returns `featured_app_right` if found, empty otherwise. + parameters: + - name: contract_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupFeaturedAppRightResponse' + /v0/transfer-preapprovals/by-party/{party}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupTransferPreapprovalByParty + description: Lookup a TransferPreapproval by the receiver party. + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferPreapprovalByPartyResponse' + '404': + $ref: '#/components/responses/404' + /v0/transfer-command-counter/{party}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupTransferCommandCounterByParty + description: Lookup a TransferCommandCounter by the receiver party. + parameters: + - name: party + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandCounterByPartyResponse' + '404': + description: No TransferCommandCounter exists for this party. This means the nonce that should be used is 0. + $ref: '#/components/responses/404' + /v0/transfer-command/status: + get: + description: Retrieve the status of all transfer commands (up to a limit of 100) of the given sender for the specified nonce. + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupTransferCommandStatus + parameters: + - name: sender + in: query + required: true + schema: + type: string + - name: nonce + in: query + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferCommandStatusResponse' + '404': + description: No TransferCommand exists with this contract id within the last 24h + $ref: '#/components/responses/404' + /v0/migrations/schedule: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getMigrationSchedule + description: | + If the DSO has scheduled a synchronizer upgrade, return its planned time + and the new migration ID. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/MigrationSchedule' + '404': + description: No migration scheduled + /v0/migrations/last: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getMigrationId + description: | + Returns the last migration id that was configured for the synchronizer upgrades. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetMigrationIdResponse' + /v0/synchronizer-identities/{domain_id_prefix}: + get: + tags: + - internal + - scan + x-jvm-package: scan_soft_domain_migration_poc + operationId: getSynchronizerIdentities + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SynchronizerIdentities' + '404': + $ref: '#/components/responses/404' + /v0/synchronizer-bootstrapping-transactions/{domain_id_prefix}: + get: + tags: + - internal + - scan + x-jvm-package: scan_soft_domain_migration_poc + operationId: getSynchronizerBootstrappingTransactions + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SynchronizerBootstrappingTransactions' + '404': + $ref: '#/components/responses/404' + /v0/splice-instance-names: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getSpliceInstanceNames + description: Retrieve the UI names of various elements of this Splice network. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSpliceInstanceNamesResponse' + '404': + $ref: '#/components/responses/404' + /v0/amulet-price/votes: + get: + tags: + - scan + - internal + x-jvm-package: scan + operationId: listAmuletPriceVotes + description: Retrieve a list of the latest amulet price votes + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAmuletPriceVotesResponse' + /v0/voterequest: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listVoteRequestsByTrackingCid + description: Look up several `VoteRequest`\ s at once by their contract IDs. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BatchListVotesByVoteRequestsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteRequestByTrackingCidResponse' + /v0/voterequests/{vote_request_contract_id}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: lookupDsoRulesVoteRequest + description: Look up a `VoteRequest` by contract ID. + parameters: + - name: vote_request_contract_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupDsoRulesVoteRequestResponse' + '404': + description: VoteRequest contract not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/sv/voterequests: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listDsoRulesVoteRequests + description: List all active `VoteRequest`\ s. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteRequestsResponse' + /v0/admin/sv/voteresults: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: listVoteRequestResults + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteResultsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteResultsResponse' + /v0/admin/sv/previous-sv-reward-weight: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getPreviousSvRewardWeight + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PreviousSvRewardWeightRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PreviousSvRewardWeightResponse' + /v0/backfilling/migration-info: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getMigrationInfo + description: | + List all previous synchronizer migrations in this Splice network's history. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetMigrationInfoRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetMigrationInfoResponse' + '404': + $ref: '#/components/responses/404' + /v0/backfilling/updates-before: + post: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getUpdatesBefore + description: | + Retrieve transactions and synchronizer reassignments prior to the + request's specification. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesBeforeRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetUpdatesBeforeResponse' + '404': + $ref: '#/components/responses/404' + /v0/backfilling/status: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getBackfillingStatus + description: | + Retrieve the status of the backfilling process. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetBackfillingStatusResponse' + /v0/acs/{party}: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getAcsSnapshot + description: '**Deprecated**. Fetch the current SV participant ACS snapshot for the DSO and `party`.' + parameters: + - name: party + in: path + required: true + schema: + type: string + - name: record_time + in: query + required: false + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAcsSnapshotResponse' + /v0/amulet-config-for-round: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getAmuletConfigForRound + description: | + **Deprecated**. Retrieve some information from the `AmuletRules` selected for the given round + parameters: + - in: query + name: round + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetAmuletConfigForRoundResponse' + '404': + $ref: '#/components/responses/404' + /v0/transactions: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: listTransactionHistory + description: | + **Deprecated with known bugs that will not be fixed, use /v2/updates instead**. + + Lists transactions, by default in ascending order, paged, from ledger begin or optionally starting after a provided event id. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransactionHistoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransactionHistoryResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/updates: + post: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateHistory + description: | + **Deprecated**, use /v2/updates instead. + Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/updates/{update_id}: + get: + deprecated: true + tags: + - deprecated + x-jvm-package: scan + operationId: getUpdateById + description: | + **Deprecated**, use /v2/updates/{update_id} instead. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: lossless + in: query + description: | + Whether contract payload should be encoded into json using a lossless, but much harder to process, encoding. + This is mostly used for backend calls, and is not recommended for external users. + Optional and defaults to false. + schema: + type: boolean + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateHistoryItem' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/feature-support: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: featureSupport + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FeatureSupportResponse' + '500': + $ref: '#/components/responses/500' + /v0/backfilling/import-updates: + post: + tags: + - scan + x-jvm-package: scan + operationId: getImportUpdates + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetImportUpdatesRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetImportUpdatesResponse' + '404': + $ref: '#/components/responses/404' + /v0/events: + post: + tags: + - external + - scan + x-jvm-package: scan + operationId: getEventHistory + description: | + Returns the event history in ascending order, paged, from ledger begin or optionally starting after a record time. + An event bears some combination of a transaction, a contract reassignment, and a verdict. + Events are ordered lexicographically by `(migration id, record time)`. + For a given migration id, each event has a unique record time. + The record time ranges of different migrations may overlap, i.e., + it is not guaranteed that the maximum record time of one migration is smaller than the minimum record time of the next migration, + and there may be two updates with the same record time but different migration ids. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventHistoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/EventHistoryResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/events/{update_id}: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: getEventById + description: | + Returns the event with the given update_id. + An event bears some combination of a transaction, a contract reassignment, and a verdict. + parameters: + - name: update_id + in: path + required: true + schema: + type: string + - name: daml_value_encoding + in: query + schema: + $ref: '#/components/schemas/DamlValueEncoding' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/EventHistoryItem' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/unclaimed-development-fund-coupons: + get: + tags: + - external + - scan + x-jvm-package: scan + operationId: listUnclaimedDevelopmentFundCoupons + description: | + List all unclaimed development fund coupons. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListUnclaimedDevelopmentFundCouponsResponse' + '500': + $ref: '#/components/responses/500' + /v0/internal/reward-accounting-process/rounds/earliest-available: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getRewardAccountingEarliestAvailableRound + description: | + SV node internal API (CIP-0104, subject to change). + Returns the earliest round for which CIP-0104 reward accounting activity + records are complete. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRewardAccountingEarliestAvailableRoundResponse' + '404': + $ref: '#/components/responses/404' + /v0/internal/reward-accounting-process/rounds/{round_number}/activity-totals: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getRewardAccountingActivityTotals + description: | + SV node internal API (CIP-0104, subject to change). + Return the CIP-0104 per-round activity totals for the + specified round number. + parameters: + - name: round_number + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRewardAccountingActivityTotalsResponse' + /v0/internal/reward-accounting-process/rounds/{round_number}/root-hash: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getRewardAccountingRootHash + description: | + SV node internal API (CIP-0104, subject to change). + Returns the root hash computed for the specified round. + parameters: + - name: round_number + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRewardAccountingRootHashResponse' + /v0/internal/reward-accounting-process/rounds/{round_number}/batches/{batch_hash}: + get: + tags: + - internal + - scan + x-jvm-package: scan + operationId: getRewardAccountingBatch + description: | + SV node internal API (CIP-0104, subject to change). + Returns the contents of a reward batch identified by its hash. + The response is either a list of child batch hashes (for internal nodes) + or a list of minting allowances (for leaf nodes). + parameters: + - name: round_number + in: path + required: true + schema: + type: integer + format: int64 + - name: batch_hash + in: path + required: true + schema: + type: string + description: Hex-encoded batch hash + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRewardAccountingBatchResponse' + '404': + $ref: '#/components/responses/404' + /v0/history/bulk/acs: + get: + tags: + - pre-alpha + - scan + x-jvm-package: scan + operationId: listBulkAcsSnapshotObjects + description: | + **Under Development, do not use in production yet** Get download URLs and metadata for an ACS snapshot available for bulk download, at or before a certain record time. + parameters: + - name: at_or_before_record_time + in: query + required: true + schema: + type: string + format: date-time + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListBulkAcsSnapshotObjectsResponse' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/history/bulk/updates: + post: + tags: + - pre-alpha + - scan + x-jvm-package: scan + operationId: listBulkUpdateHistoryObjects + description: | + **Under Development, do not use in production yet** Get download URLs and metadata for update history objects available for bulk download, between two record times. + Note that the returned objects may include also updates outside of the requested record time range (since only full objects are served from storage), but guaranteed + to include all updates in the requested range. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListBulkUpdateHistoryObjectsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListBulkUpdateHistoryObjectsResponse' + '400': + $ref: '#/components/responses/404' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' +components: + schemas: + GetSpliceInstanceNamesResponse: + type: object + required: + - network_name + - network_favicon_url + - amulet_name + - amulet_name_acronym + - name_service_name + - name_service_name_acronym + properties: + network_name: + description: What to call this Splice network. + type: string + network_favicon_url: + description: URL of an HTML favicon for this Splice network. + type: string + amulet_name: + description: What this Splice network calls Amulet. + type: string + amulet_name_acronym: + description: The three-letter acronym for Amulet. + type: string + name_service_name: + description: What this Splice network calls the Amulet Name Service. + type: string + name_service_name_acronym: + description: The acronym for `name_service_name`. + type: string + GetDsoPartyIdResponse: + type: object + required: + - dso_party_id + properties: + dso_party_id: + type: string + GetClosedRoundsResponse: + type: object + required: + - rounds + properties: + rounds: + description: | + Contracts of the Daml template `Splice.Round:ClosedMiningRound`, one + for every closed round that is still in process, i.e. it either has + unprocessed rewards or a missing `Splice.DsoRules:Confirmation`. + type: array + items: + $ref: '#/components/schemas/Contract' + GetOpenAndIssuingMiningRoundsRequest: + type: object + required: + - cached_open_mining_round_contract_ids + - cached_issuing_round_contract_ids + properties: + cached_open_mining_round_contract_ids: + description: | + The contract IDs for `open_mining_rounds` in the response the caller + knows about. If unsure, an empty array is fine; only a performance + penalty is incurred. + type: array + items: + $ref: '#/components/schemas/ContractId' + cached_issuing_round_contract_ids: + description: | + The contract IDs for `issuing_mining_rounds` in the response the + caller knows about. If unsure, an empty array is fine; only a + performance penalty is incurred. + type: array + items: + $ref: '#/components/schemas/ContractId' + GetOpenAndIssuingMiningRoundsResponse: + description: | + Daml contracts of the templates `Splice.Round.OpenMiningRound` and + `Splice.Round.IssuingMiningRound` representing rounds for which rewards + can be registered or are currently being computed, respectively. + Contract IDs in the input serve as input sets for the two + `MaybeCachedContractWithStateMap`s as described for that structure for + `open_mining_rounds` and `issuing_mining_rounds`. + type: object + required: + - open_mining_rounds + - issuing_mining_rounds + - time_to_live_in_microseconds + properties: + time_to_live_in_microseconds: + description: | + Suggested cache TTL for the response; this should expire before the + `opensAt` of any open rounds that may not be in this response yet. + type: integer + open_mining_rounds: + $ref: '#/components/schemas/MaybeCachedContractWithStateMap' + issuing_mining_rounds: + $ref: '#/components/schemas/MaybeCachedContractWithStateMap' + GetAmuletRulesRequest: + type: object + properties: + cached_amulet_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_amulet_rules_domain_id: + type: string + GetAmuletRulesResponse: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now. `contract` will be absent if its ID matches the input + `cached_amulet_rules_contract_id`. + type: object + properties: + amulet_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - amulet_rules_update + GetExternalPartyAmuletRulesRequest: + type: object + properties: + cached_external_party_amulet_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_external_party_amulet_rules_domain_id: + type: string + GetExternalPartyAmuletRulesResponse: + description: | + A contract state update of Daml template + `Splice.ExternalPartyAmuletRules.ExternalPartyAmuletRules` + type: object + properties: + external_party_amulet_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - external_party_amulet_rules_update + GetAnsRulesRequest: + type: object + properties: + cached_ans_rules_contract_id: + $ref: '#/components/schemas/ContractId' + cached_ans_rules_domain_id: + type: string + GetAnsRulesResponse: + description: | + A contract state update of Daml template `Splice.Ans.AnsRules`. + type: object + properties: + ans_rules_update: + $ref: '#/components/schemas/MaybeCachedContractWithState' + required: + - ans_rules_update + ListFeaturedAppRightsResponse: + description: | + Contracts of Daml template `Splice.Amulet.FeaturedAppRight`. + type: object + required: + - featured_apps + properties: + featured_apps: + type: array + items: + $ref: '#/components/schemas/Contract' + LookupFeaturedAppRightResponse: + description: | + If defined, a contract of Daml template `Splice.Amulet.FeaturedAppRight`. + type: object + properties: + featured_app_right: + $ref: '#/components/schemas/Contract' + GetAmuletConfigForRoundResponse: + type: object + required: + - amulet_create_fee + - holding_fee + - lock_holder_fee + - transfer_fee + properties: + amulet_create_fee: + type: string + holding_fee: + type: string + lock_holder_fee: + type: string + transfer_fee: + $ref: '#/components/schemas/SteppedRate' + SteppedRate: + type: object + required: + - initial + - steps + properties: + initial: + type: string + steps: + type: array + items: + $ref: '#/components/schemas/RateStep' + RateStep: + type: object + required: + - amount + - rate + properties: + amount: + type: string + rate: + type: string + GetValidatorTrafficBalanceResponse: + type: object + required: + - remainingBalance + - totalPurchased + properties: + remainingBalance: + type: number + format: double + totalPurchased: + type: number + format: double + CheckAndUpdateValidatorTrafficBalanceResponse: + type: object + required: + - approved + properties: + approved: + type: boolean + ValidatorPurchasedTraffic: + type: object + required: + - validator + - numPurchases + - totalTrafficPurchased + - totalCcSpent + - lastPurchasedInRound + properties: + validator: + type: string + numPurchases: + type: integer + format: int64 + totalTrafficPurchased: + type: integer + format: int64 + totalCcSpent: + type: string + lastPurchasedInRound: + type: integer + format: int64 + ListSvBftSequencersResponse: + type: object + required: + - bftSequencers + properties: + bftSequencers: + type: array + items: + $ref: '#/components/schemas/SynchronizerBftSequencer' + SynchronizerBftSequencer: + type: object + required: + - serialId + - id + - p2pUrl + properties: + serialId: + description: | + The synchronizer serial corresponding to this sequencer. + type: integer + format: int64 + id: + description: The id of the sequencer. + type: string + p2pUrl: + description: The public accessible P2P url of the sequencer, use for inter sequencer communication. + type: string + ListDsoSequencersResponse: + type: object + required: + - domainSequencers + properties: + domainSequencers: + type: array + items: + $ref: '#/components/schemas/DomainSequencers' + DomainSequencers: + type: object + required: + - domainId + - sequencers + properties: + domainId: + description: the synchronizer ID for the associated sequencers + type: string + sequencers: + description: the sequencers associated with the synchronizer + type: array + items: + $ref: '#/components/schemas/DsoSequencer' + DsoSequencer: + type: object + required: + - migrationId + - id + - url + - svName + - availableAfter + properties: + migrationId: + description: | + The synchronizer migration id corresponding to this sequencer. + Set to -1 if serial is set. + type: integer + format: int64 + synchronizerSerial: + description: | + The synchronizer serial corresponding to this sequencer. + One of migrationId or serialId will be set. + type: integer + format: int64 + id: + description: The id of the sequencer. + type: string + url: + description: The public accessible url of the sequencer. + type: string + svName: + description: The sequencer's operating SV name. + type: string + availableAfter: + description: | + Any participant should subscribe to this sequencer after this time. + type: string + format: date-time + GetRollForwardLsuResponse: + type: object + properties: + rollForwardLsu: + description: Info on a roll-forward LSU + $ref: '#/components/schemas/RollForwardLsu' + RollForwardLsu: + type: object + required: + - upgradeTime + - currentPhysicalSynchronizerId + - successorPhysicalSynchronizerId + properties: + upgradeTime: + description: The time at which to upgrade + type: string + format: date-time + currentPhysicalSynchronizerId: + type: string + successorPhysicalSynchronizerId: + type: string + GetLsuResponse: + type: object + properties: + lsu: + description: Info on the next LSU + $ref: '#/components/schemas/Lsu' + Lsu: + type: object + required: + - topologyFreezeTime + - upgradeTime + - successorPhysicalSynchronizerId + properties: + topologyFreezeTime: + description: The time when topology freeze starts + type: string + format: date-time + upgradeTime: + description: The time at which to upgrade + type: string + format: date-time + successorPhysicalSynchronizerId: + description: The successor physical synchronizer ID + type: string + GetActivePhysicalSynchronizerSerialResponse: + type: object + required: + - serial + properties: + serial: + description: | + The current physical synchronizer serial as reported by the SV participant. + type: integer + format: int64 + ListDsoScansResponse: + type: object + required: + - scans + properties: + scans: + type: array + items: + $ref: '#/components/schemas/DomainScans' + DomainScans: + type: object + required: + - domainId + - scans + properties: + domainId: + type: string + scans: + description: | + SV scans for the associated synchronizer ID; there is at most one + scan per SV for each synchronizer ID. + type: array + items: + $ref: '#/components/schemas/ScanInfo' + ScanInfo: + type: object + required: + - publicUrl + - svName + properties: + publicUrl: + description: The public accessible url of the scan. + type: string + svName: + description: The sequencer's operating SV name. + type: string + TransactionHistoryRequest: + type: object + required: + - page_size + properties: + page_end_event_id: + type: string + description: | + Note that all transactions carry some monotonically-increasing event_id. + Omit this page_end_event_id to start reading the first page, from the beginning or the end of the ledger, depending on the sort_order column. + A subsequent request can fill the page_end_event_id with the last event_id of the TransactionHistoryResponse to continue reading in the same sort_order. + The transaction with event_id == page_end_event_id will be skipped in the next response, making it possible to continuously read pages in the same sort_order. + sort_order: + description: | + Sort order for the transactions. For ascending order, from beginning to the end of the ledger, use "asc". + For descending order, from end to beginning of the ledger, use "desc". + "asc" is used if the sort_order is omitted. + type: string + enum: + - asc + - desc + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int64 + TransactionHistoryResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/TransactionHistoryResponseItem' + TransactionHistoryResponseItem: + type: object + required: + - transaction_type + - event_id + - date + - domain_id + properties: + transaction_type: + description: | + Describes the type of activity that occurred. + Determines if the data for the transaction should be read + from the `transfer`, `mint`, or `tap` property. + type: string + enum: + - transfer + - mint + - devnet_tap + - abort_transfer_instruction + event_id: + description: | + The event id. + type: string + offset: + description: | + The ledger offset of the event. + Note that this field may not be the same across nodes, and therefore should not be compared between SVs. + type: string + date: + description: | + The effective date of the event. + type: string + format: date-time + domain_id: + description: | + The id of the domain through which this transaction was sequenced. + type: string + round: + description: | + The round for which this transaction was registered. + type: integer + format: int64 + transfer: + description: | + A (batch) transfer from sender to receivers. + $ref: '#/components/schemas/Transfer' + mint: + description: | + The DSO mints amulet for the cases where the DSO rules allow for that. + $ref: '#/components/schemas/AmuletAmount' + tap: + description: | + A tap creates a Amulet, only used for development purposes, and enabled only on DevNet. + $ref: '#/components/schemas/AmuletAmount' + abort_transfer_instruction: + $ref: '#/components/schemas/AbortTransferInstruction' + UpdateHistoryRequestAfter: + type: object + required: + - after_migration_id + - after_record_time + properties: + after_migration_id: + type: integer + format: int64 + description: | + The migration id from which to start returning transactions. This is inclusive. + after_record_time: + type: string + description: | + The record time to start returning transactions from. This only affects + transactions with the same migration id as after_migration_id. Higher migration ids + are always considered to be later. + UpdateHistoryRequest: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The transactions returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int32 + lossless: + description: | + Whether contract payload should be encoded into json using a lossless, but much harder to process, encoding. + This is mostly used for backend calls, and is not recommended for external users. + Optional and defaults to false. + type: boolean + UpdateHistoryRequestV1: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The transactions returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int32 + daml_value_encoding: + $ref: '#/components/schemas/DamlValueEncoding' + UpdateHistoryRequestV2: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The transactions returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of transactions returned for this request. + type: integer + format: int32 + daml_value_encoding: + $ref: '#/components/schemas/DamlValueEncoding' + UpdateHistoryResponseV2: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItemV2' + UpdateHistoryResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItem' + UpdateHistoryItemV2WithHash: + type: object + description: | + An individual item in the update history. May be a transaction or a contract reassignment. + oneOf: + - $ref: '#/components/schemas/UpdateHistoryTransactionV2WithHash' + - $ref: '#/components/schemas/UpdateHistoryReassignment' + UpdateHistoryItemV2: + type: object + description: | + An individual item in the update history. May be a transaction or a contract reassignment. + oneOf: + - $ref: '#/components/schemas/UpdateHistoryTransactionV2' + - $ref: '#/components/schemas/UpdateHistoryReassignment' + UpdateHistoryItem: + type: object + description: | + An individual item in the update history. May be a transaction or a contract reassignment. + oneOf: + - $ref: '#/components/schemas/UpdateHistoryTransaction' + - $ref: '#/components/schemas/UpdateHistoryReassignment' + UpdateHistoryReassignment: + type: object + description: A contract reassignment between synchronizer. May be an assignment or unassignment. + required: + - update_id + - offset + - record_time + - event + properties: + update_id: + description: | + The id of the update. + type: string + offset: + description: | + The absolute offset. + Note that this field may not be the same across nodes, and therefore should not be compared between SVs. + type: string + record_time: + description: | + The time at which the transaction was sequenced. + type: string + event: + description: | + The reassignment event. May be an assignment or unassignment. + type: object + oneOf: + - $ref: '#/components/schemas/UpdateHistoryAssignment' + - $ref: '#/components/schemas/UpdateHistoryUnassignment' + UpdateHistoryAssignment: + type: object + required: + - submitter + - source_synchronizer + - target_synchronizer + - migration_id + - unassign_id + - created_event + - reassignment_counter + properties: + submitter: + description: | + The party ID who submitted this reassignment + type: string + source_synchronizer: + description: | + The id of the synchronizer from which the contract was reassigned + type: string + target_synchronizer: + description: | + The id of the synchronizer to which the contract was reassigned + type: string + migration_id: + description: | + The migration id of the target synchronizer + type: integer + format: int64 + unassign_id: + description: | + The id of the corresponding unassign event; this assignment will + usually, but not always, occur after the so-identified unassignment + event. + type: string + created_event: + description: | + The corresponding contract create event + $ref: '#/components/schemas/CreatedEvent' + reassignment_counter: + description: Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter 0. + type: integer + format: int64 + UpdateHistoryUnassignment: + type: object + required: + - submitter + - source_synchronizer + - migration_id + - target_synchronizer + - unassign_id + - reassignment_counter + - contract_id + properties: + submitter: + description: | + The party who submitted this reassignment + type: string + source_synchronizer: + description: | + The id of the synchronizer from which the contract was reassigned + type: string + migration_id: + description: | + The migration id of the synchronizer from which the contract was reassigned + type: integer + format: int64 + target_synchronizer: + description: | + The id of the synchronizer to which the contract was reassigned + type: string + unassign_id: + description: | + The id of the unassign event, to later be correlated to an assign event + type: string + reassignment_counter: + description: Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter 0. + type: integer + format: int64 + contract_id: + description: | + The id of the unassigned contract + type: string + UpdateHistoryTransaction: + type: object + required: + - update_id + - migration_id + - workflow_id + - record_time + - synchronizer_id + - effective_at + - offset + - root_event_ids + - events_by_id + properties: + update_id: + description: | + The id of the update. + type: string + migration_id: + description: | + The migration id of the synchronizer. + type: integer + format: int64 + workflow_id: + description: | + This transaction's Daml workflow ID; a workflow ID can be associated + with multiple transactions. If empty, no workflow ID was set. + type: string + record_time: + description: | + The time at which the transaction was sequenced, with microsecond + resolution, using ISO-8601 representation. + type: string + synchronizer_id: + description: | + The id of the synchronizer through which this transaction was sequenced. + type: string + effective_at: + description: | + Ledger effective time, using ISO-8601 representation. This is the time + returned by `getTime` for all Daml executed as part of this transaction, + both by the submitting participant and all confirming participants. + type: string + offset: + description: | + The absolute offset. + Note that this field may not be the same across nodes, and therefore should not be compared between SVs. + However, within a single SV's scan, it is monotonically, lexicographically increasing. + type: string + root_event_ids: + description: | + Roots of the transaction tree. These are guaranteed to occur as keys + of the `events_by_id` object. + type: array + items: + type: string + events_by_id: + description: | + Changes to the ledger that were caused by this transaction, keyed by ID. + Values are nodes of the transaction tree. + Within a transaction, IDs may be referenced by `root_event_ids` or + `child_event_ids` in `ExercisedEvent` herein. + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + external_transaction_hash: + description: | + For an externally signed transaction, contains the external transaction hash + signed by the external party. Can be used to correlate an external submission with a committed transaction. + This field is conditionally omitted from JSON when null (see OmitNullString). + type: string + x-scala-type: org.lfdecentralizedtrust.splice.http.OmitNullString + BaseUpdateHistoryTransaction: + type: object + required: + - update_id + - migration_id + - workflow_id + - record_time + - synchronizer_id + - effective_at + - root_event_ids + - events_by_id + properties: + update_id: + description: | + The id of the update. + type: string + migration_id: + description: | + The migration id of the synchronizer. + type: integer + format: int64 + workflow_id: + description: | + This transaction's Daml workflow ID; a workflow ID can be associated + with multiple transactions. If empty, no workflow ID was set. + type: string + record_time: + description: | + The time at which the transaction was sequenced, with microsecond + resolution, using ISO-8601 representation. + type: string + synchronizer_id: + description: | + The id of the synchronizer through which this transaction was sequenced. + type: string + effective_at: + description: | + Ledger effective time, using ISO-8601 representation. This is the time + returned by `getTime` for all Daml executed as part of this transaction, + both by the submitting participant and all confirming participants. + type: string + root_event_ids: + description: | + Roots of the transaction tree. These are guaranteed to occur as keys + of the `events_by_id` object. + type: array + items: + type: string + events_by_id: + x-scala-map-type: scala.collection.immutable.SortedMap + description: | + Changes to the ledger that were caused by this transaction, keyed by ID and sorted lexicographically by ID for display consistency. + Values are nodes of the transaction tree. + Within a transaction, IDs may be referenced by `root_event_ids` or + `child_event_ids` in `ExercisedEvent` herein, which are sorted in the order as they occurred in the transaction. + type: object + additionalProperties: + $ref: '#/components/schemas/TreeEvent' + UpdateHistoryTransactionV2: + allOf: + - $ref: '#/components/schemas/BaseUpdateHistoryTransaction' + - type: object + properties: + external_transaction_hash: + description: | + For an externally signed transaction, contains the external transaction hash + signed by the external party. Can be used to correlate an external submission with a committed transaction. + This field is conditionally omitted from JSON when null (see OmitNullString). + type: string + x-scala-type: org.lfdecentralizedtrust.splice.http.OmitNullString + UpdateHistoryTransactionV2WithHash: + allOf: + - $ref: '#/components/schemas/BaseUpdateHistoryTransaction' + - type: object + required: + - external_transaction_hash + properties: + external_transaction_hash: + description: | + For an externally signed transaction, contains the external transaction hash + signed by the external party. Can be used to correlate an external submission with a committed transaction. + type: string + x-scala-type: org.lfdecentralizedtrust.splice.http.OmitNullString + TreeEvent: + type: object + description: | + Either a creation or an exercise of a contract. + oneOf: + - $ref: '#/components/schemas/CreatedEvent' + - $ref: '#/components/schemas/ExercisedEvent' + discriminator: + propertyName: event_type + mapping: + created_event: '#/components/schemas/CreatedEvent' + exercised_event: '#/components/schemas/ExercisedEvent' + CreatedEvent: + type: object + required: + - event_type + - event_id + - contract_id + - template_id + - package_name + - create_arguments + - created_at + - signatories + - observers + properties: + event_type: + type: string + event_id: + description: | + The ID of this particular event. Equal to the key of this element of + the containing `events_by_id` if this is part of a `TreeEvent`. + type: string + contract_id: + description: | + The ID of the created contract. + type: string + template_id: + description: | + The template of the created contract. + type: string + package_name: + description: | + The package name of the created contract. + type: string + create_arguments: + description: | + The arguments that have been used to create the contract, in the + form of JSON representation of a Daml record. + type: object + created_at: + description: | + Ledger effective time of the transaction that created the contract. + type: string + format: date-time + signatories: + description: | + Signatories to the contract, in the form of party IDs. + type: array + items: + type: string + observers: + description: | + Observers to the contract, in the form of party IDs. + type: array + items: + type: string + ActiveContract: + type: object + required: + - contract_id + - template_id + - package_name + - create_arguments + - created_at + - signatories + - observers + properties: + created_in_update_id: + description: | + The id of the update in which this contract was created. + Optional and will be absent for contracts created in prior migration IDs. + type: string + contract_id: + description: | + The ID of the created contract. + type: string + template_id: + description: | + The template of the created contract. + type: string + package_name: + description: | + The package name of the created contract. + type: string + create_arguments: + description: | + The arguments that have been used to create the contract, in the + form of JSON representation of a Daml record. + type: object + created_at: + description: | + Ledger effective time of the transaction that created the contract. + type: string + format: date-time + signatories: + description: | + Signatories to the contract, in the form of party IDs. + type: array + items: + type: string + observers: + description: | + Observers to the contract, in the form of party IDs. + type: array + items: + type: string + ExercisedEvent: + type: object + required: + - event_type + - event_id + - contract_id + - template_id + - package_name + - choice + - choice_argument + - child_event_ids + - exercise_result + - consuming + - acting_parties + properties: + event_type: + type: string + event_id: + description: | + The ID of this particular event. Equal to the key of this element of + the containing `events_by_id` if this is part of a `TreeEvent`. + type: string + contract_id: + description: | + The ID of the created contract. + type: string + template_id: + description: | + The template of the created contract. + type: string + package_name: + description: | + The package name of the created contract. + type: string + choice: + description: | + The choice that was exercised on the target contract, as an unqualified + choice name, i.e. with no package or module name qualifiers. + type: string + choice_argument: + description: | + The argument of the exercised choice, in the form of JSON + representation of a Daml value. This is usually a record with field + names being the argument names, even in the case of a single apparent + choice argument, which is represented as a single-element Daml record. + type: object + child_event_ids: + description: | + References to further events in the same transaction that appeared as a result of this ExercisedEvent. + It contains only the immediate children of this event, not all members of the subtree rooted at this node. + The order of the children is the same as the event order in the transaction. + type: array + items: + type: string + exercise_result: + description: | + The result of exercising the choice, as the JSON representation of a + Daml value. + type: object + consuming: + description: | + If true, the target contract may no longer be exercised. + type: boolean + acting_parties: + description: | + The parties that exercised the choice, in the form of party IDs. + type: array + items: + type: string + interface_id: + description: | + The interface where the choice is defined, if inherited. + type: string + AcsSnapshotTimestampResponse: + type: object + required: + - record_time + properties: + record_time: + type: string + format: date-time + description: | + The record time of the last transaction in the snapshot. + AcsRequest: + type: object + required: + - migration_id + - record_time + - page_size + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the ACS. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + after: + type: integer + format: int64 + description: | + Pagination token for the next page of results. For this to be valid, + this must be the `next_page_token` from a prior request with identical + parameters aside from `after` and `page_size`; the response may be + invalid otherwise. + page_size: + description: | + The maximum number of created events returned for this request. + type: integer + format: int32 + party_ids: + type: array + items: + type: string + description: | + Filters the ACS by contracts in which these party IDs are stakeholders. + templates: + type: array + items: + type: string + description: | + Filters the ACS by contracts with these template IDs, specified as "PACKAGE_NAME:MODULE_NAME:ENTITY_NAME". + HoldingsStateRequest: + type: object + required: + - migration_id + - record_time + - page_size + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the ACS. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + after: + type: integer + format: int64 + description: | + Pagination token for the next page of results. + page_size: + description: | + The maximum number of created events returned for this request. + type: integer + format: int32 + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + Filters by contracts in which these party_ids are the owners of the amulets. + HoldingsSummaryRequest: + type: object + required: + - migration_id + - record_time + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the summary. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + The owners for which to compute the summary. + as_of_round: + type: integer + format: int64 + description: | + Compute holding fees as of this round. Defaults to the earliest open mining round. + HoldingsSummaryRequestV1: + type: object + required: + - migration_id + - record_time + - owner_party_ids + properties: + migration_id: + type: integer + format: int64 + description: | + The migration id for which to return the summary. + record_time: + type: string + format: date-time + description: | + The timestamp at which the contract set was active. + This needs to be an exact timestamp, i.e., + needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + record_time_match: + type: string + description: | + How to match the record_time. "exact" requires the record_time to match exactly. + "at_or_before" finds the most recent snapshot at or before the given record_time. + enum: + - exact + - at_or_before + default: exact + owner_party_ids: + type: array + items: + type: string + minItems: 1 + description: | + The owners for which to compute the summary. + ForceAcsSnapshotResponse: + type: object + required: + - record_time + - migration_id + properties: + record_time: + description: | + The [recent] time for which this ACS snapshot was persisted. + type: string + format: date-time + migration_id: + description: The current migration ID of the Scan. + type: integer + format: int64 + AcsResponse: + type: object + required: + - record_time + - migration_id + - created_events + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + created_events: + description: | + Up to `page_size` contracts in the ACS. + `create_arguments` are always encoded as `compact_json`. + type: array + items: + $ref: '#/components/schemas/CreatedEvent' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as `after` + to the `AcsRequest` or `HoldingsStateRequest`. + Will be absent when there are no more pages. + AcsResponseV1: + type: object + required: + - record_time + - migration_id + - created_events + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + created_events: + description: | + Up to `page_size` contracts in the ACS. + `create_arguments` are always encoded as `compact_json`. + type: array + items: + $ref: '#/components/schemas/ActiveContract' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as `after` + to the `AcsRequest` or `HoldingsStateRequest`. + Will be absent when there are no more pages. + HoldingsSummaryResponse: + type: object + required: + - record_time + - migration_id + - computed_as_of_round + - summaries + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + computed_as_of_round: + description: The same `as_of_round` as in the request, with the same default. + type: integer + format: int64 + summaries: + type: array + items: + $ref: '#/components/schemas/HoldingsSummary' + HoldingsSummary: + description: Aggregate Amulet totals for a particular owner party ID. + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + - accumulated_holding_fees_unlocked + - accumulated_holding_fees_locked + - accumulated_holding_fees_total + - total_available_coin + properties: + party_id: + description: | + Owner party ID of the amulet. Guaranteed to be unique among `summaries`. + type: string + total_unlocked_coin: + description: | + Sum of unlocked amulet at time of reception, not counting holding + fees deducted since. + type: string + total_locked_coin: + description: | + Sum of locked amulet at time of original amulet reception, not + counting holding fees deducted since. + type: string + total_coin_holdings: + description: | + `total_unlocked_coin` + `total_locked_coin`. + type: string + accumulated_holding_fees_unlocked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + unlocked amulet. + type: string + accumulated_holding_fees_locked: + description: | + Sum of holding fees as of `computed_as_of_round` that apply to + locked amulet, including fees applied since the amulet's creation + round. + type: string + accumulated_holding_fees_total: + description: | + Same as `accumulated_holding_fees_unlocked` + `accumulated_holding_fees_locked`. + type: string + total_available_coin: + description: Same as `total_unlocked_coin` - `accumulated_holding_fees_unlocked`. + type: string + HoldingsSummaryResponseV1: + type: object + required: + - record_time + - migration_id + - summaries + properties: + record_time: + description: The same `record_time` as in the request. + type: string + format: date-time + migration_id: + description: The same `migration_id` as in the request. + type: integer + format: int64 + summaries: + type: array + items: + $ref: '#/components/schemas/HoldingsSummaryV1' + HoldingsSummaryV1: + description: Aggregate Amulet totals for a particular owner party ID. + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + properties: + party_id: + description: | + Owner party ID of the amulet. Guaranteed to be unique among `summaries`. + type: string + total_unlocked_coin: + description: | + Sum of unlocked amulet initial amounts, not counting holding + fees deducted since. + type: string + total_locked_coin: + description: | + Sum of locked amulet initial amounts, not + counting holding fees deducted since. + type: string + total_coin_holdings: + description: | + `total_unlocked_coin` + `total_locked_coin`. + type: string + Transfer: + description: | + A transfer between one sender and possibly many receivers + type: object + required: + - sender + - receivers + - balance_changes + properties: + sender: + description: | + The sender amounts and fees. + $ref: '#/components/schemas/SenderAmount' + receivers: + description: | + The amounts and fees per receiver. + type: array + items: + $ref: '#/components/schemas/ReceiverAmount' + balance_changes: + description: | + Normalized balance changes per party caused by this transfer. + type: array + items: + $ref: '#/components/schemas/BalanceChange' + description: + type: string + transferInstructionReceiver: + type: string + transferInstructionAmount: + type: string + transferInstructionCid: + type: string + transfer_kind: + type: string + enum: + - create_transfer_instruction + - transfer_instruction_accept + - preapproval_send + AbortTransferInstruction: + type: object + required: + - abort_kind + - transfer_instruction_cid + properties: + abort_kind: + type: string + enum: + - withdraw + - reject + transfer_instruction_cid: + type: string + BalanceChange: + type: object + required: + - party + - change_to_initial_amount_as_of_round_zero + - change_to_holding_fees_rate + properties: + party: + description: | + The party for which the balance changes. + type: string + change_to_initial_amount_as_of_round_zero: + description: | + The change to the total balance introduced by this balance change, normalized to round zero, i.e., + a amulet created in round 3 is treated as a amulet created in round 0 with a higher initial amount. + type: string + change_to_holding_fees_rate: + description: | + The change of total holding fees introduced by this balance change. + type: string + AmuletAmount: + type: object + required: + - amulet_owner + - amulet_amount + properties: + amulet_owner: + description: | + The party that owns the amulet. + type: string + amulet_amount: + description: | + The amulet amount. + type: string + SenderAmount: + type: object + required: + - party + - sender_change_fee + - sender_change_amount + - sender_fee + - holding_fees + properties: + party: + description: | + The sender who has transferred amulet. + type: string + input_amulet_amount: + description: | + Total amount of amulet input into this transfer, before deducting holding fees. + type: string + input_app_reward_amount: + description: | + Total amount of app rewards input into this transfer. + type: string + input_validator_reward_amount: + description: | + Total amount of validator rewards input into this transfer. + type: string + input_sv_reward_amount: + description: | + Total amount of sv rewards input into this transfer. + type: string + input_validator_faucet_amount: + description: | + Total amount of validator faucet coupon issuance input into this transfer. + type: string + sender_change_fee: + description: | + Fee charged for returning change to the sender, + which is the smaller of the left-over balance after paying for all outputs + or one amulet create fee. + type: string + sender_change_amount: + description: | + The final amount of amulet returned to the sender after paying for all outputs and fees. + type: string + sender_fee: + description: | + Total fees paid by the sender, based on receiver's receiver_fee_ratio on outputs + type: string + holding_fees: + description: | + Holding fees paid by the sender on their input amulets. + type: string + ReceiverAmount: + type: object + required: + - party + - amount + - receiver_fee + properties: + party: + description: | + The receiver who will own the created output amulet. + type: string + amount: + description: | + The amount of amulet to receive, before deducting receiver's part of the fees. + type: string + receiver_fee: + description: | + Total fees paid by the receiver, based on receiver_fee_ratio on outputs + type: string + ListEntriesResponse: + type: object + required: + - entries + properties: + entries: + type: array + items: + $ref: '#/components/schemas/AnsEntry' + LookupEntryByPartyResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + LookupEntryByNameResponse: + type: object + required: + - entry + properties: + entry: + $ref: '#/components/schemas/AnsEntry' + LookupTransferPreapprovalByPartyResponse: + description: A Daml contract of template `Splice.AmuletRules:TransferPreapproval`. + type: object + required: + - transfer_preapproval + properties: + transfer_preapproval: + $ref: '#/components/schemas/ContractWithState' + LookupTransferCommandCounterByPartyResponse: + description: A Daml contract of template `Splice.ExternalPartyAmuletRules:TransferCommandCounter`. + type: object + required: + - transfer_command_counter + properties: + transfer_command_counter: + $ref: '#/components/schemas/ContractWithState' + LookupTransferCommandStatusResponse: + type: object + required: + - transfer_commands_by_contract_id + properties: + transfer_commands_by_contract_id: + $ref: '#/components/schemas/TransferCommandMap' + TransferCommandMap: + type: object + additionalProperties: + $ref: '#/components/schemas/TransferCommandContractWithStatus' + TransferCommandContractWithStatus: + description: | + A contract of Daml template `Splice.ExternalPartyAmuletRules:TransferCommand`, + and its status determined by the latest transactions. + type: object + required: + - contract + - status + properties: + contract: + $ref: '#/components/schemas/Contract' + status: + $ref: '#/components/schemas/TransferCommandContractStatus' + TransferCommandContractStatus: + type: object + oneOf: + - $ref: '#/components/schemas/TransferCommandCreatedResponse' + - $ref: '#/components/schemas/TransferCommandSentResponse' + - $ref: '#/components/schemas/TransferCommandFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/TransferCommandCreatedResponse' + sent: '#/components/schemas/TransferCommandSentResponse' + failed: '#/components/schemas/TransferCommandFailedResponse' + BaseLookupTransferCommandStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the transfer command. + created: + The transfer command has been created and is waiting for automation to complete it. + sent: + The transfer command has been completed and the transfer to the receiver has finished. + failed: + The transfer command has failed permanently and nothing has been transferred. Refer to + failure_reason for details. A new transfer command can be created. + TransferCommandCreatedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandSentResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + TransferCommandFailedResponse: + type: object + allOf: + - $ref: '#/components/schemas/BaseLookupTransferCommandStatusResponse' + - type: object + required: + - failure_kind + - reason + properties: + failure_kind: + type: string + description: | + The reason for the failure of the TransferCommand. + failed: + Completing the transfer failed, check the reason for details. + withdrawn: + The sender has withdrawn the TransferCommand before it could be completed. + expired: + The expiry time on the TransferCommand was reached before it could be completed. + enum: + - failed + - expired + - withdrawn + reason: + type: string + description: | + Human readable description of the failure + GetAcsSnapshotResponse: + type: object + required: + - acs_snapshot + properties: + acs_snapshot: + description: base64-encoded ACS snapshot for the intersection of the DSO party and the requested party’s ACS + type: string + AnsEntry: + type: object + required: + - user + - name + - url + - description + properties: + contract_id: + description: | + If present, Daml contract ID of template `Splice.Ans:AnsEntry`. + If absent, this is a DSO-provided entry for either the DSO or an SV. + type: string + user: + description: Owner party ID of this ANS entry. + type: string + name: + description: The ANS entry name. + type: string + url: + description: Either empty, or an http/https URL supplied by the `user`. + type: string + description: + description: Arbitrary description text supplied by `user`; may be empty. + type: string + expires_at: + description: | + Time after which this ANS entry expires; if renewed, it will have a + new `contract_id` and `expires_at`. + If `null` or absent, does not expire; this is the case only for + special entries provided by the DSO. + type: string + format: date-time + MigrationSchedule: + type: object + required: + - time + - migration_id + properties: + time: + type: string + format: date-time + migration_id: + type: integer + format: int64 + GetMigrationIdResponse: + type: object + required: + - migration_id + properties: + migration_id: + type: integer + format: int64 + SynchronizerIdentities: + type: object + required: + - sequencer_id + - sequencer_identity_transactions + - mediator_id + - mediator_identity_transactions + properties: + sequencer_id: + type: string + sequencer_identity_transactions: + type: array + items: + type: string + mediator_id: + type: string + mediator_identity_transactions: + type: array + items: + type: string + SynchronizerBootstrappingTransactions: + type: object + required: + - domain_parameters + - sequencer_domain_state + - mediator_domain_state + properties: + domain_parameters: + type: string + sequencer_domain_state: + type: string + mediator_domain_state: + type: string + GetMigrationInfoRequest: + type: object + required: + - migration_id + properties: + migration_id: + type: integer + format: int64 + GetMigrationInfoResponse: + type: object + required: + - record_time_range + - complete + properties: + previous_migration_id: + description: | + The migration id that was active before the given migration id, if any. + type: integer + format: int64 + record_time_range: + description: | + All domains for which there are updates in the given migration id, + along with the record time of the newest and oldest update associated with each domain + type: array + items: + $ref: '#/components/schemas/RecordTimeRange' + last_import_update_id: + description: | + The update id of the last import update (where import updates are sorted by update id, ascending) + for the given migration id, if any + type: string + complete: + description: | + True if this scan has all non-import updates for given migration id + type: boolean + import_updates_complete: + description: | + True if this scan has all import updates for the given migration id + type: boolean + RecordTimeRange: + type: object + required: + - synchronizer_id + - min + - max + properties: + synchronizer_id: + type: string + min: + type: string + format: date-time + max: + type: string + format: date-time + GetUpdatesBeforeRequest: + type: object + required: + - migration_id + - synchronizer_id + - before + - count + properties: + migration_id: + type: integer + format: int64 + synchronizer_id: + type: string + before: + description: | + Only return updates with a record time strictly smaller than this time. + type: string + format: date-time + at_or_after: + description: | + Only return updates with a record time equal to or greater than this time. + type: string + format: date-time + count: + description: | + Return at most this many updates. The actual number of updates returned may be smaller. + type: integer + format: int32 + GetUpdatesBeforeResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItem' + GetImportUpdatesRequest: + type: object + required: + - migration_id + - after_update_id + - limit + properties: + migration_id: + type: integer + format: int64 + after_update_id: + description: | + Only return updates with an update id strictly greater than this. + type: string + limit: + description: | + Return at most this many updates. The actual number of updates returned may be smaller. + type: integer + format: int32 + GetImportUpdatesResponse: + type: object + required: + - transactions + properties: + transactions: + type: array + items: + $ref: '#/components/schemas/UpdateHistoryItem' + DamlValueEncoding: + type: string + description: | + How daml values should be encoded in the response. + "compact_json" is a compact, human-readable JSON encoding. It is the same encoding + as the one used in the HTTP JSON API or the JavaScript codegen. + "protobuf_json" is a verbose JSON encoding that is more difficult to parse, + but contains type information, i.e., the values can be parsed losslessly + without having access to the Daml source code. + Optional and defaults to "compact_json". + enum: + - compact_json + - protobuf_json + GetMemberTrafficStatusResponse: + type: object + required: + - traffic_status + properties: + traffic_status: + description: | + The current traffic state for the member on the synchronizer under + `actual`, and the total purchased traffic under `target`. The purchased + traffic may exceed the `actual` limit as purchases take time to be + incorporated into the limit. + $ref: '#/components/schemas/MemberTrafficStatus' + MemberTrafficStatus: + type: object + required: + - actual + - target + properties: + actual: + description: The current traffic state for the member on the synchronizer + $ref: '#/components/schemas/ActualMemberTrafficState' + target: + description: Total purchased traffic; may exceed limit in `actual` + $ref: '#/components/schemas/TargetMemberTrafficState' + ActualMemberTrafficState: + type: object + required: + - total_consumed + - total_limit + properties: + total_consumed: + description: | + Total extra traffic consumed by the member on the given synchronizer + type: integer + format: int64 + total_limit: + description: | + Current extra traffic limit set for the member on the given synchronizer. + An extra traffic top-up is complete once total_limit matches total_purchased. + type: integer + format: int64 + TargetMemberTrafficState: + type: object + required: + - total_purchased + properties: + total_purchased: + description: | + Total extra traffic purchased for the member on the given + synchronizer in bytes. + type: integer + format: int64 + GetPartyToParticipantResponse: + type: object + required: + - participant_id + properties: + participant_id: + description: | + ID of the participant hosting the provided party, in the form + `PAR::id::fingerprint` + type: string + GetPartyToParticipantResponseV1: + type: object + required: + - participant_ids + properties: + participant_ids: + description: | + IDs of the participants hosting the provided party, each in the form + `PAR::id::fingerprint` + type: array + items: + type: string + GetValidatorFaucetsByValidatorResponse: + type: object + required: + - validatorsReceivedFaucets + properties: + validatorsReceivedFaucets: + description: | + Statistics for any party ID arguments found to have valid onboarding + licenses; the order in the response is unrelated to argument order. + type: array + items: + $ref: '#/components/schemas/ValidatorReceivedFaucets' + ValidatorReceivedFaucets: + type: object + required: + - validator + - numRoundsCollected + - numRoundsMissed + - firstCollectedInRound + - lastCollectedInRound + properties: + validator: + description: The party ID of the onboarded validator + type: string + numRoundsCollected: + description: | + how many rounds the validator has received a faucet for; guaranteed + that collected + missed = last - first + 1 + type: integer + format: int64 + numRoundsMissed: + description: | + how many rounds between firstCollected and lastCollected in which + the validator failed to collect (i.e. was not active or available); + can at most be max(0, lastCollected - firstCollected - 1). + type: integer + format: int64 + firstCollectedInRound: + description: | + the round number when this validator started collecting faucets; + the validator definitely recorded liveness in this round + type: integer + format: int64 + lastCollectedInRound: + description: | + The most recent round number in which the validator collected a faucet; + the validator definitely recorded liveness in this round. Will equal + `firstCollected` if the validator has collected in only one round + type: integer + format: int64 + GetBackfillingStatusResponse: + type: object + required: + - complete + properties: + complete: + description: | + True if ALL backfilling processes are complete, false otherwise. + + Some scan endpoints return error responses if backfilling is not complete + (e.g., `/v1/updates`), others return partial results (e.g., `/v0/transactions`). + This endpoint is a simple indicator for whether historical information may be incomplete. + + To determine the progress of individual backfilling processes, inspect the corresponding metrics. + type: boolean + EventHistoryRequest: + type: object + required: + - page_size + properties: + after: + $ref: '#/components/schemas/UpdateHistoryRequestAfter' + description: | + The events returned will either have a higher migration id or + the same migration id and a record_time greater than the migration id and record time + specified. + page_size: + description: | + The maximum number of events returned for this request. + type: integer + format: int32 + minimum: 1 + maximum: 1000 + daml_value_encoding: + $ref: '#/components/schemas/DamlValueEncoding' + EventHistoryResponse: + type: object + required: + - events + properties: + events: + type: array + items: + $ref: '#/components/schemas/EventHistoryItem' + EventHistoryItem: + type: object + description: | + An event history item may contain a transaction update, a verdict from a mediator, both, or a contract reassignment. + If an event pertains to a contract reassignment, there will be no verdict data. + If an event pertains to a wholly private transaction, there will only be verdict data. + If an event pertains to a transaction that is partially private, it may also bear verdict information for the private portions. + When both fields are present, the transaction and verdict have the same `update_id` and `record_time`. + + For networks where the SVs enable activity record computation, + a traffic summary and app activity record are present when + a verdict is present. + properties: + update: + $ref: '#/components/schemas/UpdateHistoryItemV2' + nullable: true + verdict: + $ref: '#/components/schemas/EventHistoryVerdict' + nullable: true + traffic_summary: + $ref: '#/components/schemas/EventHistoryTrafficSummary' + nullable: true + app_activity_records: + $ref: '#/components/schemas/EventHistoryAppActivityRecords' + nullable: true + EventHistoryVerdict: + type: object + required: + - update_id + - migration_id + - domain_id + - record_time + - finalization_time + - submitting_parties + - submitting_participant_uid + - verdict_result + - mediator_group + - transaction_views + properties: + update_id: + description: | + The ID of the transaction update associated with this verdict. + type: string + migration_id: + description: | + The migration id of the domain through which this event was sequenced. + type: integer + format: int64 + domain_id: + description: | + The id of the domain through which this event was sequenced. + type: string + record_time: + description: | + The record_time of the transaction the verdict corresponds to. + type: string + finalization_time: + description: | + The finalization_time of the transaction the verdict corresponds to. + Note that this time might be different between different scans/mediators. + type: string + submitting_parties: + description: | + Parties on whose behalf the transaction was submitted. + type: array + items: + type: string + submitting_participant_uid: + description: | + UID of the submitting participant. + type: string + verdict_result: + description: | + Result of the verdict. + $ref: '#/components/schemas/VerdictResult' + mediator_group: + description: | + The mediator group which finalized this verdict. + type: integer + format: int32 + transaction_views: + $ref: '#/components/schemas/TransactionViews' + TransactionViews: + type: object + required: + - views + - root_views + properties: + views: + type: array + items: + $ref: '#/components/schemas/TransactionView' + root_views: + type: array + items: + type: integer + format: int32 + TransactionView: + type: object + required: + - view_id + - informees + - confirming_parties + - sub_views + - view_hash + properties: + view_id: + type: integer + format: int32 + informees: + type: array + items: + type: string + confirming_parties: + type: array + items: + $ref: '#/components/schemas/Quorum' + sub_views: + type: array + items: + type: integer + format: int32 + view_hash: + description: Hash of the view, for correlation with sequencer traffic data. Empty for older data ingested before this field was added. + type: string + Quorum: + type: object + required: + - parties + - threshold + properties: + parties: + type: array + items: + type: string + threshold: + type: integer + format: int32 + VerdictResult: + type: string + enum: + - VERDICT_RESULT_UNSPECIFIED + - VERDICT_RESULT_ACCEPTED + - VERDICT_RESULT_REJECTED + EventHistoryTrafficSummary: + type: object + description: | + Traffic summary data from the sequencer for the confirmation request corresponding to an event. + required: + - total_traffic_cost + - envelope_traffic_summaries + properties: + total_traffic_cost: + description: | + Total traffic cost of the confirmation request paid by the validator node that submitted it. + type: integer + format: int64 + envelope_traffic_summaries: + description: | + Summary of traffic-related data for all envelopes in the confirmation request. + type: array + items: + $ref: '#/components/schemas/EnvelopeTrafficSummary' + EnvelopeTrafficSummary: + type: object + description: | + Traffic cost for a single envelope and the view IDs contained in it + required: + - traffic_cost + - view_ids + properties: + traffic_cost: + description: | + Traffic cost in bytes for this envelope. + type: integer + format: int64 + view_ids: + description: | + View IDs from the verdict contained in this envelope + type: array + items: + type: integer + format: int32 + EventHistoryAppActivityRecords: + type: object + description: | + App activity record computed from verdicts and traffic summaries + as per [CIP-104](https://github.com/canton-foundation/cips/blob/main/cip-0104/cip-0104.md). + required: + - round_number + - records + properties: + round_number: + description: | + The round number assigned to the activity records. + type: integer + format: int64 + records: + description: | + App activity records, one per app provider. + type: array + items: + $ref: '#/components/schemas/AppActivityRecord' + AppActivityRecord: + type: object + description: | + ActivityRecord for an app. + required: + - party + - weight + properties: + party: + description: | + The app provider party identifier. + type: string + weight: + description: | + Activity weight in bytes of traffic. + type: integer + format: int64 + ListUnclaimedDevelopmentFundCouponsResponse: + type: object + required: + - unclaimed-development-fund-coupons + properties: + unclaimed-development-fund-coupons: + description: | + Contracts of the Daml template `Splice.Amulet:UnclaimedDevelopmentFundCoupon`. + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListBulkAcsSnapshotObjectsResponse: + type: object + required: + - record_time + - object_refs + properties: + record_time: + description: | + The record time for which the ACS snapshot was taken. + type: string + format: date-time + object_refs: + description: | + The list of references to the bulk storage objects containing the ACS snapshot data. + type: array + items: + $ref: '#/components/schemas/BulkStorageObjectRef' + ListBulkUpdateHistoryObjectsRequest: + type: object + required: + - start_record_time + - end_record_time + - page_size + properties: + start_record_time: + description: | + The returned objects must include all updates with record time greater than start_record_time (but may also include updates before it). + type: string + format: date-time + end_record_time: + description: | + The returned objects must include all updates with record time at most end_record_time (but may also include updates after it). + type: string + format: date-time + next_page_token: + type: string + description: | + The pagination token returned from a previous call to this endpoint with the same arguments. + page_size: + description: | + The maximum number of objects returned for this request. + type: integer + format: int32 + minimum: 1 + maximum: 1000 + ListBulkUpdateHistoryObjectsResponse: + type: object + required: + - object_refs + properties: + object_refs: + description: | + The list of references to the bulk storage objects containing the updates. + type: array + items: + $ref: '#/components/schemas/BulkStorageObjectRef' + next_page_token: + type: string + description: | + When requesting the next page of results, pass this as `after` + to the next `ListBulkUpdateHistoryObjectsRequest` invocation. + Will be absent when there are no more pages. + BulkStorageObjectRef: + type: object + required: + - url + - digest + properties: + url: + description: | + The URL from which the bulk storage object can be downloaded. + type: string + digest: + description: | + The sha256 digest of the bulk storage object, for verification of integrity and consistency across SVs. + type: string + GetRewardAccountingEarliestAvailableRoundResponse: + type: object + required: + - earliest_round + properties: + earliest_round: + type: integer + format: int64 + GetRewardAccountingActivityTotalsResponse: + type: object + oneOf: + - $ref: '#/components/schemas/RewardAccountingActivityTotalsOk' + - $ref: '#/components/schemas/RewardAccountingActivityTotalsUndetermined' + - $ref: '#/components/schemas/RewardAccountingActivityTotalsCannotProvide' + discriminator: + propertyName: status + mapping: + Ok: '#/components/schemas/RewardAccountingActivityTotalsOk' + Undetermined: '#/components/schemas/RewardAccountingActivityTotalsUndetermined' + CannotProvide: '#/components/schemas/RewardAccountingActivityTotalsCannotProvide' + RewardAccountingActivityTotalsOk: + type: object + required: + - status + - round_number + - total_app_activity_weight + - active_parties_count + - activity_records_count + - total_app_reward_minting_allowance + - total_app_reward_thresholded + - total_app_reward_unclaimed + - rewarded_app_provider_parties_count + properties: + status: + type: string + round_number: + type: integer + format: int64 + total_app_activity_weight: + type: integer + format: int64 + active_parties_count: + type: integer + format: int64 + activity_records_count: + type: integer + format: int64 + total_app_reward_minting_allowance: + type: string + description: The total of all minting allowances granted to app providers in this round. + total_app_reward_thresholded: + type: string + description: Total amount of minting allowances that fell below the configured app reward threshold and was thus burned. + total_app_reward_unclaimed: + type: string + description: Total amount of app rewards which could not be attributed to app providers in this round because of limit on app rewards per activity (aka the app rewards cap). + rewarded_app_provider_parties_count: + type: integer + format: int64 + RewardAccountingActivityTotalsUndetermined: + type: object + required: + - status + properties: + status: + type: string + RewardAccountingActivityTotalsCannotProvide: + type: object + required: + - status + properties: + status: + type: string + GetRewardAccountingRootHashResponse: + type: object + oneOf: + - $ref: '#/components/schemas/RewardAccountingRootHashOk' + - $ref: '#/components/schemas/RewardAccountingRootHashUndetermined' + - $ref: '#/components/schemas/RewardAccountingRootHashCannotProvide' + discriminator: + propertyName: status + mapping: + Ok: '#/components/schemas/RewardAccountingRootHashOk' + Undetermined: '#/components/schemas/RewardAccountingRootHashUndetermined' + CannotProvide: '#/components/schemas/RewardAccountingRootHashCannotProvide' + RewardAccountingRootHashOk: + type: object + required: + - status + - round_number + - root_hash + properties: + status: + type: string + round_number: + type: integer + format: int64 + root_hash: + type: string + description: Hex-encoded root hash + RewardAccountingRootHashUndetermined: + type: object + required: + - status + properties: + status: + type: string + RewardAccountingRootHashCannotProvide: + type: object + required: + - status + properties: + status: + type: string + GetRewardAccountingBatchResponse: + type: object + oneOf: + - $ref: '#/components/schemas/RewardAccountingBatchOfBatches' + - $ref: '#/components/schemas/RewardAccountingBatchOfMintingAllowances' + discriminator: + propertyName: batch_type + mapping: + BatchOfBatches: '#/components/schemas/RewardAccountingBatchOfBatches' + BatchOfMintingAllowances: '#/components/schemas/RewardAccountingBatchOfMintingAllowances' + BaseRewardAccountingBatch: + type: object + required: + - batch_type + properties: + batch_type: + type: string + description: | + The type of batch. + BatchOfBatches: Contains child batch hashes. + BatchOfMintingAllowances: Contains party + amount pairs. + RewardAccountingBatchOfBatches: + type: object + allOf: + - $ref: '#/components/schemas/BaseRewardAccountingBatch' + - type: object + required: + - child_hashes + properties: + child_hashes: + type: array + items: + type: string + description: Hex-encoded child batch hashes + RewardAccountingBatchOfMintingAllowances: + type: object + allOf: + - $ref: '#/components/schemas/BaseRewardAccountingBatch' + - type: object + required: + - minting_allowances + properties: + minting_allowances: + type: array + items: + $ref: '#/components/schemas/RewardAccountingMintingAllowance' + description: Party + amount pairs + RewardAccountingMintingAllowance: + type: object + required: + - provider + - amount + properties: + provider: + type: string + amount: + type: string + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + ListValidatorLicensesResponse: + type: object + required: + - validator_licenses + properties: + validator_licenses: + description: Contracts of Daml template `Splice.ValidatorLicense:ValidatorLicense`. + type: array + items: + $ref: '#/components/schemas/Contract' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + ContractId: + type: string + MaybeCachedContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + MaybeCachedContractWithStateMap: + description: | + Always created with respect to an input set of contract IDs. If an input + contract ID is absent from the keys of this map, that contract should be + considered removed by the caller; if present, `contract` may be empty, + reflecting that the caller should already have the full contract data + for that contract ID. Contracts not present in the input set will have + full contract data. `domain_id` is always up-to-date; if undefined the + contract is currently unassigned to a synchronizer, i.e. "in-flight". + type: object + additionalProperties: + $ref: '#/components/schemas/MaybeCachedContractWithState' + ListAmuletPriceVotesResponse: + description: Contracts of Daml template `Splice.DSO:AmuletPrice:AmuletPriceVote`. + type: object + required: + - amulet_price_votes + properties: + amulet_price_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + BatchListVotesByVoteRequestsRequest: + type: object + required: + - vote_request_contract_ids + properties: + vote_request_contract_ids: + description: Contract IDs of Daml template `Splice.DsoRules:VoteRequest`. + type: array + items: + type: string + ListVoteRequestByTrackingCidResponse: + type: object + required: + - vote_requests + properties: + vote_requests: + description: | + Contracts of Daml template `Splice.DsoRules:VoteRequest` that match + `vote_request_contract_ids` in the request. + type: array + items: + $ref: '#/components/schemas/Contract' + LookupDsoRulesVoteRequestResponse: + description: A contract of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_request + properties: + dso_rules_vote_request: + $ref: '#/components/schemas/Contract' + ListDsoRulesVoteRequestsResponse: + description: Contracts of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_requests + properties: + dso_rules_vote_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListVoteResultsRequest: + type: object + required: + - limit + properties: + actionName: + type: string + accepted: + type: boolean + requester: + type: string + effectiveFrom: + type: string + effectiveTo: + type: string + limit: + type: integer + pageToken: + type: integer + description: | + Cursor for pagination. When requesting the next page of results, pass the `next_page_token` from the previous response. + Results are ordered by effective date (the accepted vote's effectiveAt, or the result's completedAt otherwise), descending. + ListDsoRulesVoteResultsResponse: + type: object + required: + - dso_rules_vote_results + properties: + dso_rules_vote_results: + type: array + items: + type: object + next_page_token: + type: integer + description: | + Cursor for the next page of results. Pass this as `pageToken` in the request. + If absent or `null`, there are no more pages. + PreviousSvRewardWeightRequest: + type: object + required: + - svParty + properties: + svParty: + type: string + effectiveBefore: + type: string + description: | + Only consider reward weight changes that took effect strictly before this time. + PreviousSvRewardWeightResponse: + type: object + properties: + rewardWeight: + type: string + description: | + The SV's reward weight set by the most recent accepted `UpdateSvRewardWeight` proposal + before `effectiveBefore`, or absent if there is no such proposal. + FeatureSupportResponse: + type: object + required: [] + properties: + dummy: + type: boolean + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: not implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.6.12/splitwell-internal.yaml b/api-specs/splice/0.6.12/splitwell-internal.yaml new file mode 100644 index 000000000..e5753e7ec --- /dev/null +++ b/api-specs/splice/0.6.12/splitwell-internal.yaml @@ -0,0 +1,468 @@ +openapi: 3.0.0 +info: + title: Splitwell API + version: 0.0.1 +servers: + - url: https://example.com/api/splitwell +tags: + - name: splitwell +paths: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /splitwell-installs: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listSplitwellInstalls + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSplitwellInstallsResponse' + /splitwell-rules: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listSplitwellRules + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSplitwellRulesResponse' + /groups: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listGroups + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListGroupsResponse' + /group-invites: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listGroupInvites + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListGroupInvitesResponse' + /accepted-group-invites: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listAcceptedGroupInvites + parameters: + - name: party + in: query + required: true + schema: + type: string + - name: group_id + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAcceptedGroupInvitesResponse' + /balance-updates: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listBalanceUpdates + parameters: + - name: party + in: query + required: true + schema: + type: string + - name: group_id + in: query + required: true + schema: + type: string + - name: owner_party_id + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListBalanceUpdatesResponse' + /balances: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: listBalances + parameters: + - name: party + in: query + required: true + schema: + type: string + - name: group_id + in: query + required: true + schema: + type: string + - name: owner_party_id + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListBalancesResponse' + /connected-domains: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: getConnectedDomains + parameters: + - name: party + in: query + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetConnectedDomainsResponse' + /splitwell-domains: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: getSplitwellDomainIds + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSplitwellDomainIdsResponse' + /provider-party-id: + get: + tags: + - splitwell + x-jvm-package: splitwell + operationId: getProviderPartyId + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetProviderPartyIdResponse' +components: + schemas: + SplitwellInstall: + type: object + required: + - contract_id + - domain_id + properties: + contract_id: + type: string + domain_id: + type: string + ListSplitwellInstallsResponse: + type: object + required: + - installs + properties: + installs: + type: array + items: + $ref: '#/components/schemas/SplitwellInstall' + ListSplitwellRulesResponse: + type: object + required: + - rules + properties: + rules: + type: array + items: + $ref: '#/components/schemas/AssignedContract' + ListGroupsResponse: + type: object + required: + - groups + properties: + groups: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListGroupInvitesResponse: + type: object + required: + - group_invites + properties: + group_invites: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListAcceptedGroupInvitesResponse: + type: object + required: + - accepted_group_invites + properties: + accepted_group_invites: + type: array + items: + $ref: '#/components/schemas/Contract' + ListBalanceUpdatesResponse: + type: object + required: + - balance_updates + properties: + balance_updates: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListBalancesResponse: + type: object + required: + - balances + properties: + balances: + type: object + additionalProperties: + type: string + GetConnectedDomainsResponse: + type: object + required: + - domain_ids + properties: + domain_ids: + type: array + items: + type: string + GetSplitwellDomainIdsResponse: + type: object + required: + - preferred + - other_domain_ids + properties: + preferred: + type: string + other_domain_ids: + type: array + items: + type: string + GetProviderPartyIdResponse: + type: object + required: + - provider_party_id + properties: + provider_party_id: + type: string + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + AssignedContract: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + - domain_id + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract diff --git a/api-specs/splice/0.6.12/sv-internal.yaml b/api-specs/splice/0.6.12/sv-internal.yaml new file mode 100644 index 000000000..cf18fddda --- /dev/null +++ b/api-specs/splice/0.6.12/sv-internal.yaml @@ -0,0 +1,1606 @@ +openapi: 3.0.0 +info: + title: SV API + version: 0.0.1 +servers: + - url: https://example.com/api/sv +tags: + - name: sv +paths: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /status: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getHealthStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + /version: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: getVersion + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Version' + /v0/admin/validator/onboarding/ongoing: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: listOngoingValidatorOnboardings + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOngoingValidatorOnboardingsResponse' + /v0/admin/validator/onboarding/prepare: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: prepareValidatorOnboarding + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareValidatorOnboardingRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareValidatorOnboardingResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/validator/licenses: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: listValidatorLicenses + parameters: + - name: after + in: query + required: false + schema: + type: integer + format: int64 + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorLicensesResponse' + /v0/admin/domain/cometbft/status: + get: + tags: + - sv + x-jvm-package: sv_public + operationId: getCometBftNodeStatus + responses: + '200': + description: Response returned by the CometBFT node, or the error if the call failed + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftNodeStatusOrErrorResponse' + '404': + description: CometBFT is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/domain/cometbft/json-rpc: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: cometBftJsonRpcRequest + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftJsonRpcRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftJsonRpcOrErrorResponse' + '404': + description: CometBFT is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/domain/cometbft/debug: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: getCometBftNodeDebugDump + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CometBftNodeDumpOrErrorResponse' + '404': + description: CometBFT is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/domain/sequencer/status: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: getSequencerNodeStatus + responses: + '200': + description: Status of sequencer node + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + '404': + description: Sequencer is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/domain/mediator/status: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: getMediatorNodeStatus + responses: + '200': + description: Status of mediator node + content: + application/json: + schema: + $ref: '#/components/schemas/NodeStatus' + '404': + description: Mediator is not configured for this app. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/synchronizer/lsu/cancel: + post: + tags: + - sv + x-jvm-package: sv_admin + operationId: cancelLogicalSynchronizerUpgrade + responses: + '200': + description: ok + '500': + $ref: '#/components/responses/500' + /v0/admin/domain/identities-dump: + get: + tags: + - sv + x-jvm-package: sv_admin + operationId: getSynchronizerNodeIdentitiesDump + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSynchronizerNodeIdentitiesDumpResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/sv/voterequests: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: listDsoRulesVoteRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteRequestsResponse' + /v0/admin/sv/voteresults: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: listVoteRequestResults + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteResultsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDsoRulesVoteResultsResponse' + /v0/admin/sv/previous-sv-reward-weight: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: getPreviousSvRewardWeight + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PreviousSvRewardWeightRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PreviousSvRewardWeightResponse' + /v0/admin/sv/voterequests/{vote_request_contract_id}: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: lookupDsoRulesVoteRequest + parameters: + - name: vote_request_contract_id + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupDsoRulesVoteRequestResponse' + '404': + description: VoteRequest contract not found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/sv/votes: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: castVote + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CastVoteRequest' + responses: + '201': + description: Created + '400': + $ref: '#/components/responses/400' + /v0/admin/sv/voterequest: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: listVoteRequestsByTrackingCid + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BatchListVotesByVoteRequestsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListVoteRequestByTrackingCidResponse' + /v0/admin/sv/voterequest/create: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: createVoteRequest + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateVoteRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + /v0/admin/sv/amulet-price/votes: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: ListAmuletPriceVotes + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAmuletPriceVotesResponse' + /v0/admin/sv/open-mining-rounds: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: ListOpenMiningRounds + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOpenMiningRoundsResponse' + /v0/admin/sv/amulet-price/vote: + put: + tags: + - sv + x-jvm-package: sv_operator + operationId: UpdateAmuletPriceVote + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateAmuletPriceVoteRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + /v0/admin/authorization: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: isAuthorized + responses: + '200': + description: ok + '403': + $ref: '#/components/responses/403' + /v0/onboard/validator: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: onboardValidator + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardValidatorRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + /v0/onboard/sv/start: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: startSvOnboarding + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StartSvOnboardingRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + /v0/onboard/sv/status/{candidate_party_id_or_name}: + get: + tags: + - sv + x-jvm-package: sv_public + operationId: getSvOnboardingStatus + parameters: + - name: candidate_party_id_or_name + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetSvOnboardingStatusResponse' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' + /v0/onboard/sv/party-migration/authorize: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: onboardSvPartyMigrationAuthorize + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvPartyMigrationAuthorizeRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvPartyMigrationAuthorizeResponse' + '400': + description: system state not yet valid + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvPartyMigrationAuthorizeErrorResponse' + '401': + $ref: '#/components/responses/401' + /v0/onboard/sv/sequencer: + post: + tags: + - sv + x-jvm-package: sv_public + operationId: onboardSvSequencer + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvSequencerRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardSvSequencerResponse' + '400': + $ref: '#/components/responses/400' + /v0/devnet/onboard/validator/prepare: + post: + tags: + - sv + x-jvm-package: sv_public + description: faucet for validator candidates self-service + operationId: devNetOnboardValidatorPrepare + responses: + '200': + description: ok + content: + text/plain: + schema: + type: string + '500': + $ref: '#/components/responses/500' + '501': + $ref: '#/components/responses/501' + /v0/dso: + get: + tags: + - sv + x-jvm-package: sv_public + operationId: getDsoInfo + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDsoInfoResponse' + /v0/migration-id: + get: + tags: + - sv + x-jvm-package: sv_public + operationId: getMigrationId + description: | + Returns the synchronizer migration id this SV is currently using. + Used by joining SV nodes to learn the migration id from their sponsoring SV. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetMigrationIdResponse' + /v0/synchronizer/{domain_id_prefix}/reconcile-daml-state: + post: + tags: + - sv + x-jvm-package: sv_soft_domain_migration_poc + operationId: reconcileSynchronizerDamlState + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + /v0/synchronizer/{domain_id_prefix}/sign_dso_party_to_participant: + post: + tags: + - sv + x-jvm-package: sv_soft_domain_migration_poc + operationId: signDsoPartyToParticipant + parameters: + - name: domain_id_prefix + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + /v0/admin/sv/party-to-participant/{party_id}: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: getPartyToParticipant + parameters: + - name: party_id + in: path + required: true + schema: + type: string + responses: + '200': + description: Party is hosted on one or more participants + content: + application/json: + schema: + $ref: '#/components/schemas/GetPartyToParticipantResponseV1' + '404': + description: Party not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/admin/sv/featured-app-rights/by-contract-id/{contract_id}: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: lookupFeaturedAppRightByContractId + description: | + Look up a `FeaturedAppRight` contract by its contract ID. + parameters: + - name: contract_id + in: path + required: true + schema: + type: string + responses: + '200': + description: Featured app right, if found + content: + application/json: + schema: + $ref: '#/components/schemas/LookupFeaturedAppRightByContractIdResponse' + '400': + $ref: '#/components/responses/400' + /v0/admin/sv/featured-app-rights/by-provider/{provider_party_id}: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: listFeaturedAppRightsByProvider + description: | + Lookup the `FeaturedAppRight` contract for a provider. + parameters: + - name: provider_party_id + in: path + required: true + schema: + type: string + responses: + '200': + description: Featured app right for provider + content: + application/json: + schema: + $ref: '#/components/schemas/ListFeaturedAppRightsByProviderResponse' + '400': + $ref: '#/components/responses/400' + /v0/admin/feature-support: + get: + tags: + - sv + x-jvm-package: sv_operator + operationId: featureSupport + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/FeatureSupportResponse' + '500': + $ref: '#/components/responses/500' + /v0/admin/reward-accounting-process/archive-dry-runs: + post: + tags: + - sv + x-jvm-package: sv_operator + operationId: archiveDryRunRewardAccountingContracts + description: | + Archive active `CalculateRewardsV2` and `ProcessRewardsV2` contracts + for the specified rounds if they have `dryRun` as `True`. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ArchiveDryRunRewardAccountingContractsRequest' + responses: + '200': + description: ok + '400': + $ref: '#/components/responses/400' +components: + schemas: + GetMigrationIdResponse: + type: object + required: + - migration_id + properties: + migration_id: + type: integer + format: int64 + ListOngoingValidatorOnboardingsResponse: + type: object + required: + - ongoing_validator_onboardings + properties: + ongoing_validator_onboardings: + type: array + items: + $ref: '#/components/schemas/ValidatorOnboarding' + ValidatorOnboarding: + type: object + required: + - encoded_secret + - contract + properties: + encoded_secret: + description: | + The encoded secret in a form that can be directly used when making an onboarding request. + type: string + contract: + description: | + The contract storing the onboarding secret. + $ref: '#/components/schemas/Contract' + party_hint: + description: | + Human-readable alias of the validator party decoded from the stored secret. + type: string + PrepareValidatorOnboardingRequest: + type: object + required: + - expires_in + properties: + expires_in: + type: integer + minimum: 1 + party_hint: + description: | + Optional alias for the validator party. If provided, it is persisted in the + onboarding secret and stored in the database as the expected party identifier. + type: string + PrepareValidatorOnboardingResponse: + type: object + required: + - secret + properties: + secret: + type: string + OnboardValidatorRequest: + type: object + required: + - party_id + - secret + properties: + party_id: + type: string + secret: + type: string + version: + type: string + contact_point: + type: string + party_hint: + description: | + Alias of the validator party. + Must match the persisted value in the onboarding secret. + type: string + CometBftNodeStatusOrErrorResponse: + oneOf: + - $ref: '#/components/schemas/CometBftNodeStatusResponse' + - $ref: '#/components/schemas/ErrorResponse' + CometBftNodeStatusResponse: + type: object + required: + - id + - catching_up + - voting_power + properties: + id: + type: string + description: The node-id of the CometBFT node + catching_up: + type: boolean + description: Is the node still catching up to the other nodes in the network + voting_power: + type: number + description: The voting power assigned to the CometBFT node + CometBftNodeDumpOrErrorResponse: + oneOf: + - $ref: '#/components/schemas/CometBftNodeDumpResponse' + - $ref: '#/components/schemas/ErrorResponse' + CometBftNodeDumpResponse: + type: object + required: + - status + - network_info + - abci_info + - validators + properties: + status: + type: object + network_info: + type: object + abci_info: + type: object + validators: + type: object + CometBftJsonRpcRequestId: + oneOf: + - type: string + - type: integer + format: int64 + CometBftJsonRpcRequest: + type: object + required: + - id + - method + properties: + id: + $ref: '#/components/schemas/CometBftJsonRpcRequestId' + method: + type: string + enum: + - status + - block + - commit + - validators + - consensus_params + - consensus_state + params: + type: object + additionalProperties: true + CometBftJsonRpcOrErrorResponse: + oneOf: + - $ref: '#/components/schemas/CometBftJsonRpcResponse' + - $ref: '#/components/schemas/ErrorResponse' + CometBftJsonRpcResponse: + type: object + required: + - jsonrpc + - id + - result + properties: + jsonrpc: + type: string + id: + $ref: '#/components/schemas/CometBftJsonRpcRequestId' + result: + type: object + CreateVoteRequest: + type: object + required: + - requester + - action + - url + - description + - expiration + properties: + requester: + type: string + action: + type: object + url: + type: string + description: + type: string + expiration: + type: object + effectiveTime: + type: string + format: date-time + ListVotesResponse: + type: object + required: + - dso_rules_votes + properties: + dso_rules_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + CastVoteRequest: + type: object + required: + - vote_request_contract_id + - is_accepted + - reason_url + - reason_description + properties: + vote_request_contract_id: + type: string + is_accepted: + type: boolean + reason_url: + type: string + reason_description: + type: string + ListOpenMiningRoundsResponse: + type: object + required: + - open_mining_rounds + properties: + open_mining_rounds: + type: array + items: + $ref: '#/components/schemas/Contract' + UpdateAmuletPriceVoteRequest: + type: object + required: + - amulet_price + properties: + amulet_price: + type: string + StartSvOnboardingRequest: + type: object + required: + - token + properties: + token: + type: string + BaseSvOnboardingState: + type: object + required: + - state + properties: + state: + type: string + SvOnboardingStateRequested: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + - type: object + required: + - name + - contract_id + - confirmed_by + - required_num_confirmations + properties: + name: + type: string + contract_id: + type: string + description: ContractId of the SvOnboardingRequested contract + confirmed_by: + type: array + items: + type: string + required_num_confirmations: + type: integer + format: int32 + minimum: 1 + SvOnboardingStateConfirmed: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + - type: object + required: + - name + - contract_id + properties: + name: + type: string + contract_id: + type: string + description: ContractId of the SvOnboardingConfirmed contract + SvOnboardingStateCompleted: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + - type: object + required: + - name + - contract_id + properties: + name: + type: string + contract_id: + type: string + description: ContractId of the DsoRules contract + SvOnboardingStateUnknown: + allOf: + - $ref: '#/components/schemas/BaseSvOnboardingState' + GetSvOnboardingStatusResponse: + oneOf: + - $ref: '#/components/schemas/SvOnboardingStateRequested' + - $ref: '#/components/schemas/SvOnboardingStateConfirmed' + - $ref: '#/components/schemas/SvOnboardingStateCompleted' + - $ref: '#/components/schemas/SvOnboardingStateUnknown' + discriminator: + propertyName: state + mapping: + requested: '#/components/schemas/SvOnboardingStateRequested' + confirmed: '#/components/schemas/SvOnboardingStateConfirmed' + completed: '#/components/schemas/SvOnboardingStateCompleted' + unknown: '#/components/schemas/SvOnboardingStateUnknown' + OnboardSvPartyMigrationAuthorizeRequest: + type: object + required: + - candidate_party_id + properties: + candidate_party_id: + type: string + OnboardSvPartyMigrationAuthorizeResponse: + type: object + required: + - acs_snapshot + properties: + acs_snapshot: + type: string + OnboardSvPartyMigrationAuthorizeErrorResponse: + oneOf: + - $ref: '#/components/schemas/AcceptedStateNotFoundErrorResponse' + - $ref: '#/components/schemas/ProposalNotFoundErrorResponse' + AcceptedStateNotFoundErrorResponse: + type: object + required: + - accepted_state_not_found + properties: + accepted_state_not_found: + $ref: '#/components/schemas/ErrorResponse' + ProposalNotFoundErrorResponse: + type: object + required: + - proposal_not_found + properties: + proposal_not_found: + type: object + required: + - party_to_participant_base_serial + properties: + party_to_participant_base_serial: + type: integer + description: The serial of the party to participant accepted state as seen by the sponsor + OnboardSvSequencerRequest: + type: object + required: + - sequencer_id + properties: + sequencer_id: + type: string + OnboardSvSequencerResponse: + type: object + required: + - onboarding_state + properties: + onboarding_state: + type: string + OnboardSvMediatorRequest: + type: object + required: + - mediator_id + properties: + mediator_id: + type: string + SequencerSnapshot: + type: object + required: + - topology_snapshot + - sequencer_snapshot + properties: + topology_snapshot: + type: string + sequencer_snapshot: + type: string + TriggerAcsDumpResponse: + type: object + required: + - filename + - num_events + - offset + properties: + filename: + type: string + num_events: + type: number + offset: + type: string + GetAcsStoreDumpResponse: + type: object + required: + - offset + - contracts + properties: + offset: + type: string + contracts: + type: array + items: + $ref: '#/components/schemas/Contract' + version: + type: string + SynchronizerNodeIdentities: + type: object + required: + - sv_party_id + - dso_party_id + - domain_alias + - domain_id + - participant + - sequencer + - mediator + properties: + sv_party_id: + type: string + dso_party_id: + type: string + domain_alias: + type: string + domain_id: + type: string + participant: + $ref: '#/components/schemas/NodeIdentitiesDump' + sequencer: + $ref: '#/components/schemas/NodeIdentitiesDump' + mediator: + $ref: '#/components/schemas/NodeIdentitiesDump' + DomainDataSnapshot: + type: object + required: + - acs_snapshot + - acs_timestamp + - dars + properties: + genesis_state: + description: | + base64 encoded string of domain genesis state + type: string + acs_snapshot: + description: | + base64 encoded string of acs snapshot for the requested party id, or for the dso and sv parties by default + type: string + acs_timestamp: + type: string + dars: + type: array + items: + $ref: '#/components/schemas/Dar' + synchronizer_was_paused: + type: boolean + separate_payload_files: + type: boolean + description: | + If set to true, genesis_state and acs_snapshot are filenames + acs_format: + type: string + enum: + - admin_api + - ledger_api + Dar: + type: object + required: + - hash + - content + properties: + hash: + type: string + content: + description: | + base64 encoded string of a dar package + type: string + GetSynchronizerNodeIdentitiesDumpResponse: + type: object + required: + - identities + properties: + identities: + $ref: '#/components/schemas/SynchronizerNodeIdentities' + LookupFeaturedAppRightByContractIdResponse: + description: | + A `Splice.Amulet.FeaturedAppRight` contract looked up by contract ID, if it exists. + type: object + properties: + featured_app_right: + $ref: '#/components/schemas/Contract' + ListFeaturedAppRightsByProviderResponse: + description: | + The `Splice.Amulet.FeaturedAppRight` contract for a specific provider, if it exists. + type: object + required: + - featured_app_rights + properties: + featured_app_rights: + type: array + items: + $ref: '#/components/schemas/Contract' + ArchiveDryRunRewardAccountingContractsRequest: + type: object + required: + - rounds + properties: + rounds: + description: | + Round numbers whose dry-run `CalculateRewardsV2` and `ProcessRewardsV2` + contracts should be archived. + type: array + items: + type: integer + format: int64 + Status: + type: object + required: + - id + - uptime + - ports + - active + properties: + id: + type: string + uptime: + type: string + ports: + type: object + additionalProperties: + type: integer + format: int32 + extra: + type: string + format: binary + active: + type: boolean + SuccessStatusResponse: + type: object + required: + - success + properties: + success: + $ref: '#/components/schemas/Status' + NotInitialized: + type: object + required: + - active + properties: + active: + type: boolean + NotInitializedStatusResponse: + type: object + required: + - not_initialized + properties: + not_initialized: + $ref: '#/components/schemas/NotInitialized' + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + FailureStatusResponse: + type: object + required: + - failed + properties: + failed: + $ref: '#/components/schemas/ErrorResponse' + NodeStatus: + oneOf: + - $ref: '#/components/schemas/SuccessStatusResponse' + - $ref: '#/components/schemas/NotInitializedStatusResponse' + - $ref: '#/components/schemas/FailureStatusResponse' + Version: + type: object + required: + - version + - commit_ts + properties: + version: + type: string + commit_ts: + type: string + format: date-time + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ListValidatorLicensesResponse: + type: object + required: + - validator_licenses + properties: + validator_licenses: + description: Contracts of Daml template `Splice.ValidatorLicense:ValidatorLicense`. + type: array + items: + $ref: '#/components/schemas/Contract' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + KeyPair: + type: object + required: + - keyPair + properties: + keyPair: + type: string + name: + type: string + KmsKeyId: + type: object + required: + - type + - keyId + properties: + type: + type: string + enum: + - signing + - encryption + keyId: + type: string + name: + type: string + NodeKey: + oneOf: + - $ref: '#/components/schemas/KeyPair' + - $ref: '#/components/schemas/KmsKeyId' + NodeIdentitiesDump: + type: object + required: + - id + - keys + - authorizedStoreSnapshot + properties: + id: + type: string + keys: + type: array + items: + $ref: '#/components/schemas/NodeKey' + authorizedStoreSnapshot: + description: | + base64 encoded string of authorized store snapshot + type: string + version: + type: string + ListDsoRulesVoteRequestsResponse: + description: Contracts of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_requests + properties: + dso_rules_vote_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListVoteResultsRequest: + type: object + required: + - limit + properties: + actionName: + type: string + accepted: + type: boolean + requester: + type: string + effectiveFrom: + type: string + effectiveTo: + type: string + limit: + type: integer + pageToken: + type: integer + description: | + Cursor for pagination. When requesting the next page of results, pass the `next_page_token` from the previous response. + Results are ordered by effective date (the accepted vote's effectiveAt, or the result's completedAt otherwise), descending. + ListDsoRulesVoteResultsResponse: + type: object + required: + - dso_rules_vote_results + properties: + dso_rules_vote_results: + type: array + items: + type: object + next_page_token: + type: integer + description: | + Cursor for the next page of results. Pass this as `pageToken` in the request. + If absent or `null`, there are no more pages. + PreviousSvRewardWeightRequest: + type: object + required: + - svParty + properties: + svParty: + type: string + effectiveBefore: + type: string + description: | + Only consider reward weight changes that took effect strictly before this time. + PreviousSvRewardWeightResponse: + type: object + properties: + rewardWeight: + type: string + description: | + The SV's reward weight set by the most recent accepted `UpdateSvRewardWeight` proposal + before `effectiveBefore`, or absent if there is no such proposal. + LookupDsoRulesVoteRequestResponse: + description: A contract of Daml template `Splice.DsoRules:VoteRequest`. + type: object + required: + - dso_rules_vote_request + properties: + dso_rules_vote_request: + $ref: '#/components/schemas/Contract' + BatchListVotesByVoteRequestsRequest: + type: object + required: + - vote_request_contract_ids + properties: + vote_request_contract_ids: + description: Contract IDs of Daml template `Splice.DsoRules:VoteRequest`. + type: array + items: + type: string + ListVoteRequestByTrackingCidResponse: + type: object + required: + - vote_requests + properties: + vote_requests: + description: | + Contracts of Daml template `Splice.DsoRules:VoteRequest` that match + `vote_request_contract_ids` in the request. + type: array + items: + $ref: '#/components/schemas/Contract' + ListAmuletPriceVotesResponse: + description: Contracts of Daml template `Splice.DSO:AmuletPrice:AmuletPriceVote`. + type: object + required: + - amulet_price_votes + properties: + amulet_price_votes: + type: array + items: + $ref: '#/components/schemas/Contract' + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + GetDsoInfoResponse: + type: object + required: + - sv_user + - sv_party_id + - dso_party_id + - voting_threshold + - latest_mining_round + - amulet_rules + - dso_rules + - sv_node_states + properties: + sv_user: + description: User ID representing the SV + type: string + sv_party_id: + description: Party representing the SV + type: string + dso_party_id: + description: | + Party representing the whole DSO; for Scan only, also returned by + `/v0/dso-party-id` + type: string + voting_threshold: + description: | + Threshold required to pass vote requests; also known as the + "governance threshold", it is always derived from the number of + `svs` in `dso_rules` + type: integer + latest_mining_round: + description: | + Contract of the Daml template `Splice.Round.OpenMiningRound`, the + one with the highest round number on the ledger that has been signed + by `dso_party_id`. The round may not be usable as it may not be + opened yet, in accordance with its `opensAt` template field + $ref: '#/components/schemas/ContractWithState' + amulet_rules: + description: | + Contract of the Daml template `Splice.AmuletRules.AmuletRules`, + including the full schedule of `AmuletConfig` changes approved by + the DSO. Callers should not assume that `initialValue` is up-to-date, + and should instead search `futureValues` for the latest configuration + valid as of now + $ref: '#/components/schemas/ContractWithState' + dso_rules: + description: | + Contract of the Daml template `Splice.DsoRules.DsoRules`, listing + the governance rules approved by the DSO governing this Splice network. + $ref: '#/components/schemas/ContractWithState' + sv_node_states: + description: | + For every one of `svs` listed in `dso_rules`, a contract of the Daml + template `Splice.DSO.SvState.SvNodeState`. This does not include + states for offboarded SVs, though they may still have an on-ledger + state contract + type: array + items: + $ref: '#/components/schemas/ContractWithState' + initial_round: + description: | + Initial round from which the network bootstraps + type: string + GetPartyToParticipantResponseV1: + type: object + required: + - participant_ids + properties: + participant_ids: + description: | + IDs of the participants hosting the provided party, each in the form + `PAR::id::fingerprint` + type: array + items: + type: string + FeatureSupportResponse: + type: object + required: [] + properties: + dummy: + type: boolean + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '401': + description: unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: not implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.6.12/token-metadata-v1.yaml b/api-specs/splice/0.6.12/token-metadata-v1.yaml new file mode 100644 index 000000000..1b8aaaf58 --- /dev/null +++ b/api-specs/splice/0.6.12/token-metadata-v1.yaml @@ -0,0 +1,243 @@ +openapi: 3.0.0 +info: + title: token metadata service + description: | + Implemented by token registries for the purpose of serving metadata about + their tokens and the standards supported by the registry. + version: 1.2.0 +paths: + /registry/metadata/v1/info: + get: + operationId: getRegistryInfo + description: | + Get information about the registry. + The response includes the standards supported by the registry. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetRegistryInfoResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /registry/metadata/v1/instruments: + get: + operationId: listInstruments + description: List all instruments managed by this instrument admin. + parameters: + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 25 + description: Number of instruments per page. + - name: pageToken + in: query + required: false + schema: + type: string + description: The `nextPageToken` received from the response for the previous page. + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListInstrumentsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /registry/metadata/v1/instruments/{instrumentId}: + get: + operationId: getInstrument + description: Retrieve an instrument's metadata. + parameters: + - name: instrumentId + in: path + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Instrument' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetRegistryInfoResponse: + type: object + properties: + adminId: + description: The Daml party representing the registry app + type: string + supportedApis: + description: The token standard APIs supported by the registry. Note that this only includes the registry-wide APIs. Use the instrument lookup endpoints to see which APIs are supported for a given instrument + $ref: '#/components/schemas/SupportedApis' + required: + - adminId + - supportedApis + Instrument: + type: object + properties: + id: + description: The unique identifier assigned by the admin to the instrument. + type: string + name: + description: The display name for the instrument recommended by the instrument admin. This is not necessarily unique. + type: string + symbol: + description: The symbol for the instrument recommended by the instrument admin. This is not necessarily unique. + type: string + totalSupply: + description: Decimal encoded current total supply of the instrument. + type: string + totalSupplyAsOf: + description: The timestamp when the total supply was last computed. + type: string + format: date-time + decimals: + description: | + The number of decimal places used by the instrument. + + Must be a number between 0 and 10, as the Daml interfaces represent holding amounts as + `Decimal` values, which use 10 decimal places and are precise for 38 digits. + Setting this to 0 means that the instrument can only be held in whole units. + + This number SHOULD be used for display purposes in a wallet to decide how many + decimal places to show and accept when displaying or entering amounts. + type: integer + format: int8 + default: 10 + paused: + description: | + Indicates whether the instrument is currently paused. A paused instrument cannot be + transferred or allocated. + type: boolean + default: false + pauseInfo: + $ref: '#/components/schemas/PauseInfo' + supportedApis: + $ref: '#/components/schemas/SupportedApis' + showAccountInputFields: + description: | + Informs wallets whether the instrument supports non-basic accounts + and the wallet should thus show input fields for both the account + provider and the account id in input forms for transfers and allocations. + + Note that wallets should always show non-null account providers and + account ids when displaying transfers and allocations. + + This property is deprecated in favor of the more fine-grained + `accountInputFieldsToShow` property. + type: boolean + default: false + deprecated: true + accountInputFieldsToShow: + description: | + Fine-grained control for account input field display in wallets. + + If set, then wallets should only display the specified input + field(s) in transfer and allocation input forms + *independently* of the `showAccountInputFields` property. + + Note that wallets should always show non-null account providers and + account ids when displaying transfers and allocations. + $ref: '#/components/schemas/AccountInputFieldsToShow' + required: + - id + - name + - symbol + - decimals + - supportedApis + ListInstrumentsResponse: + type: object + properties: + instruments: + type: array + items: + $ref: '#/components/schemas/Instrument' + nextPageToken: + type: string + description: The token for the next page of results, to be used as the lastInstrumentId for the next page. + required: + - instruments + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + SupportedApis: + description: | + Map from token standard API name to the minor version of the API supported, e.g., + splice-api-token-metadata-v1 -> 1 where the `1` corresponds to the minor version. + type: object + additionalProperties: + type: integer + format: int32 + PauseInfo: + description: | + Additional information about the instrument pause state. + type: object + properties: + reason: + description: | + Why the instrument is paused. + type: string + until: + description: | + Timestamp (exclusive) until which the instrument is paused, if known. + type: string + format: date-time + AccountInputFieldsToShow: + description: | + Which account input field(s) wallets should show in forms. + type: array + items: + $ref: '#/components/schemas/AccountInputFieldToShow' + uniqueItems: true + AccountInputFieldToShow: + description: | + Which single account input field wallets should show in forms. + type: string + enum: + - provider + - accountId diff --git a/api-specs/splice/0.6.12/transfer-instruction-v1.yaml b/api-specs/splice/0.6.12/transfer-instruction-v1.yaml new file mode 100644 index 000000000..81f960316 --- /dev/null +++ b/api-specs/splice/0.6.12/transfer-instruction-v1.yaml @@ -0,0 +1,264 @@ +openapi: 3.0.0 +info: + title: transfer instruction off-ledger API + description: | + Implemented by token registries for the purpose of supporting the initiation + of asset transfers; e.g. to settle off-ledger obligations. + version: 1.1.0 +paths: + /registry/transfer-instruction/v1/transfer-factory: + post: + operationId: getTransferFactory + description: | + Get the factory and choice context for executing a direct transfer. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetFactoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferFactoryWithChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/accept: + post: + operationId: getTransferInstructionAcceptContext + description: | + Get the choice context to accept a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to accept. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/reject: + post: + operationId: getTransferInstructionRejectContext + description: | + Get the choice context to reject a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to reject. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/withdraw: + post: + operationId: getTransferInstructionWithdrawContext + description: | + Get the choice context to withdraw a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to withdraw. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetFactoryRequest: + type: object + properties: + choiceArguments: + type: object + description: | + The arguments that are intended to be passed to the choice provided by the factory. + To avoid repeating the Daml type definitions, they are specified as JSON objects. + However the concrete format is given by how the choice arguments are encoded using the Daml JSON API + (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). + + The choice arguments are provided so that the registry can also provide choice-argument + specific contracts, e.g., the configuration for a specific instrument-id. + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + required: + - choiceArguments + GetChoiceContextRequest: + description: | + A request to get the context for executing a choice on a contract. + type: object + properties: + meta: + description: | + Metadata that will be passed to the choice, and should be incorporated + into the choice context. Provided for extensibility. + type: object + additionalProperties: + type: string + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + TransferFactoryWithChoiceContext: + description: | + The transfer factory contract together with the choice context required to exercise the choice + provided by the factory. Typically used to implement the generic initiation of on-ledger workflows + via a Daml interface. + + Clients SHOULD avoid reusing the same `FactoryWithChoiceContext` for exercising multiple choices, + as the choice context MAY be specific to the choice being exercised. + type: object + properties: + factoryId: + description: The contract ID of the contract implementing the factory interface. + type: string + transferKind: + description: | + The kind of transfer workflow that will be used: + * `offer`: offer a transfer to the receiver and only transfer if they accept + * `direct`: transfer directly to the receiver without asking them for approval. + Only chosen if the receiver has pre-approved direct transfers. + * `self`: a self-transfer where the sender and receiver are the same party. + No approval is required, and the transfer is typically immediate. + type: string + enum: + - self + - direct + - offer + choiceContext: + $ref: '#/components/schemas/ChoiceContext' + required: + - factoryId + - choiceContext + - transferKind + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference data that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + type: string + contractId: + type: string + createdEventBlob: + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.6.12/transfer-instruction-v2.yaml b/api-specs/splice/0.6.12/transfer-instruction-v2.yaml new file mode 100644 index 000000000..05ef002b6 --- /dev/null +++ b/api-specs/splice/0.6.12/transfer-instruction-v2.yaml @@ -0,0 +1,287 @@ +openapi: 3.0.0 +info: + title: V2 transfer instruction off-ledger API + description: | + Implemented by token registries for the purpose of supporting the initiation + of asset transfers; e.g. to settle off-ledger obligations. + version: 1.0.0 +paths: + /registry/transfer-instruction/v2/transfer-factory: + post: + operationId: getTransferFactory + description: | + Get the factory and choice context for initiating a transfer workflow. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetFactoryRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferFactoryWithChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + /registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/accept: + post: + operationId: getTransferInstructionAcceptContext + description: | + Get the choice context to accept a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to accept. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + /registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/reject: + post: + operationId: getTransferInstructionRejectContext + description: | + Get the choice context to reject a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to reject. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + /registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/withdraw: + post: + operationId: getTransferInstructionWithdrawContext + description: | + Get the choice context to withdraw a transfer instruction. + parameters: + - name: transferInstructionId + description: The contract ID of the transfer instruction to withdraw. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GetChoiceContextRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceContext' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' +components: + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + GetFactoryRequest: + type: object + properties: + choiceArguments: + type: object + description: | + The arguments that are intended to be passed to the choice provided by the factory. + To avoid repeating the Daml type definitions, they are specified as JSON objects. + However the concrete format is given by how the choice arguments are encoded using the Daml JSON API + (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). + + The choice arguments are provided so that the registry can also provide choice-argument + specific contracts, e.g., the configuration for a specific instrument-id. + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + required: + - choiceArguments + GetChoiceContextRequest: + description: | + A request to get the context for executing a choice on a contract. + type: object + properties: + meta: + description: | + Metadata that will be passed to the choice, and should be incorporated + into the choice context. Provided for extensibility. + type: object + additionalProperties: + type: string + excludeDebugFields: + description: If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + default: false + type: boolean + TransferFactoryWithChoiceContext: + description: | + The transfer factory contract together with the choice context required to exercise the choice + provided by the factory. Typically used to implement the generic initiation of on-ledger workflows + via a Daml interface. + + Clients SHOULD avoid reusing the same `TransferFactoryWithChoiceContext` for exercising multiple choices, + as the choice context MAY be specific to the choice being exercised. + type: object + properties: + factoryId: + description: The contract ID of the contract implementing the factory interface. + type: string + transferKind: + description: | + The kind of transfer workflow that will be used: + * `offer`: offer a transfer to the receiver and only transfer if they accept + * `direct`: transfer directly to the receiver without asking them for approval. + Only chosen if the receiver has pre-approved direct transfers. + * `self`: a self-transfer where the sender and receiver are the same party. + No approval is required, and the transfer is typically immediate. + type: string + enum: + - self + - direct + - offer + choiceContext: + $ref: '#/components/schemas/ChoiceContext' + required: + - factoryId + - choiceContext + - transferKind + ChoiceContext: + description: | + The context required to exercise a choice on a contract via an interface. + Used to retrieve additional reference data that is passed in via disclosed contracts, + which are in turn referred to via their contract ID in the `choiceContextData`. + + Asset implementations SHOULD avoid that this value depends on contract-ids passed + in the choice arguments, so that clients can prefetch choice contexts when chaining + multiple token standard actions together in a single Daml transaction. + type: object + properties: + choiceContextData: + description: The additional data to use when exercising the choice. + type: object + disclosedContracts: + description: | + The contracts that are required to be disclosed to the participant node for exercising + the choice. + type: array + items: + $ref: '#/components/schemas/DisclosedContract' + required: + - choiceContextData + - disclosedContracts + DisclosedContract: + type: object + properties: + templateId: + description: The fully qualified template identifier of the disclosed contract. + type: string + contractId: + description: The contract ID of the disclosed contract. + type: string + createdEventBlob: + description: | + The serialized created event of the disclosed contract, forwarded unchanged as retrieved + from the JSON Ledger API. + type: string + synchronizerId: + description: | + The synchronizer to which the contract is currently assigned. + If the contract is in the process of being reassigned, then a "409" response is returned. + type: string + debugPackageName: + description: | + The name of the Daml package that was used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + debugPayload: + description: | + The contract arguments that were used to create the contract. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: object + debugCreatedAt: + description: | + The ledger effective time at which the contract was created. + Use this data only if you trust the provider, as it might not match the data in the + `createdEventBlob`. + type: string + format: date-time + required: + - templateId + - contractId + - createdEventBlob + - synchronizerId + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string diff --git a/api-specs/splice/0.6.12/validator-internal.yaml b/api-specs/splice/0.6.12/validator-internal.yaml new file mode 100644 index 000000000..09a3f0724 --- /dev/null +++ b/api-specs/splice/0.6.12/validator-internal.yaml @@ -0,0 +1,1203 @@ +openapi: 3.0.0 +info: + title: Validator API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: validator +paths: + /readyz: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isReady + responses: + '200': + description: ok + '503': + description: service_unavailable + /livez: + get: + tags: + - common + x-jvm-package: external.common_admin + operationId: isLive + responses: + '200': + description: ok + '503': + description: service_unavailable + /v0/validator-user: + get: + description: | + Get public information about the validator operator. + tags: + - validator_public + x-jvm-package: validator_public + operationId: getValidatorUserInfo + security: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetValidatorUserInfoResponse' + /v0/register: + post: + description: | + As an authenticated user, onboard yourself. + Onboarding includes allocating a ledger API user and daml party, + and setting up daml contracts required for the user to use a wallet on this validator. + + The ledger API user name is taken from the subject claim of the JWT token. + + Once this call returns a successful response, the user is fully onboarded. + Use [v0/wallet/user-status](../../../../wallet/src/main/openapi/wallet-internal.yaml#/paths/v0/wallet/user-status) + to check the status of the user onboarding. + tags: + - validator + x-jvm-package: validator + operationId: register + security: + - userAuth: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RegistrationRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/RegistrationResponse' + /v0/admin/users: + post: + description: | + As the validator operator, onboard an arbitrary user specified in the request. + Onboarding includes allocating a ledger API user and daml party, + and setting up daml contracts required for the user to use a wallet on this validator. + + Once this call returns a successful response, the user is fully onboarded. + Use [v0/wallet/user-status](../../../../wallet/src/main/openapi/wallet-internal.yaml#/paths/v0/wallet/user-status) + to check the status of the user onboarding. + tags: + - validator + x-jvm-package: validator_admin + operationId: onboardUser + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardUserRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardUserResponse' + get: + description: | + Lists all users onboarded onto this validator. + tags: + - validator + x-jvm-package: validator_admin + operationId: listUsers + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListUsersResponse' + /v0/admin/users/offboard: + post: + description: | + As the validator operator, offboard the user specified in the request. + Offboarding archives the daml contracts required for the user to use a wallet on this validator. + Offboarding deletes the ledger API user. + Offboarding does not archive any other daml contracts owned by the user. + tags: + - validator + x-jvm-package: validator_admin + operationId: offboardUser + security: + - adminAuth: [] + parameters: + - in: query + name: username + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + /v0/admin/participant/identities: + get: + description: | + Returns a dump of participant identities. + + Use this endpoint if instructed to do so by an operational manual or support. + tags: + - validator + x-jvm-package: validator_admin + operationId: dumpParticipantIdentities + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/NodeIdentitiesDump' + /v0/admin/participant/global-domain-connection-config: + get: + description: | + Returns the connection configuration for the global synchronizer. + + Use this endpoint if instructed to do so by an operational manual or support. + tags: + - validator + x-jvm-package: validator_admin + operationId: getDecentralizedSynchronizerConnectionConfig + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetDecentralizedSynchronizerConnectionConfigResponse' + /v0/admin/transfer-preapprovals/by-party/{receiver-party}: + get: + description: | + Lookup the `Splice.AmuletRules.TransferPreapproval` contract for the given receiver party. + tags: + - validator + x-jvm-package: validator_admin + operationId: lookupTransferPreapprovalByParty + security: + - adminAuth: [] + parameters: + - in: path + name: receiver-party + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/LookupTransferPreapprovalByPartyResponse' + '404': + $ref: '#/components/responses/404' + delete: + description: | + Remove the `Splice.AmuletRules.TransferPreapproval` contract for the given receiver party. + tags: + - validator + x-jvm-package: validator_admin + operationId: cancelTransferPreapprovalByParty + security: + - adminAuth: [] + parameters: + - in: path + name: receiver-party + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + /v0/admin/transfer-preapprovals: + get: + description: | + List all `Splice.AmuletRules.TransferPreapproval` contracts where the preapproval provider is the validator operator. + tags: + - validator + x-jvm-package: validator_admin + operationId: listTransferPreapprovals + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransferPreapprovalsResponse' + /v0/admin/external-party/transfer-preapproval/prepare-send: + post: + tags: + - validator + deprecated: true + x-jvm-package: validator_admin + operationId: prepareTransferPreapprovalSend + description: | + **Deprecated**. Prepare a transaction to create a TransferCommand with the given CC amount to the specified receiver + from the externally hosted sender. + The transaction then needs to be signed and submitted through + /v0/admin/external-party/transfer-preapproval/submit-send. + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareTransferPreapprovalSendRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareTransferPreapprovalSendResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/transfer-preapproval/submit-send: + post: + tags: + - validator + deprecated: true + x-jvm-package: validator_admin + operationId: submitTransferPreapprovalSend + description: | + **Deprecated**. Submit transaction generated by /v0/admin/transfer-preapproval/prepare-send + together with its signature. Note that this only waits until the TransferCommand is created. + The actual transfer will happen afterwards through automation run by the SVs. + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitTransferPreapprovalSendRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitTransferPreapprovalSendResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/topology/generate: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: generateExternalPartyTopology + description: | + Creates a root namespace topology transaction, which will create the party and sets the public key + controlling the party namespace, + a party to participant mapping topology transaction, which hosts the party on the participant with Confirmation rights, + and a party to key mapping topology transaction, which sets the key to authorize daml transactions. + The hash of each of these transactions will be signed along with the corresponding topology transaction (unchanged) + in the /v0/admin/external-party/topology/submit endpoint + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateExternalPartyTopologyResponse' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/topology/submit: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: submitExternalPartyTopology + description: | + Constructs a SignedTopologyTransaction and writes the topology transactions to the authorized store. + The input will consist of the unchanged topology transaction and the signed hash from the /v0/external-party-topology/generate endpoint + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitExternalPartyTopologyRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitExternalPartyTopologyResponse' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/setup-proposal: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: createExternalPartySetupProposal + description: | + Create the ExternalPartySetupProposal contract as the validator operator + which then has to be accepted by the external party using /v0/admin/external-party/setup-proposal/prepare-accept + and /v0/admin/external-party/setup-proposal/submit-accept + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalPartySetupProposalRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/CreateExternalPartySetupProposalResponse' + '404': + $ref: '#/components/responses/404' + '409': + $ref: '#/components/responses/409' + '501': + $ref: '#/components/responses/501' + get: + tags: + - validator + x-jvm-package: validator_admin + operationId: listExternalPartySetupProposals + description: | + List all ExternalPartySetupProposal contracts. + security: + - adminAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListExternalPartySetupProposalsResponse' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/setup-proposal/prepare-accept: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: prepareAcceptExternalPartySetupProposal + description: | + Given a contract id of an ExternalPartySetupProposal, prepare the transaction + to accept it such that it can be signed externally and then submitted using + /v0/admin/external-party/setup-proposal/submit-accept + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareAcceptExternalPartySetupProposalRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/PrepareAcceptExternalPartySetupProposalResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/setup-proposal/submit-accept: + post: + tags: + - validator + x-jvm-package: validator_admin + operationId: submitAcceptExternalPartySetupProposal + description: | + Submit a transaction prepared using /v0/admin/external-party/setup-proposal/prepare-accept + together with its signature. + security: + - adminAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAcceptExternalPartySetupProposalRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SubmitAcceptExternalPartySetupProposalResponse' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' + /v0/admin/external-party/balance: + get: + tags: + - validator + x-jvm-package: validator_admin + operationId: getExternalPartyBalance + description: | + Get the balance of an external party. + security: + - adminAuth: [] + parameters: + - in: query + name: party_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ExternalPartyBalanceResponse' + '404': + $ref: '#/components/responses/404' + '501': + $ref: '#/components/responses/501' +components: + securitySchemes: + userAuth: + description: | + JWT token as described in [spliceAppBearerAuth](../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth). + The subject of the token must be ledger API user of the user affected by the endpoint. + type: http + scheme: bearer + bearerFormat: JWT + adminAuth: + description: | + JWT token as described in [spliceAppBearerAuth](../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth). + The subject of the token must be ledger API user of the validator operator. + type: http + scheme: bearer + bearerFormat: JWT + schemas: + OnboardUserRequest: + type: object + required: + - name + properties: + name: + type: string + description: The name of the user to onboard. + party_id: + type: string + description: | + The party id of the user to onboard. + If no party_id is provided then a fresh party will be generated, using the 'name' as the Party Hint. + If party_id is provided and createPartyIfMissing is false, then the party must already exist on the ledger. The existing party will be assigned to the user. + If party_id is provided and createPartyIfMissing is true, then: if a party with the provided party_id exists, the user will be associated with it. Otherwise, a new party will be created using the provided party_id, and the user will be associated with that new party. + createPartyIfMissing: + type: boolean + description: | + If true, create the party if it does not already exist on the ledger. + Default is 'false'. + OnboardUserResponse: + type: object + required: + - party_id + properties: + party_id: + type: string + description: | + The daml party id of the user that was onboarded. + GenerateExternalPartyTopologyRequest: + type: object + required: + - party_hint + - public_key + properties: + party_hint: + description: | + The actual party id will be constructed from this hint and a fingerprint of the public key. + type: string + public_key: + description: hex-encoded ed25519 public key + type: string + GenerateExternalPartyTopologyResponse: + type: object + required: + - party_id + - topology_txs + properties: + party_id: + type: string + description: | + The generated party id of the external user. + topology_txs: + type: array + items: + $ref: '#/components/schemas/TopologyTx' + TopologyTx: + type: object + required: + - topology_tx + - hash + properties: + topology_tx: + description: base64 encoded topology transaction + type: string + hash: + description: hex-encoded hash of the topology transaction + type: string + SubmitExternalPartyTopologyRequest: + type: object + required: + - signed_topology_txs + - public_key + properties: + public_key: + description: hex-encoded ed25519 public key + type: string + signed_topology_txs: + type: array + items: + $ref: '#/components/schemas/SignedTopologyTx' + SubmitExternalPartyTopologyResponse: + type: object + required: + - party_id + properties: + party_id: + type: string + SignedTopologyTx: + type: object + required: + - topology_tx + - signed_hash + properties: + topology_tx: + description: | + base64 encoded topology transaction, this should be identical to the topology transaction + received from the /v0/external-party-topology/generate endpoint. + type: string + signed_hash: + description: | + hex-encoded ed25519 signature of the hash return by the generate endpoint in the form + `${r}${s}`. + type: string + RegistrationRequest: + type: object + nullable: true + RegistrationResponse: + type: object + required: + - party_id + properties: + party_id: + type: string + description: | + The party id of the user that was onboarded. + GetValidatorUserInfoResponse: + type: object + required: + - party_id + - user_name + - featured + properties: + party_id: + type: string + description: | + The daml party id of the validator operator. + user_name: + type: string + description: | + The ledger API user of the validator operator. + featured: + type: boolean + GetDecentralizedSynchronizerConnectionConfigResponse: + type: object + required: + - sequencer_connections + properties: + sequencer_connections: + $ref: '#/components/schemas/SequencerConnections' + ListUsersResponse: + type: object + required: + - usernames + properties: + usernames: + type: array + items: + type: string + SequencerConnections: + type: object + required: + - connections + - sequencer_trust_threshold + - submission_request_amplification + - sequencer_liveness_margin + properties: + connections: + type: array + items: + $ref: '#/components/schemas/SequencerAliasToConnections' + sequencer_trust_threshold: + type: integer + format: int32 + sequencer_liveness_margin: + type: integer + format: int32 + submission_request_amplification: + $ref: '#/components/schemas/SequencerSubmissionRequestAmplification' + SequencerAliasToConnections: + type: object + required: + - sequencer_alias + - endpoints + - transport_security + properties: + sequencer_alias: + type: string + endpoints: + type: array + items: + type: string + transport_security: + type: boolean + Dar: + type: object + required: + - hash + - content + properties: + hash: + type: string + content: + description: | + base64 encoded string of a dar package + type: string + DomainMigrationDump: + type: object + required: + - participant + - participant_users + - acs_snapshot + - acs_timestamp + - dars + - migration_id + - domain_id + - created_at + properties: + participant: + $ref: '#/components/schemas/NodeIdentitiesDump' + participant_users: + $ref: '#/components/schemas/ParticipantUsersData' + acs_snapshot: + description: | + base64 encoded string of acs snapshot for the requested party id + type: string + acs_timestamp: + type: string + dars: + type: array + items: + $ref: '#/components/schemas/Dar' + migration_id: + type: integer + format: int64 + domain_id: + type: string + created_at: + type: string + synchronizer_was_paused: + type: boolean + separate_payload_files: + type: boolean + description: | + If set to true, acs_snapshot is a filename + acs_format: + type: string + enum: + - admin_api + - ledger_api + GetValidatorDomainDataSnapshotResponse: + type: object + required: + - data_snapshot + - migration_id + properties: + data_snapshot: + $ref: '#/components/schemas/DomainMigrationDump' + migration_id: + type: integer + format: int64 + SequencerSubmissionRequestAmplification: + type: object + required: + - factor + - patience_seconds + properties: + factor: + type: number + patience_seconds: + type: number + CreateExternalPartySetupProposalRequest: + type: object + required: + - user_party_id + properties: + user_party_id: + type: string + CreateExternalPartySetupProposalResponse: + type: object + required: + - contract_id + properties: + contract_id: + $ref: '#/components/schemas/ContractId' + ListExternalPartySetupProposalsResponse: + type: object + required: + - contracts + properties: + contracts: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + PrepareAcceptExternalPartySetupProposalRequest: + type: object + required: + - contract_id + - user_party_id + properties: + contract_id: + $ref: '#/components/schemas/ContractId' + user_party_id: + type: string + verbose_hashing: + type: boolean + description: | + When true, the response will contain additional details on how the transaction was encoded and hashed. + This can be useful for troubleshooting of hash mismatches. Should only be used for debugging. + default: false + PrepareAcceptExternalPartySetupProposalResponse: + type: object + required: + - transaction + - tx_hash + properties: + transaction: + type: string + description: | + base64-encoded transaction. The transaction corresponds to + the protobuf definition of a `PreparedTransaction` + https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive_submission_data.proto#L18 + and can be decoded using standard protobuf libraries. + tx_hash: + description: Hex-encoded hash of the transaction + type: string + hashing_details: + description: | + Optional additional details on how the transaction was encoded and hashed. Only set if verbose_hashing=true in the request. + Note that there are no guarantees on the stability of the format or content of this field. + Its content should NOT be parsed and should only be used for troubleshooting purposes. + type: string + SubmitAcceptExternalPartySetupProposalRequest: + type: object + required: + - submission + properties: + submission: + $ref: '#/components/schemas/ExternalPartySubmission' + SubmitAcceptExternalPartySetupProposalResponse: + type: object + required: + - transfer_preapproval_contract_id + - update_id + properties: + transfer_preapproval_contract_id: + $ref: '#/components/schemas/ContractId' + update_id: + type: string + ExternalPartyBalanceResponse: + type: object + required: + - party_id + - total_unlocked_coin + - total_locked_coin + - total_coin_holdings + - accumulated_holding_fees_unlocked + - accumulated_holding_fees_locked + - accumulated_holding_fees_total + - total_available_coin + - computed_as_of_round + properties: + party_id: + type: string + total_unlocked_coin: + type: string + total_locked_coin: + type: string + total_coin_holdings: + type: string + accumulated_holding_fees_unlocked: + type: string + accumulated_holding_fees_locked: + type: string + accumulated_holding_fees_total: + type: string + total_available_coin: + type: string + computed_as_of_round: + type: integer + format: int64 + ListTransferPreapprovalsResponse: + type: object + required: + - contracts + properties: + contracts: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + LookupTransferPreapprovalByPartyResponse: + type: object + required: + - transfer_preapproval + properties: + transfer_preapproval: + $ref: '#/components/schemas/ContractWithState' + PrepareTransferPreapprovalSendRequest: + type: object + required: + - sender_party_id + - receiver_party_id + - amount + - expires_at + - nonce + properties: + sender_party_id: + type: string + receiver_party_id: + type: string + amount: + type: number + expires_at: + type: string + format: date-time + nonce: + type: integer + format: int64 + description: | + The expected value of the counter that is used to order and deduplicate TransferCommands. Starts at 0 and increases + by 1 for each executed TransferCommand (independent of whether is succeeded or not). The most recent value can be read from scan + through /v0/transfer-command-counter/{party} + verbose_hashing: + type: boolean + description: | + When true, the response will contain additional details on how the transaction was encoded and hashed. + This can be useful for troubleshooting of hash mismatches. Should only be used for debugging. + default: false + description: + type: string + PrepareTransferPreapprovalSendResponse: + type: object + required: + - transaction + - tx_hash + - transfer_command_contract_id_prefix + properties: + transaction: + type: string + description: | + base64-encoded transaction. The transaction corresponds to + the protobuf definition of a `PreparedTransaction` + https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive_submission_data.proto#L18 + and can be decoded using standard protobuf libraries. + tx_hash: + description: Hex-encoded hash of the transaction + type: string + transfer_command_contract_id_prefix: + description: | + Prefix of the ContractId of the created TransferCommand. Matches the contract id of the corresponding `Create` node in the prepared transaction which + also only contains the prefix. The final transaction observed on the update stream or in the result of looking up the transfer command status on Scan + adds an additional suffix to the contract id. + type: string + hashing_details: + description: | + Optional additional details on how the transaction was encoded and hashed. Only set if verbose_hashing=true in the request. + Note that there are no guarantees on the stability of the format or content of this field. + Its content should NOT be parsed and should only be used for troubleshooting purposes. + type: string + SubmitTransferPreapprovalSendRequest: + type: object + required: + - submission + properties: + submission: + $ref: '#/components/schemas/ExternalPartySubmission' + SubmitTransferPreapprovalSendResponse: + type: object + required: + - update_id + properties: + update_id: + type: string + ExternalPartySubmission: + type: object + required: + - party_id + - transaction + - signed_tx_hash + - public_key + properties: + party_id: + type: string + transaction: + type: string + description: | + base64-encoded transaction. The transaction corresponds to + the protobuf definition of a `PreparedTransaction` + https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive_submission_data.proto#L18 + and can be decoded using standard protobuf libraries. + signed_tx_hash: + description: | + hex-encoded ed25519 signature of the hash return by the prepare endpoint in the form + `${r}${s}`. + type: string + public_key: + description: hex-encoded ed25519 public key + type: string + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + KeyPair: + type: object + required: + - keyPair + properties: + keyPair: + type: string + name: + type: string + KmsKeyId: + type: object + required: + - type + - keyId + properties: + type: + type: string + enum: + - signing + - encryption + keyId: + type: string + name: + type: string + NodeKey: + oneOf: + - $ref: '#/components/schemas/KeyPair' + - $ref: '#/components/schemas/KmsKeyId' + NodeIdentitiesDump: + type: object + required: + - id + - keys + - authorizedStoreSnapshot + properties: + id: + type: string + keys: + type: array + items: + $ref: '#/components/schemas/NodeKey' + authorizedStoreSnapshot: + description: | + base64 encoded string of authorized store snapshot + type: string + version: + type: string + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + ContractId: + type: string + ParticipantIdentityProvider: + type: object + required: + - id + - isDeactivated + - jwksUrl + - issuer + - audience + properties: + id: + type: string + isDeactivated: + type: boolean + default: false + jwksUrl: + type: string + issuer: + type: string + audience: + type: string + ParticipantUserRight: + type: object + required: + - kind + properties: + kind: + type: string + enum: + - participantAdmin + - canActAs + - canReadAs + - canExecuteAs + - identityProviderAdmin + - canReadAsAnyParty + - canExecuteAsAnyParty + party: + type: string + ParticipantUserAnnotation: + type: object + required: + - key + - value + properties: + key: + type: string + value: + type: string + ParticipantUser: + type: object + required: + - id + - rights + - isDeactivated + - annotations + properties: + id: + type: string + primaryParty: + type: string + rights: + type: array + items: + $ref: '#/components/schemas/ParticipantUserRight' + isDeactivated: + type: boolean + default: false + annotations: + type: array + items: + $ref: '#/components/schemas/ParticipantUserAnnotation' + identityProviderId: + type: string + default: '' + ParticipantUsersData: + type: object + required: + - identityProviders + - users + properties: + identityProviders: + type: array + items: + $ref: '#/components/schemas/ParticipantIdentityProvider' + users: + type: array + items: + $ref: '#/components/schemas/ParticipantUser' + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: conflict + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '501': + description: not implemented + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.6.12/wallet-external.yaml b/api-specs/splice/0.6.12/wallet-external.yaml new file mode 100644 index 000000000..8b823b144 --- /dev/null +++ b/api-specs/splice/0.6.12/wallet-external.yaml @@ -0,0 +1,519 @@ +openapi: 3.0.0 +info: + title: Wallet API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: wallet +paths: + /v0/wallet/transfer-offers: + post: + description: | + Create an offer to directly transfer a given amount of Amulet to another party. + Direct transfers are a three-step process: + 1. The sender creates a transfer offer + 2. The receiver accepts the offer + 3. The sender's wallet automation consumes the accepted offer and transfers the amount. + Amulets are not locked for direct transfers. + If the sender's wallet does not have enough Amulet to fulfill the offer at this point, + the transfer will fail. + tags: + - wallet + x-jvm-package: external.wallet + operationId: createTransferOffer + security: + - walletUserAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferOfferRequest' + responses: + '200': + description: The transfer offer has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferOfferResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A transfer offer with the same tracking id has been created. Check the status endpoint for the current status. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A transfer offer with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + get: + description: List all open transfer offers where the user is either sender or receiver. + tags: + - wallet + x-jvm-package: external.wallet + operationId: listTransferOffers + security: + - walletUserAuth: [] + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransferOffersResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{tracking_id}/status: + post: + description: | + Check the status of a transfer offer with a given tracking id. + tags: + - wallet + x-jvm-package: external.wallet + operationId: getTransferOfferStatus + security: + - walletUserAuth: [] + parameters: + - in: path + name: tracking_id + required: true + schema: + type: string + responses: + '200': + description: An offer with this tracking id is known. Check the response for its status. + content: + application/json: + schema: + $ref: '#/components/schemas/GetTransferOfferStatusResponse' + '404': + description: | + No offer with this tracking id is known. + Perhaps it has not yet been submitted or processed; or it has been submitted + in the past before the current beginning of the wallet transaction log. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/wallet/buy-traffic-requests: + post: + description: Create a request to buy traffic. Note that this only creates the request to do so. Refer to the status endpoint to check if the request succeeded. + tags: + - wallet + x-jvm-package: external.wallet + operationId: createBuyTrafficRequest + security: + - walletUserAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuyTrafficRequest' + responses: + '200': + description: Request to buy traffic got created + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuyTrafficRequestResponse' + '400': + description: Request was invalid, adjust parameters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A request to buy traffic with the same tracking id has been created. Check the status endpoint for the current status. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A request to buy traffic with the same tracking id is currently being processed. Check the status endpoint and resubmit if it returns 404. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal server error that requires operator investigation. Retrying for a small number of times with exponential back-off MAY work. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/wallet/buy-traffic-requests/{tracking_id}/status: + post: + description: | + Check the status of a buy traffic request with a given tracking id. + tags: + - wallet + x-jvm-package: external.wallet + operationId: getBuyTrafficRequestStatus + security: + - walletUserAuth: [] + parameters: + - in: path + name: tracking_id + required: true + schema: + type: string + responses: + '200': + description: A request to buy traffic with this tracking id has been submitted before, check the response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/GetBuyTrafficRequestStatusResponse' + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + description: No request with this tracking id was found. +components: + securitySchemes: + walletUserAuth: + description: | + JWT token as described in [spliceAppBearerAuth]("../../../../common/src/main/openapi/common-external.yaml#/components/securitySchemes/spliceAppBearerAuth"). + The subject of the token must be ledger API user of the user whose wallet the endpoint affects. + type: http + scheme: bearer + bearerFormat: JWT + schemas: + CreateTransferOfferRequest: + type: object + required: + - receiver_party_id + - amount + - description + - expires_at + - tracking_id + properties: + receiver_party_id: + description: | + The party id of the receiver. + type: string + amount: + description: | + The amount of Amulet to transfer. + type: string + description: + description: | + An arbitrary, user chosen text. + This should be a human readable string that describes the purpose of the transfer. + It will be shown to the receiver when they decide whether to accept the offer. + type: string + expires_at: + description: | + Expiry time of the transfer offer as unix timestamp in microseconds. After this time, the offer can no longer be accepted + and automation in the wallet will eventually expire the transfer offer. + Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock + time measured on the caller's machine. See https://docs.daml.com/concepts/time.html + for how ledger effective time is bound to the record time of a transaction on a domain. + type: integer + format: int64 + tracking_id: + description: | + Tracking id to support exactly once submission. Once submitted, all successive calls with the same tracking id + will get rejected with a 409 or 429 status code unless the command fails and the offer did not get created. + Clients should create a fresh tracking id when they try to create a new transfer offer. If that command submission fails + with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same + tracking id to ensure they don't create the same offer multiple times. + type: string + BaseGetTransferOfferStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the transfer offer. + created: + The offer has been created and is waiting for the receiver to accept it. + contract_id points to the contract_id of the offer and transaction_id to the transaction that created it. + accepted: + The offer has been accepted by the receiver and is waiting for the wallet automation + to complete it by delivering the offered Amulet. + contract_id points to the contract id of the accepted offer and transaction_id to the transaction that accepted it + completed: + The transfer has been completed and the CC amount has been transferred to the receiver. + contract_id points to the contract id of the created amulet for the receiver and + transaction_id to the transaction of the transfer. + failed: + The transfer has failed permanently and no CC has been transferred. Refer to + failure_reason for details. A new transfer offer can be created with a different tracking_id. + TransferOfferCreatedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - transaction_id + - contract_id + properties: + transaction_id: + type: string + description: | + Id of the transaction that created the transfer offer + contract_id: + type: string + description: | + Contract id of the created transfer offer + TransferOfferAcceptedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - transaction_id + - contract_id + properties: + transaction_id: + type: string + description: | + Id of the transaction that accepted the transfer offer + contract_id: + type: string + description: | + Contract id of the accepted transfer offer + TransferOfferCompletedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - transaction_id + - contract_id + properties: + transaction_id: + type: string + description: | + Id of the transaction of the transfer + contract_id: + type: string + description: | + Contract id of the created amulet for the receiver + TransferOfferFailedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetTransferOfferStatusResponse' + - type: object + required: + - failure_kind + properties: + failure_kind: + type: string + description: | + The reason for the failure of the transfer offer. + expired: + The transfer offer or the accepted transfer offer expired before it could be completed. + rejected: + The receiver rejected the transfer offer or withdrew their accepted offer. + withdrawn: + The sender withdraw their offer, e.g., due to insufficient funds or operational reasons. + enum: + - expired + - rejected + - withdrawn + withdrawn_reason: + type: string + description: | + Human readable description of the reason for the sender withdrawing their offer. + GetTransferOfferStatusResponse: + oneOf: + - $ref: '#/components/schemas/TransferOfferCreatedResponse' + - $ref: '#/components/schemas/TransferOfferAcceptedResponse' + - $ref: '#/components/schemas/TransferOfferCompletedResponse' + - $ref: '#/components/schemas/TransferOfferFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/TransferOfferCreatedResponse' + accepted: '#/components/schemas/TransferOfferAcceptedResponse' + completed: '#/components/schemas/TransferOfferCompletedResponse' + failed: '#/components/schemas/TransferOfferFailedResponse' + CreateTransferOfferResponse: + type: object + required: + - offer_contract_id + properties: + offer_contract_id: + type: string + ListTransferOffersResponse: + type: object + required: + - offers + properties: + offers: + type: array + items: + $ref: '#/components/schemas/Contract' + CreateBuyTrafficRequest: + type: object + required: + - receiving_validator_party_id + - domain_id + - traffic_amount + - tracking_id + - expires_at + properties: + receiving_validator_party_id: + description: | + Traffic will be purchased for the validator hosting this party. + If the party is hosted on multiple participants, the request will fail with 400 Bad Request. + type: string + domain_id: + description: | + The domain to purchase traffic for. + type: string + traffic_amount: + description: | + traffic to purchase in bytes. + type: integer + format: int64 + tracking_id: + description: | + Tracking id to support exactly once submission. Once submitted, all succeessive calls with the same tracking id + will get rejected with a 409 or 429 status code unless the command fails and the traffic did not get purchased. + Clients should create a fresh tracking id when they try to send a new request to buy traffic. If that command submission fails + with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same + tracking id to ensure they don't purchase traffic multiple times. + type: string + expires_at: + description: | + Expiry time of the request to buy traffic as unix timestamp in microseconds. If the request does not + succeed before this time, the wallet automation will reject and expire it. + Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock + time measured on the caller's machine. See https://docs.daml.com/concepts/time.html + for how ledger effective time is bound to the record time of a transaction on a domain. + type: integer + format: int64 + CreateBuyTrafficRequestResponse: + type: object + required: + - request_contract_id + properties: + request_contract_id: + type: string + BaseGetBuyTrafficRequestStatusResponse: + type: object + required: + - status + properties: + status: + type: string + description: | + The status of the traffic request + created: + The request to buy traffic has been created and is waiting for + the wallet automation to pick it up. + completed: + The traffic has been purchased. + transaction_id points to the transaction that purchased traffic. + failed: + The request to buy traffic has failed permanently and no CC has been transferred. Refer to + failure_reason for details. Use a new tracking_id if you want to retry buying traffic. + BuyTrafficRequestCreatedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetBuyTrafficRequestStatusResponse' + BuyTrafficRequestCompletedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetBuyTrafficRequestStatusResponse' + - type: object + required: + - transaction_id + properties: + transaction_id: + type: string + description: | + Id of the transaction that purchased traffic. + BuyTrafficRequestFailedResponse: + allOf: + - $ref: '#/components/schemas/BaseGetBuyTrafficRequestStatusResponse' + - type: object + required: + - failure_reason + properties: + failure_reason: + type: string + description: | + The reason for the failure of the request to buy traffic. + expired: + The wallet automation did not process the request in time. + rejected: + The wallet automation rejected the request, e.g., due to insufficient funds or operational reasons. + enum: + - expired + - rejected + rejection_reason: + description: | + Human readable description of the rejection reason. + type: string + GetBuyTrafficRequestStatusResponse: + oneOf: + - $ref: '#/components/schemas/BuyTrafficRequestCreatedResponse' + - $ref: '#/components/schemas/BuyTrafficRequestCompletedResponse' + - $ref: '#/components/schemas/BuyTrafficRequestFailedResponse' + discriminator: + propertyName: status + mapping: + created: '#/components/schemas/BuyTrafficRequestCreatedResponse' + completed: '#/components/schemas/BuyTrafficRequestCompletedResponse' + failed: '#/components/schemas/BuyTrafficRequestFailedResponse' + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + responses: + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/api-specs/splice/0.6.12/wallet-internal.yaml b/api-specs/splice/0.6.12/wallet-internal.yaml new file mode 100644 index 000000000..7ec5aea4b --- /dev/null +++ b/api-specs/splice/0.6.12/wallet-internal.yaml @@ -0,0 +1,2379 @@ +openapi: 3.0.0 +info: + title: Wallet API + version: 0.0.1 +servers: + - url: https://example.com/api/validator +tags: + - name: wallet +paths: + /v0/wallet/user-status: + get: + tags: + - wallet + x-jvm-package: status.wallet + operationId: userStatus + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/UserStatusResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/amulets: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: list + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/tap: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: tap + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TapRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TapResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + /v0/wallet/self-grant-feature-app-right: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: selfGrantFeatureAppRight + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SelfGrantFeaturedAppRightRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/SelfGrantFeaturedAppRightResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/balance: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: getBalance + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/GetBalanceResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-payment-requests: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAppPaymentRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAppPaymentRequestsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-payment-requests/{contract_id}: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: getAppPaymentRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ContractWithState' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-payment-requests/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptAppPaymentRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptAppPaymentRequestResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + /v0/wallet/app-payment-requests/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectAppPaymentRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/accepted-app-payments: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAcceptedAppPayments + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAcceptedAppPaymentsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-requests: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSubscriptionRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSubscriptionRequestsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-initial-payments: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSubscriptionInitialPayments + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSubscriptionInitialPaymentsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscriptions: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSubscriptions + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSubscriptionsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-requests/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptSubscriptionRequestResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '503': + $ref: '#/components/responses/503' + /v0/wallet/subscription-requests/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/subscription-requests/{contract_id}: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: getSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/Contract' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + delete: + tags: + - wallet + x-jvm-package: wallet + operationId: cancelSubscriptionRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectTransferOffer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptTransferOffer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptTransferOfferResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-offers/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawTransferOffer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/accepted-transfer-offers: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAcceptedTransferOffers + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAcceptedTransferOffersResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/app-reward-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAppRewardCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAppRewardCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/validator-reward-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listValidatorRewardCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorRewardCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/validator-faucet-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listValidatorFaucetCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorFaucetCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/validator-liveness-activity-records: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listValidatorLivenessActivityRecords + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListValidatorLivenessActivityRecordsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/sv-reward-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listSvRewardCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListSvRewardCouponsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/cancel-featured-app-rights: + delete: + tags: + - wallet + x-jvm-package: wallet + operationId: cancelFeaturedAppRights + responses: + '200': + description: ok + '500': + $ref: '#/components/responses/500' + /v0/wallet/transactions: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: listTransactions + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransactionsRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTransactionsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/transfer-preapproval: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: createTransferPreapproval + responses: + '200': + description: Transfer preapproval was created + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferPreapprovalResponse' + '409': + description: Transfer preapproval already exists + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTransferPreapprovalResponse' + '429': + description: Request to create transfer pre-approval is currently being processed, which may or may not succeed. Retry submitting the request with exponential backoff. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + /v0/wallet/transfer-preapproval/send: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: transferPreapprovalSend + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransferPreapprovalSendRequest' + responses: + '200': + description: ok + /v0/wallet/token-standard/transfers: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: createTokenStandardTransfer + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTokenStandardTransferRequest' + responses: + '200': + description: The transfer has been created + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A transfer with the same tracking id has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A transfer with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + get: + description: List all open transfers where the user is either sender or receiver. + tags: + - wallet + x-jvm-package: wallet + operationId: listTokenStandardTransfers + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListTokenStandardTransfersResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/transfers/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectTokenStandardTransfer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/transfers/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptTokenStandardTransfer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/transfers/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawTokenStandardTransfer + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v2/wallet/token-standard/transfers: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: createTokenStandardTransferV2 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTokenStandardTransferRequest' + responses: + '200': + description: The transfer has been created + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A transfer with the same tracking id has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A transfer with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v2/wallet/token-standard/transfers/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectTokenStandardTransferV2 + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v2/wallet/token-standard/transfers/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptTokenStandardTransferV2 + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v2/wallet/token-standard/transfers/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawTokenStandardTransferV2 + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInstructionResultResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/allocation-requests: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAllocationRequests + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAllocationRequestsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/token-standard/allocation-requests/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectAllocationRequest + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: The AllocationRequest has been rejected + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceExecutionMetadata' + '404': + description: | + The AllocationRequest or the submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A reject for the AllocationRequest is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v2/wallet/token-standard/allocation-requests/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectAllocationRequestV2 + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: The AllocationRequest has been rejected + content: + application/json: + schema: + $ref: '#/components/schemas/ChoiceExecutionMetadata' + '404': + description: | + The AllocationRequest or the submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A reject for the AllocationRequest is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/feature-support: + get: + tags: + - wallet + x-jvm-package: status.wallet + operationId: featureSupport + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/WalletFeatureSupportResponse' + '500': + $ref: '#/components/responses/500' + /v0/allocations: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listAmuletAllocations + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListAllocationsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + post: + tags: + - wallet + x-jvm-package: wallet + operationId: allocateAmulet + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateAmuletRequest' + responses: + '200': + description: The AmuletAllocation has been created + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateAmuletResponse' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: A transfer with the same tracking id has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A transfer with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v2/allocations: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: allocateAmuletV2 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateAmuletV2Request' + responses: + '200': + description: The AmuletAllocation has been created + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateAmuletV2Response' + '400': + description: | + Invalid request, check the error response for details. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: | + The submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '409': + description: An allocation with the same tracking id has been created. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: An allocation with the same tracking id is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/allocations/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawAmuletAllocation + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: The AmuletAllocation has been withdrawn + content: + application/json: + schema: + $ref: '#/components/schemas/AmuletAllocationWithdrawResult' + '404': + description: | + The allocation or the submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A withdraw for the allocation is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v2/allocations/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawAmuletAllocationV2 + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: The AmuletAllocation has been withdrawn + content: + application/json: + schema: + $ref: '#/components/schemas/AmuletAllocationV2WithdrawResult' + '404': + description: | + The allocation or the submitter’s wallet could not be found. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: A withdraw for the allocation is currently being processed, which may or may not succeed. Retry submitting the request with exponential back-off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + $ref: '#/components/responses/500' + /v0/wallet/development-fund-coupons/allocate: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: allocateDevelopmentFundCoupon + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateDevelopmentFundCouponRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AllocateDevelopmentFundCouponResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/development-fund-coupons: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listActiveDevelopmentFundCoupons + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListActiveDevelopmentFundCouponsResponse' + '500': + $ref: '#/components/responses/500' + /v0/wallet/development-fund-coupons/history: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listDevelopmentFundCouponHistory + parameters: + - name: after + description: | + A `next_page_token` from a prior response; if absent, return the first page. + in: query + required: false + schema: + type: integer + format: int64 + - name: limit + description: Maximum number of elements to return. + in: query + required: true + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListDevelopmentFundCouponHistoryResponse' + '500': + $ref: '#/components/responses/500' + /v0/wallet/development-fund-coupons/{contract_id}/withdraw: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: withdrawDevelopmentFundCoupon + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/WithdrawDevelopmentFundCouponRequest' + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/WithdrawDevelopmentFundCouponResponse' + '400': + $ref: '#/components/responses/400' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/minting-delegation-proposals: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listMintingDelegationProposals + description: | + List all MintingDelegationProposal contracts where the user is the delegate. + parameters: + - name: after + description: | + A `next_page_token` from a prior response; if absent, return the first page. + in: query + required: false + schema: + type: integer + format: int64 + - name: limit + description: Maximum number of elements to return, 1000 by default. + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListMintingDelegationProposalsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/minting-delegation-proposals/{contract_id}/accept: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: acceptMintingDelegationProposal + description: | + As the delegate, accept a MintingDelegationProposal, creating a MintingDelegation contract. + If an existing MintingDelegation contract exists with the same beneficiary it will + be archived while accepting this proposal. + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/AcceptMintingDelegationProposalResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/minting-delegation-proposals/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectMintingDelegationProposal + description: | + As the delegate, reject a MintingDelegationProposal. + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/minting-delegations: + get: + tags: + - wallet + x-jvm-package: wallet + operationId: listMintingDelegations + description: | + List all MintingDelegation contracts where the user is the delegate. + parameters: + - name: after + description: | + A `next_page_token` from a prior response; if absent, return the first page. + in: query + required: false + schema: + type: integer + format: int64 + - name: limit + description: Maximum number of elements to return, 1000 by default. + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListMintingDelegationsResponse' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + /v0/wallet/minting-delegations/{contract_id}/reject: + post: + tags: + - wallet + x-jvm-package: wallet + operationId: rejectMintingDelegation + description: | + As the delegate, reject/terminate a MintingDelegation contract. + parameters: + - in: path + name: contract_id + required: true + schema: + type: string + responses: + '200': + description: ok + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' +components: + schemas: + UserStatusResponse: + type: object + required: + - party_id + - user_onboarded + - user_wallet_installed + - has_featured_app_right + properties: + party_id: + type: string + user_onboarded: + type: boolean + user_wallet_installed: + type: boolean + has_featured_app_right: + type: boolean + ListResponse: + type: object + required: + - amulets + - locked_amulets + properties: + amulets: + type: array + items: + $ref: '#/components/schemas/AmuletPosition' + locked_amulets: + type: array + items: + $ref: '#/components/schemas/AmuletPosition' + AmuletPosition: + type: object + required: + - contract + - round + - accrued_holding_fee + - effective_amount + properties: + contract: + $ref: '#/components/schemas/ContractWithState' + round: + type: integer + format: int64 + accrued_holding_fee: + type: string + effective_amount: + type: string + TapRequest: + type: object + required: + - amount + properties: + amount: + type: string + command_id: + description: Command id used for deduplication, if not specified a random UUID is used + type: string + TapResponse: + type: object + required: + - contract_id + properties: + contract_id: + type: string + SelfGrantFeaturedAppRightRequest: + type: object + nullable: true + SelfGrantFeaturedAppRightResponse: + type: object + required: + - contract_id + properties: + contract_id: + type: string + GetBalanceResponse: + type: object + required: + - round + - effective_unlocked_qty + - effective_locked_qty + - total_holding_fees + properties: + round: + type: integer + format: int64 + effective_unlocked_qty: + type: string + effective_locked_qty: + type: string + total_holding_fees: + type: string + ListAppPaymentRequestsResponse: + type: object + required: + - payment_requests + properties: + payment_requests: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + AcceptAppPaymentRequestRequest: + type: object + required: + - request_contract_id + properties: + request_contract_id: + type: string + AcceptAppPaymentRequestResponse: + type: object + required: + - accepted_payment_contract_id + properties: + accepted_payment_contract_id: + type: string + RejectAppPaymentRequestRequest: + type: object + required: + - request_contract_id + properties: + request_contract_id: + type: string + ListAcceptedAppPaymentsResponse: + type: object + required: + - accepted_app_payments + properties: + accepted_app_payments: + type: array + items: + $ref: '#/components/schemas/ContractWithState' + ListSubscriptionRequestsResponse: + type: object + required: + - subscription_requests + properties: + subscription_requests: + type: array + items: + $ref: '#/components/schemas/Contract' + ListSubscriptionInitialPaymentsResponse: + type: object + required: + - initial_payments + properties: + initial_payments: + type: array + items: + $ref: '#/components/schemas/Contract' + Subscription: + type: object + required: + - subscription + - state + properties: + subscription: + $ref: '#/components/schemas/Contract' + state: + $ref: '#/components/schemas/SubscriptionState' + SubscriptionState: + oneOf: + - $ref: '#/components/schemas/SubscriptionIdleState' + - $ref: '#/components/schemas/SubscriptionPaymentState' + SubscriptionIdleState: + type: object + required: + - idle + properties: + idle: + $ref: '#/components/schemas/Contract' + SubscriptionPaymentState: + type: object + required: + - payment + properties: + payment: + $ref: '#/components/schemas/Contract' + ListSubscriptionsResponse: + type: object + required: + - subscriptions + properties: + subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscription' + AcceptSubscriptionRequestResponse: + type: object + required: + - initial_payment_contract_id + properties: + initial_payment_contract_id: + type: string + AcceptTransferOfferResponse: + type: object + required: + - accepted_offer_contract_id + properties: + accepted_offer_contract_id: + type: string + ListAcceptedTransferOffersResponse: + type: object + required: + - accepted_offers + properties: + accepted_offers: + type: array + items: + $ref: '#/components/schemas/Contract' + ListAppRewardCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - app_reward_coupons + properties: + app_reward_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListValidatorRewardCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - validator_reward_coupons + properties: + validator_reward_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListValidatorFaucetCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - validator_faucet_coupons + properties: + validator_faucet_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListValidatorLivenessActivityRecordsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - validator_liveness_activity_records + properties: + validator_liveness_activity_records: + type: array + items: + $ref: '#/components/schemas/Contract' + ListSvRewardCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - sv_reward_coupons + properties: + sv_reward_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListTransactionsRequest: + type: object + required: + - page_size + properties: + begin_after_id: + type: string + page_size: + type: integer + format: int64 + PartyAndAmount: + type: object + required: + - party + - amount + properties: + party: + type: string + amount: + type: string + TransactionSubtype: + type: object + required: + - template_id + - choice + properties: + template_id: + type: string + choice: + type: string + amulet_operation: + type: string + interface_id: + type: string + BaseListTransactionsResponseItem: + type: object + required: + - transaction_type + - transaction_subtype + - event_id + - date + properties: + transaction_type: + type: string + transaction_subtype: + $ref: '#/components/schemas/TransactionSubtype' + event_id: + type: string + date: + type: string + format: date-time + TransferResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + - type: object + required: + - sender + - receivers + - holding_fees + - app_rewards_used + - validator_rewards_used + - sv_rewards_used + - development_fund_coupons_used + properties: + sender: + $ref: '#/components/schemas/PartyAndAmount' + receivers: + type: array + items: + $ref: '#/components/schemas/PartyAndAmount' + holding_fees: + type: string + app_rewards_used: + type: string + validator_rewards_used: + type: string + sv_rewards_used: + type: string + development_fund_coupons_used: + type: string + transfer_instruction_receiver: + type: string + transfer_instruction_amount: + type: string + transfer_instruction_cid: + type: string + description: + type: string + BalanceChangeResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + - type: object + required: + - receivers + properties: + receivers: + type: array + items: + $ref: '#/components/schemas/PartyAndAmount' + transfer_instruction_cid: + type: string + NotificationResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + - type: object + required: + - details + properties: + details: + type: string + UnknownResponseItem: + allOf: + - $ref: '#/components/schemas/BaseListTransactionsResponseItem' + ListTransactionsResponseItem: + oneOf: + - $ref: '#/components/schemas/TransferResponseItem' + - $ref: '#/components/schemas/BalanceChangeResponseItem' + - $ref: '#/components/schemas/NotificationResponseItem' + - $ref: '#/components/schemas/UnknownResponseItem' + discriminator: + propertyName: transaction_type + mapping: + transfer: '#/components/schemas/TransferResponseItem' + balance_change: '#/components/schemas/BalanceChangeResponseItem' + notification: '#/components/schemas/NotificationResponseItem' + unknown: '#/components/schemas/UnknownResponseItem' + ListTransactionsResponse: + type: object + required: + - items + properties: + items: + type: array + items: + $ref: '#/components/schemas/ListTransactionsResponseItem' + CreateTransferPreapprovalResponse: + type: object + required: + - transfer_preapproval_contract_id + properties: + transfer_preapproval_contract_id: + type: string + TransferPreapprovalSendRequest: + type: object + required: + - receiver_party_id + - amount + - deduplication_id + properties: + receiver_party_id: + type: string + amount: + type: string + deduplication_id: + description: | + Deduplication id, only one successful transfer with this id + will be accepted within a 24h period. + type: string + description: + type: string + CreateTokenStandardTransferRequest: + type: object + required: + - receiver_party_id + - amount + - description + - expires_at + - tracking_id + properties: + receiver_party_id: + description: | + The party id of the receiver. + type: string + amount: + description: | + The amount of Amulet to transfer. + type: string + description: + description: | + An arbitrary, user chosen text. + This should be a human readable string that describes the purpose of the transfer. + It will be shown to the receiver when they decide whether to accept the offer. + type: string + expires_at: + description: | + Expiry time of the transfer offer as unix timestamp in microseconds. After this time, the offer can no longer be accepted + and automation in the wallet will eventually expire the transfer offer. + Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock + time measured on the caller's machine. See https://docs.daml.com/concepts/time.html + for how ledger effective time is bound to the record time of a transaction on a domain. + type: integer + format: int64 + tracking_id: + description: | + Tracking id to support exactly once submission. Once submitted, all successive calls with the same tracking id + will get rejected with a 409 or 429 status code unless the command fails and the transfer did not get created. + Clients should create a fresh tracking id when they try to create a new transfer. If that command submission fails + with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same + tracking id to ensure they don't create the same transfer multiple times. + type: string + TransferInstructionResultResponse: + type: object + required: + - output + - sender_change_cids + - meta + properties: + output: + $ref: '#/components/schemas/TransferInstructionResultOutput' + sender_change_cids: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + TransferInstructionResultOutput: + oneOf: + - $ref: '#/components/schemas/TransferInstructionPending' + - $ref: '#/components/schemas/TransferInstructionCompleted' + - $ref: '#/components/schemas/TransferInstructionFailed' + TransferInstructionPending: + type: object + required: + - transfer_instruction_cid + properties: + transfer_instruction_cid: + type: string + TransferInstructionCompleted: + type: object + required: + - receiver_holding_cids + properties: + receiver_holding_cids: + type: array + items: + type: string + TransferInstructionFailed: + type: object + properties: + dummy: + type: object + ListTokenStandardTransfersResponse: + type: object + required: + - transfers + properties: + transfers: + type: array + items: + $ref: '#/components/schemas/Contract' + WalletFeatureSupportResponse: + type: object + required: + - token_standard + - transfer_preapproval_description + properties: + token_standard: + type: boolean + transfer_preapproval_description: + type: boolean + AllocateAmuletRequest: + type: object + required: + - settlement + - transfer_leg_id + - transfer_leg + properties: + settlement: + type: object + required: + - executor + - settlement_ref + - requested_at + - allocate_before + - settle_before + properties: + executor: + type: string + settlement_ref: + type: object + required: + - id + properties: + id: + type: string + cid: + type: string + requested_at: + type: integer + format: int64 + allocate_before: + type: integer + format: int64 + settle_before: + type: integer + format: int64 + meta: + type: object + additionalProperties: + type: string + transfer_leg_id: + type: string + transfer_leg: + type: object + required: + - receiver + - amount + properties: + receiver: + type: string + amount: + type: string + meta: + type: object + additionalProperties: + type: string + AllocateAmuletV2Request: + type: object + required: + - settlement + - transfer_leg_sides + - committed + properties: + settlement: + type: object + required: + - executors + - settlement_ref + properties: + executors: + type: array + items: + type: string + settlement_ref: + type: object + required: + - id + properties: + id: + type: string + cid: + type: string + settlement_deadline: + type: integer + format: int64 + meta: + type: object + additionalProperties: + type: string + transfer_leg_sides: + type: array + items: + $ref: '#/components/schemas/TransferLegSide' + next_iteration_funding: + type: object + additionalProperties: + description: BigDecimal amount, encoded as string to prevent precision loss + type: string + committed: + type: boolean + default: false + meta: + type: object + additionalProperties: + type: string + TransferLegSide: + type: object + required: + - transfer_leg_id + - side + - otherside + - amount + properties: + transfer_leg_id: + type: string + side: + type: string + enum: + - SENDERSIDE + - RECEIVERSIDE + otherside: + description: A party id + type: string + amount: + type: string + meta: + type: object + additionalProperties: + type: string + AllocateAmuletResponse: + type: object + required: + - output + - sender_change_cids + - meta + properties: + output: + $ref: '#/components/schemas/AllocationInstructionResultOutput' + sender_change_cids: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + AllocateAmuletV2Response: + type: object + required: + - output + - sender_change_cids + - meta + properties: + output: + $ref: '#/components/schemas/AllocationInstructionResultOutput' + sender_change_cids: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + AllocationInstructionResultOutput: + oneOf: + - $ref: '#/components/schemas/AllocationInstructionResultPending' + - $ref: '#/components/schemas/AllocationInstructionResultCompleted' + - $ref: '#/components/schemas/AllocationInstructionResultFailed' + AllocationInstructionResultPending: + type: object + required: + - allocation_instruction_cid + properties: + allocation_instruction_cid: + type: string + AllocationInstructionResultCompleted: + type: object + required: + - allocation_cid + properties: + allocation_cid: + type: string + AllocationInstructionResultFailed: + type: object + properties: + dummy: + type: object + ListAllocationsResponse: + type: object + description: Includes all AmuletAllocation views (for both Token Standard v1 and v2) where the user is a sender of one of the transferLegs and where the involved instrument's admin is the DSO party. + required: + - allocations + properties: + allocations: + type: array + items: + $ref: '#/components/schemas/AmuletAllocation' + AmuletAllocation: + type: object + description: An AmuletAllocation contract, either V1 or V2. You can distinguish the type of the contract by checking the template_id field. + required: + - contract + properties: + contract: + $ref: '#/components/schemas/Contract' + ListAllocationRequestsResponse: + type: object + description: Includes all AllocationRequest views where the user is in one of the transferLegs and where the involved instrument's admin is the DSO party. + required: + - allocation_requests + properties: + allocation_requests: + type: array + items: + $ref: '#/components/schemas/AllocationRequest' + AllocationRequest: + type: object + description: A contract implementing the Token Standard (V1 or V2) interface AllocationRequest. You can distinguish the type of the contract by checking the template_id field, which will contain the template_id of the corresponding (v1,v2) AllocationRequest interface. + required: + - contract + properties: + contract: + $ref: '#/components/schemas/Contract' + AmuletAllocationWithdrawResult: + type: object + required: + - sender_holding_cids + - meta + properties: + sender_holding_cids: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + AmuletAllocationV2WithdrawResult: + type: object + required: + - authorizer_holding_cids + - meta + properties: + authorizer_holding_cids: + description: New holdings created for the authorizer as part of the settlement keyed by their `instrumentId.id`. + type: object + additionalProperties: + type: array + items: + type: string + meta: + type: object + additionalProperties: + type: string + ChoiceExecutionMetadata: + type: object + required: + - meta + properties: + meta: + type: object + additionalProperties: + type: string + AllocateDevelopmentFundCouponRequest: + type: object + required: + - beneficiary + - amount + - expiresAt + - reason + properties: + beneficiary: + type: string + amount: + type: string + expiresAt: + type: integer + format: int64 + reason: + type: string + AllocateDevelopmentFundCouponResponse: + type: object + required: + - development_fund_coupon_contract_id + properties: + development_fund_coupon_contract_id: + type: string + unclaimed_development_fund_coupon_contract_id: + type: string + ListActiveDevelopmentFundCouponsResponse: + type: object + description: Includes only up to 1000 elements. + required: + - active_development_fund_coupons + properties: + active_development_fund_coupons: + type: array + items: + $ref: '#/components/schemas/Contract' + ListDevelopmentFundCouponHistoryResponse: + type: object + required: + - development_fund_coupon_history + properties: + development_fund_coupon_history: + type: array + items: + $ref: '#/components/schemas/ArchivedDevelopmentFundCoupon' + next_page_token: + type: integer + format: int64 + description: | + Cursor for pagination. Use as `after` to continue. + The end is reached when a page returns no results. + ArchivedDevelopmentFundCoupon: + type: object + required: + - createdAt + - archivedAt + - beneficiary + - fund_manager + - amount + - expiresAt + - reason + - status + properties: + createdAt: + type: string + format: date-time + archivedAt: + type: string + format: date-time + beneficiary: + type: string + fund_manager: + type: string + amount: + type: string + expiresAt: + type: string + format: date-time + reason: + type: string + status: + type: string + enum: + - withdrawn + - rejected + - claimed + - expired + rejection_or_withdrawal_reason: + type: string + description: | + Explanation for why the coupon was rejected or withdrawn. + This field is present only when status is 'rejected' or 'withdrawn' + and must be omitted when status is 'claimed' or 'expired'. + WithdrawDevelopmentFundCouponRequest: + type: object + required: + - reason + properties: + reason: + type: string + WithdrawDevelopmentFundCouponResponse: + type: object + required: + - unclaimed_development_fund_coupon_contract_id + properties: + unclaimed_development_fund_coupon_contract_id: + type: string + MintingDelegationProposalWithStatus: + type: object + required: + - contract + - beneficiary_hosted + properties: + contract: + $ref: '#/components/schemas/Contract' + beneficiary_hosted: + type: boolean + description: Whether the beneficiary party is currently hosted on this validator + ListMintingDelegationProposalsResponse: + type: object + required: + - proposals + properties: + proposals: + type: array + items: + $ref: '#/components/schemas/MintingDelegationProposalWithStatus' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + AcceptMintingDelegationProposalResponse: + type: object + required: + - contract_id + properties: + contract_id: + type: string + description: Contract ID of the created MintingDelegation + MintingDelegationWithStatus: + type: object + required: + - contract + - beneficiary_hosted + properties: + contract: + $ref: '#/components/schemas/Contract' + beneficiary_hosted: + type: boolean + description: Whether the beneficiary party is currently hosted on this validator + ListMintingDelegationsResponse: + type: object + required: + - delegations + properties: + delegations: + type: array + items: + $ref: '#/components/schemas/MintingDelegationWithStatus' + next_page_token: + type: integer + format: int64 + description: | + When requesting the next page of results, pass this as URL query parameter `after`. + If absent or `null`, there are no more pages. + ErrorResponse: + type: object + required: + - error + properties: + error: + type: string + Contract: + type: object + properties: + template_id: + type: string + contract_id: + type: string + payload: + type: object + created_event_blob: + type: string + created_at: + type: string + required: + - template_id + - contract_id + - payload + - created_event_blob + - created_at + ContractWithState: + type: object + properties: + contract: + $ref: '#/components/schemas/Contract' + domain_id: + type: string + required: + - contract + responses: + '400': + description: bad request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '429': + description: too many requests + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' diff --git a/core/ledger-client-types/src/generated-clients/asyncapi-3.5.8.ts b/core/ledger-client-types/src/generated-clients/asyncapi-3.5.8.ts new file mode 100644 index 000000000..8d664dab8 --- /dev/null +++ b/core/ledger-client-types/src/generated-clients/asyncapi-3.5.8.ts @@ -0,0 +1,1408 @@ +// This file is auto-generated from AsyncAPI specification +// Do not edit manually +//Message Schemas +export interface JsCantonError { + code: string + cause: string + correlationId?: string + traceId?: string + context: Map_String + resources?: Tuple2_String_String[] + errorCategory: number + grpcCodeValue?: number + retryInfo?: string + definiteAnswer?: boolean +} + +export type Map_String = Record + +export type Tuple2_String_String = any + +export interface CompletionStreamRequest { + /** Only completions of commands submitted with the same user_id will be visible in the stream. +Must be a valid UserIdString (as described in ``value.proto``). + +Required unless authentication is used with a user token. +In that case, the token's user-id will be used for the request's user_id. + +Optional **/ + userId?: string + /** Non-empty list of parties whose data should be included. +The stream shows only completions of commands for which at least one of the ``act_as`` parties is in the given set of parties. +Must be a valid PartyIdString (as described in ``value.proto``). + +Required: must be non-empty **/ + parties: string[] + /** This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. +If not set the ledger uses the ledger begin offset instead. +If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). +If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. + +Optional **/ + beginExclusive?: number +} + +export type Either_JsCantonError_CompletionStreamResponse = + | CompletionStreamResponse + | JsCantonError + +export type Map_K_V = Record + +export interface CompletionStreamResponse { + completionResponse?: CompletionResponse +} + +export type CompletionResponse = Completion | Empty1 | OffsetCheckpoint + +export interface Completion { + value: Completion1 +} + +export interface Completion1 { + /** The ID of the succeeded or failed command. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + commandId: string + /** Identifies the exact type of the error. +It uses the same format of conveying error details as it is used for the RPC responses of the APIs. + +Optional **/ + status?: JsStatus + /** The update_id of the transaction or reassignment that resulted from the command with command_id. + +Only set for successfully executed commands. +Must be a valid LedgerString (as described in ``value.proto``). + +Optional **/ + updateId?: string + /** The user-id that was used for the submission, as described in ``commands.proto``. +Must be a valid UserIdString (as described in ``value.proto``). + +Required **/ + userId: string + /** The set of parties on whose behalf the commands were executed. +Contains the ``act_as`` parties from ``commands.proto`` +filtered to the requesting parties in CompletionStreamRequest. +The order of the parties need not be the same as in the submission. +Each element must be a valid PartyIdString (as described in ``value.proto``). + +Required: must be non-empty **/ + actAs: string[] + /** The submission ID this completion refers to, as described in ``commands.proto``. +Must be a valid LedgerString (as described in ``value.proto``). + +Optional **/ + submissionId?: string + deduplicationPeriod?: DeduplicationPeriod + /** The Ledger API trace context + +The trace context transported in this message corresponds to the trace context supplied +by the client application in a HTTP2 header of the original command submission. +We typically use a header to transfer this type of information. Here we use message +body, because it is used in gRPC streams which do not support per message headers. +This field will be populated with the trace context contained in the original submission. +If that was not provided, a unique ledger-api-server generated trace context will be used +instead. + +Optional **/ + traceContext?: TraceContext + /** May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time. +Must be a valid absolute offset (positive integer). + +Required **/ + offset: number + /** The synchronizer along with its record time. +The synchronizer id provided, in case of + +- successful/failed transactions: identifies the synchronizer of the transaction +- for successful/failed unassign commands: identifies the source synchronizer +- for successful/failed assign commands: identifies the target synchronizer + +Required **/ + synchronizerTime: SynchronizerTime + /** The traffic cost paid by this participant node for the confirmation request +for the submitted command. + +Commands whose execution is rejected before their corresponding +confirmation request is ordered by the synchronizer will report a paid +traffic cost of zero. +If a confirmation request is ordered for a command, but the request fails +(e.g., due to contention with a concurrent contract archival), the traffic +cost is paid and reported on the failed completion for the request. + +If you want to correlate the traffic cost of a successful completion +with the transaction that resulted from the command, you can use the +``offset`` field to retrieve the transaction using +``UpdateService.GetUpdateByOffset`` on the same participant node; or alternatively use the ``update_id`` +field to retrieve the transaction using ``UpdateService.GetUpdateById`` on any participant node +that sees the transaction. + +Note: for completions processed before the participant started serving +traffic cost on the Ledger API, this field will be set to zero. +Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater +than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. +The cost reported here is the one paid for ordering the confirmation request. + +Optional **/ + paidTrafficCost?: number +} + +export interface JsStatus { + code: number + message: string + details?: ProtoAny[] +} + +export interface ProtoAny { + typeUrl: string + value: string + unknownFields: UnknownFieldSet + valueDecoded?: string +} + +export interface UnknownFieldSet { + fields: Map_Int_Field +} + +export type Map_Int_Field = Record + +export interface Field { + varint?: number[] + fixed64?: number[] + fixed32?: number[] + lengthDelimited?: string[] +} + +export type DeduplicationPeriod = + | DeduplicationDuration + | DeduplicationOffset + | Empty + +export interface DeduplicationDuration { + value: Duration +} + +export interface Duration { + seconds: number + nanos: number + /** This field is automatically added as part of protobuf to json mapping **/ + unknownFields?: UnknownFieldSet +} + +export interface DeduplicationOffset { + value: number +} + +export type Empty = Record + +export interface TraceContext { + /** https://www.w3.org/TR/trace-context/ + +Optional **/ + traceparent?: string + /** Optional **/ + tracestate?: string +} + +export interface SynchronizerTime { + /** The id of the synchronizer. + +Required **/ + synchronizerId: string + /** All commands with a maximum record time below this value MUST be considered lost if their completion has not arrived before this checkpoint. + +Required **/ + recordTime: string +} + +export type Empty1 = Record + +export interface OffsetCheckpoint { + value: OffsetCheckpoint1 +} + +export interface OffsetCheckpoint1 { + /** The participant's offset, the details of the offset field are described in ``community/ledger-api/README.md``. +Must be a valid absolute offset (positive integer). + +Required **/ + offset: number + /** The times associated with each synchronizer at this offset. + +Optional: can be empty **/ + synchronizerTimes?: SynchronizerTime[] +} + +export interface GetCompletionsRequest { + /** If specified, only completions of commands are included, which have at least one of the ``act_as`` parties +in the given set of parties. +Only Ledger API users with CanReadAsAnyParty permission allowed to provide no ``parties``. +Must be a valid PartyIdString (as described in ``value.proto``). + +Optional: can be empty **/ + parties?: string[] + /** This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. +If not set the ledger uses the ledger begin offset instead. +If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). +If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. (the pruning +offset is accessible on the StateService.GetLatestPrunedOffsets endpoint) + +Optional **/ + beginExclusive?: number +} + +export interface GetActiveContractsRequest { + /** Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. +Templates to include in the served snapshot, per party. +Optional, if specified event_format must be unset, if not specified event_format must be set. **/ + filter?: TransactionFilter + /** Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. +If enabled, values served over the API will contain more information than strictly necessary to interpret the data. +In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. +Optional, if specified event_format must be unset. **/ + verbose?: boolean + /** The offset at which the snapshot of the active contracts will be computed. +Must be no greater than the current ledger end offset. +Must be greater than or equal to the last pruning offset. +Must be a valid absolute offset (positive integer) or ledger begin offset (zero). +If zero, the empty set will be returned. + +Required **/ + activeAtOffset: number + /** Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of +TRANSACTION_SHAPE_ACS_DELTA. +Optional for backwards compatibility, defaults to an EventFormat where: + +- filters_by_party is the filter.filters_by_party from this request +- filters_for_any_party is the filter.filters_for_any_party from this request +- verbose is the verbose field from this request **/ + eventFormat?: EventFormat + /** Opaque representation of a continuation token defining a position in the active contracts snapshot. +The prefix of the active contracts snapshot will be omitted up to and including the element from which +the continuation token was read. +To reuse the continuation token from a `GetActiveContractsPageResponse`: + +- subsequent request must be executed on the same participant with the same version of canton, +- subsequent request must have the same active_at_offset, +- subsequent request must have the same event_format +- and the participant must not have been pruned after the active_at_offset. + +If not specified, the whole active contracts snapshot will be returned. + +Optional: can be empty **/ + streamContinuationToken?: string +} + +export interface TransactionFilter { + /** Each key must be a valid PartyIdString (as described in ``value.proto``). +The interpretation of the filter depends on the transaction-shape being filtered: + +1. For **transaction trees** (used in GetUpdateTreesResponse for backwards compatibility) all party keys used as + wildcard filters, and all subtrees whose root has one of the listed parties as an informee are returned. + If there are ``CumulativeFilter``s, those will control returned ``CreatedEvent`` fields where applicable, but will + not be used for template/interface filtering. +2. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. +3. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. **/ + filtersByParty?: Map_Filters + /** Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same +with the per-party filter as described above. **/ + filtersForAnyParty?: Filters +} + +export type Map_Filters = Record + +export interface Filters { + /** Every filter in the cumulative list expands the scope of the resulting stream. Each interface, +template or wildcard filter means additional events that will match the query. +The impact of include_interface_view and include_created_event_blob fields in the filters will +also be accumulated. +A template or an interface SHOULD NOT appear twice in the accumulative field. +A wildcard filter SHOULD NOT be defined more than once in the accumulative field. +If no ``CumulativeFilter`` defined, the default of a single ``WildcardFilter`` with +include_created_event_blob unset is used. + +Optional: can be empty **/ + cumulative?: CumulativeFilter[] +} + +export interface CumulativeFilter { + identifierFilter?: IdentifierFilter +} + +export type IdentifierFilter = + | Empty2 + | InterfaceFilter + | TemplateFilter + | WildcardFilter + +export type Empty2 = Record + +export interface InterfaceFilter { + value: InterfaceFilter1 +} + +export interface InterfaceFilter1 { + /** The interface that a matching contract must implement. +The ``interface_id`` needs to be valid: corresponding interface should be defined in +one of the available packages at the time of the query. +Both package-name and package-id reference formats for the identifier are supported. +Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + +Required **/ + interfaceId: string + /** Whether to include the interface view on the contract in the returned ``CreatedEvent``. +Use this to access contract data in a uniform manner in your API client. + +Optional **/ + includeInterfaceView?: boolean + /** Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. +Use this to access the contract create event payload in your API client +for submitting it as a disclosed contract with future commands. + +Optional **/ + includeCreatedEventBlob?: boolean +} + +export interface TemplateFilter { + value: TemplateFilter1 +} + +export interface TemplateFilter1 { + /** A template for which the payload should be included in the response. +The ``template_id`` needs to be valid: corresponding template should be defined in +one of the available packages at the time of the query. +Both package-name and package-id reference formats for the identifier are supported. +Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + +Required **/ + templateId: string + /** Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. +Use this to access the contract event payload in your API client +for submitting it as a disclosed contract with future commands. + +Optional **/ + includeCreatedEventBlob?: boolean +} + +export interface WildcardFilter { + value: WildcardFilter1 +} + +export interface WildcardFilter1 { + /** Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. +Use this to access the contract create event payload in your API client +for submitting it as a disclosed contract with future commands. + +Optional **/ + includeCreatedEventBlob?: boolean +} + +export interface EventFormat { + /** Each key must be a valid PartyIdString (as described in ``value.proto``). +The interpretation of the filter depends on the transaction-shape being filtered: + +1. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + the listed parties and match the per-party filter. +2. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + stakeholders include at least one of the listed parties and match the per-party filter. + +Optional: can be empty **/ + filtersByParty?: Map_Filters + /** Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same +with the per-party filter as described above. + +Optional **/ + filtersForAnyParty?: Filters + /** If enabled, values served over the API will contain more information than strictly necessary to interpret the data. +In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + +Optional **/ + verbose?: boolean +} + +export type Either_JsCantonError_JsGetActiveContractsResponse = + | JsCantonError + | JsGetActiveContractsResponse + +export interface JsGetActiveContractsResponse { + /** The workflow ID used in command submission which corresponds to the contract_entry. Only set if +the ``workflow_id`` for the command was set. +Must be a valid LedgerString (as described in ``value.proto``). + +Optional **/ + workflowId?: string + contractEntry?: JsContractEntry + /** Opaque representation of a continuation token which can be used in the request to bypass the already processed part +of the active contracts snapshot. +Only populated for the streaming ``GetActiveContracts`` rpc call. + +Optional: can be empty **/ + streamContinuationToken?: string +} + +export type JsContractEntry = + | JsActiveContract + | JsEmpty + | JsIncompleteAssigned + | JsIncompleteUnassigned + +export interface JsActiveContract { + /** The event as it appeared in the context of its last update (i.e. daml transaction or +reassignment). In particular, the last offset, node_id pair is preserved. +The last update is the most recent update created or assigned this contract on synchronizer_id synchronizer. +The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used +for lookups. + +Required **/ + createdEvent: CreatedEvent + /** A valid synchronizer id + +Required **/ + synchronizerId: string + /** Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases +with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter +equals zero. +This field will be the reassignment_counter of the latest observable activation event on this synchronizer, which is +before the active_at_offset. + +Required **/ + reassignmentCounter: number +} + +export interface CreatedEvent { + /** The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. +Offsets are managed by the participant nodes. +Transactions can thus NOT be assumed to have the same offsets on different participant nodes. +It is a valid absolute offset (positive integer) + +Required **/ + offset: number + /** The position of this event in the originating transaction or reassignment. +The origin has contextual meaning, please see description at messages that include a CreatedEvent. +Node IDs are not necessarily equal across participants, +as these may see different projections/parts of transactions. +Must be valid node ID (non-negative integer) + +Required **/ + nodeId: number + /** The ID of the created contract. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + contractId: string + /** The template of the created contract. +The identifier uses the package-id reference format. + +Required **/ + templateId: string + /** The key of the created contract. +This will be set if and only if ``template_id`` defines a contract key. + +Optional **/ + contractKey?: undefined + /** The hash of contract_key. +This will be set if and only if ``template_id`` defines a contract key. + +Optional: can be empty **/ + contractKeyHash?: string + /** The arguments that have been used to create the contract. + +Required **/ + createArgument: undefined + /** Opaque representation of contract create event payload intended for forwarding +to an API server as a contract disclosed as part of a command +submission. + +Optional: can be empty **/ + createdEventBlob?: string + /** Interface views specified in the transaction filter. +Includes an ``InterfaceView`` for each interface for which there is a ``InterfaceFilter`` with + +- its party in the ``witness_parties`` of this event, +- and which is implemented by the template of this event, +- and which has ``include_interface_view`` set. + +Optional: can be empty **/ + interfaceViews?: JsInterfaceView[] + /** The parties that are notified of this event. When a ``CreatedEvent`` +is returned as part of a transaction tree or ledger-effects transaction, this will include all +the parties specified in the ``TransactionFilter`` that are witnesses of the event +(the stakeholders of the contract and all informees of all the ancestors +of this create action that this participant knows about). +If served as part of a ACS delta transaction those will +be limited to all parties specified in the ``TransactionFilter`` that +are stakeholders of the contract (i.e. either signatories or observers). +If the ``CreatedEvent`` is returned as part of an AssignedEvent, +ActiveContract or IncompleteUnassigned (so the event is related to +an assignment or unassignment): this will include all parties of the +``TransactionFilter`` that are stakeholders of the contract. + +The behavior of reading create events visible to parties not hosted +on the participant node serving the Ledger API is undefined. Concretely, +there is neither a guarantee that the participant node will serve all their +create events on the ACS stream, nor is there a guarantee that matching archive +events are delivered for such create events. + +For most clients this is not a problem, as they only read events for parties +that are hosted on the participant node. If you need to read events +for parties that may not be hosted at all times on the participant node, +subscribe to the ``TopologyEvent``s for that party by setting a corresponding +``UpdateFormat``. Using these events, query the ACS as-of an offset where the +party is hosted on the participant node, and ignore create events at offsets +where the party is not hosted on the participant node. + +Required: must be non-empty **/ + witnessParties: string[] + /** The signatories for this contract as specified by the template. + +Required: must be non-empty **/ + signatories: string[] + /** The observers for this contract as specified explicitly by the template or implicitly as choice controllers. +This field never contains parties that are signatories. + +Optional: can be empty **/ + observers?: string[] + /** Ledger effective time of the transaction that created the contract. + +Required **/ + createdAt: string + /** The package name of the created contract. + +Required **/ + packageName: string + /** A package-id present in the participant package store that typechecks the contract's argument. +This may differ from the package-id of the template used to create the contract. +For contracts created before Canton 3.4, this field matches the contract's creation package-id. + +NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice. + +Required **/ + representativePackageId: string + /** Whether this event would be part of respective ACS_DELTA shaped stream, +and should therefore considered when tracking contract activeness on the client-side. + +Required **/ + acsDelta: boolean +} + +export interface JsInterfaceView { + /** The interface implemented by the matched event. +The identifier uses the package-id reference format. + +Required **/ + interfaceId: string + /** Whether the view was successfully computed, and if not, +the reason for the error. The error is reported using the same rules +for error codes and messages as the errors returned for API requests. + +Required **/ + viewStatus: JsStatus + /** The value of the interface's view method on this event. +Set if it was requested in the ``InterfaceFilter`` and it could be +successfully computed. + +Optional **/ + viewValue?: undefined + /** The package defining the interface implementation used to compute the view. +Can be different from the package that was used to create the contract itself, +as the contract arguments can be upgraded or downgraded using smart-contract upgrading +as part of computing the interface view. +Populated if the view computation is successful, otherwise empty. + +Optional **/ + implementationPackageId?: string +} + +export type JsEmpty = Record + +export interface JsIncompleteAssigned { + /** Required **/ + assignedEvent: JsAssignedEvent +} + +export interface JsAssignedEvent { + /** The ID of the source synchronizer. +Must be a valid synchronizer id. + +Required **/ + source: string + /** The ID of the target synchronizer. +Must be a valid synchronizer id. + +Required **/ + target: string + /** The ID from the unassigned event. +For correlation capabilities. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + reassignmentId: string + /** Party on whose behalf the assign command was executed. +Empty if the assignment happened offline via the repair service. +Must be a valid PartyIdString (as described in ``value.proto``). + +Optional **/ + submitter?: string + /** Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases +with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter +equals zero. + +Required **/ + reassignmentCounter: number + /** The offset of this event refers to the offset of the assignment, +while the node_id is the index of within the batch. + +Required **/ + createdEvent: CreatedEvent +} + +export interface JsIncompleteUnassigned { + /** The event as it appeared in the context of its last activation update (i.e. daml transaction or +reassignment). In particular, the last activation offset, node_id pair is preserved. +The last activation update is the most recent update created or assigned this contract on synchronizer_id synchronizer before +the unassigned_event. +The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used +for lookups. + +Required **/ + createdEvent: CreatedEvent + /** Required **/ + unassignedEvent: UnassignedEvent +} + +export interface UnassignedEvent { + /** The ID of the unassignment. This needs to be used as an input for a assign ReassignmentCommand. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + reassignmentId: string + /** The ID of the reassigned contract. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + contractId: string + /** The template of the reassigned contract. +The identifier uses the package-id reference format. + +Required **/ + templateId: string + /** The ID of the source synchronizer +Must be a valid synchronizer id + +Required **/ + source: string + /** The ID of the target synchronizer +Must be a valid synchronizer id + +Required **/ + target: string + /** Party on whose behalf the unassign command was executed. +Empty if the unassignment happened offline via the repair service. +Must be a valid PartyIdString (as described in ``value.proto``). + +Optional **/ + submitter?: string + /** Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases +with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter +equals zero. + +Required **/ + reassignmentCounter: number + /** Assignment exclusivity +Before this time (measured on the target synchronizer), only the submitter of the unassignment can initiate the assignment +Defined for reassigning participants. + +Optional **/ + assignmentExclusivity?: string + /** The parties that are notified of this event. + +Required: must be non-empty **/ + witnessParties: string[] + /** The package name of the contract. + +Required **/ + packageName: string + /** The offset of origin. +Offsets are managed by the participant nodes. +Reassignments can thus NOT be assumed to have the same offsets on different participant nodes. +Must be a valid absolute offset (positive integer) + +Required **/ + offset: number + /** The position of this event in the originating reassignment. +Node IDs are not necessarily equal across participants, +as these may see different projections/parts of reassignments. +Must be valid node ID (non-negative integer) + +Required **/ + nodeId: number +} + +export interface GetUpdatesRequest { + /** Exclusive lower bound offset of the requested ledger section (non-negative integer). +The response will only contain transactions whose offset is strictly greater than this. +If set to zero, the lower bound is set to the beginning of the ledger. +If the participant has been pruned, this parameter must be greater or equal than the pruning offset. +Required **/ + beginExclusive: number + /** Inclusive higher bound offset of the requested ledger section. +If specified the response will only contain transactions whose offset is less than or equal to this. +If not specified, + +- the descending_order must not be selected, +- the stream will not terminate. + +Optional **/ + endInclusive?: number + /** Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. +Requesting parties with template filters. +Template filters must be empty for GetUpdateTrees requests. +Optional for backwards compatibility, if defined update_format must be unset **/ + filter?: TransactionFilter + /** Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. +If enabled, values served over the API will contain more information than strictly necessary to interpret the data. +In particular, setting the verbose flag to true triggers the ledger to include labels, record and variant type ids +for record fields. +Optional for backwards compatibility, if defined update_format must be unset **/ + verbose?: boolean + /** Must be unset for GetUpdateTrees request. +Optional for backwards compatibility for GetUpdates request: defaults to an UpdateFormat where: + +- include_transactions.event_format.filters_by_party = the filter.filters_by_party on this request +- include_transactions.event_format.filters_for_any_party = the filter.filters_for_any_party on this request +- include_transactions.event_format.verbose = the same flag specified on this request +- include_transactions.transaction_shape = TRANSACTION_SHAPE_ACS_DELTA +- include_reassignments.filter = the same filter specified on this request +- include_reassignments.verbose = the same flag specified on this request +- include_topology_events.include_participant_authorization_events.parties = all the parties specified in filter **/ + updateFormat?: UpdateFormat + /** If set, the stream will populate the elements in descending order. + +Optional **/ + descendingOrder?: boolean +} + +export interface UpdateFormat { + /** Include Daml transactions in streams. +If unset, no transactions are emitted in the stream. + +Optional **/ + includeTransactions?: TransactionFormat + /** Include (un)assignments in the stream. +The events in the result take the shape TRANSACTION_SHAPE_ACS_DELTA. +If unset, no (un)assignments are emitted in the stream. + +Optional **/ + includeReassignments?: EventFormat + /** Include topology events in streams. +If unset no topology events are emitted in the stream. + +Optional **/ + includeTopologyEvents?: TopologyFormat +} + +export interface TransactionFormat { + /** Required **/ + eventFormat: EventFormat + /** What transaction shape to use for interpreting the filters of the event format. + +Required **/ + transactionShape: + | 'TRANSACTION_SHAPE_UNSPECIFIED' + | 'TRANSACTION_SHAPE_ACS_DELTA' + | 'TRANSACTION_SHAPE_LEDGER_EFFECTS' +} + +export interface TopologyFormat { + /** Include participant authorization topology events in streams. +If unset, no participant authorization topology events are emitted in the stream. + +Optional **/ + includeParticipantAuthorizationEvents?: ParticipantAuthorizationTopologyFormat +} + +export interface ParticipantAuthorizationTopologyFormat { + /** List of parties for which the topology transactions should be sent. +Empty means: for all parties. + +Optional: can be empty **/ + parties?: string[] +} + +export type Either_JsCantonError_JsGetUpdatesResponse = + | JsCantonError + | JsGetUpdatesResponse + +export interface JsGetUpdatesResponse { + update?: Update +} + +export type Update = + | OffsetCheckpoint2 + | Reassignment + | TopologyTransaction + | Transaction + +export interface OffsetCheckpoint2 { + value: OffsetCheckpoint1 +} + +export interface Reassignment { + value: JsReassignment +} + +export interface JsReassignment { + /** Assigned by the server. Useful for correlating logs. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + updateId: string + /** The ID of the command which resulted in this reassignment. Missing for everyone except the submitting party on the submitting participant. +Must be a valid LedgerString (as described in ``value.proto``). + +Optional **/ + commandId?: string + /** The workflow ID used in reassignment command submission. Only set if the ``workflow_id`` for the command was set. +Must be a valid LedgerString (as described in ``value.proto``). + +Optional **/ + workflowId?: string + /** The participant's offset. The details of this field are described in ``community/ledger-api/README.md``. +Must be a valid absolute offset (positive integer). + +Required **/ + offset: number + /** The collection of reassignment events. + +Required: must be non-empty **/ + events: JsReassignmentEvent[] + /** Ledger API trace context + +The trace context transported in this message corresponds to the trace context supplied +by the client application in a HTTP2 header of the original command submission. +We typically use a header to transfer this type of information. Here we use message +body, because it is used in gRPC streams which do not support per message headers. +This field will be populated with the trace context contained in the original submission. +If that was not provided, a unique ledger-api-server generated trace context will be used +instead. + +Optional **/ + traceContext?: TraceContext + /** The time at which the reassignment was recorded. The record time refers to the source/target +synchronizer for an unassign/assign event respectively. + +Required **/ + recordTime: string + /** A valid synchronizer id. +Identifies the synchronizer that synchronized this Reassignment. + +Required **/ + synchronizerId: string + /** The traffic cost that this participant node paid for the corresponding (un)assignment request. + +Not set for transactions that were +- initiated by another participant +- initiated offline via the repair service +- processed before the participant started serving traffic cost on the Ledger API +- returned as part of a query filtering for a non submitting party + +Optional **/ + paidTrafficCost?: number +} + +export type JsReassignmentEvent = JsAssignmentEvent | JsUnassignedEvent + +export interface JsAssignmentEvent { + source: string + target: string + reassignmentId: string + submitter: string + reassignmentCounter: number + createdEvent: CreatedEvent +} + +export interface JsUnassignedEvent { + value: UnassignedEvent +} + +export interface TopologyTransaction { + value: JsTopologyTransaction +} + +export interface JsTopologyTransaction { + /** Assigned by the server. Useful for correlating logs. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + updateId: string + /** The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. +It is a valid absolute offset (positive integer). + +Required **/ + offset: number + /** A valid synchronizer id. +Identifies the synchronizer that synchronized the topology transaction. + +Required **/ + synchronizerId: string + /** The time at which the changes in the topology transaction become effective. There is a small delay between a +topology transaction being sequenced and the changes it contains becoming effective. Topology transactions appear +in order relative to a synchronizer based on their effective time rather than their sequencing time. + +Required **/ + recordTime: string + /** A non-empty list of topology events. + +Required: must be non-empty **/ + events: TopologyEvent[] + /** Ledger API trace context + +The trace context transported in this message corresponds to the trace context supplied +by the client application in a HTTP2 header of the original command submission. +We typically use a header to transfer this type of information. Here we use message +body, because it is used in gRPC streams which do not support per message headers. +This field will be populated with the trace context contained in the original submission. +If that was not provided, a unique ledger-api-server generated trace context will be used +instead. + +Optional **/ + traceContext?: TraceContext +} + +export interface TopologyEvent { + event?: TopologyEventEvent +} + +export type TopologyEventEvent = + | Empty3 + | ParticipantAuthorizationAdded + | ParticipantAuthorizationChanged + | ParticipantAuthorizationOnboarding + | ParticipantAuthorizationRevoked + +export type Empty3 = Record + +export interface ParticipantAuthorizationAdded { + value: ParticipantAuthorizationAdded1 +} + +export interface ParticipantAuthorizationAdded1 { + /** Required **/ + partyId: string + /** Required **/ + participantId: string + /** Required **/ + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' +} + +export interface ParticipantAuthorizationChanged { + value: ParticipantAuthorizationChanged1 +} + +export interface ParticipantAuthorizationChanged1 { + /** Required **/ + partyId: string + /** Required **/ + participantId: string + /** Required **/ + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' +} + +export interface ParticipantAuthorizationOnboarding { + value: ParticipantAuthorizationOnboarding1 +} + +export interface ParticipantAuthorizationOnboarding1 { + /** Required **/ + partyId: string + /** Required **/ + participantId: string + /** Required **/ + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' +} + +export interface ParticipantAuthorizationRevoked { + value: ParticipantAuthorizationRevoked1 +} + +export interface ParticipantAuthorizationRevoked1 { + /** Required **/ + partyId: string + /** Required **/ + participantId: string +} + +export interface Transaction { + value: JsTransaction +} + +export interface JsTransaction { + /** Assigned by the server. Useful for correlating logs. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + updateId: string + /** The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. +Must be a valid LedgerString (as described in ``value.proto``). + +Optional **/ + commandId?: string + /** The workflow ID used in command submission. +Must be a valid LedgerString (as described in ``value.proto``). + +Optional **/ + workflowId?: string + /** Ledger effective time. + +Required **/ + effectiveAt: string + /** The collection of events. +Contains: + +- ``CreatedEvent`` or ``ArchivedEvent`` in case of ACS_DELTA transaction shape +- ``CreatedEvent`` or ``ExercisedEvent`` in case of LEDGER_EFFECTS transaction shape + +Required: must be non-empty **/ + events: Event[] + /** The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. +It is a valid absolute offset (positive integer). + +Required **/ + offset: number + /** A valid synchronizer id. +Identifies the synchronizer that synchronized the transaction. + +Required **/ + synchronizerId: string + /** Ledger API trace context + +The trace context transported in this message corresponds to the trace context supplied +by the client application in a HTTP2 header of the original command submission. +We typically use a header to transfer this type of information. Here we use message +body, because it is used in gRPC streams which do not support per message headers. +This field will be populated with the trace context contained in the original submission. +If that was not provided, a unique ledger-api-server generated trace context will be used +instead. + +Optional **/ + traceContext?: TraceContext + /** The time at which the transaction was recorded. The record time refers to the synchronizer +which synchronized the transaction. + +Required **/ + recordTime: string + /** For transaction externally signed, contains the external transaction hash +signed by the external party. Can be used to correlate an external submission with a committed transaction. + +Optional: can be empty **/ + externalTransactionHash?: string + /** The traffic cost that this participant node paid for the confirmation +request for this transaction. + +Not set for transactions that were +- initiated by another participant +- initiated offline via the repair service +- processed before the participant started serving traffic cost on the Ledger API +- returned as part of a query filtering for a non submitting party + +Optional **/ + paidTrafficCost?: number +} + +export type Event = ArchivedEvent | CreatedEvent | ExercisedEvent + +export interface ArchivedEvent { + /** The offset of origin. +Offsets are managed by the participant nodes. +Transactions can thus NOT be assumed to have the same offsets on different participant nodes. +It is a valid absolute offset (positive integer) + +Required **/ + offset: number + /** The position of this event in the originating transaction or reassignment. +Node IDs are not necessarily equal across participants, +as these may see different projections/parts of transactions. +Must be valid node ID (non-negative integer) + +Required **/ + nodeId: number + /** The ID of the archived contract. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + contractId: string + /** Identifies the template that defines the choice that archived the contract. +This template's package-id may differ from the target contract's package-id +if the target contract has been upgraded or downgraded. + +The identifier uses the package-id reference format. + +Required **/ + templateId: string + /** The parties that are notified of this event. For an ``ArchivedEvent``, +these are the intersection of the stakeholders of the contract in +question and the parties specified in the ``TransactionFilter``. The +stakeholders are the union of the signatories and the observers of +the contract. +Each one of its elements must be a valid PartyIdString (as described +in ``value.proto``). + +Required: must be non-empty **/ + witnessParties: string[] + /** The package name of the contract. + +Required **/ + packageName: string + /** The interfaces implemented by the target template that have been +matched from the interface filter query. +Populated only in case interface filters with include_interface_view set. + +If defined, the identifier uses the package-id reference format. + +Optional: can be empty **/ + implementedInterfaces?: string[] +} + +export interface ExercisedEvent { + /** The offset of origin. +Offsets are managed by the participant nodes. +Transactions can thus NOT be assumed to have the same offsets on different participant nodes. +It is a valid absolute offset (positive integer) + +Required **/ + offset: number + /** The position of this event in the originating transaction or reassignment. +Node IDs are not necessarily equal across participants, +as these may see different projections/parts of transactions. +Must be valid node ID (non-negative integer) + +Required **/ + nodeId: number + /** The ID of the target contract. +Must be a valid LedgerString (as described in ``value.proto``). + +Required **/ + contractId: string + /** Identifies the template that defines the executed choice. +This template's package-id may differ from the target contract's package-id +if the target contract has been upgraded or downgraded. + +The identifier uses the package-id reference format. + +Required **/ + templateId: string + /** The interface where the choice is defined, if inherited. +If defined, the identifier uses the package-id reference format. + +Optional **/ + interfaceId?: string + /** The choice that was exercised on the target contract. +Must be a valid NameString (as described in ``value.proto``). + +Required **/ + choice: string + /** The argument of the exercised choice. + +Required **/ + choiceArgument: undefined + /** The parties that exercised the choice. +Each element must be a valid PartyIdString (as described in ``value.proto``). + +Required: must be non-empty **/ + actingParties: string[] + /** If true, the target contract may no longer be exercised. + +Required **/ + consuming: boolean + /** The parties that are notified of this event. The witnesses of an exercise +node will depend on whether the exercise was consuming or not. +If consuming, the witnesses are the union of the stakeholders, +the actors and all informees of all the ancestors of this event this +participant knows about. +If not consuming, the witnesses are the union of the signatories, +the actors and all informees of all the ancestors of this event this +participant knows about. +In both cases the witnesses are limited to the querying parties, or not +limited in case anyParty filters are used. +Note that the actors might not necessarily be observers +and thus stakeholders. This is the case when the controllers of a +choice are specified using "flexible controllers", using the +``choice ... controller`` syntax, and said controllers are not +explicitly marked as observers. +Each element must be a valid PartyIdString (as described in ``value.proto``). + +Required: must be non-empty **/ + witnessParties: string[] + /** Specifies the upper boundary of the node ids of the events in the same transaction that appeared as a result of +this ``ExercisedEvent``. This allows unambiguous identification of all the members of the subtree rooted at this +node. A full subtree can be constructed when all descendant nodes are present in the stream. If nodes are heavily +filtered, it is only possible to determine if a node is in a consequent subtree or not. + +Required **/ + lastDescendantNodeId: number + /** The result of exercising the choice. + +Optional **/ + exerciseResult?: undefined + /** The package name of the contract. + +Required **/ + packageName: string + /** If the event is consuming, the interfaces implemented by the target template that have been +matched from the interface filter query. +Populated only in case interface filters with include_interface_view set. + +The identifier uses the package-id reference format. + +Optional: can be empty **/ + implementedInterfaces?: string[] + /** Whether this event would be part of respective ACS_DELTA shaped stream, +and should therefore considered when tracking contract activeness on the client-side. + +Required **/ + acsDelta: boolean +} + +export type Either_JsCantonError_JsGetUpdateTreesResponse = + | JsCantonError + | JsGetUpdateTreesResponse + +export interface JsGetUpdateTreesResponse { + update?: Update1 +} + +export type Update1 = OffsetCheckpoint3 | Reassignment1 | TransactionTree + +export interface OffsetCheckpoint3 { + value: OffsetCheckpoint1 +} + +export interface Reassignment1 { + value: JsReassignment +} + +export interface TransactionTree { + value: JsTransactionTree +} + +export interface JsTransactionTree { + /** Assigned by the server. Useful for correlating logs. +Must be a valid LedgerString (as described in ``value.proto``). +Required **/ + updateId: string + /** The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. +Must be a valid LedgerString (as described in ``value.proto``). +Optional **/ + commandId?: string + /** The workflow ID used in command submission. Only set if the ``workflow_id`` for the command was set. +Must be a valid LedgerString (as described in ``value.proto``). +Optional **/ + workflowId?: string + /** Ledger effective time. +Required **/ + effectiveAt: string + /** The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. +Required, it is a valid absolute offset (positive integer). **/ + offset: number + /** Changes to the ledger that were caused by this transaction. Nodes of the transaction tree. +Each key must be a valid node ID (non-negative integer). +Required **/ + eventsById: Map_Int_TreeEvent + /** A valid synchronizer id. +Identifies the synchronizer that synchronized the transaction. +Required **/ + synchronizerId: string + /** Optional; ledger API trace context + +The trace context transported in this message corresponds to the trace context supplied +by the client application in a HTTP2 header of the original command submission. +We typically use a header to transfer this type of information. Here we use message +body, because it is used in gRPC streams which do not support per message headers. +This field will be populated with the trace context contained in the original submission. +If that was not provided, a unique ledger-api-server generated trace context will be used +instead. **/ + traceContext?: TraceContext + /** The time at which the transaction was recorded. The record time refers to the synchronizer +which synchronized the transaction. +Required **/ + recordTime: string +} + +export type Map_Int_TreeEvent = Record + +export type TreeEvent = CreatedTreeEvent | ExercisedTreeEvent + +export interface CreatedTreeEvent { + value: CreatedEvent +} + +export interface ExercisedTreeEvent { + value: ExercisedEvent +} + +// WebSocket Channel Definitions +export interface WebSocketChannels { + '/v2/commands/completions': { + subscribe: Either_JsCantonError_CompletionStreamResponse + publish: CompletionStreamRequest + } + '/v2/commands/command-completions': { + subscribe: Either_JsCantonError_CompletionStreamResponse + publish: GetCompletionsRequest + } + '/v2/state/active-contracts': { + subscribe: Either_JsCantonError_JsGetActiveContractsResponse + publish: GetActiveContractsRequest + } + '/v2/updates': { + subscribe: Either_JsCantonError_JsGetUpdatesResponse + publish: GetUpdatesRequest + } + '/v2/updates/flats': { + subscribe: Either_JsCantonError_JsGetUpdatesResponse + publish: GetUpdatesRequest + } + '/v2/updates/trees': { + subscribe: Either_JsCantonError_JsGetUpdateTreesResponse + publish: GetUpdatesRequest + } +} + +export const CHANNELS = { + v2_commands_completions: '/v2/commands/completions' as const, + + v2_commands_command_completions: + '/v2/commands/command-completions' as const, + + v2_state_active_contracts: '/v2/state/active-contracts' as const, + + v2_updates: '/v2/updates' as const, + + v2_updates_flats: '/v2/updates/flats' as const, + + v2_updates_trees: '/v2/updates/trees' as const, +} +// API Info +export const API_INFO = { + title: 'JSON Ledger API WebSocket endpoints', + version: '3.5.8', + description: `This specification version fixes the API inconsistencies where certain fields marked as required in the spec are in fact optional. +If you use code generation tool based on this file, you might need to adjust the existing application code to handle those fields as optional. +If you do not want to change your client code, continue using the OpenAPI specification for the latest Canton 3.4 patch release. +MINIMUM_CANTON_VERSION=3.5.8`, +} as const diff --git a/core/ledger-client-types/src/generated-clients/openapi-3.5.8-provider-types.ts b/core/ledger-client-types/src/generated-clients/openapi-3.5.8-provider-types.ts new file mode 100644 index 000000000..0f36691b2 --- /dev/null +++ b/core/ledger-client-types/src/generated-clients/openapi-3.5.8-provider-types.ts @@ -0,0 +1,1931 @@ +// This file is auto-generated by scripts/src/generate-openapi-types.ts + +interface components { + schemas: { + AllocateExternalPartyRequest: { + synchronizer: string + onboardingTransactions: Array< + components['schemas']['SignedTransaction'] + > + multiHashSignatures?: Array + identityProviderId?: string + waitForAllocation?: boolean + userId?: string + } + AllocateExternalPartyResponse: { partyId: string } + AllocatePartyRequest: { + partyIdHint?: string + localMetadata?: components['schemas']['ObjectMeta'] + identityProviderId?: string + synchronizerId?: string + userId?: string + } + AllocatePartyResponse: { + partyDetails: components['schemas']['PartyDetails'] + } + ArchivedEvent: { + offset: number + nodeId: number + contractId: string + templateId: string + witnessParties: Array + packageName: string + implementedInterfaces?: Array + } + AssignCommand: { value: components['schemas']['AssignCommand1'] } + AssignCommand1: { + reassignmentId: string + source: string + target: string + } + CanActAs: { value: components['schemas']['CanActAs1'] } + CanActAs1: { party: string } + CanExecuteAs: { value: components['schemas']['CanExecuteAs1'] } + CanExecuteAs1: { party: string } + CanExecuteAsAnyParty: { + value: components['schemas']['CanExecuteAsAnyParty1'] + } + CanExecuteAsAnyParty1: Record + CanReadAs: { value: components['schemas']['CanReadAs1'] } + CanReadAs1: { party: string } + CanReadAsAnyParty: { + value: components['schemas']['CanReadAsAnyParty1'] + } + CanReadAsAnyParty1: Record + Command: + | { + CreateAndExerciseCommand: components['schemas']['CreateAndExerciseCommand'] + } + | { CreateCommand: components['schemas']['CreateCommand'] } + | { + ExerciseByKeyCommand: components['schemas']['ExerciseByKeyCommand'] + } + | { ExerciseCommand: components['schemas']['ExerciseCommand'] } + Command1: + | { AssignCommand: components['schemas']['AssignCommand'] } + | { Empty: components['schemas']['Empty2'] } + | { UnassignCommand: components['schemas']['UnassignCommand'] } + Completion: { value: components['schemas']['Completion1'] } + Completion1: { + commandId: string + status?: components['schemas']['JsStatus'] + updateId?: string + userId: string + actAs: Array + submissionId?: string + deduplicationPeriod?: components['schemas']['DeduplicationPeriod1'] + traceContext?: components['schemas']['TraceContext'] + offset: number + synchronizerTime: components['schemas']['SynchronizerTime'] + paidTrafficCost?: number + } + CompletionResponse: + | { Completion: components['schemas']['Completion'] } + | { Empty: components['schemas']['Empty4'] } + | { OffsetCheckpoint: components['schemas']['OffsetCheckpoint'] } + CompletionStreamRequest: { + userId?: string + parties: Array + beginExclusive?: number + } + CompletionStreamResponse: { + completionResponse?: components['schemas']['CompletionResponse'] + } + ConnectedSynchronizer: { + synchronizerAlias: string + synchronizerId: string + permission?: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + CostEstimation: { + estimationTimestamp: string + confirmationRequestTrafficCostEstimation: number + confirmationResponseTrafficCostEstimation: number + totalTrafficCostEstimation: number + } + CostEstimationHints: { + disabled?: boolean + expectedSignatures?: Array< + | 'SIGNING_ALGORITHM_SPEC_UNSPECIFIED' + | 'SIGNING_ALGORITHM_SPEC_ED25519' + | 'SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_256' + | 'SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_384' + > + } + CreateAndExerciseCommand: { + templateId: string + createArguments: unknown + choice: string + choiceArgument: unknown + } + CreateCommand: { templateId: string; createArguments: unknown } + CreateIdentityProviderConfigRequest: { + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + CreateIdentityProviderConfigResponse: { + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + CreateUserRequest: { + user: components['schemas']['User'] + rights?: Array + } + CreateUserResponse: { user: components['schemas']['User'] } + CreatedEvent: { + offset: number + nodeId: number + contractId: string + templateId: string + contractKey?: unknown + contractKeyHash?: string + createArgument: unknown + createdEventBlob?: string + interfaceViews?: Array + witnessParties: Array + signatories: Array + observers?: Array + createdAt: string + packageName: string + representativePackageId: string + acsDelta: boolean + } + CreatedTreeEvent: { value: components['schemas']['CreatedEvent'] } + CumulativeFilter: { + identifierFilter?: components['schemas']['IdentifierFilter'] + } + DeduplicationDuration: { value: components['schemas']['Duration'] } + DeduplicationDuration1: { value: components['schemas']['Duration'] } + DeduplicationDuration2: { value: components['schemas']['Duration'] } + DeduplicationOffset: { value: number } + DeduplicationOffset1: { value: number } + DeduplicationOffset2: { value: number } + DeduplicationPeriod: + | { + DeduplicationDuration: components['schemas']['DeduplicationDuration'] + } + | { + DeduplicationOffset: components['schemas']['DeduplicationOffset'] + } + | { Empty: components['schemas']['Empty'] } + DeduplicationPeriod1: + | { + DeduplicationDuration: components['schemas']['DeduplicationDuration1'] + } + | { + DeduplicationOffset: components['schemas']['DeduplicationOffset1'] + } + | { Empty: components['schemas']['Empty3'] } + DeduplicationPeriod2: + | { + DeduplicationDuration: components['schemas']['DeduplicationDuration2'] + } + | { + DeduplicationOffset: components['schemas']['DeduplicationOffset2'] + } + | { Empty: components['schemas']['Empty10'] } + DeleteIdentityProviderConfigResponse: Record + DisclosedContract: { + templateId?: string + contractId?: string + createdEventBlob: string + synchronizerId?: string + } + Duration: { + seconds: number + nanos: number + unknownFields?: components['schemas']['UnknownFieldSet'] + } + Empty: Record + Empty1: Record + Empty10: Record + Empty2: Record + Empty3: Record + Empty4: Record + Empty5: Record + Empty6: Record + Empty7: Record + Empty8: Record + Empty9: Record + Event: + | { ArchivedEvent: components['schemas']['ArchivedEvent'] } + | { CreatedEvent: components['schemas']['CreatedEvent'] } + | { ExercisedEvent: components['schemas']['ExercisedEvent'] } + EventFormat: { + filtersByParty?: components['schemas']['Map_Filters'] + filtersForAnyParty?: components['schemas']['Filters'] + verbose?: boolean + } + ExecuteSubmissionAndWaitResponse: { + updateId: string + completionOffset: number + } + ExecuteSubmissionResponse: Record + ExerciseByKeyCommand: { + templateId: string + contractKey: unknown + choice: string + choiceArgument: unknown + } + ExerciseCommand: { + templateId: string + contractId: string + choice: string + choiceArgument: unknown + } + ExercisedEvent: { + offset: number + nodeId: number + contractId: string + templateId: string + interfaceId?: string + choice: string + choiceArgument: unknown + actingParties: Array + consuming: boolean + witnessParties: Array + lastDescendantNodeId: number + exerciseResult?: unknown + packageName: string + implementedInterfaces?: Array + acsDelta: boolean + } + ExercisedTreeEvent: { value: components['schemas']['ExercisedEvent'] } + ExperimentalCommandInspectionService: { supported: boolean } + ExperimentalFeatures: { + staticTime?: components['schemas']['ExperimentalStaticTime'] + commandInspectionService?: components['schemas']['ExperimentalCommandInspectionService'] + } + ExperimentalStaticTime: { supported: boolean } + FeaturesDescriptor: { + experimental: components['schemas']['ExperimentalFeatures'] + userManagement: components['schemas']['UserManagementFeature'] + partyManagement: components['schemas']['PartyManagementFeature'] + offsetCheckpoint: components['schemas']['OffsetCheckpointFeature'] + packageFeature: components['schemas']['PackageFeature'] + } + Field: { + varint?: Array + fixed64?: Array + fixed32?: Array + lengthDelimited?: Array + } + FieldMask: { + paths?: Array + unknownFields: components['schemas']['UnknownFieldSet'] + } + Filters: { + cumulative?: Array + } + GenerateExternalPartyTopologyRequest: { + synchronizer: string + partyHint: string + publicKey: components['schemas']['SigningPublicKey'] + localParticipantObservationOnly?: boolean + otherConfirmingParticipantUids?: Array + confirmationThreshold?: number + observingParticipantUids?: Array + } + GenerateExternalPartyTopologyResponse: { + partyId: string + publicKeyFingerprint: string + topologyTransactions: Array + multiHash: string + } + GetActiveContractsPageRequest: { + activeAtOffset?: number + eventFormat: components['schemas']['EventFormat'] + maxPageSize?: number + pageToken?: string + } + GetActiveContractsRequest: { + filter?: components['schemas']['TransactionFilter'] + verbose?: boolean + activeAtOffset: number + eventFormat?: components['schemas']['EventFormat'] + streamContinuationToken?: string + } + GetCompletionsRequest: { + parties?: Array + beginExclusive?: number + } + GetConnectedSynchronizersResponse: { + connectedSynchronizers?: Array< + components['schemas']['ConnectedSynchronizer'] + > + } + GetContractRequest: { + contractId: string + queryingParties?: Array + } + GetContractResponse: { + createdEvent: components['schemas']['CreatedEvent'] + } + GetEventsByContractIdRequest: { + contractId: string + eventFormat: components['schemas']['EventFormat'] + } + GetIdentityProviderConfigResponse: { + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + GetLatestPrunedOffsetsResponse: { + participantPrunedUpToInclusive?: number + allDivulgedContractsPrunedUpToInclusive?: number + } + GetLedgerApiVersionResponse: { + version: string + features: components['schemas']['FeaturesDescriptor'] + } + GetLedgerEndResponse: { offset?: number } + GetPackageStatusResponse: { + packageStatus: + | 'PACKAGE_STATUS_UNSPECIFIED' + | 'PACKAGE_STATUS_REGISTERED' + } + GetParticipantIdResponse: { participantId: string } + GetPartiesResponse: { + partyDetails: Array + } + GetPreferredPackageVersionResponse: { + packagePreference?: components['schemas']['PackagePreference'] + } + GetPreferredPackagesRequest: { + packageVettingRequirements: Array< + components['schemas']['PackageVettingRequirement'] + > + synchronizerId?: string + vettingValidAt?: string + } + GetPreferredPackagesResponse: { + packageReferences: Array + synchronizerId: string + } + GetTransactionByIdRequest: { + updateId: string + requestingParties?: Array + transactionFormat?: components['schemas']['TransactionFormat'] + } + GetTransactionByOffsetRequest: { + offset: number + requestingParties?: Array + transactionFormat?: components['schemas']['TransactionFormat'] + } + GetUpdateByIdRequest: { + updateId: string + updateFormat: components['schemas']['UpdateFormat'] + } + GetUpdateByOffsetRequest: { + offset: number + updateFormat: components['schemas']['UpdateFormat'] + } + GetUpdatesPageRequest: { + beginOffsetExclusive?: number + endOffsetInclusive?: number + maxPageSize?: number + updateFormat: components['schemas']['UpdateFormat'] + descendingOrder?: boolean + pageToken?: string + } + GetUpdatesRequest: { + beginExclusive: number + endInclusive?: number + filter?: components['schemas']['TransactionFilter'] + verbose?: boolean + updateFormat?: components['schemas']['UpdateFormat'] + descendingOrder?: boolean + } + GetUserResponse: { user: components['schemas']['User'] } + GrantUserRightsRequest: { + userId: string + rights?: Array + identityProviderId?: string + } + GrantUserRightsResponse: { + newlyGrantedRights?: Array + } + IdentifierFilter: + | { Empty: components['schemas']['Empty1'] } + | { InterfaceFilter: components['schemas']['InterfaceFilter'] } + | { TemplateFilter: components['schemas']['TemplateFilter'] } + | { WildcardFilter: components['schemas']['WildcardFilter'] } + IdentityProviderAdmin: { + value: components['schemas']['IdentityProviderAdmin1'] + } + IdentityProviderAdmin1: Record + IdentityProviderConfig: { + identityProviderId: string + isDeactivated?: boolean + issuer: string + jwksUrl: string + audience?: string + } + InterfaceFilter: { value: components['schemas']['InterfaceFilter1'] } + InterfaceFilter1: { + interfaceId: string + includeInterfaceView?: boolean + includeCreatedEventBlob?: boolean + } + JsActiveContract: { + createdEvent: components['schemas']['CreatedEvent'] + synchronizerId: string + reassignmentCounter: number + } + JsArchived: { + archivedEvent: components['schemas']['ArchivedEvent'] + synchronizerId: string + } + JsAssignedEvent: { + source: string + target: string + reassignmentId: string + submitter?: string + reassignmentCounter: number + createdEvent: components['schemas']['CreatedEvent'] + } + JsAssignmentEvent: { + source: string + target: string + reassignmentId: string + submitter: string + reassignmentCounter: number + createdEvent: components['schemas']['CreatedEvent'] + } + JsCantonError: { + code: string + cause: string + correlationId?: string + traceId?: string + context: components['schemas']['Map_String'] + resources?: Array + errorCategory: number + grpcCodeValue?: number + retryInfo?: string + definiteAnswer?: boolean + } + JsCommands: { + commands: Array + commandId: string + actAs: Array + userId?: string + readAs?: Array + workflowId?: string + deduplicationPeriod?: components['schemas']['DeduplicationPeriod'] + minLedgerTimeAbs?: string + minLedgerTimeRel?: components['schemas']['Duration'] + submissionId?: string + disclosedContracts?: Array< + components['schemas']['DisclosedContract'] + > + synchronizerId?: string + packageIdSelectionPreference?: Array + prefetchContractKeys?: Array< + components['schemas']['PrefetchContractKey'] + > + tapsMaxPasses?: number + } + JsContractEntry: + | { JsActiveContract: components['schemas']['JsActiveContract'] } + | { JsEmpty: components['schemas']['JsEmpty'] } + | { + JsIncompleteAssigned: components['schemas']['JsIncompleteAssigned'] + } + | { + JsIncompleteUnassigned: components['schemas']['JsIncompleteUnassigned'] + } + JsCreated: { + createdEvent: components['schemas']['CreatedEvent'] + synchronizerId: string + } + JsEmpty: Record + JsExecuteSubmissionAndWaitForTransactionRequest: { + preparedTransaction: string + partySignatures: components['schemas']['PartySignatures'] + deduplicationPeriod?: components['schemas']['DeduplicationPeriod2'] + submissionId: string + userId?: string + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + minLedgerTime?: components['schemas']['MinLedgerTime'] + transactionFormat?: components['schemas']['TransactionFormat'] + } + JsExecuteSubmissionAndWaitForTransactionResponse: { + transaction: components['schemas']['JsTransaction'] + } + JsExecuteSubmissionAndWaitRequest: { + preparedTransaction: string + partySignatures: components['schemas']['PartySignatures'] + deduplicationPeriod?: components['schemas']['DeduplicationPeriod2'] + submissionId: string + userId?: string + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + minLedgerTime?: components['schemas']['MinLedgerTime'] + } + JsExecuteSubmissionRequest: { + preparedTransaction: string + partySignatures: components['schemas']['PartySignatures'] + deduplicationPeriod?: components['schemas']['DeduplicationPeriod2'] + submissionId: string + userId?: string + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + minLedgerTime?: components['schemas']['MinLedgerTime'] + } + JsGetActiveContractsPageResponse: { + activeContracts: Array< + components['schemas']['JsGetActiveContractsResponse'] + > + activeAtOffset: number + nextPageToken?: string + } + JsGetActiveContractsResponse: { + workflowId?: string + contractEntry?: components['schemas']['JsContractEntry'] + streamContinuationToken?: string + } + JsGetEventsByContractIdResponse: { + created?: components['schemas']['JsCreated'] + archived?: components['schemas']['JsArchived'] + } + JsGetTransactionResponse: { + transaction: components['schemas']['JsTransaction'] + } + JsGetTransactionTreeResponse: { + transaction: components['schemas']['JsTransactionTree'] + } + JsGetUpdateResponse: { update?: components['schemas']['Update'] } + JsGetUpdateTreesResponse: { update?: components['schemas']['Update1'] } + JsGetUpdatesPageResponse: { + updates?: Array + lowestPageOffsetExclusive: number + highestPageOffsetInclusive: number + nextPageToken?: string + } + JsGetUpdatesResponse: { update?: components['schemas']['Update'] } + JsIncompleteAssigned: { + assignedEvent: components['schemas']['JsAssignedEvent'] + } + JsIncompleteUnassigned: { + createdEvent: components['schemas']['CreatedEvent'] + unassignedEvent: components['schemas']['UnassignedEvent'] + } + JsInterfaceView: { + interfaceId: string + viewStatus: components['schemas']['JsStatus'] + viewValue?: unknown + implementationPackageId?: string + } + JsPrepareSubmissionRequest: { + userId?: string + commandId: string + commands: Array + minLedgerTime?: components['schemas']['MinLedgerTime'] + actAs: Array + readAs?: Array + disclosedContracts?: Array< + components['schemas']['DisclosedContract'] + > + synchronizerId?: string + packageIdSelectionPreference?: Array + verboseHashing?: boolean + prefetchContractKeys?: Array< + components['schemas']['PrefetchContractKey'] + > + maxRecordTime?: string + estimateTrafficCost?: components['schemas']['CostEstimationHints'] + tapsMaxPasses?: number + hashingSchemeVersion?: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + } + JsPrepareSubmissionResponse: { + preparedTransaction: string + preparedTransactionHash: string + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + hashingDetails?: string + costEstimation?: components['schemas']['CostEstimation'] + } + JsReassignment: { + updateId: string + commandId?: string + workflowId?: string + offset: number + events: Array + traceContext?: components['schemas']['TraceContext'] + recordTime: string + synchronizerId: string + paidTrafficCost?: number + } + JsReassignmentEvent: + | { JsAssignmentEvent: components['schemas']['JsAssignmentEvent'] } + | { JsUnassignedEvent: components['schemas']['JsUnassignedEvent'] } + JsStatus: { + code: number + message: string + details?: Array + } + JsSubmitAndWaitForReassignmentResponse: { + reassignment: components['schemas']['JsReassignment'] + } + JsSubmitAndWaitForTransactionRequest: { + commands: components['schemas']['JsCommands'] + transactionFormat?: components['schemas']['TransactionFormat'] + } + JsSubmitAndWaitForTransactionResponse: { + transaction: components['schemas']['JsTransaction'] + } + JsSubmitAndWaitForTransactionTreeResponse: { + transactionTree?: components['schemas']['JsTransactionTree'] + } + JsTopologyTransaction: { + updateId: string + offset: number + synchronizerId: string + recordTime: string + events: Array + traceContext?: components['schemas']['TraceContext'] + } + JsTransaction: { + updateId: string + commandId?: string + workflowId?: string + effectiveAt: string + events: Array + offset: number + synchronizerId: string + traceContext?: components['schemas']['TraceContext'] + recordTime: string + externalTransactionHash?: string + paidTrafficCost?: number + } + JsTransactionTree: { + updateId: string + commandId?: string + workflowId?: string + effectiveAt: string + offset: number + eventsById: components['schemas']['Map_Int_TreeEvent'] + synchronizerId: string + traceContext?: components['schemas']['TraceContext'] + recordTime: string + } + JsUnassignedEvent: { value: components['schemas']['UnassignedEvent'] } + Kind: + | { CanActAs: components['schemas']['CanActAs'] } + | { CanExecuteAs: components['schemas']['CanExecuteAs'] } + | { + CanExecuteAsAnyParty: components['schemas']['CanExecuteAsAnyParty'] + } + | { CanReadAs: components['schemas']['CanReadAs'] } + | { CanReadAsAnyParty: components['schemas']['CanReadAsAnyParty'] } + | { Empty: components['schemas']['Empty8'] } + | { + IdentityProviderAdmin: components['schemas']['IdentityProviderAdmin'] + } + | { ParticipantAdmin: components['schemas']['ParticipantAdmin'] } + ListIdentityProviderConfigsResponse: { + identityProviderConfigs: Array< + components['schemas']['IdentityProviderConfig'] + > + } + ListKnownPartiesResponse: { + partyDetails: Array + nextPageToken?: string + } + ListPackagesResponse: { packageIds: Array } + ListUserRightsResponse: { + rights?: Array + } + ListUsersResponse: { + users?: Array + nextPageToken?: string + } + ListVettedPackagesRequest: { + packageMetadataFilter?: components['schemas']['PackageMetadataFilter'] + topologyStateFilter?: components['schemas']['TopologyStateFilter'] + pageToken?: string + pageSize?: number + } + ListVettedPackagesResponse: { + vettedPackages?: Array + nextPageToken?: string + } + Map_Filters: { [key: string]: components['schemas']['Filters'] } + Map_Int_Field: { [key: string]: components['schemas']['Field'] } + Map_Int_TreeEvent: { [key: string]: components['schemas']['TreeEvent'] } + Map_String: { [key: string]: string } + MinLedgerTime: { time?: components['schemas']['Time'] } + MinLedgerTimeAbs: { value: string } + MinLedgerTimeRel: { value: components['schemas']['Duration'] } + NoPrior: Record + ObjectMeta: { + resourceVersion?: string + annotations?: components['schemas']['Map_String'] + } + OffsetCheckpoint: { value: components['schemas']['OffsetCheckpoint1'] } + OffsetCheckpoint1: { + offset: number + synchronizerTimes?: Array + } + OffsetCheckpoint2: { value: components['schemas']['OffsetCheckpoint1'] } + OffsetCheckpoint3: { value: components['schemas']['OffsetCheckpoint1'] } + OffsetCheckpointFeature: { + maxOffsetCheckpointEmissionDelay: components['schemas']['Duration'] + } + Operation: + | { Empty: components['schemas']['Empty5'] } + | { Unvet: components['schemas']['Unvet'] } + | { Vet: components['schemas']['Vet'] } + PackageFeature: { maxVettedPackagesPageSize: number } + PackageMetadataFilter: { + packageIds?: Array + packageNamePrefixes?: Array + } + PackagePreference: { + packageReference: components['schemas']['PackageReference'] + synchronizerId: string + } + PackageReference: { + packageId: string + packageName: string + packageVersion: string + } + PackageVettingRequirement: { + parties: Array + packageName: string + } + ParticipantAdmin: { value: components['schemas']['ParticipantAdmin1'] } + ParticipantAdmin1: Record + ParticipantAuthorizationAdded: { + value: components['schemas']['ParticipantAuthorizationAdded1'] + } + ParticipantAuthorizationAdded1: { + partyId: string + participantId: string + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + ParticipantAuthorizationChanged: { + value: components['schemas']['ParticipantAuthorizationChanged1'] + } + ParticipantAuthorizationChanged1: { + partyId: string + participantId: string + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + ParticipantAuthorizationOnboarding: { + value: components['schemas']['ParticipantAuthorizationOnboarding1'] + } + ParticipantAuthorizationOnboarding1: { + partyId: string + participantId: string + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + ParticipantAuthorizationRevoked: { + value: components['schemas']['ParticipantAuthorizationRevoked1'] + } + ParticipantAuthorizationRevoked1: { + partyId: string + participantId: string + } + ParticipantAuthorizationTopologyFormat: { parties?: Array } + PartyDetails: { + party: string + isLocal?: boolean + localMetadata?: components['schemas']['ObjectMeta'] + identityProviderId?: string + } + PartyManagementFeature: { maxPartiesPageSize: number } + PartySignatures: { + signatures: Array + } + PrefetchContractKey: { + templateId: string + contractKey: unknown + limit?: number + } + Prior: { value: number } + PriorTopologySerial: { serial?: components['schemas']['Serial'] } + ProtoAny: { + typeUrl: string + value: string + unknownFields: components['schemas']['UnknownFieldSet'] + valueDecoded?: string + } + Reassignment: { value: components['schemas']['JsReassignment'] } + Reassignment1: { value: components['schemas']['JsReassignment'] } + ReassignmentCommand: { command?: components['schemas']['Command1'] } + ReassignmentCommands: { + workflowId?: string + userId?: string + commandId: string + submitter: string + submissionId?: string + commands: Array + } + RevokeUserRightsRequest: { + userId: string + rights?: Array + identityProviderId?: string + } + RevokeUserRightsResponse: { + newlyRevokedRights?: Array + } + Right: { kind?: components['schemas']['Kind'] } + Serial: + | { Empty: components['schemas']['Empty6'] } + | { NoPrior: components['schemas']['NoPrior'] } + | { Prior: components['schemas']['Prior'] } + Signature: { + format: string + signature: string + signedBy: string + signingAlgorithmSpec: string + } + SignedTransaction: { + transaction: string + signatures?: Array + } + SigningPublicKey: { format: string; keyData: string; keySpec: string } + SinglePartySignatures: { + party: string + signatures: Array + } + SubmitAndWaitForReassignmentRequest: { + reassignmentCommands: components['schemas']['ReassignmentCommands'] + eventFormat?: components['schemas']['EventFormat'] + } + SubmitAndWaitResponse: { updateId: string; completionOffset: number } + SubmitReassignmentRequest: { + reassignmentCommands: components['schemas']['ReassignmentCommands'] + } + SubmitReassignmentResponse: Record + SubmitResponse: Record + SynchronizerTime: { synchronizerId: string; recordTime: string } + TemplateFilter: { value: components['schemas']['TemplateFilter1'] } + TemplateFilter1: { + templateId: string + includeCreatedEventBlob?: boolean + } + Time: + | { Empty: components['schemas']['Empty9'] } + | { MinLedgerTimeAbs: components['schemas']['MinLedgerTimeAbs'] } + | { MinLedgerTimeRel: components['schemas']['MinLedgerTimeRel'] } + TopologyEvent: { event?: components['schemas']['TopologyEventEvent'] } + TopologyEventEvent: + | { Empty: components['schemas']['Empty7'] } + | { + ParticipantAuthorizationAdded: components['schemas']['ParticipantAuthorizationAdded'] + } + | { + ParticipantAuthorizationChanged: components['schemas']['ParticipantAuthorizationChanged'] + } + | { + ParticipantAuthorizationOnboarding: components['schemas']['ParticipantAuthorizationOnboarding'] + } + | { + ParticipantAuthorizationRevoked: components['schemas']['ParticipantAuthorizationRevoked'] + } + TopologyFormat: { + includeParticipantAuthorizationEvents?: components['schemas']['ParticipantAuthorizationTopologyFormat'] + } + TopologyStateFilter: { + participantIds?: Array + synchronizerIds?: Array + } + TopologyTransaction: { + value: components['schemas']['JsTopologyTransaction'] + } + TraceContext: { traceparent?: string; tracestate?: string } + Transaction: { value: components['schemas']['JsTransaction'] } + TransactionFilter: { + filtersByParty?: components['schemas']['Map_Filters'] + filtersForAnyParty?: components['schemas']['Filters'] + } + TransactionFormat: { + eventFormat: components['schemas']['EventFormat'] + transactionShape: + | 'TRANSACTION_SHAPE_UNSPECIFIED' + | 'TRANSACTION_SHAPE_ACS_DELTA' + | 'TRANSACTION_SHAPE_LEDGER_EFFECTS' + } + TransactionTree: { value: components['schemas']['JsTransactionTree'] } + TreeEvent: + | { CreatedTreeEvent: components['schemas']['CreatedTreeEvent'] } + | { + ExercisedTreeEvent: components['schemas']['ExercisedTreeEvent'] + } + Tuple2_String_String: Array + UnassignCommand: { value: components['schemas']['UnassignCommand1'] } + UnassignCommand1: { contractId: string; source: string; target: string } + UnassignedEvent: { + reassignmentId: string + contractId: string + templateId: string + source: string + target: string + submitter?: string + reassignmentCounter: number + assignmentExclusivity?: string + witnessParties: Array + packageName: string + offset: number + nodeId: number + } + UnknownFieldSet: { fields: components['schemas']['Map_Int_Field'] } + Unvet: { value: components['schemas']['Unvet1'] } + Unvet1: { packages: Array } + Update: + | { OffsetCheckpoint: components['schemas']['OffsetCheckpoint2'] } + | { Reassignment: components['schemas']['Reassignment'] } + | { + TopologyTransaction: components['schemas']['TopologyTransaction'] + } + | { Transaction: components['schemas']['Transaction'] } + Update1: + | { OffsetCheckpoint: components['schemas']['OffsetCheckpoint3'] } + | { Reassignment: components['schemas']['Reassignment1'] } + | { TransactionTree: components['schemas']['TransactionTree'] } + UpdateFormat: { + includeTransactions?: components['schemas']['TransactionFormat'] + includeReassignments?: components['schemas']['EventFormat'] + includeTopologyEvents?: components['schemas']['TopologyFormat'] + } + UpdateIdentityProviderConfigRequest: { + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + updateMask: components['schemas']['FieldMask'] + } + UpdateIdentityProviderConfigResponse: { + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + UpdatePartyDetailsRequest: { + partyDetails: components['schemas']['PartyDetails'] + updateMask: components['schemas']['FieldMask'] + } + UpdatePartyDetailsResponse: { + partyDetails: components['schemas']['PartyDetails'] + } + UpdateUserIdentityProviderIdRequest: { + userId: string + sourceIdentityProviderId?: string + targetIdentityProviderId?: string + } + UpdateUserIdentityProviderIdResponse: Record + UpdateUserRequest: { + user: components['schemas']['User'] + updateMask: components['schemas']['FieldMask'] + } + UpdateUserResponse: { user: components['schemas']['User'] } + UpdateVettedPackagesRequest: { + changes: Array + dryRun?: boolean + synchronizerId?: string + expectedTopologySerial?: components['schemas']['PriorTopologySerial'] + updateVettedPackagesForceFlags?: Array< + | 'UPDATE_VETTED_PACKAGES_FORCE_FLAG_UNSPECIFIED' + | 'UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_VET_INCOMPATIBLE_UPGRADES' + | 'UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_UNVETTED_DEPENDENCIES' + > + } + UpdateVettedPackagesResponse: { + pastVettedPackages?: components['schemas']['VettedPackages'] + newVettedPackages: components['schemas']['VettedPackages'] + } + UploadDarFileResponse: Record + User: { + id: string + primaryParty?: string + isDeactivated?: boolean + metadata?: components['schemas']['ObjectMeta'] + identityProviderId?: string + primaryPartyAuthentication?: boolean + } + UserManagementFeature: { + supported: boolean + maxRightsPerUser: number + maxUsersPageSize: number + } + Vet: { value: components['schemas']['Vet1'] } + Vet1: { + packages: Array + newValidFromInclusive?: string + newValidUntilExclusive?: string + } + VettedPackage: { + packageId: string + validFromInclusive?: string + validUntilExclusive?: string + packageName?: string + packageVersion?: string + } + VettedPackages: { + packages: Array + participantId: string + synchronizerId: string + topologySerial: number + } + VettedPackagesChange: { operation?: components['schemas']['Operation'] } + VettedPackagesRef: { + packageId?: string + packageName?: string + packageVersion?: string + } + WildcardFilter: { value: components['schemas']['WildcardFilter1'] } + WildcardFilter1: { includeCreatedEventBlob?: boolean } + } +} + +export type PostV2CommandsSubmitAndWait = { + ledgerApi: { + params: { + resource: '/v2/commands/submit-and-wait' + requestMethod: 'post' + body: components['schemas']['JsCommands'] + headers?: Record + } + result: components['schemas']['SubmitAndWaitResponse'] + } +} +export type PostV2CommandsSubmitAndWaitForTransaction = { + ledgerApi: { + params: { + resource: '/v2/commands/submit-and-wait-for-transaction' + requestMethod: 'post' + body: components['schemas']['JsSubmitAndWaitForTransactionRequest'] + headers?: Record + } + result: components['schemas']['JsSubmitAndWaitForTransactionResponse'] + } +} +export type PostV2CommandsSubmitAndWaitForReassignment = { + ledgerApi: { + params: { + resource: '/v2/commands/submit-and-wait-for-reassignment' + requestMethod: 'post' + body: components['schemas']['SubmitAndWaitForReassignmentRequest'] + headers?: Record + } + result: components['schemas']['JsSubmitAndWaitForReassignmentResponse'] + } +} +export type PostV2CommandsSubmitAndWaitForTransactionTree = { + ledgerApi: { + params: { + resource: '/v2/commands/submit-and-wait-for-transaction-tree' + requestMethod: 'post' + body: components['schemas']['JsCommands'] + headers?: Record + } + result: components['schemas']['JsSubmitAndWaitForTransactionTreeResponse'] + } +} +export type PostV2CommandsAsyncSubmit = { + ledgerApi: { + params: { + resource: '/v2/commands/async/submit' + requestMethod: 'post' + body: components['schemas']['JsCommands'] + headers?: Record + } + result: components['schemas']['SubmitResponse'] + } +} +export type PostV2CommandsAsyncSubmitReassignment = { + ledgerApi: { + params: { + resource: '/v2/commands/async/submit-reassignment' + requestMethod: 'post' + body: components['schemas']['SubmitReassignmentRequest'] + headers?: Record + } + result: components['schemas']['SubmitReassignmentResponse'] + } +} +export type PostV2CommandsCompletions = { + ledgerApi: { + params: { + resource: '/v2/commands/completions' + requestMethod: 'post' + body: components['schemas']['CompletionStreamRequest'] + headers?: Record + query: { + limit?: number + stream_idle_timeout_ms?: number + } + } + result: Array + } +} +export type PostV2CommandsCommandCompletions = { + ledgerApi: { + params: { + resource: '/v2/commands/command-completions' + requestMethod: 'post' + body: components['schemas']['GetCompletionsRequest'] + headers?: Record + query: { + limit?: number + stream_idle_timeout_ms?: number + } + } + result: Array + } +} +export type PostV2EventsEventsByContractId = { + ledgerApi: { + params: { + resource: '/v2/events/events-by-contract-id' + requestMethod: 'post' + body: components['schemas']['GetEventsByContractIdRequest'] + headers?: Record + } + result: components['schemas']['JsGetEventsByContractIdResponse'] + } +} +export type GetV2Version = { + ledgerApi: { + params: { + resource: '/v2/version' + requestMethod: 'get' + } + result: components['schemas']['GetLedgerApiVersionResponse'] + } +} +export type PostV2DarsValidate = { + ledgerApi: { + params: { + resource: '/v2/dars/validate' + requestMethod: 'post' + body: string + headers: { 'Content-Type': 'application/octet-stream' } + query: { + synchronizerId?: string + } + } + result: unknown + } +} +export type PostV2Dars = { + ledgerApi: { + params: { + resource: '/v2/dars' + requestMethod: 'post' + body: string + headers: { 'Content-Type': 'application/octet-stream' } + query: { + vetAllPackages?: boolean + synchronizerId?: string + } + } + result: components['schemas']['UploadDarFileResponse'] + } +} +export type GetV2Packages = { + ledgerApi: { + params: { + resource: '/v2/packages' + requestMethod: 'get' + } + result: components['schemas']['ListPackagesResponse'] + } +} +export type PostV2Packages = { + ledgerApi: { + params: { + resource: '/v2/packages' + requestMethod: 'post' + body: string + headers: { 'Content-Type': 'application/octet-stream' } + query: { + vetAllPackages?: boolean + synchronizerId?: string + } + } + result: components['schemas']['UploadDarFileResponse'] + } +} +export type GetV2PackagesPackageId = { + ledgerApi: { + params: { + resource: '/v2/packages/{package-id}' + requestMethod: 'get' + path: { + 'package-id': string + } + } + result: unknown + } +} +export type GetV2PackagesPackageIdStatus = { + ledgerApi: { + params: { + resource: '/v2/packages/{package-id}/status' + requestMethod: 'get' + path: { + 'package-id': string + } + } + result: components['schemas']['GetPackageStatusResponse'] + } +} +export type GetV2PackageVetting = { + ledgerApi: { + params: { + resource: '/v2/package-vetting' + requestMethod: 'get' + body: components['schemas']['ListVettedPackagesRequest'] + headers?: Record + } + result: components['schemas']['ListVettedPackagesResponse'] + } +} +export type PostV2PackageVetting = { + ledgerApi: { + params: { + resource: '/v2/package-vetting' + requestMethod: 'post' + body: components['schemas']['UpdateVettedPackagesRequest'] + headers?: Record + } + result: components['schemas']['UpdateVettedPackagesResponse'] + } +} +export type PostV2PackageVettingList = { + ledgerApi: { + params: { + resource: '/v2/package-vetting/list' + requestMethod: 'post' + body: components['schemas']['ListVettedPackagesRequest'] + headers?: Record + } + result: components['schemas']['ListVettedPackagesResponse'] + } +} +export type PostV2PackageVettingUpdate = { + ledgerApi: { + params: { + resource: '/v2/package-vetting/update' + requestMethod: 'post' + body: components['schemas']['UpdateVettedPackagesRequest'] + headers?: Record + } + result: components['schemas']['UpdateVettedPackagesResponse'] + } +} +export type GetV2Parties = { + ledgerApi: { + params: { + resource: '/v2/parties' + requestMethod: 'get' + query: { + 'identity-provider-id'?: string + 'filter-party'?: string + pageSize?: number + pageToken?: string + } + } + result: components['schemas']['ListKnownPartiesResponse'] + } +} +export type PostV2Parties = { + ledgerApi: { + params: { + resource: '/v2/parties' + requestMethod: 'post' + body: components['schemas']['AllocatePartyRequest'] + headers?: Record + } + result: components['schemas']['AllocatePartyResponse'] + } +} +export type PostV2PartiesExternalAllocate = { + ledgerApi: { + params: { + resource: '/v2/parties/external/allocate' + requestMethod: 'post' + body: components['schemas']['AllocateExternalPartyRequest'] + headers?: Record + } + result: components['schemas']['AllocateExternalPartyResponse'] + } +} +export type GetV2PartiesParticipantId = { + ledgerApi: { + params: { + resource: '/v2/parties/participant-id' + requestMethod: 'get' + } + result: components['schemas']['GetParticipantIdResponse'] + } +} +export type GetV2PartiesParty = { + ledgerApi: { + params: { + resource: '/v2/parties/{party}' + requestMethod: 'get' + path: { + party: string + } + + query: { + 'identity-provider-id'?: string + parties?: Array + } + } + result: components['schemas']['GetPartiesResponse'] + } +} +export type PatchV2PartiesParty = { + ledgerApi: { + params: { + resource: '/v2/parties/{party}' + requestMethod: 'patch' + body: components['schemas']['UpdatePartyDetailsRequest'] + headers?: Record + path: { + party: string + } + } + result: components['schemas']['UpdatePartyDetailsResponse'] + } +} +export type PostV2PartiesExternalGenerateTopology = { + ledgerApi: { + params: { + resource: '/v2/parties/external/generate-topology' + requestMethod: 'post' + body: components['schemas']['GenerateExternalPartyTopologyRequest'] + headers?: Record + } + result: components['schemas']['GenerateExternalPartyTopologyResponse'] + } +} +export type PostV2StateActiveContracts = { + ledgerApi: { + params: { + resource: '/v2/state/active-contracts' + requestMethod: 'post' + body: components['schemas']['GetActiveContractsRequest'] + headers?: Record + query: { + limit?: number + stream_idle_timeout_ms?: number + } + } + result: Array + } +} +export type GetV2StateActiveContractsPage = { + ledgerApi: { + params: { + resource: '/v2/state/active-contracts-page' + requestMethod: 'get' + body: components['schemas']['GetActiveContractsPageRequest'] + headers?: Record + } + result: components['schemas']['JsGetActiveContractsPageResponse'] + } +} +export type GetV2StateConnectedSynchronizers = { + ledgerApi: { + params: { + resource: '/v2/state/connected-synchronizers' + requestMethod: 'get' + query: { + party?: string + participantId?: string + identityProviderId?: string + } + } + result: components['schemas']['GetConnectedSynchronizersResponse'] + } +} +export type GetV2StateLedgerEnd = { + ledgerApi: { + params: { + resource: '/v2/state/ledger-end' + requestMethod: 'get' + } + result: components['schemas']['GetLedgerEndResponse'] + } +} +export type GetV2StateLatestPrunedOffsets = { + ledgerApi: { + params: { + resource: '/v2/state/latest-pruned-offsets' + requestMethod: 'get' + } + result: components['schemas']['GetLatestPrunedOffsetsResponse'] + } +} +export type PostV2Updates = { + ledgerApi: { + params: { + resource: '/v2/updates' + requestMethod: 'post' + body: components['schemas']['GetUpdatesRequest'] + headers?: Record + query: { + limit?: number + stream_idle_timeout_ms?: number + } + } + result: Array + } +} +export type PostV2UpdatesFlats = { + ledgerApi: { + params: { + resource: '/v2/updates/flats' + requestMethod: 'post' + body: components['schemas']['GetUpdatesRequest'] + headers?: Record + query: { + limit?: number + stream_idle_timeout_ms?: number + } + } + result: Array + } +} +export type PostV2UpdatesTrees = { + ledgerApi: { + params: { + resource: '/v2/updates/trees' + requestMethod: 'post' + body: components['schemas']['GetUpdatesRequest'] + headers?: Record + query: { + limit?: number + stream_idle_timeout_ms?: number + } + } + result: Array + } +} +export type GetV2UpdatesTransactionTreeByOffsetOffset = { + ledgerApi: { + params: { + resource: '/v2/updates/transaction-tree-by-offset/{offset}' + requestMethod: 'get' + path: { + offset: number + } + + query: { + parties?: Array + } + } + result: components['schemas']['JsGetTransactionTreeResponse'] + } +} +export type PostV2UpdatesTransactionByOffset = { + ledgerApi: { + params: { + resource: '/v2/updates/transaction-by-offset' + requestMethod: 'post' + body: components['schemas']['GetTransactionByOffsetRequest'] + headers?: Record + } + result: components['schemas']['JsGetTransactionResponse'] + } +} +export type PostV2UpdatesUpdateByOffset = { + ledgerApi: { + params: { + resource: '/v2/updates/update-by-offset' + requestMethod: 'post' + body: components['schemas']['GetUpdateByOffsetRequest'] + headers?: Record + } + result: components['schemas']['JsGetUpdateResponse'] + } +} +export type PostV2UpdatesTransactionById = { + ledgerApi: { + params: { + resource: '/v2/updates/transaction-by-id' + requestMethod: 'post' + body: components['schemas']['GetTransactionByIdRequest'] + headers?: Record + } + result: components['schemas']['JsGetTransactionResponse'] + } +} +export type PostV2UpdatesUpdateById = { + ledgerApi: { + params: { + resource: '/v2/updates/update-by-id' + requestMethod: 'post' + body: components['schemas']['GetUpdateByIdRequest'] + headers?: Record + } + result: components['schemas']['JsGetUpdateResponse'] + } +} +export type GetV2UpdatesTransactionTreeByIdUpdateId = { + ledgerApi: { + params: { + resource: '/v2/updates/transaction-tree-by-id/{update-id}' + requestMethod: 'get' + path: { + 'update-id': string + } + + query: { + parties?: Array + } + } + result: components['schemas']['JsGetTransactionTreeResponse'] + } +} +export type PostV2UpdatesGetUpdatesPage = { + ledgerApi: { + params: { + resource: '/v2/updates/get-updates-page' + requestMethod: 'post' + body: components['schemas']['GetUpdatesPageRequest'] + headers?: Record + } + result: components['schemas']['JsGetUpdatesPageResponse'] + } +} +export type GetV2Users = { + ledgerApi: { + params: { + resource: '/v2/users' + requestMethod: 'get' + query: { + pageSize?: number + pageToken?: string + } + } + result: components['schemas']['ListUsersResponse'] + } +} +export type PostV2Users = { + ledgerApi: { + params: { + resource: '/v2/users' + requestMethod: 'post' + body: components['schemas']['CreateUserRequest'] + headers?: Record + } + result: components['schemas']['CreateUserResponse'] + } +} +export type GetV2UsersUserId = { + ledgerApi: { + params: { + resource: '/v2/users/{user-id}' + requestMethod: 'get' + path: { + 'user-id': string + } + + query: { + 'identity-provider-id'?: string + } + } + result: components['schemas']['GetUserResponse'] + } +} +export type DeleteV2UsersUserId = { + ledgerApi: { + params: { + resource: '/v2/users/{user-id}' + requestMethod: 'delete' + path: { + 'user-id': string + } + } + result: Record + } +} +export type PatchV2UsersUserId = { + ledgerApi: { + params: { + resource: '/v2/users/{user-id}' + requestMethod: 'patch' + body: components['schemas']['UpdateUserRequest'] + headers?: Record + path: { + 'user-id': string + } + } + result: components['schemas']['UpdateUserResponse'] + } +} +export type GetV2AuthenticatedUser = { + ledgerApi: { + params: { + resource: '/v2/authenticated-user' + requestMethod: 'get' + query: { + 'identity-provider-id'?: string + } + } + result: components['schemas']['GetUserResponse'] + } +} +export type GetV2UsersUserIdRights = { + ledgerApi: { + params: { + resource: '/v2/users/{user-id}/rights' + requestMethod: 'get' + path: { + 'user-id': string + } + } + result: components['schemas']['ListUserRightsResponse'] + } +} +export type PostV2UsersUserIdRights = { + ledgerApi: { + params: { + resource: '/v2/users/{user-id}/rights' + requestMethod: 'post' + body: components['schemas']['GrantUserRightsRequest'] + headers?: Record + path: { + 'user-id': string + } + } + result: components['schemas']['GrantUserRightsResponse'] + } +} +export type PatchV2UsersUserIdRights = { + ledgerApi: { + params: { + resource: '/v2/users/{user-id}/rights' + requestMethod: 'patch' + body: components['schemas']['RevokeUserRightsRequest'] + headers?: Record + path: { + 'user-id': string + } + } + result: components['schemas']['RevokeUserRightsResponse'] + } +} +export type PatchV2UsersUserIdIdentityProviderId = { + ledgerApi: { + params: { + resource: '/v2/users/{user-id}/identity-provider-id' + requestMethod: 'patch' + body: components['schemas']['UpdateUserIdentityProviderIdRequest'] + headers?: Record + path: { + 'user-id': string + } + } + result: components['schemas']['UpdateUserIdentityProviderIdResponse'] + } +} +export type GetV2Idps = { + ledgerApi: { + params: { + resource: '/v2/idps' + requestMethod: 'get' + } + result: components['schemas']['ListIdentityProviderConfigsResponse'] + } +} +export type PostV2Idps = { + ledgerApi: { + params: { + resource: '/v2/idps' + requestMethod: 'post' + body: components['schemas']['CreateIdentityProviderConfigRequest'] + headers?: Record + } + result: components['schemas']['CreateIdentityProviderConfigResponse'] + } +} +export type GetV2IdpsIdpId = { + ledgerApi: { + params: { + resource: '/v2/idps/{idp-id}' + requestMethod: 'get' + path: { + 'idp-id': string + } + } + result: components['schemas']['GetIdentityProviderConfigResponse'] + } +} +export type DeleteV2IdpsIdpId = { + ledgerApi: { + params: { + resource: '/v2/idps/{idp-id}' + requestMethod: 'delete' + path: { + 'idp-id': string + } + } + result: components['schemas']['DeleteIdentityProviderConfigResponse'] + } +} +export type PatchV2IdpsIdpId = { + ledgerApi: { + params: { + resource: '/v2/idps/{idp-id}' + requestMethod: 'patch' + body: components['schemas']['UpdateIdentityProviderConfigRequest'] + headers?: Record + path: { + 'idp-id': string + } + } + result: components['schemas']['UpdateIdentityProviderConfigResponse'] + } +} +export type PostV2InteractiveSubmissionPrepare = { + ledgerApi: { + params: { + resource: '/v2/interactive-submission/prepare' + requestMethod: 'post' + body: components['schemas']['JsPrepareSubmissionRequest'] + headers?: Record + } + result: components['schemas']['JsPrepareSubmissionResponse'] + } +} +export type PostV2InteractiveSubmissionExecute = { + ledgerApi: { + params: { + resource: '/v2/interactive-submission/execute' + requestMethod: 'post' + body: components['schemas']['JsExecuteSubmissionRequest'] + headers?: Record + } + result: components['schemas']['ExecuteSubmissionResponse'] + } +} +export type PostV2InteractiveSubmissionExecuteAndWait = { + ledgerApi: { + params: { + resource: '/v2/interactive-submission/executeAndWait' + requestMethod: 'post' + body: components['schemas']['JsExecuteSubmissionAndWaitRequest'] + headers?: Record + } + result: components['schemas']['ExecuteSubmissionAndWaitResponse'] + } +} +export type PostV2InteractiveSubmissionExecuteAndWaitForTransaction = { + ledgerApi: { + params: { + resource: '/v2/interactive-submission/executeAndWaitForTransaction' + requestMethod: 'post' + body: components['schemas']['JsExecuteSubmissionAndWaitForTransactionRequest'] + headers?: Record + } + result: components['schemas']['JsExecuteSubmissionAndWaitForTransactionResponse'] + } +} +export type GetV2InteractiveSubmissionPreferredPackageVersion = { + ledgerApi: { + params: { + resource: '/v2/interactive-submission/preferred-package-version' + requestMethod: 'get' + query: { + parties?: Array + 'package-name': string + vetting_valid_at?: string + 'synchronizer-id'?: string + } + } + result: components['schemas']['GetPreferredPackageVersionResponse'] + } +} +export type PostV2InteractiveSubmissionPreferredPackages = { + ledgerApi: { + params: { + resource: '/v2/interactive-submission/preferred-packages' + requestMethod: 'post' + body: components['schemas']['GetPreferredPackagesRequest'] + headers?: Record + } + result: components['schemas']['GetPreferredPackagesResponse'] + } +} +export type GetLivez = { + ledgerApi: { + params: { + resource: '/livez' + requestMethod: 'get' + } + result: unknown + } +} +export type GetReadyz = { + ledgerApi: { + params: { + resource: '/readyz' + requestMethod: 'get' + } + result: unknown + } +} +export type PostV2ContractsContractById = { + ledgerApi: { + params: { + resource: '/v2/contracts/contract-by-id' + requestMethod: 'post' + body: components['schemas']['GetContractRequest'] + headers?: Record + } + result: components['schemas']['GetContractResponse'] + } +} + +export type LedgerTypes = + | PostV2CommandsSubmitAndWait + | PostV2CommandsSubmitAndWaitForTransaction + | PostV2CommandsSubmitAndWaitForReassignment + | PostV2CommandsSubmitAndWaitForTransactionTree + | PostV2CommandsAsyncSubmit + | PostV2CommandsAsyncSubmitReassignment + | PostV2CommandsCompletions + | PostV2CommandsCommandCompletions + | PostV2EventsEventsByContractId + | GetV2Version + | PostV2DarsValidate + | PostV2Dars + | GetV2Packages + | PostV2Packages + | GetV2PackagesPackageId + | GetV2PackagesPackageIdStatus + | GetV2PackageVetting + | PostV2PackageVetting + | PostV2PackageVettingList + | PostV2PackageVettingUpdate + | GetV2Parties + | PostV2Parties + | PostV2PartiesExternalAllocate + | GetV2PartiesParticipantId + | GetV2PartiesParty + | PatchV2PartiesParty + | PostV2PartiesExternalGenerateTopology + | PostV2StateActiveContracts + | GetV2StateActiveContractsPage + | GetV2StateConnectedSynchronizers + | GetV2StateLedgerEnd + | GetV2StateLatestPrunedOffsets + | PostV2Updates + | PostV2UpdatesFlats + | PostV2UpdatesTrees + | GetV2UpdatesTransactionTreeByOffsetOffset + | PostV2UpdatesTransactionByOffset + | PostV2UpdatesUpdateByOffset + | PostV2UpdatesTransactionById + | PostV2UpdatesUpdateById + | GetV2UpdatesTransactionTreeByIdUpdateId + | PostV2UpdatesGetUpdatesPage + | GetV2Users + | PostV2Users + | GetV2UsersUserId + | DeleteV2UsersUserId + | PatchV2UsersUserId + | GetV2AuthenticatedUser + | GetV2UsersUserIdRights + | PostV2UsersUserIdRights + | PatchV2UsersUserIdRights + | PatchV2UsersUserIdIdentityProviderId + | GetV2Idps + | PostV2Idps + | GetV2IdpsIdpId + | DeleteV2IdpsIdpId + | PatchV2IdpsIdpId + | PostV2InteractiveSubmissionPrepare + | PostV2InteractiveSubmissionExecute + | PostV2InteractiveSubmissionExecuteAndWait + | PostV2InteractiveSubmissionExecuteAndWaitForTransaction + | GetV2InteractiveSubmissionPreferredPackageVersion + | PostV2InteractiveSubmissionPreferredPackages + | GetLivez + | GetReadyz + | PostV2ContractsContractById diff --git a/core/ledger-client-types/src/generated-clients/openapi-3.5.8.ts b/core/ledger-client-types/src/generated-clients/openapi-3.5.8.ts new file mode 100644 index 000000000..df73b277d --- /dev/null +++ b/core/ledger-client-types/src/generated-clients/openapi-3.5.8.ts @@ -0,0 +1,8988 @@ +export interface paths { + '/v2/commands/submit-and-wait': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Submits a single composite command and waits for its result. + * Propagates the gRPC error of failed submissions including Daml interpretation errors. + */ + post: operations['postV2CommandsSubmit-and-wait'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/commands/submit-and-wait-for-transaction': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Submits a single composite command, waits for its result, and returns the transaction. + * Propagates the gRPC error of failed submissions including Daml interpretation errors. + */ + post: operations['postV2CommandsSubmit-and-wait-for-transaction'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/commands/submit-and-wait-for-reassignment': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Submits a single composite reassignment command, waits for its result, and returns the reassignment. + * Propagates the gRPC error of failed submission. + */ + post: operations['postV2CommandsSubmit-and-wait-for-reassignment'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/commands/submit-and-wait-for-transaction-tree': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @deprecated + * @description Submit a batch of commands and wait for the transaction trees response. Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use submit-and-wait-for-transaction instead. + */ + post: operations['postV2CommandsSubmit-and-wait-for-transaction-tree'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/commands/async/submit': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** @description Submit a single composite command. */ + post: operations['postV2CommandsAsyncSubmit'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/commands/async/submit-reassignment': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** @description Submit a single reassignment. */ + post: operations['postV2CommandsAsyncSubmit-reassignment'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/commands/completions': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Query completions list (blocking call) + * + * Deprecated: please use ``GetCompletions`` instead. + * Subscribe to command completion events. + * Notice: This endpoint should be used for small results set. + * When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + * there will be an error (`413 Content Too Large`) returned. + * Increasing this limit may lead to performance issues and high memory consumption. + * Consider using websockets (asyncapi) for better efficiency with larger results. + */ + post: operations['postV2CommandsCompletions'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/commands/command-completions': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Query completions list (blocking call) + * + * Subscribe to command completion events. + * This streaming endpoint provides more flexibility in filtering than the predecessor ``CompletionStream``. + * Notice: This endpoint should be used for small results set. + * When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + * there will be an error (`413 Content Too Large`) returned. + * Increasing this limit may lead to performance issues and high memory consumption. + * Consider using websockets (asyncapi) for better efficiency with larger results. + */ + post: operations['postV2CommandsCommand-completions'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/events/events-by-contract-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Get the create and the consuming exercise event for the contract with the provided ID. + * No events will be returned for contracts that have been pruned because they + * have already been archived before the latest pruning offset. + * If the contract cannot be found for the request, or all the contract-events are filtered, a CONTRACT_EVENTS_NOT_FOUND error will be raised. + */ + post: operations['postV2EventsEvents-by-contract-id'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/version': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Read the Ledger API version */ + get: operations['getV2Version'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/dars/validate': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Validates the DAR and checks the upgrade compatibility of the DAR's packages + * with the set of the already vetted packages on the target vetting synchronizer. + * See ValidateDarFileRequest for details regarding the target vetting synchronizer. + * + * The operation has no effect on the state of the participant or the Canton ledger: + * the DAR payload and its packages are not persisted neither are the packages vetted. + */ + post: operations['postV2DarsValidate'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/dars': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** @description Upload a DAR to the participant node */ + post: operations['postV2Dars'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/packages': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Returns the identifiers of all supported packages. */ + get: operations['getV2Packages'] + put?: never + /** + * @description Behaves the same as /dars. This endpoint will be deprecated and removed in a future release. + * Upload a DAR file to the participant. + * + * If vetting is enabled in the request, the DAR is checked for upgrade compatibility + * with the set of the already vetted packages on the target vetting synchronizer + * See UploadDarFileRequest for details regarding vetting and the target vetting synchronizer. + */ + post: operations['postV2Packages'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/packages/{package-id}': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Returns the contents of a single package. */ + get: operations['getV2PackagesPackage-id'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/packages/{package-id}/status': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Returns the status of a single package. */ + get: operations['getV2PackagesPackage-idStatus'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/package-vetting': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @deprecated + * @description Lists which participant node vetted what packages on which synchronizer. + * This endpoint (GET /package-vetting) is deprecated and will be removed in a future release. Please use POST /package-vetting/list instead. + */ + get: operations['getV2Package-vetting'] + put?: never + /** + * @deprecated + * @description Update the vetted packages of this participant + * This endpoint (POST /package-vetting) is deprecated and will be removed in a future release. Please use POST /package-vetting/update instead. + */ + post: operations['postV2Package-vetting'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/package-vetting/list': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Lists which participant node vetted what packages on which synchronizer. + * Can be called by any authenticated user. + */ + post: operations['postV2Package-vettingList'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/package-vetting/update': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** @description Update the vetted packages of this participant */ + post: operations['postV2Package-vettingUpdate'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/parties': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @description List the parties known by the participant. + * The list returned contains parties whose ledger access is facilitated by + * the participant and the ones maintained elsewhere. + */ + get: operations['getV2Parties'] + put?: never + /** + * @description Allocates a new party on a ledger and adds it to the set managed by the participant. + * Caller specifies a party identifier suggestion, the actual identifier + * allocated might be different and is implementation specific. + * Caller can specify party metadata that is stored locally on the participant. + * This call may: + * + * - Succeed, in which case the actual allocated identifier is visible in + * the response. + * - Respond with a gRPC error + * + * daml-on-kv-ledger: suggestion's uniqueness is checked by the validators in + * the consensus layer and call rejected if the identifier is already present. + * canton: completely different globally unique identifier is allocated. + * Behind the scenes calls to an internal protocol are made. As that protocol + * is richer than the surface protocol, the arguments take implicit values + * The party identifier suggestion must be a valid party name. Party names are required to be non-empty US-ASCII strings built from letters, digits, space, + * colon, minus and underscore limited to 255 chars + */ + post: operations['postV2Parties'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/parties/external/allocate': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description The external party must be hosted (at least) on this node with either confirmation or observation permissions + * It can optionally be hosted on other nodes (then called a multi-hosted party). + * If hosted on additional nodes, explicit authorization of the hosting relationship must be performed on those nodes + * before the party can be used. + * Decentralized namespaces are supported but must be provided fully authorized by their owners. + * The individual owner namespace transactions can be submitted in the same call (fully authorized as well). + * In the simple case of a non-multi hosted, non-decentralized party, the RPC will return once the party is + * effectively allocated and ready to use, similarly to the AllocateParty behavior. + * For more complex scenarios applications may need to query the party status explicitly (only through the admin API as of now). + */ + post: operations['postV2PartiesExternalAllocate'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/parties/participant-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @description Return the identifier of the participant. + * All horizontally scaled replicas should return the same id. + * daml-on-kv-ledger: returns an identifier supplied on command line at launch time + * canton: returns globally unique identifier of the participant + */ + get: operations['getV2PartiesParticipant-id'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/parties/{party}': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @description Get the party details of the given parties. Only known parties will be + * returned in the list. + */ + get: operations['getV2PartiesParty'] + put?: never + post?: never + delete?: never + options?: never + head?: never + /** + * @description Update selected modifiable participant-local attributes of a party details resource. + * Can update the participant's local information for local parties. + */ + patch: operations['patchV2PartiesParty'] + trace?: never + } + '/v2/parties/external/generate-topology': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description You may use this endpoint to generate the common external topology transactions + * which can be signed externally and uploaded as part of the allocate party process + * + * Note that this request will create a normal namespace using the same key for the + * identity as for signing. More elaborate schemes such as multi-signature + * or decentralized parties require you to construct the topology transactions yourself. + */ + post: operations['postV2PartiesExternalGenerate-topology'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/state/active-contracts': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Query active contracts list (blocking call). + * Querying active contracts is an expensive operation and if possible should not be repeated often. + * Consider querying active contracts initially (for a given offset) + * and then repeatedly call one of `/v2/updates/...`endpoints to get subsequent modifications. + * You can also use websockets to get updates with better performance. + * + * Returns a stream of the snapshot of the active contracts and incomplete (un)assignments at a ledger offset. + * Once the stream of GetActiveContractsResponses completes, + * the client SHOULD begin streaming updates from the update service, + * starting at the GetActiveContractsRequest.active_at_offset specified in this request. + * Clients SHOULD NOT assume that the set of active contracts they receive reflects the state at the ledger end. + * + * Notice: This endpoint should be used for small results set. + * When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + * there will be an error (`413 Content Too Large`) returned. + * Increasing this limit may lead to performance issues and high memory consumption. + * Consider using websockets (asyncapi) for better efficiency with larger results. + */ + post: operations['postV2StateActive-contracts'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/state/active-contracts-page': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @description Returns a page of the snapshot of the active contracts and incomplete (un)assignments at a ledger offset. + * Once all pages are fetched by repeated calls to ``GetActiveContractsPage``, + * the client SHOULD begin retrieving updates from the update service, + * starting at the ``GetActiveContractsPageResponse``.``active_at_offset`` specified in this request. + * Clients SHOULD NOT assume that the set of active contracts they receive reflects the state at the ledger end. + */ + get: operations['getV2StateActive-contracts-page'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/state/connected-synchronizers': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Get the list of connected synchronizers at the time of the query. */ + get: operations['getV2StateConnected-synchronizers'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/state/ledger-end': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @description Get the current ledger end. + * Subscriptions started with the returned offset will serve events after this RPC was called. + */ + get: operations['getV2StateLedger-end'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/state/latest-pruned-offsets': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Get the latest successfully pruned ledger offsets */ + get: operations['getV2StateLatest-pruned-offsets'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Read the ledger's filtered update stream for the specified contents and filters. + * It returns the event types in accordance with the stream contents selected. Also the selection criteria + * for individual events depends on the transaction shape chosen. + * + * - ACS delta: a requesting party must be a stakeholder of an event for it to be included. + * - ledger effects: a requesting party must be a witness of an event for it to be included. + * Notice: This endpoint should be used for small results set. + * When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + * there will be an error (`413 Content Too Large`) returned. + * Increasing this limit may lead to performance issues and high memory consumption. + * Consider using websockets (asyncapi) for better efficiency with larger results. + */ + post: operations['postV2Updates'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/flats': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @deprecated + * @description Query flat transactions update list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. + * Notice: This endpoint should be used for small results set. + * When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + * there will be an error (`413 Content Too Large`) returned. + * Increasing this limit may lead to performance issues and high memory consumption. + * Consider using websockets (asyncapi) for better efficiency with larger results. + */ + post: operations['postV2UpdatesFlats'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/trees': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @deprecated + * @description Query update transactions tree list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. + * Notice: This endpoint should be used for small results set. + * When number of results exceeded node configuration limit (`http-list-max-elements-limit`) + * there will be an error (`413 Content Too Large`) returned. + * Increasing this limit may lead to performance issues and high memory consumption. + * Consider using websockets (asyncapi) for better efficiency with larger results. + */ + post: operations['postV2UpdatesTrees'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/transaction-tree-by-offset/{offset}': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @deprecated + * @description Get transaction tree by offset. Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates/update-by-offset instead. + */ + get: operations['getV2UpdatesTransaction-tree-by-offsetOffset'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/transaction-by-offset': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @deprecated + * @description Get transaction by offset. Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates/update-by-offset instead. + */ + post: operations['postV2UpdatesTransaction-by-offset'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/update-by-offset': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Lookup an update by its offset. + * If there is no update with this offset, or all the events are filtered, an UPDATE_NOT_FOUND error will be raised. + */ + post: operations['postV2UpdatesUpdate-by-offset'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/transaction-by-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @deprecated + * @description Get transaction by id. Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates/update-by-id instead. + */ + post: operations['postV2UpdatesTransaction-by-id'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/update-by-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Lookup an update by its ID. + * If there is no update with this ID, or all the events are filtered, an UPDATE_NOT_FOUND error will be raised. + */ + post: operations['postV2UpdatesUpdate-by-id'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/transaction-tree-by-id/{update-id}': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @deprecated + * @description Get transaction tree by id. Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates/update-by-id instead. + */ + get: operations['getV2UpdatesTransaction-tree-by-idUpdate-id'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/updates/get-updates-page': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Read a page of ledger's filtered updates. It returns the event types in accordance with + * the specified contents and filters. + * Additionally, the selection criteria for individual events depends on the transaction shape chosen. + * + * - ACS delta: an event is included only if the requesting party is a stakeholder. + * - ledger effects: an event is included if the requesting party is a witness. + */ + post: operations['postV2UpdatesGet-updates-page'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/users': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description List all existing users. */ + get: operations['getV2Users'] + put?: never + /** @description Create a new user. */ + post: operations['postV2Users'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/users/{user-id}': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Get the user data of a specific user or the authenticated user. */ + get: operations['getV2UsersUser-id'] + put?: never + post?: never + /** @description Delete an existing user and all its rights. */ + delete: operations['deleteV2UsersUser-id'] + options?: never + head?: never + /** @description Update selected modifiable attribute of a user resource described by the ``User`` message. */ + patch: operations['patchV2UsersUser-id'] + trace?: never + } + '/v2/authenticated-user': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Get the user data of the current authenticated user. */ + get: operations['getV2Authenticated-user'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/users/{user-id}/rights': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description List the set of all rights granted to a user. */ + get: operations['getV2UsersUser-idRights'] + put?: never + /** + * @description Grant rights to a user. + * Granting rights does not affect the resource version of the corresponding user. + */ + post: operations['postV2UsersUser-idRights'] + delete?: never + options?: never + head?: never + /** + * @description Revoke rights from a user. + * Revoking rights does not affect the resource version of the corresponding user. + */ + patch: operations['patchV2UsersUser-idRights'] + trace?: never + } + '/v2/users/{user-id}/identity-provider-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post?: never + delete?: never + options?: never + head?: never + /** @description Update the assignment of a user from one IDP to another. */ + patch: operations['patchV2UsersUser-idIdentity-provider-id'] + trace?: never + } + '/v2/idps': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description List all existing identity provider configurations. */ + get: operations['getV2Idps'] + put?: never + /** + * @description Create a new identity provider configuration. + * The request will fail if the maximum allowed number of separate configurations is reached. + */ + post: operations['postV2Idps'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/idps/{idp-id}': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Get the identity provider configuration data by id. */ + get: operations['getV2IdpsIdp-id'] + put?: never + post?: never + /** @description Delete an existing identity provider configuration. */ + delete: operations['deleteV2IdpsIdp-id'] + options?: never + head?: never + /** + * @description Update selected modifiable attribute of an identity provider config resource described + * by the ``IdentityProviderConfig`` message. + */ + patch: operations['patchV2IdpsIdp-id'] + trace?: never + } + '/v2/interactive-submission/prepare': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** @description Requires `readAs` scope for the submitting party when LAPI User authorization is enabled */ + post: operations['postV2Interactive-submissionPrepare'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/interactive-submission/execute': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Execute a prepared submission _asynchronously_ on the ledger. + * Requires `actAs` or `executeAs` scope for the submitting party when LAPI User authorization is enabled + * Requires a signature of the transaction from the submitting external party. + */ + post: operations['postV2Interactive-submissionExecute'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/interactive-submission/executeAndWait': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** @description Similar to ExecuteSubmission but _synchronously_ wait for the completion of the transaction */ + post: operations['postV2Interactive-submissionExecuteandwait'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/interactive-submission/executeAndWaitForTransaction': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** @description Similar to ExecuteSubmissionAndWait but additionally returns the transaction */ + post: operations['postV2Interactive-submissionExecuteandwaitfortransaction'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/interactive-submission/preferred-package-version': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** + * @deprecated + * @description Get the preferred package version for constructing a command submission. + * This endpoint (GET /interactive-submission/preferred-package-version) is deprecated and will be removed in Canton 3.6. Please use POST /interactive-submission/preferred-packages instead. + */ + get: operations['getV2Interactive-submissionPreferred-package-version'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/interactive-submission/preferred-packages': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Compute the preferred packages for the vetting requirements in the request. + * A preferred package is the highest-versioned package for a provided package-name + * that is vetted by all the participants hosting the provided parties. + * + * Ledger API clients should use this endpoint for constructing command submissions + * that are compatible with the provided preferred packages, by making informed decisions on: + * - which are the compatible packages that can be used to create contracts + * - which contract or exercise choice argument version can be used in the command + * - which choices can be executed on a template or interface of a contract + * + * If the package preferences could not be computed due to no selection satisfying the requirements, + * a `FAILED_PRECONDITION` error will be returned. + * + * Can be accessed by any Ledger API client with a valid token when Ledger API authorization is enabled. + * + * Experimental API: this endpoint is not guaranteed to provide backwards compatibility in future releases + */ + post: operations['postV2Interactive-submissionPreferred-packages'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/livez': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Checks if the service is alive */ + get: operations['getLivez'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/readyz': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Checks if the service is ready to serve requests */ + get: operations['getReadyz'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } + '/v2/contracts/contract-by-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Looking up contract data by contract ID. + * This endpoint is experimental / alpha, therefore no backwards compatibility is guaranteed. + * This endpoint must not be used to look up contracts which entered the participant via party replication + * or repair service. + */ + post: operations['postV2ContractsContract-by-id'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } +} +export type webhooks = Record +export interface components { + schemas: { + /** + * AllocateExternalPartyRequest + * @description Required authorization: + * ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id) OR IsAuthenticatedUser(user_id)`` + */ + AllocateExternalPartyRequest: { + /** + * @description TODO(#27670) support synchronizer aliases + * Synchronizer ID on which to onboard the party + * + * Required + */ + synchronizer: string + /** + * @description TopologyTransactions to onboard the external party + * Can contain: + * - A namespace for the party. + * This can be either a single NamespaceDelegation, + * or DecentralizedNamespaceDefinition along with its authorized namespace owners in the form of NamespaceDelegations. + * May be provided, if so it must be fully authorized by the signatures in this request combined with the existing topology state. + * - A PartyToParticipant to register the hosting relationship of the party, and the party's signing keys and threshold. + * Must be provided. + * + * Required: must be non-empty + */ + onboardingTransactions: components['schemas']['SignedTransaction'][] + /** + * @description Optional signatures of the combined hash of all onboarding_transactions + * This may be used instead of providing signatures on each individual transaction + * + * Optional: can be empty + */ + multiHashSignatures?: components['schemas']['Signature'][] + /** + * @description The id of the ``Identity Provider`` + * If not set, assume the party is managed by the default identity provider. + * + * Optional + */ + identityProviderId?: string + /** + * @description When true, this RPC will attempt to wait for the party to be allocated on the synchronizer before returning. + * When false, the allocation will happen asynchronously. + * This is a best effort only as this synchronization is only possible for non decentralized parties (single hosting node). + * For decentralized parties, this flag is ignored. + * Defaults to true. + * + * Optional + */ + waitForAllocation?: boolean + /** + * @description The user who will get the act_as rights to the newly allocated party. + * If set to an empty string (the default), no user will get rights to the party. + * + * Optional + */ + userId?: string + } + /** AllocateExternalPartyResponse */ + AllocateExternalPartyResponse: { + /** + * @description The allocated party id + * + * Required + */ + partyId: string + } + /** + * AllocatePartyRequest + * @description Required authorization: + * ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id) OR IsAuthenticatedUser(user_id)`` + */ + AllocatePartyRequest: { + /** + * @description A hint to the participant which party ID to allocate. It can be + * ignored. + * Must be a valid PartyIdString (as described in ``value.proto``). + * + * Optional + */ + partyIdHint?: string + /** + * @description Formerly "display_name" + * Participant-local metadata to be stored in the ``PartyDetails`` of this newly allocated party. + * + * Optional + */ + localMetadata?: components['schemas']['ObjectMeta'] + /** + * @description The id of the ``Identity Provider`` + * If not set, assume the party is managed by the default identity provider or party is not hosted by the participant. + * + * Optional + */ + identityProviderId?: string + /** + * @description The synchronizer, on which the party should be allocated. + * For backwards compatibility, this field may be omitted, if the participant is connected to only one synchronizer. + * Otherwise a synchronizer must be specified. + * + * Optional + */ + synchronizerId?: string + /** + * @description The user who will get the act_as rights to the newly allocated party. + * If set to an empty string (the default), no user will get rights to the party. + * + * Optional + */ + userId?: string + } + /** AllocatePartyResponse */ + AllocatePartyResponse: { + /** + * @description The allocated party details + * + * Required + */ + partyDetails: components['schemas']['PartyDetails'] + } + /** + * ArchivedEvent + * @description Records that a contract has been archived, and choices may no longer be exercised on it. + */ + ArchivedEvent: { + /** + * Format: int64 + * @description The offset of origin. + * Offsets are managed by the participant nodes. + * Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + * It is a valid absolute offset (positive integer) + * + * Required + */ + offset: number + /** + * Format: int32 + * @description The position of this event in the originating transaction or reassignment. + * Node IDs are not necessarily equal across participants, + * as these may see different projections/parts of transactions. + * Must be valid node ID (non-negative integer) + * + * Required + */ + nodeId: number + /** + * @description The ID of the archived contract. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + contractId: string + /** + * @description Identifies the template that defines the choice that archived the contract. + * This template's package-id may differ from the target contract's package-id + * if the target contract has been upgraded or downgraded. + * + * The identifier uses the package-id reference format. + * + * Required + */ + templateId: string + /** + * @description The parties that are notified of this event. For an ``ArchivedEvent``, + * these are the intersection of the stakeholders of the contract in + * question and the parties specified in the ``TransactionFilter``. The + * stakeholders are the union of the signatories and the observers of + * the contract. + * Each one of its elements must be a valid PartyIdString (as described + * in ``value.proto``). + * + * Required: must be non-empty + */ + witnessParties: string[] + /** + * @description The package name of the contract. + * + * Required + */ + packageName: string + /** + * @description The interfaces implemented by the target template that have been + * matched from the interface filter query. + * Populated only in case interface filters with include_interface_view set. + * + * If defined, the identifier uses the package-id reference format. + * + * Optional: can be empty + */ + implementedInterfaces?: string[] + } + /** + * AssignCommand + * @description Assign a contract + */ + AssignCommand: { + value: components['schemas']['AssignCommand1'] + } + /** + * AssignCommand + * @description Assign a contract + */ + AssignCommand1: { + /** + * @description The ID from the unassigned event to be completed by this assignment. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + reassignmentId: string + /** + * @description The ID of the source synchronizer + * Must be a valid synchronizer id + * + * Required + */ + source: string + /** + * @description The ID of the target synchronizer + * Must be a valid synchronizer id + * + * Required + */ + target: string + } + /** CanActAs */ + CanActAs: { + value: components['schemas']['CanActAs1'] + } + /** CanActAs */ + CanActAs1: { + /** + * @description The right to authorize commands for this party. + * + * Required + */ + party: string + } + /** CanExecuteAs */ + CanExecuteAs: { + value: components['schemas']['CanExecuteAs1'] + } + /** CanExecuteAs */ + CanExecuteAs1: { + /** + * @description The right to prepare and execute submissions as this party. + * This right does not entitle the user to perform any reads. + * If reading is required, a separate ReadAs right must be added. + * Right to execute as a party is also implicitly contained in the CanActAs right. + * + * Required + */ + party: string + } + /** + * CanExecuteAsAnyParty + * @description The rights of a user to prepare and execute transactions as any party. + * Its utility is predominantly for users that perform interactive submissions + * on behalf of many parties. + */ + CanExecuteAsAnyParty: { + value: components['schemas']['CanExecuteAsAnyParty1'] + } + /** + * CanExecuteAsAnyParty + * @description The rights of a user to prepare and execute transactions as any party. + * Its utility is predominantly for users that perform interactive submissions + * on behalf of many parties. + */ + CanExecuteAsAnyParty1: Record + /** CanReadAs */ + CanReadAs: { + value: components['schemas']['CanReadAs1'] + } + /** CanReadAs */ + CanReadAs1: { + /** + * @description The right to read ledger data visible to this party. + * + * Required + */ + party: string + } + /** + * CanReadAsAnyParty + * @description The rights of a participant's super reader. Its utility is predominantly for + * feeding external tools, such as PQS, continually without the need to change subscriptions + * as new parties pop in and out of existence. + */ + CanReadAsAnyParty: { + value: components['schemas']['CanReadAsAnyParty1'] + } + /** + * CanReadAsAnyParty + * @description The rights of a participant's super reader. Its utility is predominantly for + * feeding external tools, such as PQS, continually without the need to change subscriptions + * as new parties pop in and out of existence. + */ + CanReadAsAnyParty1: Record + /** + * Command + * @description A command can either create a new contract or exercise a choice on an existing contract. + */ + Command: + | { + CreateAndExerciseCommand: components['schemas']['CreateAndExerciseCommand'] + } + | { + CreateCommand: components['schemas']['CreateCommand'] + } + | { + ExerciseByKeyCommand: components['schemas']['ExerciseByKeyCommand'] + } + | { + ExerciseCommand: components['schemas']['ExerciseCommand'] + } + /** + * Command + * @description A command can either create a new contract or exercise a choice on an existing contract. + */ + Command1: + | { + AssignCommand: components['schemas']['AssignCommand'] + } + | { + Empty: components['schemas']['Empty2'] + } + | { + UnassignCommand: components['schemas']['UnassignCommand'] + } + /** + * Completion + * @description A completion represents the status of a submitted command on the ledger: it can be successful or failed. + */ + Completion: { + value: components['schemas']['Completion1'] + } + /** + * Completion + * @description A completion represents the status of a submitted command on the ledger: it can be successful or failed. + */ + Completion1: { + /** + * @description The ID of the succeeded or failed command. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + commandId: string + /** + * @description Identifies the exact type of the error. + * It uses the same format of conveying error details as it is used for the RPC responses of the APIs. + * + * Optional + */ + status?: components['schemas']['JsStatus'] + /** + * @description The update_id of the transaction or reassignment that resulted from the command with command_id. + * + * Only set for successfully executed commands. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + updateId?: string + /** + * @description The user-id that was used for the submission, as described in ``commands.proto``. + * Must be a valid UserIdString (as described in ``value.proto``). + * + * Required + */ + userId: string + /** + * @description The set of parties on whose behalf the commands were executed. + * Contains the ``act_as`` parties from ``commands.proto`` + * filtered to the requesting parties in CompletionStreamRequest. + * The order of the parties need not be the same as in the submission. + * Each element must be a valid PartyIdString (as described in ``value.proto``). + * + * Required: must be non-empty + */ + actAs: string[] + /** + * @description The submission ID this completion refers to, as described in ``commands.proto``. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + submissionId?: string + deduplicationPeriod?: components['schemas']['DeduplicationPeriod1'] + /** + * @description The Ledger API trace context + * + * The trace context transported in this message corresponds to the trace context supplied + * by the client application in a HTTP2 header of the original command submission. + * We typically use a header to transfer this type of information. Here we use message + * body, because it is used in gRPC streams which do not support per message headers. + * This field will be populated with the trace context contained in the original submission. + * If that was not provided, a unique ledger-api-server generated trace context will be used + * instead. + * + * Optional + */ + traceContext?: components['schemas']['TraceContext'] + /** + * Format: int64 + * @description May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time. + * Must be a valid absolute offset (positive integer). + * + * Required + */ + offset: number + /** + * @description The synchronizer along with its record time. + * The synchronizer id provided, in case of + * + * - successful/failed transactions: identifies the synchronizer of the transaction + * - for successful/failed unassign commands: identifies the source synchronizer + * - for successful/failed assign commands: identifies the target synchronizer + * + * Required + */ + synchronizerTime: components['schemas']['SynchronizerTime'] + /** + * Format: int64 + * @description The traffic cost paid by this participant node for the confirmation request + * for the submitted command. + * + * Commands whose execution is rejected before their corresponding + * confirmation request is ordered by the synchronizer will report a paid + * traffic cost of zero. + * If a confirmation request is ordered for a command, but the request fails + * (e.g., due to contention with a concurrent contract archival), the traffic + * cost is paid and reported on the failed completion for the request. + * + * If you want to correlate the traffic cost of a successful completion + * with the transaction that resulted from the command, you can use the + * ``offset`` field to retrieve the transaction using + * ``UpdateService.GetUpdateByOffset`` on the same participant node; or alternatively use the ``update_id`` + * field to retrieve the transaction using ``UpdateService.GetUpdateById`` on any participant node + * that sees the transaction. + * + * Note: for completions processed before the participant started serving + * traffic cost on the Ledger API, this field will be set to zero. + * Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater + * than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. + * The cost reported here is the one paid for ordering the confirmation request. + * + * Optional + */ + paidTrafficCost?: number + } + /** + * CompletionResponse + * @description Required + */ + CompletionResponse: + | { + Completion: components['schemas']['Completion'] + } + | { + Empty: components['schemas']['Empty4'] + } + | { + OffsetCheckpoint: components['schemas']['OffsetCheckpoint'] + } + /** CompletionStreamRequest */ + CompletionStreamRequest: { + /** + * @description Only completions of commands submitted with the same user_id will be visible in the stream. + * Must be a valid UserIdString (as described in ``value.proto``). + * + * Required unless authentication is used with a user token. + * In that case, the token's user-id will be used for the request's user_id. + * + * Optional + */ + userId?: string + /** + * @description Non-empty list of parties whose data should be included. + * The stream shows only completions of commands for which at least one of the ``act_as`` parties is in the given set of parties. + * Must be a valid PartyIdString (as described in ``value.proto``). + * + * Required: must be non-empty + */ + parties: string[] + /** + * Format: int64 + * @description This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + * If not set the ledger uses the ledger begin offset instead. + * If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + * If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. + * + * Optional + */ + beginExclusive?: number + } + /** CompletionStreamResponse */ + CompletionStreamResponse: { + completionResponse?: components['schemas']['CompletionResponse'] + } + /** ConnectedSynchronizer */ + ConnectedSynchronizer: { + /** + * @description The alias of the synchronizer + * + * Required + */ + synchronizerAlias: string + /** + * @description The ID of the synchronizer + * + * Required + */ + synchronizerId: string + /** + * @description The permission on the synchronizer + * Set if a party was used in the request, otherwise unspecified. + * + * Optional + * @enum {string} + */ + permission?: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + /** + * CostEstimation + * @description Estimation of the cost of submitting the prepared transaction + * The estimation is done against the synchronizer chosen during preparation of the transaction + * (or the one explicitly requested). + * The cost of re-assigning contracts to another synchronizer when necessary is not included in the estimation. + */ + CostEstimation: { + /** + * @description Timestamp at which the estimation was made + * + * Required + */ + estimationTimestamp: string + /** + * Format: int64 + * @description Estimated traffic cost of the confirmation request associated with the transaction + * + * Required + */ + confirmationRequestTrafficCostEstimation: number + /** + * Format: int64 + * @description Estimated traffic cost of the confirmation response associated with the transaction + * This field can also be used as an indication of the cost that other potential confirming nodes + * of the party will incur to approve or reject the transaction + * + * Required + */ + confirmationResponseTrafficCostEstimation: number + /** + * Format: int64 + * @description Sum of the fields above + * + * Required + */ + totalTrafficCostEstimation: number + } + /** + * CostEstimationHints + * @description Hints to improve cost estimation precision of a prepared transaction + */ + CostEstimationHints: { + /** + * @description Disable cost estimation + * Default (not set) is false + * + * Optional + */ + disabled?: boolean + /** + * @description Details on the keys that will be used to sign the transaction (how many and of which type). + * Signature size impacts the cost of the transaction. + * If empty, the signature sizes will be approximated with threshold-many signatures (where threshold is defined + * in the PartyToParticipant of the external party), using keys in the order they are registered. + * Empty list is equivalent to not providing this field + * + * Optional: can be empty + */ + expectedSignatures?: ( + | 'SIGNING_ALGORITHM_SPEC_UNSPECIFIED' + | 'SIGNING_ALGORITHM_SPEC_ED25519' + | 'SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_256' + | 'SIGNING_ALGORITHM_SPEC_EC_DSA_SHA_384' + )[] + } + /** + * CreateAndExerciseCommand + * @description Create a contract and exercise a choice on it in the same transaction. + */ + CreateAndExerciseCommand: { + /** + * @description The template of the contract the client wants to create. + * Both package-name and package-id reference identifier formats for the template-id are supported. + * Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + * + * Required + */ + templateId: string + /** + * @description The arguments required for creating a contract from this template. + * + * Required + */ + createArguments: unknown + /** + * @description The name of the choice the client wants to exercise. + * Must be a valid NameString (as described in ``value.proto``). + * + * Required + */ + choice: string + /** + * @description The argument for this choice. + * + * Required + */ + choiceArgument: unknown + } + /** + * CreateCommand + * @description Create a new contract instance based on a template. + */ + CreateCommand: { + /** + * @description The template of contract the client wants to create. + * Both package-name and package-id reference identifier formats for the template-id are supported. + * Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + * + * Required + */ + templateId: string + /** + * @description The arguments required for creating a contract from this template. + * + * Required + */ + createArguments: unknown + } + /** CreateIdentityProviderConfigRequest */ + CreateIdentityProviderConfigRequest: { + /** @description Required */ + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + /** CreateIdentityProviderConfigResponse */ + CreateIdentityProviderConfigResponse: { + /** @description Required */ + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + /** + * CreateUserRequest + * @description RPC requests and responses + * /////////////////////////// + * Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)`` + */ + CreateUserRequest: { + /** + * @description The user to create. + * + * Required + */ + user: components['schemas']['User'] + /** + * @description The rights to be assigned to the user upon creation, + * which SHOULD include appropriate rights for the ``user.primary_party``. + * + * Optional: can be empty + */ + rights?: components['schemas']['Right'][] + } + /** CreateUserResponse */ + CreateUserResponse: { + /** + * @description Created user. + * + * Required + */ + user: components['schemas']['User'] + } + /** + * CreatedEvent + * @description Records that a contract has been created, and choices may now be exercised on it. + */ + CreatedEvent: { + /** + * Format: int64 + * @description The offset of origin, which has contextual meaning, please see description at messages that include a CreatedEvent. + * Offsets are managed by the participant nodes. + * Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + * It is a valid absolute offset (positive integer) + * + * Required + */ + offset: number + /** + * Format: int32 + * @description The position of this event in the originating transaction or reassignment. + * The origin has contextual meaning, please see description at messages that include a CreatedEvent. + * Node IDs are not necessarily equal across participants, + * as these may see different projections/parts of transactions. + * Must be valid node ID (non-negative integer) + * + * Required + */ + nodeId: number + /** + * @description The ID of the created contract. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + contractId: string + /** + * @description The template of the created contract. + * The identifier uses the package-id reference format. + * + * Required + */ + templateId: string + /** + * @description The key of the created contract. + * This will be set if and only if ``template_id`` defines a contract key. + * + * Optional + */ + contractKey?: unknown + /** + * @description The hash of contract_key. + * This will be set if and only if ``template_id`` defines a contract key. + * + * Optional: can be empty + */ + contractKeyHash?: string + /** + * @description The arguments that have been used to create the contract. + * + * Required + */ + createArgument: unknown + /** + * @description Opaque representation of contract create event payload intended for forwarding + * to an API server as a contract disclosed as part of a command + * submission. + * + * Optional: can be empty + */ + createdEventBlob?: string + /** + * @description Interface views specified in the transaction filter. + * Includes an ``InterfaceView`` for each interface for which there is a ``InterfaceFilter`` with + * + * - its party in the ``witness_parties`` of this event, + * - and which is implemented by the template of this event, + * - and which has ``include_interface_view`` set. + * + * Optional: can be empty + */ + interfaceViews?: components['schemas']['JsInterfaceView'][] + /** + * @description The parties that are notified of this event. When a ``CreatedEvent`` + * is returned as part of a transaction tree or ledger-effects transaction, this will include all + * the parties specified in the ``TransactionFilter`` that are witnesses of the event + * (the stakeholders of the contract and all informees of all the ancestors + * of this create action that this participant knows about). + * If served as part of a ACS delta transaction those will + * be limited to all parties specified in the ``TransactionFilter`` that + * are stakeholders of the contract (i.e. either signatories or observers). + * If the ``CreatedEvent`` is returned as part of an AssignedEvent, + * ActiveContract or IncompleteUnassigned (so the event is related to + * an assignment or unassignment): this will include all parties of the + * ``TransactionFilter`` that are stakeholders of the contract. + * + * The behavior of reading create events visible to parties not hosted + * on the participant node serving the Ledger API is undefined. Concretely, + * there is neither a guarantee that the participant node will serve all their + * create events on the ACS stream, nor is there a guarantee that matching archive + * events are delivered for such create events. + * + * For most clients this is not a problem, as they only read events for parties + * that are hosted on the participant node. If you need to read events + * for parties that may not be hosted at all times on the participant node, + * subscribe to the ``TopologyEvent``s for that party by setting a corresponding + * ``UpdateFormat``. Using these events, query the ACS as-of an offset where the + * party is hosted on the participant node, and ignore create events at offsets + * where the party is not hosted on the participant node. + * + * Required: must be non-empty + */ + witnessParties: string[] + /** + * @description The signatories for this contract as specified by the template. + * + * Required: must be non-empty + */ + signatories: string[] + /** + * @description The observers for this contract as specified explicitly by the template or implicitly as choice controllers. + * This field never contains parties that are signatories. + * + * Optional: can be empty + */ + observers?: string[] + /** + * @description Ledger effective time of the transaction that created the contract. + * + * Required + */ + createdAt: string + /** + * @description The package name of the created contract. + * + * Required + */ + packageName: string + /** + * @description A package-id present in the participant package store that typechecks the contract's argument. + * This may differ from the package-id of the template used to create the contract. + * For contracts created before Canton 3.4, this field matches the contract's creation package-id. + * + * NOTE: Experimental, server internal concept, not for client consumption. Subject to change without notice. + * + * Required + */ + representativePackageId: string + /** + * @description Whether this event would be part of respective ACS_DELTA shaped stream, + * and should therefore considered when tracking contract activeness on the client-side. + * + * Required + */ + acsDelta: boolean + } + /** CreatedTreeEvent */ + CreatedTreeEvent: { + value: components['schemas']['CreatedEvent'] + } + /** + * CumulativeFilter + * @description A filter that matches all contracts that are either an instance of one of + * the ``template_filters`` or that match one of the ``interface_filters``. + */ + CumulativeFilter: { + identifierFilter?: components['schemas']['IdentifierFilter'] + } + /** DeduplicationDuration */ + DeduplicationDuration: { + value: components['schemas']['Duration'] + } + /** DeduplicationDuration */ + DeduplicationDuration1: { + value: components['schemas']['Duration'] + } + /** DeduplicationDuration */ + DeduplicationDuration2: { + value: components['schemas']['Duration'] + } + /** DeduplicationOffset */ + DeduplicationOffset: { + /** Format: int64 */ + value: number + } + /** DeduplicationOffset */ + DeduplicationOffset1: { + /** Format: int64 */ + value: number + } + /** DeduplicationOffset */ + DeduplicationOffset2: { + /** Format: int64 */ + value: number + } + /** + * DeduplicationPeriod + * @description Specifies the deduplication period for the change ID. + * If omitted, the participant will assume the configured maximum deduplication time. + * + * Optional + */ + DeduplicationPeriod: + | { + DeduplicationDuration: components['schemas']['DeduplicationDuration'] + } + | { + DeduplicationOffset: components['schemas']['DeduplicationOffset'] + } + | { + Empty: components['schemas']['Empty'] + } + /** + * DeduplicationPeriod + * @description The actual deduplication window used for the submission, which is derived from + * ``Commands.deduplication_period``. The ledger may convert the deduplication period into other + * descriptions and extend the period in implementation-specified ways. + * + * Used to audit the deduplication guarantee described in ``commands.proto``. + * + * The deduplication guarantee applies even if the completion omits this field. + * + * Optional + */ + DeduplicationPeriod1: + | { + DeduplicationDuration: components['schemas']['DeduplicationDuration1'] + } + | { + DeduplicationOffset: components['schemas']['DeduplicationOffset1'] + } + | { + Empty: components['schemas']['Empty3'] + } + /** DeduplicationPeriod */ + DeduplicationPeriod2: + | { + DeduplicationDuration: components['schemas']['DeduplicationDuration2'] + } + | { + DeduplicationOffset: components['schemas']['DeduplicationOffset2'] + } + | { + Empty: components['schemas']['Empty10'] + } + /** + * DeleteIdentityProviderConfigResponse + * @description Does not (yet) contain any data. + */ + DeleteIdentityProviderConfigResponse: Record + /** + * DisclosedContract + * @description An additional contract that is used to resolve + * contract & contract key lookups. + */ + DisclosedContract: { + /** + * @description The template id of the contract. + * The identifier uses the package-id reference format. + * + * If provided, used to validate the template id of the contract serialized in the created_event_blob. + * + * Optional + */ + templateId?: string + /** + * @description The contract id + * + * If provided, used to validate the contract id of the contract serialized in the created_event_blob. + * + * Optional + */ + contractId?: string + /** + * @description Opaque byte string containing the complete payload required by the Daml engine + * to reconstruct a contract not known to the receiving participant. + * + * Required: must be non-empty + */ + createdEventBlob: string + /** + * @description The ID of the synchronizer where the contract is currently assigned + * + * Optional + */ + synchronizerId?: string + } + /** Duration */ + Duration: { + /** Format: int64 */ + seconds: number + /** Format: int32 */ + nanos: number + /** @description This field is automatically added as part of protobuf to json mapping */ + unknownFields?: components['schemas']['UnknownFieldSet'] + } + /** Empty */ + Empty: Record + /** Empty */ + Empty1: Record + /** Empty */ + Empty10: Record + /** Empty */ + Empty2: Record + /** Empty */ + Empty3: Record + /** Empty */ + Empty4: Record + /** Empty */ + Empty5: Record + /** Empty */ + Empty6: Record + /** Empty */ + Empty7: Record + /** Empty */ + Empty8: Record + /** Empty */ + Empty9: Record + /** + * Event + * @description Events in transactions can have two primary shapes: + * + * - ACS delta: events can be CreatedEvent or ArchivedEvent + * - ledger effects: events can be CreatedEvent or ExercisedEvent + * + * In the update service the events are restricted to the events + * visible for the parties specified in the transaction filter. Each + * event message type below contains a ``witness_parties`` field which + * indicates the subset of the requested parties that can see the event + * in question. + */ + Event: + | { + ArchivedEvent: components['schemas']['ArchivedEvent'] + } + | { + CreatedEvent: components['schemas']['CreatedEvent'] + } + | { + ExercisedEvent: components['schemas']['ExercisedEvent'] + } + /** + * EventFormat + * @description A format for events which defines both which events should be included + * and what data should be computed and included for them. + * + * Note that some of the filtering behavior depends on the `TransactionShape`, + * which is expected to be specified alongside usages of `EventFormat`. + */ + EventFormat: { + /** + * @description Each key must be a valid PartyIdString (as described in ``value.proto``). + * The interpretation of the filter depends on the transaction-shape being filtered: + * + * 1. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + * the listed parties and match the per-party filter. + * 2. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + * stakeholders include at least one of the listed parties and match the per-party filter. + * + * Optional: can be empty + */ + filtersByParty?: components['schemas']['Map_Filters'] + /** + * @description Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + * with the per-party filter as described above. + * + * Optional + */ + filtersForAnyParty?: components['schemas']['Filters'] + /** + * @description If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + * In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + * + * Optional + */ + verbose?: boolean + } + /** ExecuteSubmissionAndWaitResponse */ + ExecuteSubmissionAndWaitResponse: { + /** + * @description The id of the transaction that resulted from the submitted command. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + updateId: string + /** + * Format: int64 + * @description The details of the offset field are described in ``community/ledger-api/README.md``. + * + * Required + */ + completionOffset: number + } + /** ExecuteSubmissionResponse */ + ExecuteSubmissionResponse: Record + /** + * ExerciseByKeyCommand + * @description Exercise a choice on an existing contract specified by its key. + */ + ExerciseByKeyCommand: { + /** + * @description The template of contract the client wants to exercise. + * Both package-name and package-id reference identifier formats for the template-id are supported. + * Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + * + * Required + */ + templateId: string + /** + * @description The key of the contract the client wants to exercise upon. + * + * Required + */ + contractKey: unknown + /** + * @description The name of the choice the client wants to exercise. + * Must be a valid NameString (as described in ``value.proto``) + * + * Required + */ + choice: string + /** + * @description The argument for this choice. + * + * Required + */ + choiceArgument: unknown + } + /** + * ExerciseCommand + * @description Exercise a choice on an existing contract. + */ + ExerciseCommand: { + /** + * @description The template or interface of the contract the client wants to exercise. + * Both package-name and package-id reference identifier formats for the template-id are supported. + * Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + * To exercise a choice on an interface, specify the interface identifier in the template_id field. + * + * Required + */ + templateId: string + /** + * @description The ID of the contract the client wants to exercise upon. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + contractId: string + /** + * @description The name of the choice the client wants to exercise. + * Must be a valid NameString (as described in ``value.proto``) + * + * Required + */ + choice: string + /** + * @description The argument for this choice. + * + * Required + */ + choiceArgument: unknown + } + /** + * ExercisedEvent + * @description Records that a choice has been exercised on a target contract. + */ + ExercisedEvent: { + /** + * Format: int64 + * @description The offset of origin. + * Offsets are managed by the participant nodes. + * Transactions can thus NOT be assumed to have the same offsets on different participant nodes. + * It is a valid absolute offset (positive integer) + * + * Required + */ + offset: number + /** + * Format: int32 + * @description The position of this event in the originating transaction or reassignment. + * Node IDs are not necessarily equal across participants, + * as these may see different projections/parts of transactions. + * Must be valid node ID (non-negative integer) + * + * Required + */ + nodeId: number + /** + * @description The ID of the target contract. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + contractId: string + /** + * @description Identifies the template that defines the executed choice. + * This template's package-id may differ from the target contract's package-id + * if the target contract has been upgraded or downgraded. + * + * The identifier uses the package-id reference format. + * + * Required + */ + templateId: string + /** + * @description The interface where the choice is defined, if inherited. + * If defined, the identifier uses the package-id reference format. + * + * Optional + */ + interfaceId?: string + /** + * @description The choice that was exercised on the target contract. + * Must be a valid NameString (as described in ``value.proto``). + * + * Required + */ + choice: string + /** + * @description The argument of the exercised choice. + * + * Required + */ + choiceArgument: unknown + /** + * @description The parties that exercised the choice. + * Each element must be a valid PartyIdString (as described in ``value.proto``). + * + * Required: must be non-empty + */ + actingParties: string[] + /** + * @description If true, the target contract may no longer be exercised. + * + * Required + */ + consuming: boolean + /** + * @description The parties that are notified of this event. The witnesses of an exercise + * node will depend on whether the exercise was consuming or not. + * If consuming, the witnesses are the union of the stakeholders, + * the actors and all informees of all the ancestors of this event this + * participant knows about. + * If not consuming, the witnesses are the union of the signatories, + * the actors and all informees of all the ancestors of this event this + * participant knows about. + * In both cases the witnesses are limited to the querying parties, or not + * limited in case anyParty filters are used. + * Note that the actors might not necessarily be observers + * and thus stakeholders. This is the case when the controllers of a + * choice are specified using "flexible controllers", using the + * ``choice ... controller`` syntax, and said controllers are not + * explicitly marked as observers. + * Each element must be a valid PartyIdString (as described in ``value.proto``). + * + * Required: must be non-empty + */ + witnessParties: string[] + /** + * Format: int32 + * @description Specifies the upper boundary of the node ids of the events in the same transaction that appeared as a result of + * this ``ExercisedEvent``. This allows unambiguous identification of all the members of the subtree rooted at this + * node. A full subtree can be constructed when all descendant nodes are present in the stream. If nodes are heavily + * filtered, it is only possible to determine if a node is in a consequent subtree or not. + * + * Required + */ + lastDescendantNodeId: number + /** + * @description The result of exercising the choice. + * + * Optional + */ + exerciseResult?: unknown + /** + * @description The package name of the contract. + * + * Required + */ + packageName: string + /** + * @description If the event is consuming, the interfaces implemented by the target template that have been + * matched from the interface filter query. + * Populated only in case interface filters with include_interface_view set. + * + * The identifier uses the package-id reference format. + * + * Optional: can be empty + */ + implementedInterfaces?: string[] + /** + * @description Whether this event would be part of respective ACS_DELTA shaped stream, + * and should therefore considered when tracking contract activeness on the client-side. + * + * Required + */ + acsDelta: boolean + } + /** ExercisedTreeEvent */ + ExercisedTreeEvent: { + value: components['schemas']['ExercisedEvent'] + } + /** + * ExperimentalCommandInspectionService + * @description Whether the Ledger API supports command inspection service + */ + ExperimentalCommandInspectionService: { + /** @description Required */ + supported: boolean + } + /** + * ExperimentalFeatures + * @description See the feature message definitions for descriptions. + */ + ExperimentalFeatures: { + /** @description Optional */ + staticTime?: components['schemas']['ExperimentalStaticTime'] + /** @description Optional */ + commandInspectionService?: components['schemas']['ExperimentalCommandInspectionService'] + } + /** + * ExperimentalStaticTime + * @description Ledger is in the static time mode and exposes a time service. + */ + ExperimentalStaticTime: { + /** @description Required */ + supported: boolean + } + /** FeaturesDescriptor */ + FeaturesDescriptor: { + /** + * @description Features under development or features that are used + * for ledger implementation testing purposes only. + * + * Daml applications SHOULD not depend on these in production. + * + * Required + */ + experimental: components['schemas']['ExperimentalFeatures'] + /** + * @description If set, then the Ledger API server supports user management. + * It is recommended that clients query this field to gracefully adjust their behavior for + * ledgers that do not support user management. + * + * Required + */ + userManagement: components['schemas']['UserManagementFeature'] + /** + * @description If set, then the Ledger API server supports party management configurability. + * It is recommended that clients query this field to gracefully adjust their behavior to + * maximum party page size. + * + * Required + */ + partyManagement: components['schemas']['PartyManagementFeature'] + /** + * @description It contains the timeouts related to the periodic offset checkpoint emission + * + * Required + */ + offsetCheckpoint: components['schemas']['OffsetCheckpointFeature'] + /** + * @description If set, then the Ledger API server supports package listing + * configurability. It is recommended that clients query this field to + * gracefully adjust their behavior to maximum package listing page size. + * + * Required + */ + packageFeature: components['schemas']['PackageFeature'] + } + /** Field */ + Field: { + varint?: number[] + fixed64?: number[] + fixed32?: number[] + lengthDelimited?: string[] + } + /** FieldMask */ + FieldMask: { + paths?: string[] + unknownFields: components['schemas']['UnknownFieldSet'] + } + /** + * Filters + * @description The union of a set of template filters, interface filters, or a wildcard. + */ + Filters: { + /** + * @description Every filter in the cumulative list expands the scope of the resulting stream. Each interface, + * template or wildcard filter means additional events that will match the query. + * The impact of include_interface_view and include_created_event_blob fields in the filters will + * also be accumulated. + * A template or an interface SHOULD NOT appear twice in the accumulative field. + * A wildcard filter SHOULD NOT be defined more than once in the accumulative field. + * If no ``CumulativeFilter`` defined, the default of a single ``WildcardFilter`` with + * include_created_event_blob unset is used. + * + * Optional: can be empty + */ + cumulative?: components['schemas']['CumulativeFilter'][] + } + /** GenerateExternalPartyTopologyRequest */ + GenerateExternalPartyTopologyRequest: { + /** + * @description Synchronizer-id for which we are building this request. + * TODO(#27670) support synchronizer aliases + * + * Required + */ + synchronizer: string + /** + * @description The actual party id will be constructed from this hint and a fingerprint of the public key + * + * Required + */ + partyHint: string + /** + * @description Public key + * + * Required + */ + publicKey: components['schemas']['SigningPublicKey'] + /** + * @description If true, then the local participant will only be observing, not confirming. Default false. + * + * Optional + */ + localParticipantObservationOnly?: boolean + /** + * @description Other participant ids which should be confirming for this party + * + * Optional: can be empty + */ + otherConfirmingParticipantUids?: string[] + /** + * Format: int32 + * @description Confirmation threshold >= 1 for the party. Defaults to all available confirmers (or if set to 0). + * + * Optional + */ + confirmationThreshold?: number + /** + * @description Other observing participant ids for this party + * + * Optional: can be empty + */ + observingParticipantUids?: string[] + } + /** + * GenerateExternalPartyTopologyResponse + * @description Response message with topology transactions and the multi-hash to be signed. + */ + GenerateExternalPartyTopologyResponse: { + /** + * @description The generated party id + * + * Required + */ + partyId: string + /** + * @description The fingerprint of the supplied public key + * + * Required + */ + publicKeyFingerprint: string + /** + * @description The serialized topology transactions which need to be signed and submitted as part of the allocate party process + * Note that the serialization includes the versioning information. Therefore, the transaction here is serialized + * as an `UntypedVersionedMessage` which in turn contains the serialized `TopologyTransaction` in the version + * supported by the synchronizer. + * + * Required: must be non-empty + */ + topologyTransactions: string[] + /** + * @description the multi-hash which may be signed instead of each individual transaction + * + * Required: must be non-empty + */ + multiHash: string + } + /** GetActiveContractsPageRequest */ + GetActiveContractsPageRequest: { + /** + * Format: int64 + * @description The offset at which the snapshot of the active contracts will be computed. + * Must be no greater than the current ledger end offset. + * Must be greater than or equal to the last pruning offset. + * Optional, if defined, it must be a valid absolute offset (positive integer) or ledger begin offset (zero). + * If zero, the empty set will be returned. + * If not defined, the current ledger end will be used and it will be populated in the response. + * + * Optional + */ + activeAtOffset?: number + /** + * @description Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of + * TRANSACTION_SHAPE_ACS_DELTA. + * + * Required + */ + eventFormat: components['schemas']['EventFormat'] + /** + * Format: int32 + * @description The result page will contain at most max_page_size entries of the respective active contract snapshot. + * The server might reject max_page_size breaching the server-specified limit. + * Optional, if not defined, the default will be determined by the server. + * + * Optional + */ + maxPageSize?: number + /** + * @description To get the next page of the active contracts snapshot, the ``page_token`` should be set to the + * ``next_page_token`` of the last ``GetActiveContractsPageResponse``. + * The page token only works if subsequent requests: + * + * - are executed on the same participant, + * - use the same active_at_offset and event_format, + * - and the participant's store was not pruned to after the active_at_offset. + * + * If not specified, the first page of the active contracts snapshot will be returned. + * + * Optional: can be empty + */ + pageToken?: string + } + /** + * GetActiveContractsRequest + * @description If the given offset is different than the ledger end, and there are (un)assignments in-flight at the given offset, + * the snapshot may fail with "FAILED_PRECONDITION/PARTICIPANT_PRUNED_DATA_ACCESSED". + * Note that it is ok to request acs snapshots for party migration with offsets other than ledger end, because party + * migration is not concerned with incomplete (un)assignments. + */ + GetActiveContractsRequest: { + /** + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * Templates to include in the served snapshot, per party. + * Optional, if specified event_format must be unset, if not specified event_format must be set. + */ + filter?: components['schemas']['TransactionFilter'] + /** + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + * In particular, setting the verbose flag to true triggers the ledger to include labels for record fields. + * Optional, if specified event_format must be unset. + */ + verbose?: boolean + /** + * Format: int64 + * @description The offset at which the snapshot of the active contracts will be computed. + * Must be no greater than the current ledger end offset. + * Must be greater than or equal to the last pruning offset. + * Must be a valid absolute offset (positive integer) or ledger begin offset (zero). + * If zero, the empty set will be returned. + * + * Required + */ + activeAtOffset: number + /** + * @description Format of the contract_entries in the result. In case of CreatedEvent the presentation will be of + * TRANSACTION_SHAPE_ACS_DELTA. + * Optional for backwards compatibility, defaults to an EventFormat where: + * + * - filters_by_party is the filter.filters_by_party from this request + * - filters_for_any_party is the filter.filters_for_any_party from this request + * - verbose is the verbose field from this request + */ + eventFormat?: components['schemas']['EventFormat'] + /** + * @description Opaque representation of a continuation token defining a position in the active contracts snapshot. + * The prefix of the active contracts snapshot will be omitted up to and including the element from which + * the continuation token was read. + * To reuse the continuation token from a `GetActiveContractsPageResponse`: + * + * - subsequent request must be executed on the same participant with the same version of canton, + * - subsequent request must have the same active_at_offset, + * - subsequent request must have the same event_format + * - and the participant must not have been pruned after the active_at_offset. + * + * If not specified, the whole active contracts snapshot will be returned. + * + * Optional: can be empty + */ + streamContinuationToken?: string + } + /** GetCompletionsRequest */ + GetCompletionsRequest: { + /** + * @description If specified, only completions of commands are included, which have at least one of the ``act_as`` parties + * in the given set of parties. + * Only Ledger API users with CanReadAsAnyParty permission allowed to provide no ``parties``. + * Must be a valid PartyIdString (as described in ``value.proto``). + * + * Optional: can be empty + */ + parties?: string[] + /** + * Format: int64 + * @description This optional field indicates the minimum offset for completions. This can be used to resume an earlier completion stream. + * If not set the ledger uses the ledger begin offset instead. + * If specified, it must be a valid absolute offset (positive integer) or zero (ledger begin offset). + * If the ledger has been pruned, this parameter must be specified and greater than the pruning offset. (the pruning + * offset is accessible on the StateService.GetLatestPrunedOffsets endpoint) + * + * Optional + */ + beginExclusive?: number + } + /** GetConnectedSynchronizersResponse */ + GetConnectedSynchronizersResponse: { + /** @description Optional: can be empty */ + connectedSynchronizers?: components['schemas']['ConnectedSynchronizer'][] + } + /** GetContractRequest */ + GetContractRequest: { + /** + * @description The ID of the contract. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + contractId: string + /** + * @description The list of querying parties + * The stakeholders of the referenced contract must have an intersection with any of these parties + * to return the result. + * If no querying_parties specified, all possible contracts could be returned. + * + * Optional: can be empty + */ + queryingParties?: string[] + } + /** GetContractResponse */ + GetContractResponse: { + /** + * @description The representative_package_id will be always set to the contract package ID, therefore this endpoint should + * not be used to lookup contract which entered the participant via party replication or repair service. + * The witnesses field will contain only the querying_parties which are also stakeholders of the contract as well. + * The following fields of the created event cannot be populated, so those should not be used / parsed: + * + * - offset + * - node_id + * - created_event_blob + * - interface_views + * - acs_delta + * + * Required + */ + createdEvent: components['schemas']['CreatedEvent'] + } + /** GetEventsByContractIdRequest */ + GetEventsByContractIdRequest: { + /** + * @description The contract id being queried. + * + * Required + */ + contractId: string + /** + * @description Format of the events in the result, the presentation will be of TRANSACTION_SHAPE_ACS_DELTA. + * + * Required + */ + eventFormat: components['schemas']['EventFormat'] + } + /** GetIdentityProviderConfigResponse */ + GetIdentityProviderConfigResponse: { + /** @description Required */ + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + /** GetLatestPrunedOffsetsResponse */ + GetLatestPrunedOffsetsResponse: { + /** + * Format: int64 + * @description It will always be a non-negative integer. + * If positive, the absolute offset up to which the ledger has been pruned, + * disregarding the state of all divulged contracts pruning. + * If zero, the ledger has not been pruned yet. + * + * Optional + */ + participantPrunedUpToInclusive?: number + /** + * Format: int64 + * @description It will always be a non-negative integer. + * If positive, the absolute offset up to which all divulged events have been pruned on the ledger. + * It can be at or before the ``participant_pruned_up_to_inclusive`` offset. + * For more details about all divulged events pruning, + * see ``PruneRequest.prune_all_divulged_contracts`` in ``participant_pruning_service.proto``. + * If zero, the divulged events have not been pruned yet. + * + * Optional + */ + allDivulgedContractsPrunedUpToInclusive?: number + } + /** GetLedgerApiVersionResponse */ + GetLedgerApiVersionResponse: { + /** + * @description The version of the ledger API. + * + * Required + */ + version: string + /** + * @description The features supported by this Ledger API endpoint. + * + * Daml applications CAN use the feature descriptor on top of + * version constraints on the Ledger API version to determine + * whether a given Ledger API endpoint supports the features + * required to run the application. + * + * See the feature descriptions themselves for the relation between + * Ledger API versions and feature presence. + * + * Required + */ + features: components['schemas']['FeaturesDescriptor'] + } + /** GetLedgerEndResponse */ + GetLedgerEndResponse: { + /** + * Format: int64 + * @description It will always be a non-negative integer. + * If zero, the participant view of the ledger is empty. + * If positive, the absolute offset of the ledger as viewed by the participant. + * + * Optional + */ + offset?: number + } + /** GetPackageStatusResponse */ + GetPackageStatusResponse: { + /** + * @description The status of the package. + * + * Required + * @enum {string} + */ + packageStatus: + | 'PACKAGE_STATUS_UNSPECIFIED' + | 'PACKAGE_STATUS_REGISTERED' + } + /** GetParticipantIdResponse */ + GetParticipantIdResponse: { + /** + * @description Identifier of the participant, which SHOULD be globally unique. + * Must be a valid LedgerString (as describe in ``value.proto``). + * + * Required + */ + participantId: string + } + /** GetPartiesResponse */ + GetPartiesResponse: { + /** + * @description The details of the requested Daml parties by the participant, if known. + * The party details may not be in the same order as requested. + * + * Required: must be non-empty + */ + partyDetails: components['schemas']['PartyDetails'][] + } + /** GetPreferredPackageVersionResponse */ + GetPreferredPackageVersionResponse: { + /** + * @description Not populated when no preferred package is found + * + * Optional + */ + packagePreference?: components['schemas']['PackagePreference'] + } + /** GetPreferredPackagesRequest */ + GetPreferredPackagesRequest: { + /** + * @description The package-name vetting requirements for which the preferred packages should be resolved. + * + * Generally it is enough to provide the requirements for the intended command's root package-names. + * Additional package-name requirements can be provided when additional Daml transaction informees need to use + * package dependencies of the command's root packages. + * + * Required: must be non-empty + */ + packageVettingRequirements: components['schemas']['PackageVettingRequirement'][] + /** + * @description The synchronizer whose vetting state should be used for resolving this query. + * If not specified, the vetting states of all synchronizers to which the participant is connected are used. + * + * Optional + */ + synchronizerId?: string + /** + * @description The timestamp at which the package vetting validity should be computed + * on the latest topology snapshot as seen by the participant. + * If not provided, the participant's current clock time is used. + * + * Optional + */ + vettingValidAt?: string + } + /** GetPreferredPackagesResponse */ + GetPreferredPackagesResponse: { + /** + * @description The package references of the preferred packages. + * Must contain one package reference for each requested package-name. + * + * If you build command submissions whose content depends on the returned + * preferred packages, then we recommend submitting the preferred package-ids + * in the ``package_id_selection_preference`` of the command submission to + * avoid race conditions with concurrent changes of the on-ledger package vetting state. + * + * Required: must be non-empty + */ + packageReferences: components['schemas']['PackageReference'][] + /** + * @description The synchronizer for which the package preferences are computed. + * If the synchronizer_id was specified in the request, then it matches the request synchronizer_id. + * + * Required + */ + synchronizerId: string + } + /** + * GetTransactionByIdRequest + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + */ + GetTransactionByIdRequest: { + /** + * @description The ID of a particular transaction. + * Must be a valid LedgerString (as described in ``value.proto``). + * Required + */ + updateId: string + /** + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * The parties whose events the client expects to see. + * Events that are not visible for the parties in this collection will not be present in the response. + * Each element must be a valid PartyIdString (as described in ``value.proto``). + * Optional for backwards compatibility for GetTransactionById request: if defined transaction_format must be + * unset (falling back to defaults). + */ + requestingParties?: string[] + /** + * @description Optional for GetTransactionById request for backwards compatibility: defaults to a transaction_format, where: + * + * - event_format.filters_by_party will have template-wildcard filters for all the requesting_parties + * - event_format.filters_for_any_party is unset + * - event_format.verbose = true + * - transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + */ + transactionFormat?: components['schemas']['TransactionFormat'] + } + /** + * GetTransactionByOffsetRequest + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + */ + GetTransactionByOffsetRequest: { + /** + * Format: int64 + * @description The offset of the transaction being looked up. + * Must be a valid absolute offset (positive integer). + * Required + */ + offset: number + /** + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * The parties whose events the client expects to see. + * Events that are not visible for the parties in this collection will not be present in the response. + * Each element must be a valid PartyIdString (as described in ``value.proto``). + * Optional for backwards compatibility for GetTransactionByOffset request: if defined transaction_format must be + * unset (falling back to defaults). + */ + requestingParties?: string[] + /** + * @description Optional for GetTransactionByOffset request for backwards compatibility: defaults to a TransactionFormat, where: + * + * - event_format.filters_by_party will have template-wildcard filters for all the requesting_parties + * - event_format.filters_for_any_party is unset + * - event_format.verbose = true + * - transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + */ + transactionFormat?: components['schemas']['TransactionFormat'] + } + /** GetUpdateByIdRequest */ + GetUpdateByIdRequest: { + /** + * @description The ID of a particular update. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + updateId: string + /** + * @description The format for the update. + * + * Required + */ + updateFormat: components['schemas']['UpdateFormat'] + } + /** GetUpdateByOffsetRequest */ + GetUpdateByOffsetRequest: { + /** + * Format: int64 + * @description The offset of the update being looked up. + * Must be a valid absolute offset (positive integer). + * + * Required + */ + offset: number + /** + * @description The format for the update. + * + * Required + */ + updateFormat: components['schemas']['UpdateFormat'] + } + /** GetUpdatesPageRequest */ + GetUpdatesPageRequest: { + /** + * Format: int64 + * @description Exclusive lower bound offset of the requested ledger section (non-negative integer). + * The response page will only contain updates whose offset is strictly greater than this. + * If set to zero or not defined, the lower bound is set to the actual pruning offset or to the beginning of the + * ledger if the participant was not pruned yet. + * If set to positive and the ledger has been pruned, this parameter must be greater or equal than the pruning offset. + * + * Optional + */ + beginOffsetExclusive?: number + /** + * Format: int64 + * @description Inclusive upper bound offset of the requested ledger section. + * If specified the response will only contain updates whose offset is less than or equal to this. + * If not specified response will only contain updates whose offset is less than the current ledger-end. + * + * Optional + */ + endOffsetInclusive?: number + /** + * Format: int32 + * @description The result page will contain the first max_page_size Updates of all matching updates. + * The server may reject queries with max_page_size above server specified limits. + * If not specified, the default max_page_size is determined by the server. + * + * Optional + */ + maxPageSize?: number + /** @description Required */ + updateFormat: components['schemas']['UpdateFormat'] + /** + * @description If set, the page will populate the elements in descending order starting from the end_offset_inclusive. + * + * Optional + */ + descendingOrder?: boolean + /** + * @description To get the next page of updates, the ``page_token`` should be set to the + * ``next_page_token`` of the last ``GetUpdatesPageResponse``. + * To achieve correct paging: subsequent requests must + * + * - be executed on the same participant, + * - have the same begin_offset_exclusive, + * - have the same end_offset_inclusive, + * - have the same update_format and + * - have the same descending_order. + * + * If not specified, the first page of updates will be returned. + * + * Optional: can be empty + */ + pageToken?: string + } + /** GetUpdatesRequest */ + GetUpdatesRequest: { + /** + * Format: int64 + * @description Exclusive lower bound offset of the requested ledger section (non-negative integer). + * The response will only contain transactions whose offset is strictly greater than this. + * If set to zero, the lower bound is set to the beginning of the ledger. + * If the participant has been pruned, this parameter must be greater or equal than the pruning offset. + * Required + */ + beginExclusive: number + /** + * Format: int64 + * @description Inclusive higher bound offset of the requested ledger section. + * If specified the response will only contain transactions whose offset is less than or equal to this. + * If not specified, + * + * - the descending_order must not be selected, + * - the stream will not terminate. + * + * Optional + */ + endInclusive?: number + /** + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * Requesting parties with template filters. + * Template filters must be empty for GetUpdateTrees requests. + * Optional for backwards compatibility, if defined update_format must be unset + */ + filter?: components['schemas']['TransactionFilter'] + /** + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * If enabled, values served over the API will contain more information than strictly necessary to interpret the data. + * In particular, setting the verbose flag to true triggers the ledger to include labels, record and variant type ids + * for record fields. + * Optional for backwards compatibility, if defined update_format must be unset + */ + verbose?: boolean + /** + * @description Must be unset for GetUpdateTrees request. + * Optional for backwards compatibility for GetUpdates request: defaults to an UpdateFormat where: + * + * - include_transactions.event_format.filters_by_party = the filter.filters_by_party on this request + * - include_transactions.event_format.filters_for_any_party = the filter.filters_for_any_party on this request + * - include_transactions.event_format.verbose = the same flag specified on this request + * - include_transactions.transaction_shape = TRANSACTION_SHAPE_ACS_DELTA + * - include_reassignments.filter = the same filter specified on this request + * - include_reassignments.verbose = the same flag specified on this request + * - include_topology_events.include_participant_authorization_events.parties = all the parties specified in filter + */ + updateFormat?: components['schemas']['UpdateFormat'] + /** + * @description If set, the stream will populate the elements in descending order. + * + * Optional + */ + descendingOrder?: boolean + } + /** GetUserResponse */ + GetUserResponse: { + /** + * @description Retrieved user. + * + * Required + */ + user: components['schemas']['User'] + } + /** + * GrantUserRightsRequest + * @description Add the rights to the set of rights granted to the user. + * + * Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)`` + */ + GrantUserRightsRequest: { + /** + * @description The user to whom to grant rights. + * + * Required + */ + userId: string + /** + * @description The rights to grant. + * + * Optional: can be empty + */ + rights?: components['schemas']['Right'][] + /** + * @description The id of the ``Identity Provider`` + * If not set, assume the user is managed by the default identity provider. + * + * Optional + */ + identityProviderId?: string + } + /** GrantUserRightsResponse */ + GrantUserRightsResponse: { + /** + * @description The rights that were newly granted by the request. + * + * Optional: can be empty + */ + newlyGrantedRights?: components['schemas']['Right'][] + } + /** + * IdentifierFilter + * @description Required + */ + IdentifierFilter: + | { + Empty: components['schemas']['Empty1'] + } + | { + InterfaceFilter: components['schemas']['InterfaceFilter'] + } + | { + TemplateFilter: components['schemas']['TemplateFilter'] + } + | { + WildcardFilter: components['schemas']['WildcardFilter'] + } + /** + * IdentityProviderAdmin + * @description The right to administer the identity provider that the user is assigned to. + * It means, being able to manage users and parties that are also assigned + * to the same identity provider. + */ + IdentityProviderAdmin: { + value: components['schemas']['IdentityProviderAdmin1'] + } + /** + * IdentityProviderAdmin + * @description The right to administer the identity provider that the user is assigned to. + * It means, being able to manage users and parties that are also assigned + * to the same identity provider. + */ + IdentityProviderAdmin1: Record + /** IdentityProviderConfig */ + IdentityProviderConfig: { + /** + * @description The identity provider identifier + * Must be a valid LedgerString (as describe in ``value.proto``). + * + * Required + */ + identityProviderId: string + /** + * @description When set, the callers using JWT tokens issued by this identity provider are denied all access + * to the Ledger API. + * Modifiable + * + * Optional + */ + isDeactivated?: boolean + /** + * @description Specifies the issuer of the JWT token. + * The issuer value is a case sensitive URL using the https scheme that contains scheme, host, + * and optionally, port number and path components and no query or fragment components. + * Modifiable + * + * Can be left empty when used in `UpdateIdentityProviderConfigRequest` if the issuer is not being updated. + * + * Required + */ + issuer: string + /** + * @description The JWKS (JSON Web Key Set) URL. + * The Ledger API uses JWKs (JSON Web Keys) from the provided URL to verify that the JWT has been + * signed with the loaded JWK. Only RS256 (RSA Signature with SHA-256) signing algorithm is supported. + * Modifiable + * + * Required + */ + jwksUrl: string + /** + * @description Specifies the audience of the JWT token. + * When set, the callers using JWT tokens issued by this identity provider are allowed to get an access + * only if the "aud" claim includes the string specified here + * Modifiable + * + * Optional + */ + audience?: string + } + /** + * InterfaceFilter + * @description This filter matches contracts that implement a specific interface. + */ + InterfaceFilter: { + value: components['schemas']['InterfaceFilter1'] + } + /** + * InterfaceFilter + * @description This filter matches contracts that implement a specific interface. + */ + InterfaceFilter1: { + /** + * @description The interface that a matching contract must implement. + * The ``interface_id`` needs to be valid: corresponding interface should be defined in + * one of the available packages at the time of the query. + * Both package-name and package-id reference formats for the identifier are supported. + * Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + * + * Required + */ + interfaceId: string + /** + * @description Whether to include the interface view on the contract in the returned ``CreatedEvent``. + * Use this to access contract data in a uniform manner in your API client. + * + * Optional + */ + includeInterfaceView?: boolean + /** + * @description Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + * Use this to access the contract create event payload in your API client + * for submitting it as a disclosed contract with future commands. + * + * Optional + */ + includeCreatedEventBlob?: boolean + } + /** JsActiveContract */ + JsActiveContract: { + /** + * @description The event as it appeared in the context of its last update (i.e. daml transaction or + * reassignment). In particular, the last offset, node_id pair is preserved. + * The last update is the most recent update created or assigned this contract on synchronizer_id synchronizer. + * The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + * for lookups. + * + * Required + */ + createdEvent: components['schemas']['CreatedEvent'] + /** + * @description A valid synchronizer id + * + * Required + */ + synchronizerId: string + /** + * Format: int64 + * @description Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + * with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + * equals zero. + * This field will be the reassignment_counter of the latest observable activation event on this synchronizer, which is + * before the active_at_offset. + * + * Required + */ + reassignmentCounter: number + } + /** JsArchived */ + JsArchived: { + /** @description Required */ + archivedEvent: components['schemas']['ArchivedEvent'] + /** + * @description The synchronizer which sequenced the archival of the contract + * + * Required + */ + synchronizerId: string + } + /** + * JsAssignedEvent + * @description Records that a contract has been assigned, and it can be used on the target synchronizer. + */ + JsAssignedEvent: { + /** + * @description The ID of the source synchronizer. + * Must be a valid synchronizer id. + * + * Required + */ + source: string + /** + * @description The ID of the target synchronizer. + * Must be a valid synchronizer id. + * + * Required + */ + target: string + /** + * @description The ID from the unassigned event. + * For correlation capabilities. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + reassignmentId: string + /** + * @description Party on whose behalf the assign command was executed. + * Empty if the assignment happened offline via the repair service. + * Must be a valid PartyIdString (as described in ``value.proto``). + * + * Optional + */ + submitter?: string + /** + * Format: int64 + * @description Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + * with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + * equals zero. + * + * Required + */ + reassignmentCounter: number + /** + * @description The offset of this event refers to the offset of the assignment, + * while the node_id is the index of within the batch. + * + * Required + */ + createdEvent: components['schemas']['CreatedEvent'] + } + /** JsAssignmentEvent */ + JsAssignmentEvent: { + source: string + target: string + reassignmentId: string + submitter: string + /** Format: int64 */ + reassignmentCounter: number + createdEvent: components['schemas']['CreatedEvent'] + } + /** JsCantonError */ + JsCantonError: { + code: string + cause: string + correlationId?: string + traceId?: string + context: components['schemas']['Map_String'] + resources?: components['schemas']['Tuple2_String_String'][] + /** Format: int32 */ + errorCategory: number + /** Format: int32 */ + grpcCodeValue?: number + retryInfo?: string + definiteAnswer?: boolean + } + /** + * JsCommands + * @description A composite command that groups multiple commands together. + */ + JsCommands: { + /** + * @description Individual elements of this atomic command. Must be non-empty. + * + * Required: must be non-empty + */ + commands: components['schemas']['Command'][] + /** + * @description Uniquely identifies the command. + * The triple (user_id, act_as, command_id) constitutes the change ID for the intended ledger change, + * where act_as is interpreted as a set of party names. + * The change ID can be used for matching the intended ledger changes with all their completions. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + commandId: string + /** + * @description Set of parties on whose behalf the command should be executed. + * If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + * to act on behalf of each of the given parties. + * Each element must be a valid PartyIdString (as described in ``value.proto``). + * + * Required: must be non-empty + */ + actAs: string[] + /** + * @description Uniquely identifies the participant user that issued the command. + * Must be a valid UserIdString (as described in ``value.proto``). + * Required unless authentication is used with a user token. + * In that case, the token's user-id will be used for the request's user_id. + * + * Optional + */ + userId?: string + /** + * @description Set of parties on whose behalf (in addition to all parties listed in ``act_as``) contracts can be retrieved. + * This affects Daml operations such as ``fetch``, ``fetchByKey``, ``lookupByKey``, ``exercise``, and ``exerciseByKey``. + * Note: A participant node of a Daml network can host multiple parties. Each contract present on the participant + * node is only visible to a subset of these parties. A command can only use contracts that are visible to at least + * one of the parties in ``act_as`` or ``read_as``. This visibility check is independent from the Daml authorization + * rules for fetch operations. + * If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + * to read contract data on behalf of each of the given parties. + * + * Optional: can be empty + */ + readAs?: string[] + /** + * @description Identifier of the on-ledger workflow that this command is a part of. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + workflowId?: string + deduplicationPeriod?: components['schemas']['DeduplicationPeriod'] + /** + * @description Lower bound for the ledger time assigned to the resulting transaction. + * Note: The ledger time of a transaction is assigned as part of command interpretation. + * Use this property if you expect that command interpretation will take a considerate amount of time, such that by + * the time the resulting transaction is sequenced, its assigned ledger time is not valid anymore. + * Must not be set at the same time as min_ledger_time_rel. + * + * Optional + */ + minLedgerTimeAbs?: string + /** + * @description Same as min_ledger_time_abs, but specified as a duration, starting from the time the command is received by the server. + * Must not be set at the same time as min_ledger_time_abs. + * + * Optional + */ + minLedgerTimeRel?: components['schemas']['Duration'] + /** + * @description A unique identifier to distinguish completions for different submissions with the same change ID. + * Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + * with the same change ID. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * If omitted, the participant or the committer may set a value of their choice. + * + * Optional + */ + submissionId?: string + /** + * @description Additional contracts used to resolve contract & contract key lookups. + * + * Optional: can be empty + */ + disclosedContracts?: components['schemas']['DisclosedContract'][] + /** + * @description Must be a valid synchronizer id + * + * Optional + */ + synchronizerId?: string + /** + * @description The package-id selection preference of the client for resolving + * package names and interface instances in command submission and interpretation + * + * Optional: can be empty + */ + packageIdSelectionPreference?: string[] + /** + * @description Fetches the contract keys into the caches to speed up the command processing. + * Each entry specifies a key and a limit on how many contracts to prefetch for that key. + * The limit does not count disclosed contracts, and should reflect the number of + * additional contracts expected to be resolved during interpretation of the commands. + * If a key appears multiple times, the last entry's limit wins. + * + * Optional: can be empty + */ + prefetchContractKeys?: components['schemas']['PrefetchContractKey'][] + /** + * Format: int32 + * @description The maximum number of passes for the Topology-Aware Package Selection (TAPS). + * Higher values can increase the chance of successful package selection for routing of interpreted transactions. + * If unset, this defaults to the value defined in the participant configuration. + * The provided value must not exceed the limit specified in the participant configuration. + * + * Optional + */ + tapsMaxPasses?: number + } + /** + * JsContractEntry + * @description For a contract there could be multiple contract_entry-s in the entire snapshot. These together define + * the state of one contract in the snapshot. + * A contract_entry is included in the result, if and only if there is at least one stakeholder party of the contract + * that is hosted on the synchronizer at the time of the event and the party satisfies the + * ``TransactionFilter`` in the query. + * + * Required + */ + JsContractEntry: + | { + JsActiveContract: components['schemas']['JsActiveContract'] + } + | { + JsEmpty: components['schemas']['JsEmpty'] + } + | { + JsIncompleteAssigned: components['schemas']['JsIncompleteAssigned'] + } + | { + JsIncompleteUnassigned: components['schemas']['JsIncompleteUnassigned'] + } + /** JsCreated */ + JsCreated: { + /** + * @description The event as it appeared in the context of its original update (i.e. daml transaction or + * reassignment) on this participant node. You can use its offset and node_id to find the + * corresponding update and the node within it. + * + * Required + */ + createdEvent: components['schemas']['CreatedEvent'] + /** + * @description The synchronizer which sequenced the creation of the contract + * + * Required + */ + synchronizerId: string + } + /** JsEmpty */ + JsEmpty: Record + /** JsExecuteSubmissionAndWaitForTransactionRequest */ + JsExecuteSubmissionAndWaitForTransactionRequest: { + /** + * @description the prepared transaction + * Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + * obtained from calling `prepareSubmission`. + * + * Required + */ + preparedTransaction: string + /** + * @description The party(ies) signatures that authorize the prepared submission to be executed by this node. + * Each party can provide one or more signatures.. + * and one or more parties can sign. + * Note that currently, only single party submissions are supported. + * + * Required + */ + partySignatures: components['schemas']['PartySignatures'] + deduplicationPeriod?: components['schemas']['DeduplicationPeriod2'] + /** + * @description A unique identifier to distinguish completions for different submissions with the same change ID. + * Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + * with the same change ID. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + submissionId: string + /** + * @description See [PrepareSubmissionRequest.user_id] + * + * Optional + */ + userId?: string + /** + * @description The hashing scheme version used when building the hash + * + * Required + * @enum {string} + */ + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + /** + * @description If set will influence the chosen ledger effective time but will not result in a submission delay so any override + * should be scheduled to executed within the window allowed by synchronizer. + * + * Optional + */ + minLedgerTime?: components['schemas']['MinLedgerTime'] + /** + * @description If no ``transaction_format`` is provided, a default will be used where ``transaction_shape`` is set to + * TRANSACTION_SHAPE_ACS_DELTA, ``event_format`` is defined with ``filters_by_party`` containing wildcard-template + * filter for all original ``act_as`` and ``read_as`` parties and the ``verbose`` flag is set. + * When the ``transaction_shape`` TRANSACTION_SHAPE_ACS_DELTA shape is used (explicitly or is defaulted to as explained above), + * events will only be returned if the submitting party is hosted on this node. + * + * Optional + */ + transactionFormat?: components['schemas']['TransactionFormat'] + } + /** JsExecuteSubmissionAndWaitForTransactionResponse */ + JsExecuteSubmissionAndWaitForTransactionResponse: { + /** + * @description The transaction that resulted from the submitted command. + * The transaction might contain no events (request conditions result in filtering out all of them). + * + * Required + */ + transaction: components['schemas']['JsTransaction'] + } + /** JsExecuteSubmissionAndWaitRequest */ + JsExecuteSubmissionAndWaitRequest: { + /** + * @description the prepared transaction + * Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + * obtained from calling `prepareSubmission`. + * + * Required + */ + preparedTransaction: string + /** + * @description The party(ies) signatures that authorize the prepared submission to be executed by this node. + * Each party can provide one or more signatures.. + * and one or more parties can sign. + * Note that currently, only single party submissions are supported. + * + * Required + */ + partySignatures: components['schemas']['PartySignatures'] + deduplicationPeriod?: components['schemas']['DeduplicationPeriod2'] + /** + * @description A unique identifier to distinguish completions for different submissions with the same change ID. + * Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + * with the same change ID. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + submissionId: string + /** + * @description See [PrepareSubmissionRequest.user_id] + * + * Optional + */ + userId?: string + /** + * @description The hashing scheme version used when building the hash + * + * Required + * @enum {string} + */ + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + /** + * @description If set will influence the chosen ledger effective time but will not result in a submission delay so any override + * should be scheduled to executed within the window allowed by synchronizer. + * + * Optional + */ + minLedgerTime?: components['schemas']['MinLedgerTime'] + } + /** JsExecuteSubmissionRequest */ + JsExecuteSubmissionRequest: { + /** + * @description the prepared transaction + * Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse` + * obtained from calling `prepareSubmission`. + * + * Required + */ + preparedTransaction: string + /** + * @description The party(ies) signatures that authorize the prepared submission to be executed by this node. + * Each party can provide one or more signatures.. + * and one or more parties can sign. + * Note that currently, only single party submissions are supported. + * + * Required + */ + partySignatures: components['schemas']['PartySignatures'] + deduplicationPeriod?: components['schemas']['DeduplicationPeriod2'] + /** + * @description A unique identifier to distinguish completions for different submissions with the same change ID. + * Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + * with the same change ID. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + submissionId: string + /** + * @description See [PrepareSubmissionRequest.user_id] + * + * Optional + */ + userId?: string + /** + * @description The hashing scheme version used when building the hash + * + * Required + * @enum {string} + */ + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + /** + * @description If set will influence the chosen ledger effective time but will not result in a submission delay so any override + * should be scheduled to executed within the window allowed by synchronizer. + * + * Optional + */ + minLedgerTime?: components['schemas']['MinLedgerTime'] + } + /** JsGetActiveContractsPageResponse */ + JsGetActiveContractsPageResponse: { + /** + * @description The collection of active contracts for this page response. + * + * Required: must be non-empty + */ + activeContracts: components['schemas']['JsGetActiveContractsResponse'][] + /** + * Format: int64 + * @description The active_at_offset which was specified in the request, or the calculated active_at_offset from the actual + * ledger end from at the evaluation of the request. + * + * Required + */ + activeAtOffset: number + /** + * @description If not present this is the last page. If present, this token must be used to get the next page. + * + * Optional: can be empty + */ + nextPageToken?: string + } + /** JsGetActiveContractsResponse */ + JsGetActiveContractsResponse: { + /** + * @description The workflow ID used in command submission which corresponds to the contract_entry. Only set if + * the ``workflow_id`` for the command was set. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + workflowId?: string + contractEntry?: components['schemas']['JsContractEntry'] + /** + * @description Opaque representation of a continuation token which can be used in the request to bypass the already processed part + * of the active contracts snapshot. + * Only populated for the streaming ``GetActiveContracts`` rpc call. + * + * Optional: can be empty + */ + streamContinuationToken?: string + } + /** JsGetEventsByContractIdResponse */ + JsGetEventsByContractIdResponse: { + /** + * @description The create event for the contract with the ``contract_id`` given in the request + * provided it exists and has not yet been pruned. + * + * Optional + */ + created?: components['schemas']['JsCreated'] + /** + * @description The archive event for the contract with the ``contract_id`` given in the request + * provided such an archive event exists and it has not yet been pruned. + * + * Optional + */ + archived?: components['schemas']['JsArchived'] + } + /** + * JsGetTransactionResponse + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + */ + JsGetTransactionResponse: { + /** @description Required */ + transaction: components['schemas']['JsTransaction'] + } + /** + * JsGetTransactionTreeResponse + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + */ + JsGetTransactionTreeResponse: { + /** @description Required */ + transaction: components['schemas']['JsTransactionTree'] + } + /** JsGetUpdateResponse */ + JsGetUpdateResponse: { + update?: components['schemas']['Update'] + } + /** + * JsGetUpdateTreesResponse + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + */ + JsGetUpdateTreesResponse: { + update?: components['schemas']['Update1'] + } + /** JsGetUpdatesPageResponse */ + JsGetUpdatesPageResponse: { + /** + * @description The first max_page_size updates that match the filter in the request. + * In case descending_order was selected, the order of the updates is in reversed offset order. + * + * Optional: can be empty + */ + updates?: components['schemas']['JsGetUpdateResponse'][] + /** + * Format: int64 + * @description Represents the lower bound of this page. + * + * Required + */ + lowestPageOffsetExclusive: number + /** + * Format: int64 + * @description Represents the upper bound of the page. + * + * Required + */ + highestPageOffsetInclusive: number + /** + * @description If the value is not populated, this is the last page. + * If the value is populated, this token can be used to get the next page. + * If the original ``GetFirstUpdatePageRequest`` end_offset_inclusive was not specified and the request uses + * ascending order, then this token will always be populated, so you can use it to "tail" the ledger by + * repeatedly polling with the new page token returned. + * + * Optional: can be empty + */ + nextPageToken?: string + } + /** JsGetUpdatesResponse */ + JsGetUpdatesResponse: { + update?: components['schemas']['Update'] + } + /** JsIncompleteAssigned */ + JsIncompleteAssigned: { + /** @description Required */ + assignedEvent: components['schemas']['JsAssignedEvent'] + } + /** JsIncompleteUnassigned */ + JsIncompleteUnassigned: { + /** + * @description The event as it appeared in the context of its last activation update (i.e. daml transaction or + * reassignment). In particular, the last activation offset, node_id pair is preserved. + * The last activation update is the most recent update created or assigned this contract on synchronizer_id synchronizer before + * the unassigned_event. + * The offset of the CreatedEvent might point to an already pruned update, therefore it cannot necessarily be used + * for lookups. + * + * Required + */ + createdEvent: components['schemas']['CreatedEvent'] + /** @description Required */ + unassignedEvent: components['schemas']['UnassignedEvent'] + } + /** + * JsInterfaceView + * @description View of a create event matched by an interface filter. + */ + JsInterfaceView: { + /** + * @description The interface implemented by the matched event. + * The identifier uses the package-id reference format. + * + * Required + */ + interfaceId: string + /** + * @description Whether the view was successfully computed, and if not, + * the reason for the error. The error is reported using the same rules + * for error codes and messages as the errors returned for API requests. + * + * Required + */ + viewStatus: components['schemas']['JsStatus'] + /** + * @description The value of the interface's view method on this event. + * Set if it was requested in the ``InterfaceFilter`` and it could be + * successfully computed. + * + * Optional + */ + viewValue?: unknown + /** + * @description The package defining the interface implementation used to compute the view. + * Can be different from the package that was used to create the contract itself, + * as the contract arguments can be upgraded or downgraded using smart-contract upgrading + * as part of computing the interface view. + * Populated if the view computation is successful, otherwise empty. + * + * Optional + */ + implementationPackageId?: string + } + /** JsPrepareSubmissionRequest */ + JsPrepareSubmissionRequest: { + /** + * @description Uniquely identifies the participant user that prepares the transaction. + * Must be a valid UserIdString (as described in ``value.proto``). + * Required unless authentication is used with a user token. + * In that case, the token's user-id will be used for the request's user_id. + * + * Optional + */ + userId?: string + /** + * @description Uniquely identifies the command. + * The triple (user_id, act_as, command_id) constitutes the change ID for the intended ledger change, + * where act_as is interpreted as a set of party names. + * The change ID can be used for matching the intended ledger changes with all their completions. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + commandId: string + /** + * @description Individual elements of this atomic command. Must be non-empty. + * Limitation: Only single command transaction are currently supported by the API. + * The field is marked as repeated in preparation for future support of multiple commands. + * + * Required: must be non-empty + */ + commands: components['schemas']['Command'][] + /** @description Optional */ + minLedgerTime?: components['schemas']['MinLedgerTime'] + /** + * @description Set of parties on whose behalf the command should be executed, if submitted. + * If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + * to **read** (not act) on behalf of each of the given parties. This is because this RPC merely prepares a transaction + * and does not execute it. Therefore read authorization is sufficient even for actAs parties. + * Note: This may change, and more specific authorization scope may be introduced in the future. + * Each element must be a valid PartyIdString (as described in ``value.proto``). + * + * Required: must be non-empty + */ + actAs: string[] + /** + * @description Set of parties on whose behalf (in addition to all parties listed in ``act_as``) contracts can be retrieved. + * This affects Daml operations such as ``fetch``, ``fetchByKey``, ``lookupByKey``, ``exercise``, and ``exerciseByKey``. + * Note: A command can only use contracts that are visible to at least + * one of the parties in ``act_as`` or ``read_as``. This visibility check is independent from the Daml authorization + * rules for fetch operations. + * If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + * to read contract data on behalf of each of the given parties. + * + * Optional: can be empty + */ + readAs?: string[] + /** + * @description Additional contracts used to resolve contract & contract key lookups. + * + * Optional: can be empty + */ + disclosedContracts?: components['schemas']['DisclosedContract'][] + /** + * @description Must be a valid synchronizer id + * If not set, a suitable synchronizer that this node is connected to will be chosen + * + * Optional + */ + synchronizerId?: string + /** + * @description The package-id selection preference of the client for resolving + * package names and interface instances in command submission and interpretation + * + * Optional: can be empty + */ + packageIdSelectionPreference?: string[] + /** + * @description When true, the response will contain additional details on how the transaction was encoded and hashed + * This can be useful for troubleshooting of hash mismatches. Should only be used for debugging. + * Defaults to false + * + * Optional + */ + verboseHashing?: boolean + /** + * @description Fetches the contract keys into the caches to speed up the command processing. + * Should only contain contract keys that are expected to be resolved during interpretation of the commands. + * Keys of disclosed contracts do not need prefetching. + * + * Optional: can be empty + */ + prefetchContractKeys?: components['schemas']['PrefetchContractKey'][] + /** + * @description Maximum timestamp at which the transaction can be recorded onto the ledger via the synchronizer specified in the `PrepareSubmissionResponse`. + * If submitted after it will be rejected even if otherwise valid, in which case it needs to be prepared and signed again + * with a new valid max_record_time. + * Use this to limit the time-to-life of a prepared transaction, + * which is useful to know when it can definitely not be accepted + * anymore and resorting to preparing another transaction for the same + * intent is safe again. + * + * Optional + */ + maxRecordTime?: string + /** + * @description Hints to improve the accuracy of traffic cost estimation. + * The estimation logic assumes that this node will be used for the execution of the transaction + * If another node is used instead, the estimation may be less precise. + * Request amplification is not accounted for in the estimation: each amplified request will + * result in the cost of the confirmation request to be charged additionally. + * + * Traffic cost estimation is enabled by default if this field is not set + * To turn off cost estimation, set the CostEstimationHints#disabled field to true + * + * Optional + */ + estimateTrafficCost?: components['schemas']['CostEstimationHints'] + /** + * Format: int32 + * @description The maximum number of passes for the Topology-Aware Package Selection (TAPS). + * Higher values can increase the chance of successful package selection for routing of interpreted transactions. + * If unset, this defaults to the value defined in the participant configuration. + * The provided value must not exceed the limit specified in the participant configuration. + * + * Optional + */ + tapsMaxPasses?: number + /** + * @description The hashing scheme version to be used when building the hash. + * Defaults to HASHING_SCHEME_VERSION_V2. + * + * Optional + * @enum {string} + */ + hashingSchemeVersion?: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + } + /** + * JsPrepareSubmissionResponse + * @description [docs-entry-end: HashingSchemeVersion] + */ + JsPrepareSubmissionResponse: { + /** + * @description The interpreted transaction, it represents the ledger changes necessary to execute the commands specified in the request. + * Clients MUST display the content of the transaction to the user for them to validate before signing the hash if the preparing participant is not trusted. + * + * Required + */ + preparedTransaction: string + /** + * @description Hash of the transaction, this is what needs to be signed by the party to authorize the transaction. + * Only provided for convenience, clients MUST recompute the hash from the raw transaction if the preparing participant is not trusted. + * May be removed in future versions + * + * Required: must be non-empty + */ + preparedTransactionHash: string + /** + * @description The hashing scheme version used when building the hash + * + * Required + * @enum {string} + */ + hashingSchemeVersion: + | 'HASHING_SCHEME_VERSION_UNSPECIFIED' + | 'HASHING_SCHEME_VERSION_V2' + | 'HASHING_SCHEME_VERSION_V3' + /** + * @description Optional additional details on how the transaction was encoded and hashed. Only set if verbose_hashing = true in the request + * Note that there are no guarantees on the stability of the format or content of this field. + * Its content should NOT be parsed and should only be used for troubleshooting purposes. + * + * Optional + */ + hashingDetails?: string + /** + * @description Traffic cost estimation of the prepared transaction + * + * Optional + */ + costEstimation?: components['schemas']['CostEstimation'] + } + /** + * JsReassignment + * @description Complete view of an on-ledger reassignment. + */ + JsReassignment: { + /** + * @description Assigned by the server. Useful for correlating logs. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + updateId: string + /** + * @description The ID of the command which resulted in this reassignment. Missing for everyone except the submitting party on the submitting participant. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + commandId?: string + /** + * @description The workflow ID used in reassignment command submission. Only set if the ``workflow_id`` for the command was set. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + workflowId?: string + /** + * Format: int64 + * @description The participant's offset. The details of this field are described in ``community/ledger-api/README.md``. + * Must be a valid absolute offset (positive integer). + * + * Required + */ + offset: number + /** + * @description The collection of reassignment events. + * + * Required: must be non-empty + */ + events: components['schemas']['JsReassignmentEvent'][] + /** + * @description Ledger API trace context + * + * The trace context transported in this message corresponds to the trace context supplied + * by the client application in a HTTP2 header of the original command submission. + * We typically use a header to transfer this type of information. Here we use message + * body, because it is used in gRPC streams which do not support per message headers. + * This field will be populated with the trace context contained in the original submission. + * If that was not provided, a unique ledger-api-server generated trace context will be used + * instead. + * + * Optional + */ + traceContext?: components['schemas']['TraceContext'] + /** + * @description The time at which the reassignment was recorded. The record time refers to the source/target + * synchronizer for an unassign/assign event respectively. + * + * Required + */ + recordTime: string + /** + * @description A valid synchronizer id. + * Identifies the synchronizer that synchronized this Reassignment. + * + * Required + */ + synchronizerId: string + /** + * Format: int64 + * @description The traffic cost that this participant node paid for the corresponding (un)assignment request. + * + * Not set for transactions that were + * - initiated by another participant + * - initiated offline via the repair service + * - processed before the participant started serving traffic cost on the Ledger API + * - returned as part of a query filtering for a non submitting party + * + * Optional + */ + paidTrafficCost?: number + } + /** JsReassignmentEvent */ + JsReassignmentEvent: + | { + JsAssignmentEvent: components['schemas']['JsAssignmentEvent'] + } + | { + JsUnassignedEvent: components['schemas']['JsUnassignedEvent'] + } + /** JsStatus */ + JsStatus: { + /** Format: int32 */ + code: number + message: string + details?: components['schemas']['ProtoAny'][] + } + /** JsSubmitAndWaitForReassignmentResponse */ + JsSubmitAndWaitForReassignmentResponse: { + /** + * @description The reassignment that resulted from the submitted reassignment command. + * The reassignment might contain no events (request conditions result in filtering out all of them). + * + * Required + */ + reassignment: components['schemas']['JsReassignment'] + } + /** + * JsSubmitAndWaitForTransactionRequest + * @description These commands are executed as a single atomic transaction. + */ + JsSubmitAndWaitForTransactionRequest: { + /** + * @description The commands to be submitted. + * + * Required + */ + commands: components['schemas']['JsCommands'] + /** + * @description If no ``transaction_format`` is provided, a default will be used where ``transaction_shape`` is set to + * TRANSACTION_SHAPE_ACS_DELTA, ``event_format`` is defined with ``filters_by_party`` containing wildcard-template + * filter for all original ``act_as`` and ``read_as`` parties and the ``verbose`` flag is set. + * + * Optional + */ + transactionFormat?: components['schemas']['TransactionFormat'] + } + /** JsSubmitAndWaitForTransactionResponse */ + JsSubmitAndWaitForTransactionResponse: { + /** + * @description The transaction that resulted from the submitted command. + * The transaction might contain no events (request conditions result in filtering out all of them). + * + * Required + */ + transaction: components['schemas']['JsTransaction'] + } + /** + * JsSubmitAndWaitForTransactionTreeResponse + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + */ + JsSubmitAndWaitForTransactionTreeResponse: { + transactionTree?: components['schemas']['JsTransactionTree'] + } + /** JsTopologyTransaction */ + JsTopologyTransaction: { + /** + * @description Assigned by the server. Useful for correlating logs. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + updateId: string + /** + * Format: int64 + * @description The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + * It is a valid absolute offset (positive integer). + * + * Required + */ + offset: number + /** + * @description A valid synchronizer id. + * Identifies the synchronizer that synchronized the topology transaction. + * + * Required + */ + synchronizerId: string + /** + * @description The time at which the changes in the topology transaction become effective. There is a small delay between a + * topology transaction being sequenced and the changes it contains becoming effective. Topology transactions appear + * in order relative to a synchronizer based on their effective time rather than their sequencing time. + * + * Required + */ + recordTime: string + /** + * @description A non-empty list of topology events. + * + * Required: must be non-empty + */ + events: components['schemas']['TopologyEvent'][] + /** + * @description Ledger API trace context + * + * The trace context transported in this message corresponds to the trace context supplied + * by the client application in a HTTP2 header of the original command submission. + * We typically use a header to transfer this type of information. Here we use message + * body, because it is used in gRPC streams which do not support per message headers. + * This field will be populated with the trace context contained in the original submission. + * If that was not provided, a unique ledger-api-server generated trace context will be used + * instead. + * + * Optional + */ + traceContext?: components['schemas']['TraceContext'] + } + /** + * JsTransaction + * @description Filtered view of an on-ledger transaction's create and archive events. + */ + JsTransaction: { + /** + * @description Assigned by the server. Useful for correlating logs. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + updateId: string + /** + * @description The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + commandId?: string + /** + * @description The workflow ID used in command submission. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + workflowId?: string + /** + * @description Ledger effective time. + * + * Required + */ + effectiveAt: string + /** + * @description The collection of events. + * Contains: + * + * - ``CreatedEvent`` or ``ArchivedEvent`` in case of ACS_DELTA transaction shape + * - ``CreatedEvent`` or ``ExercisedEvent`` in case of LEDGER_EFFECTS transaction shape + * + * Required: must be non-empty + */ + events: components['schemas']['Event'][] + /** + * Format: int64 + * @description The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + * It is a valid absolute offset (positive integer). + * + * Required + */ + offset: number + /** + * @description A valid synchronizer id. + * Identifies the synchronizer that synchronized the transaction. + * + * Required + */ + synchronizerId: string + /** + * @description Ledger API trace context + * + * The trace context transported in this message corresponds to the trace context supplied + * by the client application in a HTTP2 header of the original command submission. + * We typically use a header to transfer this type of information. Here we use message + * body, because it is used in gRPC streams which do not support per message headers. + * This field will be populated with the trace context contained in the original submission. + * If that was not provided, a unique ledger-api-server generated trace context will be used + * instead. + * + * Optional + */ + traceContext?: components['schemas']['TraceContext'] + /** + * @description The time at which the transaction was recorded. The record time refers to the synchronizer + * which synchronized the transaction. + * + * Required + */ + recordTime: string + /** + * @description For transaction externally signed, contains the external transaction hash + * signed by the external party. Can be used to correlate an external submission with a committed transaction. + * + * Optional: can be empty + */ + externalTransactionHash?: string + /** + * Format: int64 + * @description The traffic cost that this participant node paid for the confirmation + * request for this transaction. + * + * Not set for transactions that were + * - initiated by another participant + * - initiated offline via the repair service + * - processed before the participant started serving traffic cost on the Ledger API + * - returned as part of a query filtering for a non submitting party + * + * Optional + */ + paidTrafficCost?: number + } + /** + * JsTransactionTree + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * Complete view of an on-ledger transaction. + */ + JsTransactionTree: { + /** + * @description Assigned by the server. Useful for correlating logs. + * Must be a valid LedgerString (as described in ``value.proto``). + * Required + */ + updateId: string + /** + * @description The ID of the command which resulted in this transaction. Missing for everyone except the submitting party. + * Must be a valid LedgerString (as described in ``value.proto``). + * Optional + */ + commandId?: string + /** + * @description The workflow ID used in command submission. Only set if the ``workflow_id`` for the command was set. + * Must be a valid LedgerString (as described in ``value.proto``). + * Optional + */ + workflowId?: string + /** + * @description Ledger effective time. + * Required + */ + effectiveAt: string + /** + * Format: int64 + * @description The absolute offset. The details of this field are described in ``community/ledger-api/README.md``. + * Required, it is a valid absolute offset (positive integer). + */ + offset: number + /** + * @description Changes to the ledger that were caused by this transaction. Nodes of the transaction tree. + * Each key must be a valid node ID (non-negative integer). + * Required + */ + eventsById: components['schemas']['Map_Int_TreeEvent'] + /** + * @description A valid synchronizer id. + * Identifies the synchronizer that synchronized the transaction. + * Required + */ + synchronizerId: string + /** + * @description Optional; ledger API trace context + * + * The trace context transported in this message corresponds to the trace context supplied + * by the client application in a HTTP2 header of the original command submission. + * We typically use a header to transfer this type of information. Here we use message + * body, because it is used in gRPC streams which do not support per message headers. + * This field will be populated with the trace context contained in the original submission. + * If that was not provided, a unique ledger-api-server generated trace context will be used + * instead. + */ + traceContext?: components['schemas']['TraceContext'] + /** + * @description The time at which the transaction was recorded. The record time refers to the synchronizer + * which synchronized the transaction. + * Required + */ + recordTime: string + } + /** + * JsUnassignedEvent + * @description Records that a contract has been unassigned, and it becomes unusable on the source synchronizer + */ + JsUnassignedEvent: { + value: components['schemas']['UnassignedEvent'] + } + /** + * Kind + * @description Required + */ + Kind: + | { + CanActAs: components['schemas']['CanActAs'] + } + | { + CanExecuteAs: components['schemas']['CanExecuteAs'] + } + | { + CanExecuteAsAnyParty: components['schemas']['CanExecuteAsAnyParty'] + } + | { + CanReadAs: components['schemas']['CanReadAs'] + } + | { + CanReadAsAnyParty: components['schemas']['CanReadAsAnyParty'] + } + | { + Empty: components['schemas']['Empty8'] + } + | { + IdentityProviderAdmin: components['schemas']['IdentityProviderAdmin'] + } + | { + ParticipantAdmin: components['schemas']['ParticipantAdmin'] + } + /** ListIdentityProviderConfigsResponse */ + ListIdentityProviderConfigsResponse: { + /** + * @description The list of identity provider configs + * + * Required: must be non-empty + */ + identityProviderConfigs: components['schemas']['IdentityProviderConfig'][] + } + /** ListKnownPartiesResponse */ + ListKnownPartiesResponse: { + /** + * @description The details of all Daml parties known by the participant. + * + * Required: must be non-empty + */ + partyDetails: components['schemas']['PartyDetails'][] + /** + * @description Pagination token to retrieve the next page. + * Empty, if there are no further results. + * + * Optional + */ + nextPageToken?: string + } + /** ListPackagesResponse */ + ListPackagesResponse: { + /** + * @description The IDs of all Daml-LF packages supported by the server. + * Each element must be a valid PackageIdString (as described in ``value.proto``). + * + * Required: must be non-empty + */ + packageIds: string[] + } + /** ListUserRightsResponse */ + ListUserRightsResponse: { + /** + * @description All rights of the user. + * + * Optional: can be empty + */ + rights?: components['schemas']['Right'][] + } + /** ListUsersResponse */ + ListUsersResponse: { + /** + * @description A subset of users of the participant node that fit into this page. + * Can be empty if no more users + * + * Optional: can be empty + */ + users?: components['schemas']['User'][] + /** + * @description Pagination token to retrieve the next page. + * Empty, if there are no further results. + * + * Optional + */ + nextPageToken?: string + } + /** ListVettedPackagesRequest */ + ListVettedPackagesRequest: { + /** + * @description The package metadata filter the returned vetted packages set must satisfy. + * + * Optional + */ + packageMetadataFilter?: components['schemas']['PackageMetadataFilter'] + /** + * @description The topology filter the returned vetted packages set must satisfy. + * + * Optional + */ + topologyStateFilter?: components['schemas']['TopologyStateFilter'] + /** + * @description Pagination token to determine the specific page to fetch. Using the token + * guarantees that ``VettedPackages`` on a subsequent page are all greater + * (``VettedPackages`` are sorted by synchronizer ID then participant ID) than + * the last ``VettedPackages`` on a previous page. + * + * The server does not store intermediate results between calls chained by a + * series of page tokens. As a consequence, if new vetted packages are being + * added and a page is requested twice using the same token, more packages can + * be returned on the second call. + * + * Leave unspecified (i.e. as empty string) to fetch the first page. + * + * Optional + */ + pageToken?: string + /** + * Format: int32 + * @description Maximum number of ``VettedPackages`` results to return in a single page. + * + * If the page_size is unspecified (i.e. left as 0), the server will decide + * the number of results to be returned. + * + * If the page_size exceeds the maximum supported by the server, an + * error will be returned. + * + * To obtain the server's maximum consult the PackageService descriptor + * available in the VersionService. + * + * Optional + */ + pageSize?: number + } + /** ListVettedPackagesResponse */ + ListVettedPackagesResponse: { + /** + * @description All ``VettedPackages`` that contain at least one ``VettedPackage`` matching + * both a ``PackageMetadataFilter`` and a ``TopologyStateFilter``. + * Sorted by synchronizer_id then participant_id. + * + * Optional: can be empty + */ + vettedPackages?: components['schemas']['VettedPackages'][] + /** + * @description Pagination token to retrieve the next page. + * Empty string if there are no further results. + * + * Optional + */ + nextPageToken?: string + } + /** Map_Filters */ + Map_Filters: { + [key: string]: components['schemas']['Filters'] + } + /** Map_Int_Field */ + Map_Int_Field: { + [key: string]: components['schemas']['Field'] + } + /** Map_Int_TreeEvent */ + Map_Int_TreeEvent: { + [key: string]: components['schemas']['TreeEvent'] + } + /** Map_String */ + Map_String: { + [key: string]: string + } + /** MinLedgerTime */ + MinLedgerTime: { + time?: components['schemas']['Time'] + } + /** MinLedgerTimeAbs */ + MinLedgerTimeAbs: { + value: string + } + /** MinLedgerTimeRel */ + MinLedgerTimeRel: { + value: components['schemas']['Duration'] + } + /** NoPrior */ + NoPrior: Record + /** + * ObjectMeta + * @description Represents metadata corresponding to a participant resource (e.g. a participant user or participant local information about a party). + * + * Based on ``ObjectMeta`` meta used in Kubernetes API. + * See https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/v1/generated.proto#L640 + */ + ObjectMeta: { + /** + * @description An opaque, non-empty value, populated by a participant server which represents the internal version of the resource + * this ``ObjectMeta`` message is attached to. The participant server will change it to a unique value each time the corresponding resource is updated. + * You must not rely on the format of resource version. The participant server might change it without notice. + * You can obtain the newest resource version value by issuing a read request. + * You may use it for concurrent change detection by passing it back unmodified in an update request. + * The participant server will then compare the passed value with the value maintained by the system to determine + * if any other updates took place since you had read the resource version. + * Upon a successful update you are guaranteed that no other update took place during your read-modify-write sequence. + * However, if another update took place during your read-modify-write sequence then your update will fail with an appropriate error. + * Concurrent change control is optional. It will be applied only if you include a resource version in an update request. + * When creating a new instance of a resource you must leave the resource version empty. + * Its value will be populated by the participant server upon successful resource creation. + * + * Optional + */ + resourceVersion?: string + /** + * @description A set of modifiable key-value pairs that can be used to represent arbitrary, client-specific metadata. + * Constraints: + * + * 1. The total size over all keys and values cannot exceed 256kb in UTF-8 encoding. + * 2. Keys are composed of an optional prefix segment and a required name segment such that: + * + * - key prefix, when present, must be a valid DNS subdomain with at most 253 characters, followed by a '/' (forward slash) character, + * - name segment must have at most 63 characters that are either alphanumeric ([a-z0-9A-Z]), or a '.' (dot), '-' (dash) or '_' (underscore); + * and it must start and end with an alphanumeric character. + * + * 3. Values can be any non-empty strings. + * + * Keys with empty prefix are reserved for end-users. + * Properties set by external tools or internally by the participant server must use non-empty key prefixes. + * Duplicate keys are disallowed by the semantics of the protobuf3 maps. + * See: https://developers.google.com/protocol-buffers/docs/proto3#maps + * Annotations may be a part of a modifiable resource. + * Use the resource's update RPC to update its annotations. + * In order to add a new annotation or update an existing one using an update RPC, provide the desired annotation in the update request. + * In order to remove an annotation using an update RPC, provide the target annotation's key but set its value to the empty string in the update request. + * Modifiable + * + * Optional: can be empty + */ + annotations?: components['schemas']['Map_String'] + } + /** + * OffsetCheckpoint + * @description OffsetCheckpoints may be used to: + * + * - detect time out of commands. + * - provide an offset which can be used to restart consumption. + */ + OffsetCheckpoint: { + value: components['schemas']['OffsetCheckpoint1'] + } + /** + * OffsetCheckpoint + * @description OffsetCheckpoints may be used to: + * + * - detect time out of commands. + * - provide an offset which can be used to restart consumption. + */ + OffsetCheckpoint1: { + /** + * Format: int64 + * @description The participant's offset, the details of the offset field are described in ``community/ledger-api/README.md``. + * Must be a valid absolute offset (positive integer). + * + * Required + */ + offset: number + /** + * @description The times associated with each synchronizer at this offset. + * + * Optional: can be empty + */ + synchronizerTimes?: components['schemas']['SynchronizerTime'][] + } + /** + * OffsetCheckpoint + * @description OffsetCheckpoints may be used to: + * + * - detect time out of commands. + * - provide an offset which can be used to restart consumption. + */ + OffsetCheckpoint2: { + value: components['schemas']['OffsetCheckpoint1'] + } + /** + * OffsetCheckpoint + * @description OffsetCheckpoints may be used to: + * + * - detect time out of commands. + * - provide an offset which can be used to restart consumption. + */ + OffsetCheckpoint3: { + value: components['schemas']['OffsetCheckpoint1'] + } + /** OffsetCheckpointFeature */ + OffsetCheckpointFeature: { + /** + * @description The maximum delay to emmit a new OffsetCheckpoint if it exists + * + * Required + */ + maxOffsetCheckpointEmissionDelay: components['schemas']['Duration'] + } + /** + * Operation + * @description Required + */ + Operation: + | { + Empty: components['schemas']['Empty5'] + } + | { + Unvet: components['schemas']['Unvet'] + } + | { + Vet: components['schemas']['Vet'] + } + /** PackageFeature */ + PackageFeature: { + /** + * Format: int32 + * @description The maximum number of vetted packages the server can return in a single + * response (page) when listing them. + * + * Required + */ + maxVettedPackagesPageSize: number + } + /** + * PackageMetadataFilter + * @description Filter the VettedPackages by package metadata. + * + * A PackageMetadataFilter without package_ids and without package_name_prefixes + * matches any vetted package. + * + * Non-empty fields specify candidate values of which at least one must match. + * If both fields are set, then a candidate is returned if it matches one of the fields. + */ + PackageMetadataFilter: { + /** + * @description If this list is non-empty, any vetted package with a package ID in this + * list will match the filter. + * + * Optional: can be empty + */ + packageIds?: string[] + /** + * @description If this list is non-empty, any vetted package with a name matching at least + * one prefix in this list will match the filter. + * + * Optional: can be empty + */ + packageNamePrefixes?: string[] + } + /** PackagePreference */ + PackagePreference: { + /** + * @description The package reference of the preferred package. + * + * Required + */ + packageReference: components['schemas']['PackageReference'] + /** + * @description The synchronizer for which the preferred package was computed. + * If the synchronizer_id was specified in the request, then it matches the request synchronizer_id. + * + * Required + */ + synchronizerId: string + } + /** PackageReference */ + PackageReference: { + /** @description Required */ + packageId: string + /** @description Required */ + packageName: string + /** @description Required */ + packageVersion: string + } + /** + * PackageVettingRequirement + * @description Defines a package-name for which the commonly vetted package with the highest version must be found. + */ + PackageVettingRequirement: { + /** + * @description The parties whose participants' vetting state should be considered when resolving the preferred package. + * + * Required: must be non-empty + */ + parties: string[] + /** + * @description The package-name for which the preferred package should be resolved. + * + * Required + */ + packageName: string + } + /** + * ParticipantAdmin + * @description The right to administer the participant node. + */ + ParticipantAdmin: { + value: components['schemas']['ParticipantAdmin1'] + } + /** + * ParticipantAdmin + * @description The right to administer the participant node. + */ + ParticipantAdmin1: Record + /** ParticipantAuthorizationAdded */ + ParticipantAuthorizationAdded: { + value: components['schemas']['ParticipantAuthorizationAdded1'] + } + /** ParticipantAuthorizationAdded */ + ParticipantAuthorizationAdded1: { + /** @description Required */ + partyId: string + /** @description Required */ + participantId: string + /** + * @description Required + * @enum {string} + */ + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + /** ParticipantAuthorizationChanged */ + ParticipantAuthorizationChanged: { + value: components['schemas']['ParticipantAuthorizationChanged1'] + } + /** ParticipantAuthorizationChanged */ + ParticipantAuthorizationChanged1: { + /** @description Required */ + partyId: string + /** @description Required */ + participantId: string + /** + * @description Required + * @enum {string} + */ + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + /** ParticipantAuthorizationOnboarding */ + ParticipantAuthorizationOnboarding: { + value: components['schemas']['ParticipantAuthorizationOnboarding1'] + } + /** ParticipantAuthorizationOnboarding */ + ParticipantAuthorizationOnboarding1: { + /** @description Required */ + partyId: string + /** @description Required */ + participantId: string + /** + * @description Required + * @enum {string} + */ + participantPermission: + | 'PARTICIPANT_PERMISSION_UNSPECIFIED' + | 'PARTICIPANT_PERMISSION_SUBMISSION' + | 'PARTICIPANT_PERMISSION_CONFIRMATION' + | 'PARTICIPANT_PERMISSION_OBSERVATION' + } + /** ParticipantAuthorizationRevoked */ + ParticipantAuthorizationRevoked: { + value: components['schemas']['ParticipantAuthorizationRevoked1'] + } + /** ParticipantAuthorizationRevoked */ + ParticipantAuthorizationRevoked1: { + /** @description Required */ + partyId: string + /** @description Required */ + participantId: string + } + /** + * ParticipantAuthorizationTopologyFormat + * @description A format specifying which participant authorization topology transactions to include and how to render them. + */ + ParticipantAuthorizationTopologyFormat: { + /** + * @description List of parties for which the topology transactions should be sent. + * Empty means: for all parties. + * + * Optional: can be empty + */ + parties?: string[] + } + /** PartyDetails */ + PartyDetails: { + /** + * @description The stable unique identifier of a Daml party. + * Must be a valid PartyIdString (as described in ``value.proto``). + * + * Required + */ + party: string + /** + * @description true if party is hosted by the participant and the party shares the same identity provider as the user issuing the request. + * + * Optional + */ + isLocal?: boolean + /** + * @description Participant-local metadata of this party. + * Modifiable + * + * Optional + */ + localMetadata?: components['schemas']['ObjectMeta'] + /** + * @description The id of the ``Identity Provider`` + * Optional, if not set, there could be 3 options: + * + * 1. the party is managed by the default identity provider. + * 2. party is not hosted by the participant. + * 3. party is hosted by the participant, but is outside of the user's identity provider. + * + * Optional + */ + identityProviderId?: string + } + /** PartyManagementFeature */ + PartyManagementFeature: { + /** + * Format: int32 + * @description The maximum number of parties the server can return in a single response (page). + * + * Required + */ + maxPartiesPageSize: number + } + /** + * PartySignatures + * @description Additional signatures provided by the submitting parties + */ + PartySignatures: { + /** + * @description Additional signatures provided by all individual parties + * + * Required: must be non-empty + */ + signatures: components['schemas']['SinglePartySignatures'][] + } + /** + * PrefetchContractKey + * @description Preload contracts + */ + PrefetchContractKey: { + /** + * @description The template of contract the client wants to prefetch. + * Both package-name and package-id reference identifier formats for the template-id are supported. + * Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + * + * Required + */ + templateId: string + /** + * @description The key of the contract the client wants to prefetch. + * + * Required + */ + contractKey: unknown + /** + * Format: int32 + * @description The number of contracts to prefetch for this key, if available. + * This is in addition to disclosed contracts. + * - for backward compatibility reason, absence is interpreted as 1 + * - 0 is forbidden + * - capped at 2^31 - 1. The system may impose further limits. + * + * Optional + */ + limit?: number + } + /** Prior */ + Prior: { + /** Format: int32 */ + value: number + } + /** + * PriorTopologySerial + * @description The serial of last ``VettedPackages`` topology transaction on a given + * participant and synchronizer. + */ + PriorTopologySerial: { + serial?: components['schemas']['Serial'] + } + /** ProtoAny */ + ProtoAny: { + typeUrl: string + value: string + unknownFields: components['schemas']['UnknownFieldSet'] + valueDecoded?: string + } + /** + * Reassignment + * @description Complete view of an on-ledger reassignment. + */ + Reassignment: { + value: components['schemas']['JsReassignment'] + } + /** + * Reassignment + * @description Complete view of an on-ledger reassignment. + */ + Reassignment1: { + value: components['schemas']['JsReassignment'] + } + /** ReassignmentCommand */ + ReassignmentCommand: { + command?: components['schemas']['Command1'] + } + /** ReassignmentCommands */ + ReassignmentCommands: { + /** + * @description Identifier of the on-ledger workflow that this command is a part of. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Optional + */ + workflowId?: string + /** + * @description Uniquely identifies the participant user that issued the command. + * Must be a valid UserIdString (as described in ``value.proto``). + * Required unless authentication is used with a user token. + * In that case, the token's user-id will be used for the request's user_id. + * + * Optional + */ + userId?: string + /** + * @description Uniquely identifies the command. + * The triple (user_id, submitter, command_id) constitutes the change ID for the intended ledger change. + * The change ID can be used for matching the intended ledger changes with all their completions. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + commandId: string + /** + * @description Party on whose behalf the command should be executed. + * If ledger API authorization is enabled, then the authorization metadata must authorize the sender of the request + * to act on behalf of the given party. + * Must be a valid PartyIdString (as described in ``value.proto``). + * + * Required + */ + submitter: string + /** + * @description A unique identifier to distinguish completions for different submissions with the same change ID. + * Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission + * with the same change ID. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * If omitted, the participant or the committer may set a value of their choice. + * + * Optional + */ + submissionId?: string + /** + * @description Individual elements of this reassignment. Must be non-empty. + * + * Required: must be non-empty + */ + commands: components['schemas']['ReassignmentCommand'][] + } + /** + * RevokeUserRightsRequest + * @description Remove the rights from the set of rights granted to the user. + * + * Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(identity_provider_id)`` + */ + RevokeUserRightsRequest: { + /** + * @description The user from whom to revoke rights. + * + * Required + */ + userId: string + /** + * @description The rights to revoke. + * + * Optional: can be empty + */ + rights?: components['schemas']['Right'][] + /** + * @description The id of the ``Identity Provider`` + * If not set, assume the user is managed by the default identity provider. + * + * Optional + */ + identityProviderId?: string + } + /** RevokeUserRightsResponse */ + RevokeUserRightsResponse: { + /** + * @description The rights that were actually revoked by the request. + * + * Optional: can be empty + */ + newlyRevokedRights?: components['schemas']['Right'][] + } + /** + * Right + * @description A right granted to a user. + */ + Right: { + kind?: components['schemas']['Kind'] + } + /** + * Serial + * @description Optional + */ + Serial: + | { + Empty: components['schemas']['Empty6'] + } + | { + NoPrior: components['schemas']['NoPrior'] + } + | { + Prior: components['schemas']['Prior'] + } + /** Signature */ + Signature: { + /** @description Required */ + format: string + /** @description Required: must be non-empty */ + signature: string + /** + * @description The fingerprint/id of the keypair used to create this signature and needed to verify. + * + * Required + */ + signedBy: string + /** + * @description The signing algorithm specification used to produce this signature + * + * Required + */ + signingAlgorithmSpec: string + } + /** SignedTransaction */ + SignedTransaction: { + /** + * @description The serialized TopologyTransaction + * + * Required: must be non-empty + */ + transaction: string + /** + * @description Additional signatures for this transaction specifically + * Use for transactions that require additional signatures beyond the namespace key signatures + * e.g: PartyToParticipant must be signed by all registered keys + * + * Optional: can be empty + */ + signatures?: components['schemas']['Signature'][] + } + /** SigningPublicKey */ + SigningPublicKey: { + /** + * @description The serialization format of the public key + * + * Required + * @example CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO + */ + format: string + /** + * @description Serialized public key in the format specified above + * + * Required: must be non-empty + */ + keyData: string + /** + * @description The key specification + * + * Required + * @example SIGNING_KEY_SPEC_EC_CURVE25519 + */ + keySpec: string + } + /** + * SinglePartySignatures + * @description Signatures provided by a single party + */ + SinglePartySignatures: { + /** + * @description Submitting party + * + * Required + */ + party: string + /** + * @description Signatures + * + * Required: must be non-empty + */ + signatures: components['schemas']['Signature'][] + } + /** + * SubmitAndWaitForReassignmentRequest + * @description This reassignment is executed as a single atomic update. + */ + SubmitAndWaitForReassignmentRequest: { + /** + * @description The reassignment commands to be submitted. + * + * Required + */ + reassignmentCommands: components['schemas']['ReassignmentCommands'] + /** + * @description If no event_format provided, the result will contain no events. + * The events in the result, will take shape TRANSACTION_SHAPE_ACS_DELTA. + * + * Optional + */ + eventFormat?: components['schemas']['EventFormat'] + } + /** SubmitAndWaitResponse */ + SubmitAndWaitResponse: { + /** + * @description The id of the transaction that resulted from the submitted command. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + updateId: string + /** + * Format: int64 + * @description The details of the offset field are described in ``community/ledger-api/README.md``. + * + * Required + */ + completionOffset: number + } + /** SubmitReassignmentRequest */ + SubmitReassignmentRequest: { + /** + * @description The reassignment command to be submitted. + * + * Required + */ + reassignmentCommands: components['schemas']['ReassignmentCommands'] + } + /** SubmitReassignmentResponse */ + SubmitReassignmentResponse: Record + /** SubmitResponse */ + SubmitResponse: Record + /** SynchronizerTime */ + SynchronizerTime: { + /** + * @description The id of the synchronizer. + * + * Required + */ + synchronizerId: string + /** + * @description All commands with a maximum record time below this value MUST be considered lost if their completion has not arrived before this checkpoint. + * + * Required + */ + recordTime: string + } + /** + * TemplateFilter + * @description This filter matches contracts of a specific template. + */ + TemplateFilter: { + value: components['schemas']['TemplateFilter1'] + } + /** + * TemplateFilter + * @description This filter matches contracts of a specific template. + */ + TemplateFilter1: { + /** + * @description A template for which the payload should be included in the response. + * The ``template_id`` needs to be valid: corresponding template should be defined in + * one of the available packages at the time of the query. + * Both package-name and package-id reference formats for the identifier are supported. + * Note: The package-id reference identifier format is deprecated. We plan to end support for this format in version 3.4. + * + * Required + */ + templateId: string + /** + * @description Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + * Use this to access the contract event payload in your API client + * for submitting it as a disclosed contract with future commands. + * + * Optional + */ + includeCreatedEventBlob?: boolean + } + /** + * Time + * @description Required + */ + Time: + | { + Empty: components['schemas']['Empty9'] + } + | { + MinLedgerTimeAbs: components['schemas']['MinLedgerTimeAbs'] + } + | { + MinLedgerTimeRel: components['schemas']['MinLedgerTimeRel'] + } + /** TopologyEvent */ + TopologyEvent: { + event?: components['schemas']['TopologyEventEvent'] + } + /** TopologyEventEvent */ + TopologyEventEvent: + | { + Empty: components['schemas']['Empty7'] + } + | { + ParticipantAuthorizationAdded: components['schemas']['ParticipantAuthorizationAdded'] + } + | { + ParticipantAuthorizationChanged: components['schemas']['ParticipantAuthorizationChanged'] + } + | { + ParticipantAuthorizationOnboarding: components['schemas']['ParticipantAuthorizationOnboarding'] + } + | { + ParticipantAuthorizationRevoked: components['schemas']['ParticipantAuthorizationRevoked'] + } + /** + * TopologyFormat + * @description A format specifying which topology transactions to include and how to render them. + */ + TopologyFormat: { + /** + * @description Include participant authorization topology events in streams. + * If unset, no participant authorization topology events are emitted in the stream. + * + * Optional + */ + includeParticipantAuthorizationEvents?: components['schemas']['ParticipantAuthorizationTopologyFormat'] + } + /** + * TopologyStateFilter + * @description Filter the vetted packages by the participant and synchronizer that they are + * hosted on. + * + * Empty fields are ignored, such that a ``TopologyStateFilter`` without + * participant_ids and without synchronizer_ids matches a vetted package hosted + * on any participant and synchronizer. + * + * Non-empty fields specify candidate values of which at least one must match. + * If both fields are set then at least one candidate value must match from each + * field. + */ + TopologyStateFilter: { + /** + * @description If this list is non-empty, only vetted packages hosted on participants + * listed in this field match the filter. + * Query the current Ledger API's participant's ID via the public + * ``GetParticipantId`` command in ``PartyManagementService``. + * + * Optional: can be empty + */ + participantIds?: string[] + /** + * @description If this list is non-empty, only vetted packages from the topology state of + * the synchronizers in this list match the filter. + * + * Optional: can be empty + */ + synchronizerIds?: string[] + } + /** TopologyTransaction */ + TopologyTransaction: { + value: components['schemas']['JsTopologyTransaction'] + } + /** TraceContext */ + TraceContext: { + /** + * @description https://www.w3.org/TR/trace-context/ + * + * Optional + */ + traceparent?: string + /** @description Optional */ + tracestate?: string + } + /** + * Transaction + * @description Filtered view of an on-ledger transaction's create and archive events. + */ + Transaction: { + value: components['schemas']['JsTransaction'] + } + /** + * TransactionFilter + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * Used both for filtering create and archive events as well as for filtering transaction trees. + */ + TransactionFilter: { + /** + * @description Each key must be a valid PartyIdString (as described in ``value.proto``). + * The interpretation of the filter depends on the transaction-shape being filtered: + * + * 1. For **transaction trees** (used in GetUpdateTreesResponse for backwards compatibility) all party keys used as + * wildcard filters, and all subtrees whose root has one of the listed parties as an informee are returned. + * If there are ``CumulativeFilter``s, those will control returned ``CreatedEvent`` fields where applicable, but will + * not be used for template/interface filtering. + * 2. For **ledger-effects** create and exercise events are returned, for which the witnesses include at least one of + * the listed parties and match the per-party filter. + * 3. For **transaction and active-contract-set streams** create and archive events are returned for all contracts whose + * stakeholders include at least one of the listed parties and match the per-party filter. + */ + filtersByParty?: components['schemas']['Map_Filters'] + /** + * @description Wildcard filters that apply to all the parties existing on the participant. The interpretation of the filters is the same + * with the per-party filter as described above. + */ + filtersForAnyParty?: components['schemas']['Filters'] + } + /** + * TransactionFormat + * @description A format that specifies what events to include in Daml transactions + * and what data to compute and include for them. + */ + TransactionFormat: { + /** @description Required */ + eventFormat: components['schemas']['EventFormat'] + /** + * @description What transaction shape to use for interpreting the filters of the event format. + * + * Required + * @enum {string} + */ + transactionShape: + | 'TRANSACTION_SHAPE_UNSPECIFIED' + | 'TRANSACTION_SHAPE_ACS_DELTA' + | 'TRANSACTION_SHAPE_LEDGER_EFFECTS' + } + /** + * TransactionTree + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * Complete view of an on-ledger transaction. + */ + TransactionTree: { + value: components['schemas']['JsTransactionTree'] + } + /** + * TreeEvent + * @description Provided for backwards compatibility, it will be removed in the Canton version 3.5.0. + * Each tree event message type below contains a ``witness_parties`` field which + * indicates the subset of the requested parties that can see the event + * in question. + * + * Note that transaction trees might contain events with + * _no_ witness parties, which were included simply because they were + * children of events which have witnesses. + */ + TreeEvent: + | { + CreatedTreeEvent: components['schemas']['CreatedTreeEvent'] + } + | { + ExercisedTreeEvent: components['schemas']['ExercisedTreeEvent'] + } + /** Tuple2_String_String */ + Tuple2_String_String: string[] + /** + * UnassignCommand + * @description Unassign a contract + */ + UnassignCommand: { + value: components['schemas']['UnassignCommand1'] + } + /** + * UnassignCommand + * @description Unassign a contract + */ + UnassignCommand1: { + /** + * @description The ID of the contract the client wants to unassign. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + contractId: string + /** + * @description The ID of the source synchronizer + * Must be a valid synchronizer id + * + * Required + */ + source: string + /** + * @description The ID of the target synchronizer + * Must be a valid synchronizer id + * + * Required + */ + target: string + } + /** + * UnassignedEvent + * @description Records that a contract has been unassigned, and it becomes unusable on the source synchronizer + */ + UnassignedEvent: { + /** + * @description The ID of the unassignment. This needs to be used as an input for a assign ReassignmentCommand. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + reassignmentId: string + /** + * @description The ID of the reassigned contract. + * Must be a valid LedgerString (as described in ``value.proto``). + * + * Required + */ + contractId: string + /** + * @description The template of the reassigned contract. + * The identifier uses the package-id reference format. + * + * Required + */ + templateId: string + /** + * @description The ID of the source synchronizer + * Must be a valid synchronizer id + * + * Required + */ + source: string + /** + * @description The ID of the target synchronizer + * Must be a valid synchronizer id + * + * Required + */ + target: string + /** + * @description Party on whose behalf the unassign command was executed. + * Empty if the unassignment happened offline via the repair service. + * Must be a valid PartyIdString (as described in ``value.proto``). + * + * Optional + */ + submitter?: string + /** + * Format: int64 + * @description Each corresponding assigned and unassigned event has the same reassignment_counter. This strictly increases + * with each unassign command for the same contract. Creation of the contract corresponds to reassignment_counter + * equals zero. + * + * Required + */ + reassignmentCounter: number + /** + * @description Assignment exclusivity + * Before this time (measured on the target synchronizer), only the submitter of the unassignment can initiate the assignment + * Defined for reassigning participants. + * + * Optional + */ + assignmentExclusivity?: string + /** + * @description The parties that are notified of this event. + * + * Required: must be non-empty + */ + witnessParties: string[] + /** + * @description The package name of the contract. + * + * Required + */ + packageName: string + /** + * Format: int64 + * @description The offset of origin. + * Offsets are managed by the participant nodes. + * Reassignments can thus NOT be assumed to have the same offsets on different participant nodes. + * Must be a valid absolute offset (positive integer) + * + * Required + */ + offset: number + /** + * Format: int32 + * @description The position of this event in the originating reassignment. + * Node IDs are not necessarily equal across participants, + * as these may see different projections/parts of reassignments. + * Must be valid node ID (non-negative integer) + * + * Required + */ + nodeId: number + } + /** UnknownFieldSet */ + UnknownFieldSet: { + fields: components['schemas']['Map_Int_Field'] + } + /** + * Unvet + * @description Remove packages from the set of vetted packages + */ + Unvet: { + value: components['schemas']['Unvet1'] + } + /** + * Unvet + * @description Remove packages from the set of vetted packages + */ + Unvet1: { + /** + * @description Packages to be unvetted. + * + * If a reference in this list matches multiple packages, they are all + * unvetted. + * + * Required: must be non-empty + */ + packages: components['schemas']['VettedPackagesRef'][] + } + /** Update */ + Update: + | { + OffsetCheckpoint: components['schemas']['OffsetCheckpoint2'] + } + | { + Reassignment: components['schemas']['Reassignment'] + } + | { + TopologyTransaction: components['schemas']['TopologyTransaction'] + } + | { + Transaction: components['schemas']['Transaction'] + } + /** Update */ + Update1: + | { + OffsetCheckpoint: components['schemas']['OffsetCheckpoint3'] + } + | { + Reassignment: components['schemas']['Reassignment1'] + } + | { + TransactionTree: components['schemas']['TransactionTree'] + } + /** + * UpdateFormat + * @description A format specifying what updates to include and how to render them. + */ + UpdateFormat: { + /** + * @description Include Daml transactions in streams. + * If unset, no transactions are emitted in the stream. + * + * Optional + */ + includeTransactions?: components['schemas']['TransactionFormat'] + /** + * @description Include (un)assignments in the stream. + * The events in the result take the shape TRANSACTION_SHAPE_ACS_DELTA. + * If unset, no (un)assignments are emitted in the stream. + * + * Optional + */ + includeReassignments?: components['schemas']['EventFormat'] + /** + * @description Include topology events in streams. + * If unset no topology events are emitted in the stream. + * + * Optional + */ + includeTopologyEvents?: components['schemas']['TopologyFormat'] + } + /** UpdateIdentityProviderConfigRequest */ + UpdateIdentityProviderConfigRequest: { + /** + * @description The identity provider config to update. + * Modifiable + * + * Required + */ + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + /** + * @description An update mask specifies how and which properties of the ``IdentityProviderConfig`` message are to be updated. + * An update mask consists of a set of update paths. + * A valid update path points to a field or a subfield relative to the ``IdentityProviderConfig`` message. + * A valid update mask must: + * + * 1. contain at least one update path, + * 2. contain only valid update paths. + * + * Fields that can be updated are marked as ``Modifiable``. + * For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + * + * Required + */ + updateMask: components['schemas']['FieldMask'] + } + /** UpdateIdentityProviderConfigResponse */ + UpdateIdentityProviderConfigResponse: { + /** + * @description Updated identity provider config + * + * Required + */ + identityProviderConfig: components['schemas']['IdentityProviderConfig'] + } + /** + * UpdatePartyDetailsRequest + * @description Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(party_details.identity_provider_id)`` + */ + UpdatePartyDetailsRequest: { + /** + * @description Party to be updated + * Modifiable + * + * Required + */ + partyDetails: components['schemas']['PartyDetails'] + /** + * @description An update mask specifies how and which properties of the ``PartyDetails`` message are to be updated. + * An update mask consists of a set of update paths. + * A valid update path points to a field or a subfield relative to the ``PartyDetails`` message. + * A valid update mask must: + * + * 1. contain at least one update path, + * 2. contain only valid update paths. + * + * Fields that can be updated are marked as ``Modifiable``. + * An update path can also point to non-``Modifiable`` fields such as 'party' and 'local_metadata.resource_version' + * because they are used: + * + * 1. to identify the party details resource subject to the update, + * 2. for concurrent change control. + * + * An update path can also point to non-``Modifiable`` fields such as 'is_local' + * as long as the values provided in the update request match the server values. + * Examples of update paths: 'local_metadata.annotations', 'local_metadata'. + * For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + * For similar Ledger API see ``com.daml.ledger.api.v2.admin.UpdateUserRequest``. + * + * Required + */ + updateMask: components['schemas']['FieldMask'] + } + /** UpdatePartyDetailsResponse */ + UpdatePartyDetailsResponse: { + /** + * @description Updated party details + * + * Required + */ + partyDetails: components['schemas']['PartyDetails'] + } + /** + * UpdateUserIdentityProviderIdRequest + * @description Required authorization: ``HasRight(ParticipantAdmin)`` + */ + UpdateUserIdentityProviderIdRequest: { + /** + * @description User to update + * + * Required + */ + userId: string + /** + * @description Current identity provider ID of the user + * If omitted, the default IDP is assumed + * + * Optional + */ + sourceIdentityProviderId?: string + /** + * @description Target identity provider ID of the user + * If omitted, the default IDP is assumed + * + * Optional + */ + targetIdentityProviderId?: string + } + /** UpdateUserIdentityProviderIdResponse */ + UpdateUserIdentityProviderIdResponse: Record + /** + * UpdateUserRequest + * @description Required authorization: ``HasRight(ParticipantAdmin) OR IsAuthenticatedIdentityProviderAdmin(user.identity_provider_id)`` + */ + UpdateUserRequest: { + /** + * @description The user to update. + * Modifiable + * + * Required + */ + user: components['schemas']['User'] + /** + * @description An update mask specifies how and which properties of the ``User`` message are to be updated. + * An update mask consists of a set of update paths. + * A valid update path points to a field or a subfield relative to the ``User`` message. + * A valid update mask must: + * + * 1. contain at least one update path, + * 2. contain only valid update paths. + * + * Fields that can be updated are marked as ``Modifiable``. + * An update path can also point to a non-``Modifiable`` fields such as 'id' and 'metadata.resource_version' + * because they are used: + * + * 1. to identify the user resource subject to the update, + * 2. for concurrent change control. + * + * Examples of valid update paths: 'primary_party', 'metadata', 'metadata.annotations'. + * For additional information see the documentation for standard protobuf3's ``google.protobuf.FieldMask``. + * For similar Ledger API see ``com.daml.ledger.api.v2.admin.UpdatePartyDetailsRequest``. + * + * Required + */ + updateMask: components['schemas']['FieldMask'] + } + /** UpdateUserResponse */ + UpdateUserResponse: { + /** + * @description Updated user + * + * Required + */ + user: components['schemas']['User'] + } + /** UpdateVettedPackagesRequest */ + UpdateVettedPackagesRequest: { + /** + * @description Changes to apply to the current vetting state of the participant on the + * specified synchronizer. The changes are applied in order. + * Any package not changed will keep their previous vetting state. + * + * Required: must be non-empty + */ + changes: components['schemas']['VettedPackagesChange'][] + /** + * @description If dry_run is true, then the changes are only prepared, but not applied. If + * a request would trigger an error when run (e.g. TOPOLOGY_DEPENDENCIES_NOT_VETTED), + * it will also trigger an error when dry_run. + * + * Use this flag to preview a change before applying it. + * Defaults to false. + * + * Optional + */ + dryRun?: boolean + /** + * @description If set, the requested changes will take place on the specified + * synchronizer. If synchronizer_id is unset and the participant is only + * connected to a single synchronizer, that synchronizer will be used by + * default. If synchronizer_id is unset and the participant is connected to + * multiple synchronizers, the request will error out with + * PACKAGE_SERVICE_CANNOT_AUTODETECT_SYNCHRONIZER. + * + * Optional + */ + synchronizerId?: string + /** + * @description The serial of the last ``VettedPackages`` topology transaction of this + * participant and on this synchronizer. + * + * Execution of the request fails if this is not correct. Use this to guard + * against concurrent changes. + * + * If left unspecified, no validation is done against the last transaction's + * serial. + * + * Optional + */ + expectedTopologySerial?: components['schemas']['PriorTopologySerial'] + /** + * @description Controls whether potentially unsafe vetting updates are allowed. + * + * Optional: can be empty + */ + updateVettedPackagesForceFlags?: ( + | 'UPDATE_VETTED_PACKAGES_FORCE_FLAG_UNSPECIFIED' + | 'UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_VET_INCOMPATIBLE_UPGRADES' + | 'UPDATE_VETTED_PACKAGES_FORCE_FLAG_ALLOW_UNVETTED_DEPENDENCIES' + )[] + } + /** UpdateVettedPackagesResponse */ + UpdateVettedPackagesResponse: { + /** + * @description All vetted packages on this participant and synchronizer, before the + * specified changes. Empty if no vetting state existed beforehand. + * + * Not populated if no vetted topology state exists prior to the update. + * + * Optional + */ + pastVettedPackages?: components['schemas']['VettedPackages'] + /** + * @description All vetted packages on this participant and synchronizer, after the specified changes. + * + * Required + */ + newVettedPackages: components['schemas']['VettedPackages'] + } + /** + * UploadDarFileResponse + * @description A message that is received when the upload operation succeeded. + */ + UploadDarFileResponse: Record + /** + * User + * @description Users and rights + * ///////////////// + * Users are used to dynamically manage the rights given to Daml applications. + * They are stored and managed per participant node. + */ + User: { + /** + * @description The user identifier, which must be a non-empty string of at most 128 + * characters that are either alphanumeric ASCII characters or one of the symbols "@^$.!`-#+'~_|:()". + * + * Required + */ + id: string + /** + * @description The primary party as which this user reads and acts by default on the ledger + * *provided* it has the corresponding ``CanReadAs(primary_party)`` or + * ``CanActAs(primary_party)`` rights. + * Ledger API clients SHOULD set this field to a non-empty value for all users to + * enable the users to act on the ledger using their own Daml party. + * Users for participant administrators MAY have an associated primary party. + * Modifiable + * + * Optional + */ + primaryParty?: string + /** + * @description When set, then the user is denied all access to the Ledger API. + * Otherwise, the user has access to the Ledger API as per the user's rights. + * Modifiable + * + * Optional + */ + isDeactivated?: boolean + /** + * @description The metadata of this user. + * Note that the ``metadata.resource_version`` tracks changes to the properties described by the ``User`` message and not the user's rights. + * Modifiable + * + * Optional + */ + metadata?: components['schemas']['ObjectMeta'] + /** + * @description The ID of the identity provider configured by ``Identity Provider Config`` + * If not set, assume the user is managed by the default identity provider. + * + * Optional + */ + identityProviderId?: string + /** + * @description If set to true, the user may authenticate against the Ledger API by signing + * a Party JWT using the primary party's signing key. + * Modifiable + * + * Optional + */ + primaryPartyAuthentication?: boolean + } + /** UserManagementFeature */ + UserManagementFeature: { + /** + * @description Whether the Ledger API server provides the user management service. + * + * Required + */ + supported: boolean + /** + * Format: int32 + * @description The maximum number of rights that can be assigned to a single user. + * Servers MUST support at least 100 rights per user. + * A value of 0 means that the server enforces no rights per user limit. + * + * Required + */ + maxRightsPerUser: number + /** + * Format: int32 + * @description The maximum number of users the server can return in a single response (page). + * Servers MUST support at least a 100 users per page. + * A value of 0 means that the server enforces no page size limit. + * + * Required + */ + maxUsersPageSize: number + } + /** + * Vet + * @description Set vetting bounds of a list of packages. Packages that were not previously + * vetted have their bounds added, previous vetting bounds are overwritten. + */ + Vet: { + value: components['schemas']['Vet1'] + } + /** + * Vet + * @description Set vetting bounds of a list of packages. Packages that were not previously + * vetted have their bounds added, previous vetting bounds are overwritten. + */ + Vet1: { + /** + * @description Packages to be vetted. + * + * If a reference in this list matches more than one package, the change is + * considered ambiguous and the entire update request is rejected. In other + * words, every reference must match exactly one package. + * + * Required: must be non-empty + */ + packages: components['schemas']['VettedPackagesRef'][] + /** + * @description The time from which these packages should be vetted, prior lower bounds + * are overwritten. + * Optional + */ + newValidFromInclusive?: string + /** + * @description The time until which these packages should be vetted, prior upper bounds + * are overwritten. + * Optional + */ + newValidUntilExclusive?: string + } + /** + * VettedPackage + * @description A package that is vetting on a given participant and synchronizer, + * modelled after ``VettedPackage`` in `topology.proto `_, + * enriched with the package name and version. + */ + VettedPackage: { + /** + * @description Package ID of this package + * + * Required + */ + packageId: string + /** + * @description The time from which this package is vetted. Empty if vetting time has no + * lower bound. + * + * Optional + */ + validFromInclusive?: string + /** + * @description The time until which this package is vetted. Empty if vetting time has no + * upper bound. + * + * Optional + */ + validUntilExclusive?: string + /** + * @description Name of this package. + * Only available if the package has been uploaded to the current participant. + * + * Optional + */ + packageName?: string + /** + * @description Version of this package. + * Only available if the package has been uploaded to the current participant. + * + * Optional + */ + packageVersion?: string + } + /** + * VettedPackages + * @description The list of packages vetted on a given participant and synchronizer, modelled + * after ``VettedPackages`` in `topology.proto `_. + * The list only contains packages that matched a filter in the query that + * originated it. + */ + VettedPackages: { + /** + * @description Sorted by package_name and package_version where known, and package_id as a + * last resort. + * + * Required: must be non-empty + */ + packages: components['schemas']['VettedPackage'][] + /** + * @description Participant on which these packages are vetted. + * + * Required + */ + participantId: string + /** + * @description Synchronizer on which these packages are vetted. + * + * Required + */ + synchronizerId: string + /** + * Format: int32 + * @description Serial of last ``VettedPackages`` topology transaction of this participant + * and on this synchronizer. + * + * Required + */ + topologySerial: number + } + /** + * VettedPackagesChange + * @description A change to the set of vetted packages. + */ + VettedPackagesChange: { + operation?: components['schemas']['Operation'] + } + /** + * VettedPackagesRef + * @description A reference to identify one or more packages. + * + * A reference matches a package if its ``package_id`` matches the package's ID, + * its ``package_name`` matches the package's name, and its ``package_version`` + * matches the package's version. If an attribute in the reference is left + * unspecified (i.e. as an empty string), that attribute is treated as a + * wildcard. At a minimum, ``package_id`` or the ``package_name`` must be + * specified. + * + * If a reference does not match any package, the reference is considered + * unresolved and the entire update request is rejected. + */ + VettedPackagesRef: { + /** + * @description Package's package id must be the same as this field. + * + * Optional + */ + packageId?: string + /** + * @description Package's name must be the same as this field. + * + * Optional + */ + packageName?: string + /** + * @description Package's version must be the same as this field. + * + * Optional + */ + packageVersion?: string + } + /** + * WildcardFilter + * @description This filter matches all templates. + */ + WildcardFilter: { + value: components['schemas']['WildcardFilter1'] + } + /** + * WildcardFilter + * @description This filter matches all templates. + */ + WildcardFilter1: { + /** + * @description Whether to include a ``created_event_blob`` in the returned ``CreatedEvent``. + * Use this to access the contract create event payload in your API client + * for submitting it as a disclosed contract with future commands. + * + * Optional + */ + includeCreatedEventBlob?: boolean + } + } + responses: never + parameters: never + requestBodies: never + headers: never + pathItems: never +} +export type $defs = Record +export interface operations { + 'postV2CommandsSubmit-and-wait': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsCommands'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['SubmitAndWaitResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2CommandsSubmit-and-wait-for-transaction': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsSubmitAndWaitForTransactionRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsSubmitAndWaitForTransactionResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2CommandsSubmit-and-wait-for-reassignment': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['SubmitAndWaitForReassignmentRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsSubmitAndWaitForReassignmentResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2CommandsSubmit-and-wait-for-transaction-tree': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsCommands'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsSubmitAndWaitForTransactionTreeResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2CommandsAsyncSubmit: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsCommands'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['SubmitResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2CommandsAsyncSubmit-reassignment': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['SubmitReassignmentRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['SubmitReassignmentResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2CommandsCompletions: { + parameters: { + query?: { + /** @description maximum number of elements to return, this param is ignored if is bigger than server setting */ + limit?: number + /** @description timeout to complete and send result if no new elements are received (for open ended streams) */ + stream_idle_timeout_ms?: number + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['CompletionStreamRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['CompletionStreamResponse'][] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2CommandsCommand-completions': { + parameters: { + query?: { + /** @description maximum number of elements to return, this param is ignored if is bigger than server setting */ + limit?: number + /** @description timeout to complete and send result if no new elements are received (for open ended streams) */ + stream_idle_timeout_ms?: number + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetCompletionsRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['CompletionStreamResponse'][] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2EventsEvents-by-contract-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetEventsByContractIdRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetEventsByContractIdResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getV2Version: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetLedgerApiVersionResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2DarsValidate: { + parameters: { + query?: { + synchronizerId?: string + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/octet-stream': string + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content?: never + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter synchronizerId */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2Dars: { + parameters: { + query?: { + vetAllPackages?: boolean + synchronizerId?: string + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/octet-stream': string + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UploadDarFileResponse'] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter vetAllPackages, Invalid value for: query parameter synchronizerId */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getV2Packages: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ListPackagesResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2Packages: { + parameters: { + query?: { + vetAllPackages?: boolean + synchronizerId?: string + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/octet-stream': string + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UploadDarFileResponse'] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter vetAllPackages, Invalid value for: query parameter synchronizerId */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2PackagesPackage-id': { + parameters: { + query?: never + header?: never + path: { + 'package-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + 'Canton-Package-Hash': string + [name: string]: unknown + } + content: { + 'application/octet-stream': string + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2PackagesPackage-idStatus': { + parameters: { + query?: never + header?: never + path: { + 'package-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetPackageStatusResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2Package-vetting': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['ListVettedPackagesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ListVettedPackagesResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Package-vetting': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['UpdateVettedPackagesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UpdateVettedPackagesResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Package-vettingList': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['ListVettedPackagesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ListVettedPackagesResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Package-vettingUpdate': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['UpdateVettedPackagesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UpdateVettedPackagesResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getV2Parties: { + parameters: { + query?: { + 'identity-provider-id'?: string + 'filter-party'?: string + /** @description maximum number of elements in a returned page */ + pageSize?: number + /** @description token - to continue results from a given page, leave empty to start from the beginning of the list, obtain token from the result of previous page */ + pageToken?: string + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ListKnownPartiesResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter identity-provider-id, Invalid value for: query parameter filter-party, Invalid value for: query parameter pageSize, Invalid value for: query parameter pageToken */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2Parties: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['AllocatePartyRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['AllocatePartyResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2PartiesExternalAllocate: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['AllocateExternalPartyRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['AllocateExternalPartyResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2PartiesParticipant-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetParticipantIdResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getV2PartiesParty: { + parameters: { + query?: { + 'identity-provider-id'?: string + parties?: string[] + } + header?: never + path: { + party: string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetPartiesResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter identity-provider-id, Invalid value for: query parameter parties */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + patchV2PartiesParty: { + parameters: { + query?: never + header?: never + path: { + party: string + } + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['UpdatePartyDetailsRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UpdatePartyDetailsResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2PartiesExternalGenerate-topology': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GenerateExternalPartyTopologyRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GenerateExternalPartyTopologyResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2StateActive-contracts': { + parameters: { + query?: { + /** @description maximum number of elements to return, this param is ignored if is bigger than server setting */ + limit?: number + /** @description timeout to complete and send result if no new elements are received (for open ended streams) */ + stream_idle_timeout_ms?: number + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetActiveContractsRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetActiveContractsResponse'][] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2StateActive-contracts-page': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetActiveContractsPageRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetActiveContractsPageResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2StateConnected-synchronizers': { + parameters: { + query?: { + party?: string + participantId?: string + identityProviderId?: string + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetConnectedSynchronizersResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter party, Invalid value for: query parameter participantId, Invalid value for: query parameter identityProviderId */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2StateLedger-end': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetLedgerEndResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2StateLatest-pruned-offsets': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetLatestPrunedOffsetsResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2Updates: { + parameters: { + query?: { + /** @description maximum number of elements to return, this param is ignored if is bigger than server setting */ + limit?: number + /** @description timeout to complete and send result if no new elements are received (for open ended streams) */ + stream_idle_timeout_ms?: number + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetUpdatesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetUpdatesResponse'][] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2UpdatesFlats: { + parameters: { + query?: { + /** @description maximum number of elements to return, this param is ignored if is bigger than server setting */ + limit?: number + /** @description timeout to complete and send result if no new elements are received (for open ended streams) */ + stream_idle_timeout_ms?: number + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetUpdatesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetUpdatesResponse'][] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2UpdatesTrees: { + parameters: { + query?: { + /** @description maximum number of elements to return, this param is ignored if is bigger than server setting */ + limit?: number + /** @description timeout to complete and send result if no new elements are received (for open ended streams) */ + stream_idle_timeout_ms?: number + } + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetUpdatesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetUpdateTreesResponse'][] + } + } + /** @description Invalid value, Invalid value for: body, Invalid value for: query parameter limit, Invalid value for: query parameter stream_idle_timeout_ms */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2UpdatesTransaction-tree-by-offsetOffset': { + parameters: { + query?: { + parties?: string[] + } + header?: never + path: { + offset: number + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetTransactionTreeResponse'] + } + } + /** @description Invalid value, Invalid value for: path parameter offset, Invalid value for: query parameter parties */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2UpdatesTransaction-by-offset': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetTransactionByOffsetRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetTransactionResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2UpdatesUpdate-by-offset': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetUpdateByOffsetRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetUpdateResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2UpdatesTransaction-by-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetTransactionByIdRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetTransactionResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2UpdatesUpdate-by-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetUpdateByIdRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetUpdateResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2UpdatesTransaction-tree-by-idUpdate-id': { + parameters: { + query?: { + parties?: string[] + } + header?: never + path: { + 'update-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetTransactionTreeResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter parties */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2UpdatesGet-updates-page': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetUpdatesPageRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsGetUpdatesPageResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getV2Users: { + parameters: { + query?: { + /** @description maximum number of elements in a returned page */ + pageSize?: number + /** @description token - to continue results from a given page, leave empty to start from the beginning of the list, obtain token from the result of previous page */ + pageToken?: string + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ListUsersResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter pageSize, Invalid value for: query parameter pageToken */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2Users: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['CreateUserRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['CreateUserResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2UsersUser-id': { + parameters: { + query?: { + 'identity-provider-id'?: string + } + header?: never + path: { + 'user-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetUserResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter identity-provider-id */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'deleteV2UsersUser-id': { + parameters: { + query?: never + header?: never + path: { + 'user-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': Record + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'patchV2UsersUser-id': { + parameters: { + query?: never + header?: never + path: { + 'user-id': string + } + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['UpdateUserRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UpdateUserResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2Authenticated-user': { + parameters: { + query?: { + 'identity-provider-id'?: string + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetUserResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter identity-provider-id */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2UsersUser-idRights': { + parameters: { + query?: never + header?: never + path: { + 'user-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ListUserRightsResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2UsersUser-idRights': { + parameters: { + query?: never + header?: never + path: { + 'user-id': string + } + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GrantUserRightsRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GrantUserRightsResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'patchV2UsersUser-idRights': { + parameters: { + query?: never + header?: never + path: { + 'user-id': string + } + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['RevokeUserRightsRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['RevokeUserRightsResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'patchV2UsersUser-idIdentity-provider-id': { + parameters: { + query?: never + header?: never + path: { + 'user-id': string + } + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['UpdateUserIdentityProviderIdRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UpdateUserIdentityProviderIdResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getV2Idps: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ListIdentityProviderConfigsResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + postV2Idps: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['CreateIdentityProviderConfigRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['CreateIdentityProviderConfigResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2IdpsIdp-id': { + parameters: { + query?: never + header?: never + path: { + 'idp-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetIdentityProviderConfigResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'deleteV2IdpsIdp-id': { + parameters: { + query?: never + header?: never + path: { + 'idp-id': string + } + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['DeleteIdentityProviderConfigResponse'] + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'patchV2IdpsIdp-id': { + parameters: { + query?: never + header?: never + path: { + 'idp-id': string + } + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['UpdateIdentityProviderConfigRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['UpdateIdentityProviderConfigResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Interactive-submissionPrepare': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsPrepareSubmissionRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsPrepareSubmissionResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Interactive-submissionExecute': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsExecuteSubmissionRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ExecuteSubmissionResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Interactive-submissionExecuteandwait': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsExecuteSubmissionAndWaitRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ExecuteSubmissionAndWaitResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Interactive-submissionExecuteandwaitfortransaction': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['JsExecuteSubmissionAndWaitForTransactionRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsExecuteSubmissionAndWaitForTransactionResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'getV2Interactive-submissionPreferred-package-version': { + parameters: { + query: { + parties?: string[] + 'package-name': string + vetting_valid_at?: string + 'synchronizer-id'?: string + } + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetPreferredPackageVersionResponse'] + } + } + /** @description Invalid value, Invalid value for: query parameter parties, Invalid value for: query parameter package-name, Invalid value for: query parameter vetting_valid_at, Invalid value for: query parameter synchronizer-id */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2Interactive-submissionPreferred-packages': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetPreferredPackagesRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetPreferredPackagesResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getLivez: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + /** @description OK: service is alive */ + 200: { + headers: { + [name: string]: unknown + } + content?: never + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + getReadyz: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + /** @description OK: readiness message */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + /** @description Invalid value */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } + 'postV2ContractsContract-by-id': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['GetContractRequest'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetContractResponse'] + } + } + /** @description Invalid value, Invalid value for: body */ + 400: { + headers: { + [name: string]: unknown + } + content: { + 'text/plain': string + } + } + default: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['JsCantonError'] + } + } + } + } +} diff --git a/core/splice-client/src/generated-clients/scan-proxy.ts b/core/splice-client/src/generated-clients/scan-proxy.ts index 75292b194..cecc7d0fa 100644 --- a/core/splice-client/src/generated-clients/scan-proxy.ts +++ b/core/splice-client/src/generated-clients/scan-proxy.ts @@ -205,7 +205,8 @@ export interface paths { get?: never put?: never /** - * @description Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + * @deprecated + * @description Deprecated. Please use /v1/scan-proxy/holdings/summary instead. Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. * This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. */ post: operations['getHoldingsSummaryAt'] @@ -215,6 +216,28 @@ export interface paths { patch?: never trace?: never } + '/v1/scan-proxy/holdings/summary': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + * This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + * Unlike /v0/scan-proxy/holdings/summary, this version does not include holding fee fields + * as they do not express a meaningful aggregate value. + */ + post: operations['getHoldingsSummaryAtV1'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v0/scan-proxy/unclaimed-development-fund-coupons': { parameters: { query?: never @@ -510,6 +533,60 @@ export interface components { computed_as_of_round: number summaries: components['schemas']['HoldingsSummary'][] } + HoldingsSummaryRequestV1: { + /** + * Format: int64 + * @description The migration id for which to return the summary. + */ + migration_id: number + /** + * Format: date-time + * @description The timestamp at which the contract set was active. + * This needs to be an exact timestamp, i.e., + * needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + * If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + */ + record_time: string + /** + * @description How to match the record_time. "exact" requires the record_time to match exactly. + * "at_or_before" finds the most recent snapshot at or before the given record_time. + * @default exact + * @enum {string} + */ + record_time_match: 'exact' | 'at_or_before' + /** @description The owners for which to compute the summary. */ + owner_party_ids: string[] + } + /** @description Aggregate Amulet totals for a particular owner party ID. */ + HoldingsSummaryV1: { + /** @description Owner party ID of the amulet. Guaranteed to be unique among `summaries`. */ + party_id: string + /** + * @description Sum of unlocked amulet initial amounts, not counting holding + * fees deducted since. + */ + total_unlocked_coin: string + /** + * @description Sum of locked amulet initial amounts, not + * counting holding fees deducted since. + */ + total_locked_coin: string + /** @description `total_unlocked_coin` + `total_locked_coin`. */ + total_coin_holdings: string + } + HoldingsSummaryResponseV1: { + /** + * Format: date-time + * @description The same `record_time` as in the request. + */ + record_time: string + /** + * Format: int64 + * @description The same `migration_id` as in the request. + */ + migration_id: number + summaries: components['schemas']['HoldingsSummaryV1'][] + } ListUnclaimedDevelopmentFundCouponsResponse: { /** @description Contracts of the Daml template `Splice.Amulet:UnclaimedDevelopmentFundCoupon`. */ 'unclaimed-development-fund-coupons': components['schemas']['ContractWithState'][] @@ -845,6 +922,33 @@ export interface operations { 500: components['responses']['500'] } } + getHoldingsSummaryAtV1: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['HoldingsSummaryRequestV1'] + } + } + responses: { + /** @description ok */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['HoldingsSummaryResponseV1'] + } + } + 400: components['responses']['400'] + 404: components['responses']['404'] + 500: components['responses']['500'] + } + } listUnclaimedDevelopmentFundCoupons: { parameters: { query?: never diff --git a/core/splice-client/src/generated-clients/scan.ts b/core/splice-client/src/generated-clients/scan.ts index 88b8161fb..efa0b5d7b 100644 --- a/core/splice-client/src/generated-clients/scan.ts +++ b/core/splice-client/src/generated-clients/scan.ts @@ -197,6 +197,23 @@ export interface paths { patch?: never trace?: never } + '/v0/lsu': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Retrieve information on the next logical synchronizer upgrade (LSU) */ + get: operations['getLsu'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v0/active-synchronizer-serial': { parameters: { query?: never @@ -592,7 +609,8 @@ export interface paths { get?: never put?: never /** - * @description Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + * @deprecated + * @description Deprecated. Please use /v1/holdings/summary instead. Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. * This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. */ post: operations['getHoldingsSummaryAt'] @@ -602,6 +620,28 @@ export interface paths { patch?: never trace?: never } + '/v1/holdings/summary': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** + * @description Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. + * This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + * Unlike /v0/holdings/summary, this version does not include holding fee fields + * as they do not express a meaningful aggregate value. + */ + post: operations['getHoldingsSummaryAtV1'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v0/ans-entries': { parameters: { query?: never @@ -798,26 +838,6 @@ export interface paths { patch?: never trace?: never } - '/v0/top-validators-by-validator-faucets': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @description Get a list of top validators by number of rounds in which they collected - * faucets, and basis statistics on their round collection history - */ - get: operations['getTopValidatorsByValidatorFaucets'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } '/v0/transfer-preapprovals/by-party/{party}': { parameters: { query?: never @@ -889,6 +909,23 @@ export interface paths { patch?: never trace?: never } + '/v0/migrations/last': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + /** @description Returns the last migration id that was configured for the synchronizer upgrades. */ + get: operations['getMigrationId'] + put?: never + post?: never + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v0/synchronizer-identities/{domain_id_prefix}': { parameters: { query?: never @@ -1022,6 +1059,22 @@ export interface paths { patch?: never trace?: never } + '/v0/admin/sv/previous-sv-reward-weight': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + post: operations['getPreviousSvRewardWeight'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v0/backfilling/migration-info': { parameters: { query?: never @@ -1096,66 +1149,6 @@ export interface paths { patch?: never trace?: never } - '/v0/aggregated-rounds': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**. Retrieve the current earliest and latest rounds aggregated for this Scan. - */ - get: operations['getAggregatedRounds'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/round-totals': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - get?: never - put?: never - /** - * @deprecated - * @description **Deprecated**. List Amulet statistics for up to 200 closed rounds. - */ - post: operations['listRoundTotals'] - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/round-party-totals': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - get?: never - put?: never - /** - * @deprecated - * @description **Deprecated**. Retrieve per-party Amulet statistics for up to 50 closed rounds. - */ - post: operations['listRoundPartyTotals'] - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } '/v0/amulet-config-for-round': { parameters: { query?: never @@ -1176,130 +1169,6 @@ export interface paths { patch?: never trace?: never } - '/v0/round-of-latest-data': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**. Get the latest round number for which aggregated data is available and - * the ledger effective time at which the round was closed. - */ - get: operations['getRoundOfLatestData'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/rewards-collected': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**. Get the total rewards collected ever - */ - get: operations['getRewardsCollected'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/top-providers-by-app-rewards': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**. Get a list of top-earning app providers, and the total earned app - * rewards for each - */ - get: operations['getTopProvidersByAppRewards'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/top-validators-by-validator-rewards': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**. Get a list of top-earning validators, and the total earned validator - * rewards for each - */ - get: operations['getTopValidatorsByValidatorRewards'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/top-validators-by-purchased-traffic': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @deprecated - * @description **Deprecated**. Get a list of validators and their domain fees spends, sorted by the - * amount of extra traffic purchased - */ - get: operations['getTopValidatorsByPurchasedTraffic'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } - '/v0/activities': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - get?: never - put?: never - /** - * @deprecated - * @description **Deprecated**. Lists activities in descending order, paged, optionally starting after a provided event id. - */ - post: operations['listActivity'] - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } '/v0/transactions': { parameters: { query?: never @@ -1457,7 +1326,7 @@ export interface paths { patch?: never trace?: never } - '/v0/reward-accounting-process/rounds/earliest-available': { + '/v0/internal/reward-accounting-process/rounds/earliest-available': { parameters: { query?: never header?: never @@ -1478,7 +1347,7 @@ export interface paths { patch?: never trace?: never } - '/v0/reward-accounting-process/rounds/{round_number}/activity-totals': { + '/v0/internal/reward-accounting-process/rounds/{round_number}/activity-totals': { parameters: { query?: never header?: never @@ -1499,7 +1368,7 @@ export interface paths { patch?: never trace?: never } - '/v0/reward-accounting-process/rounds/{round_number}/root-hash': { + '/v0/internal/reward-accounting-process/rounds/{round_number}/root-hash': { parameters: { query?: never header?: never @@ -1519,7 +1388,7 @@ export interface paths { patch?: never trace?: never } - '/v0/reward-accounting-process/rounds/{round_number}/batches/{batch_hash}': { + '/v0/internal/reward-accounting-process/rounds/{round_number}/batches/{batch_hash}': { parameters: { query?: never header?: never @@ -1695,15 +1564,6 @@ export interface components { amount: string rate: string } - GetRoundOfLatestDataResponse: { - /** Format: int64 */ - round: number - /** Format: date-time */ - effectiveAt: string - } - GetRewardsCollectedResponse: { - amount: string - } GetValidatorTrafficBalanceResponse: { /** Format: double */ remainingBalance: number @@ -1713,26 +1573,6 @@ export interface components { CheckAndUpdateValidatorTrafficBalanceResponse: { approved: boolean } - GetTopProvidersByAppRewardsResponse: { - providersAndRewards: components['schemas']['PartyAndRewards'][] - } - GetTopValidatorsByValidatorRewardsResponse: { - validatorsAndRewards: components['schemas']['PartyAndRewards'][] - } - PartyAndRewards: { - provider: string - rewards: string - } - GetTopValidatorsByValidatorFaucetsResponse: { - /** - * @description Up to `limit` validators, sorted greatest number of rounds - * collected first - */ - validatorsByReceivedFaucets: components['schemas']['ValidatorReceivedFaucets'][] - } - GetTopValidatorsByPurchasedTrafficResponse: { - validatorsByPurchasedTraffic: components['schemas']['ValidatorPurchasedTraffic'][] - } ValidatorPurchasedTraffic: { validator: string /** Format: int64 */ @@ -1804,6 +1644,24 @@ export interface components { currentPhysicalSynchronizerId: string successorPhysicalSynchronizerId: string } + GetLsuResponse: { + /** @description Info on the next LSU */ + lsu?: components['schemas']['Lsu'] + } + Lsu: { + /** + * Format: date-time + * @description The time when topology freeze starts + */ + topologyFreezeTime: string + /** + * Format: date-time + * @description The time at which to upgrade + */ + upgradeTime: string + /** @description The successor physical synchronizer ID */ + successorPhysicalSynchronizerId: string + } GetActivePhysicalSynchronizerSerialResponse: { /** * Format: int64 @@ -2361,7 +2219,31 @@ export interface components { */ as_of_round?: number } - ForceAcsSnapshotResponse: { + HoldingsSummaryRequestV1: { + /** + * Format: int64 + * @description The migration id for which to return the summary. + */ + migration_id: number + /** + * Format: date-time + * @description The timestamp at which the contract set was active. + * This needs to be an exact timestamp, i.e., + * needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). + * If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + */ + record_time: string + /** + * @description How to match the record_time. "exact" requires the record_time to match exactly. + * "at_or_before" finds the most recent snapshot at or before the given record_time. + * @default exact + * @enum {string} + */ + record_time_match: 'exact' | 'at_or_before' + /** @description The owners for which to compute the summary. */ + owner_party_ids: string[] + } + ForceAcsSnapshotResponse: { /** * Format: date-time * @description The [recent] time for which this ACS snapshot was persisted. @@ -2471,59 +2353,35 @@ export interface components { /** @description Same as `total_unlocked_coin` - `accumulated_holding_fees_unlocked`. */ total_available_coin: string } - ListActivityRequest: { + HoldingsSummaryResponseV1: { /** - * @description Minimal event_id for returned activities. - * Note that all activities carry some monotonically-increasing event_id. begin_after_id sets the minimum value for event_id's for the query. + * Format: date-time + * @description The same `record_time` as in the request. */ - begin_after_id?: string + record_time: string /** * Format: int64 - * @description The maximum number of activity items returned for this request. + * @description The same `migration_id` as in the request. */ - page_size: number - } - ListActivityResponse: { - activities: components['schemas']['ListActivityResponseItem'][] + migration_id: number + summaries: components['schemas']['HoldingsSummaryV1'][] } - ListActivityResponseItem: { - /** - * @description Describes the type of activity that occurred. - * Determines if the data for the activity should be read - * from the `transfer`, `mint`, or `tap` property. - * @enum {string} - */ - activity_type: - | 'transfer' - | 'mint' - | 'devnet_tap' - | 'abort_transfer_instruction' - /** @description The event id. */ - event_id: string - /** - * @description The ledger offset of the event. - * Note that this field may not be the same across nodes, and therefore should not be compared between SVs. - */ - offset?: string + /** @description Aggregate Amulet totals for a particular owner party ID. */ + HoldingsSummaryV1: { + /** @description Owner party ID of the amulet. Guaranteed to be unique among `summaries`. */ + party_id: string /** - * Format: date-time - * @description The effective date of the event. + * @description Sum of unlocked amulet initial amounts, not counting holding + * fees deducted since. */ - date: string - /** @description The id of the domain through which this transaction was sequenced. */ - domain_id: string + total_unlocked_coin: string /** - * Format: int64 - * @description The round for which this transaction was registered. + * @description Sum of locked amulet initial amounts, not + * counting holding fees deducted since. */ - round?: number - /** @description A (batch) transfer from sender to receivers. */ - transfer?: components['schemas']['Transfer'] - /** @description The DSO mints amulet for the cases where the DSO rules allow for that. */ - mint?: components['schemas']['AmuletAmount'] - /** @description A tap creates a Amulet, only used for development purposes, and enabled only on DevNet. */ - tap?: components['schemas']['AmuletAmount'] - abort_transfer_instruction?: components['schemas']['AbortTransferInstruction'] + total_locked_coin: string + /** @description `total_unlocked_coin` + `total_locked_coin`. */ + total_coin_holdings: string } /** @description A transfer between one sender and possibly many receivers */ Transfer: { @@ -2711,72 +2569,16 @@ export interface components { */ expires_at?: string } - GetAggregatedRoundsResponse: { - /** Format: int64 */ - start: number - /** Format: int64 */ - end: number - } - ListRoundTotalsRequest: { - /** Format: int64 */ - start_round: number - /** Format: int64 */ - end_round: number - } - ListRoundPartyTotalsRequest: { - /** Format: int64 */ - start_round: number - /** Format: int64 */ - end_round: number - } - ListRoundTotalsResponse: { - entries: components['schemas']['RoundTotals'][] - } - ListRoundPartyTotalsResponse: { - entries: components['schemas']['RoundPartyTotals'][] - } - RoundPartyTotals: { - /** Format: int64 */ - closed_round: number - party: string - app_rewards: string - validator_rewards: string - /** Format: int64 */ - traffic_purchased: number - traffic_purchased_cc_spent: string - /** Format: int64 */ - traffic_num_purchases: number - cumulative_app_rewards: string - cumulative_validator_rewards: string - cumulative_change_to_initial_amount_as_of_round_zero: string - cumulative_change_to_holding_fees_rate: string - /** Format: int64 */ - cumulative_traffic_purchased: number - cumulative_traffic_purchased_cc_spent: string - /** Format: int64 */ - cumulative_traffic_num_purchases: number - } - RoundTotals: { - /** Format: int64 */ - closed_round: number - /** Format: date-time */ - closed_round_effective_at: string - app_rewards: string - validator_rewards: string - change_to_initial_amount_as_of_round_zero: string - change_to_holding_fees_rate: string - cumulative_app_rewards: string - cumulative_validator_rewards: string - cumulative_change_to_initial_amount_as_of_round_zero: string - cumulative_change_to_holding_fees_rate: string - total_amulet_balance: string - } MigrationSchedule: { /** Format: date-time */ time: string /** Format: int64 */ migration_id: number } + GetMigrationIdResponse: { + /** Format: int64 */ + migration_id: number + } SynchronizerIdentities: { sequencer_id: string sequencer_identity_transactions: string[] @@ -2991,22 +2793,14 @@ export interface components { * If an event pertains to a transaction that is partially private, it may also bear verdict information for the private portions. * When both fields are present, the transaction and verdict have the same `update_id` and `record_time`. * - * **Experimental**: for networks where the SVs enable activity record - * computation, a traffic summary and app activity record are present when + * For networks where the SVs enable activity record computation, + * a traffic summary and app activity record are present when * a verdict is present. - * - * This support is experimental while the preview phase of CIP-104 is running. */ EventHistoryItem: { update?: components['schemas']['UpdateHistoryItemV2'] verdict?: components['schemas']['EventHistoryVerdict'] - /** - * @description **EXPERIMENTAL**: This property is experimental and subject to change. Data may be incomplete or missing. - * - * This is our current best guess for how the summaries are served, but there remains a chance that the API needs to be adjusted. - */ traffic_summary?: components['schemas']['EventHistoryTrafficSummary'] - /** @description **EXPERIMENTAL**: This property is experimental and subject to change. Data may be incomplete or missing. */ app_activity_records?: components['schemas']['EventHistoryAppActivityRecords'] } EventHistoryVerdict: { @@ -3157,7 +2951,16 @@ export interface components { /** Format: int64 */ earliest_round: number } - GetRewardAccountingActivityTotalsResponse: { + GetRewardAccountingActivityTotalsResponse: + | components['schemas']['RewardAccountingActivityTotalsOk'] + | components['schemas']['RewardAccountingActivityTotalsUndetermined'] + | components['schemas']['RewardAccountingActivityTotalsCannotProvide'] + RewardAccountingActivityTotalsOk: { + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + status: 'Ok' /** Format: int64 */ round_number: number /** Format: int64 */ @@ -3166,13 +2969,58 @@ export interface components { active_parties_count: number /** Format: int64 */ activity_records_count: number + /** @description The total of all minting allowances granted to app providers in this round. */ + total_app_reward_minting_allowance: string + /** @description Total amount of minting allowances that fell below the configured app reward threshold and was thus burned. */ + total_app_reward_thresholded: string + /** @description Total amount of app rewards which could not be attributed to app providers in this round because of limit on app rewards per activity (aka the app rewards cap). */ + total_app_reward_unclaimed: string + /** Format: int64 */ + rewarded_app_provider_parties_count: number } - GetRewardAccountingRootHashResponse: { + RewardAccountingActivityTotalsUndetermined: { + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + status: 'Undetermined' + } + RewardAccountingActivityTotalsCannotProvide: { + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + status: 'CannotProvide' + } + GetRewardAccountingRootHashResponse: + | components['schemas']['RewardAccountingRootHashOk'] + | components['schemas']['RewardAccountingRootHashUndetermined'] + | components['schemas']['RewardAccountingRootHashCannotProvide'] + RewardAccountingRootHashOk: { + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + status: 'Ok' /** Format: int64 */ round_number: number /** @description Hex-encoded root hash */ root_hash: string } + RewardAccountingRootHashUndetermined: { + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + status: 'Undetermined' + } + RewardAccountingRootHashCannotProvide: { + /** + * @description discriminator enum property added by openapi-typescript + * @enum {string} + */ + status: 'CannotProvide' + } GetRewardAccountingBatchResponse: | components['schemas']['RewardAccountingBatchOfBatches'] | components['schemas']['RewardAccountingBatchOfMintingAllowances'] @@ -3356,9 +3204,31 @@ export interface components { effectiveFrom?: string effectiveTo?: string limit: number + /** + * @description Cursor for pagination. When requesting the next page of results, pass the `next_page_token` from the previous response. + * Results are ordered by effective date (the accepted vote's effectiveAt, or the result's completedAt otherwise), descending. + */ + pageToken?: number } ListDsoRulesVoteResultsResponse: { dso_rules_vote_results: Record[] + /** + * @description Cursor for the next page of results. Pass this as `pageToken` in the request. + * If absent or `null`, there are no more pages. + */ + next_page_token?: number + } + PreviousSvRewardWeightRequest: { + svParty: string + /** @description Only consider reward weight changes that took effect strictly before this time. */ + effectiveBefore?: string + } + PreviousSvRewardWeightResponse: { + /** + * @description The SV's reward weight set by the most recent accepted `UpdateSvRewardWeight` proposal + * before `effectiveBefore`, or absent if there is no such proposal. + */ + rewardWeight?: string } FeatureSupportResponse: { dummy?: boolean @@ -3652,6 +3522,26 @@ export interface operations { } } } + getLsu: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + /** @description ok */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetLsuResponse'] + } + } + } + } getActivePhysicalSynchronizerSerial: { parameters: { query?: never @@ -4145,6 +4035,33 @@ export interface operations { 500: components['responses']['500'] } } + getHoldingsSummaryAtV1: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['HoldingsSummaryRequestV1'] + } + } + responses: { + /** @description ok */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['HoldingsSummaryResponseV1'] + } + } + 400: components['responses']['400'] + 404: components['responses']['404'] + 500: components['responses']['500'] + } + } listAnsEntries: { parameters: { query: { @@ -4402,34 +4319,6 @@ export interface operations { } } } - getTopValidatorsByValidatorFaucets: { - parameters: { - query: { - /** - * @description Maximum number of validator records that may be returned in the - * response - */ - limit: number - } - header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetTopValidatorsByValidatorFaucetsResponse'] - } - } - 400: components['responses']['400'] - 404: components['responses']['404'] - } - } lookupTransferPreapprovalByParty: { parameters: { query?: never @@ -4529,6 +4418,26 @@ export interface operations { } } } + getMigrationId: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: never + responses: { + /** @description ok */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['GetMigrationIdResponse'] + } + } + } + } getSynchronizerIdentities: { parameters: { query?: never @@ -4715,32 +4624,7 @@ export interface operations { } } } - getMigrationInfo: { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - requestBody: { - content: { - 'application/json': components['schemas']['GetMigrationInfoRequest'] - } - } - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetMigrationInfoResponse'] - } - } - 404: components['responses']['404'] - } - } - getUpdatesBefore: { + getPreviousSvRewardWeight: { parameters: { query?: never header?: never @@ -4749,7 +4633,7 @@ export interface operations { } requestBody: { content: { - 'application/json': components['schemas']['GetUpdatesBeforeRequest'] + 'application/json': components['schemas']['PreviousSvRewardWeightRequest'] } } responses: { @@ -4759,78 +4643,12 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['GetUpdatesBeforeResponse'] + 'application/json': components['schemas']['PreviousSvRewardWeightResponse'] } } - 404: components['responses']['404'] } } - getBackfillingStatus: { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetBackfillingStatusResponse'] - } - } - } - } - getAcsSnapshot: { - parameters: { - query?: { - record_time?: string - } - header?: never - path: { - party: string - } - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetAcsSnapshotResponse'] - } - } - } - } - getAggregatedRounds: { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetAggregatedRoundsResponse'] - } - } - 404: components['responses']['404'] - } - } - listRoundTotals: { + getMigrationInfo: { parameters: { query?: never header?: never @@ -4839,7 +4657,7 @@ export interface operations { } requestBody: { content: { - 'application/json': components['schemas']['ListRoundTotalsRequest'] + 'application/json': components['schemas']['GetMigrationInfoRequest'] } } responses: { @@ -4849,15 +4667,13 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['ListRoundTotalsResponse'] + 'application/json': components['schemas']['GetMigrationInfoResponse'] } } - 400: components['responses']['400'] 404: components['responses']['404'] - 500: components['responses']['500'] } } - listRoundPartyTotals: { + getUpdatesBefore: { parameters: { query?: never header?: never @@ -4866,34 +4682,9 @@ export interface operations { } requestBody: { content: { - 'application/json': components['schemas']['ListRoundPartyTotalsRequest'] - } - } - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['ListRoundPartyTotalsResponse'] - } - } - 400: components['responses']['400'] - 404: components['responses']['404'] - 500: components['responses']['500'] - } - } - getAmuletConfigForRound: { - parameters: { - query: { - round: number + 'application/json': components['schemas']['GetUpdatesBeforeRequest'] } - header?: never - path?: never - cookie?: never } - requestBody?: never responses: { /** @description ok */ 200: { @@ -4901,13 +4692,13 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['GetAmuletConfigForRoundResponse'] + 'application/json': components['schemas']['GetUpdatesBeforeResponse'] } } 404: components['responses']['404'] } } - getRoundOfLatestData: { + getBackfillingStatus: { parameters: { query?: never header?: never @@ -4922,68 +4713,20 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['GetRoundOfLatestDataResponse'] + 'application/json': components['schemas']['GetBackfillingStatusResponse'] } } - 404: components['responses']['404'] } } - getRewardsCollected: { + getAcsSnapshot: { parameters: { query?: { - round?: number - } - header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetRewardsCollectedResponse'] - } - } - 404: components['responses']['404'] - } - } - getTopProvidersByAppRewards: { - parameters: { - query: { - round: number - limit: number + record_time?: string } header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetTopProvidersByAppRewardsResponse'] - } - } - 400: components['responses']['400'] - 404: components['responses']['404'] - } - } - getTopValidatorsByValidatorRewards: { - parameters: { - query: { - round: number - limit: number + path: { + party: string } - header?: never - path?: never cookie?: never } requestBody?: never @@ -4994,18 +4737,15 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['GetTopValidatorsByValidatorRewardsResponse'] + 'application/json': components['schemas']['GetAcsSnapshotResponse'] } } - 400: components['responses']['400'] - 404: components['responses']['404'] } } - getTopValidatorsByPurchasedTraffic: { + getAmuletConfigForRound: { parameters: { query: { round: number - limit: number } header?: never path?: never @@ -5019,37 +4759,10 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['GetTopValidatorsByPurchasedTrafficResponse'] - } - } - 400: components['responses']['400'] - 404: components['responses']['404'] - } - } - listActivity: { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - requestBody: { - content: { - 'application/json': components['schemas']['ListActivityRequest'] - } - } - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['ListActivityResponse'] + 'application/json': components['schemas']['GetAmuletConfigForRoundResponse'] } } 404: components['responses']['404'] - 500: components['responses']['500'] } } listTransactionHistory: { @@ -5298,7 +5011,6 @@ export interface operations { 'application/json': components['schemas']['GetRewardAccountingActivityTotalsResponse'] } } - 404: components['responses']['404'] } } getRewardAccountingRootHash: { @@ -5321,7 +5033,6 @@ export interface operations { 'application/json': components['schemas']['GetRewardAccountingRootHashResponse'] } } - 404: components['responses']['404'] } } getRewardAccountingBatch: { diff --git a/core/splice-client/src/generated-clients/validator-internal.ts b/core/splice-client/src/generated-clients/validator-internal.ts index edaca705b..57e8ea7e7 100644 --- a/core/splice-client/src/generated-clients/validator-internal.ts +++ b/core/splice-client/src/generated-clients/validator-internal.ts @@ -168,28 +168,6 @@ export interface paths { patch?: never trace?: never } - '/v0/admin/domain/data-snapshot': { - parameters: { - query?: never - header?: never - path?: never - cookie?: never - } - /** - * @description Returns a snapshot of the global synchronizer data for this validator. - * The snapshot includes a list of parties, the active contract set (ACS), and node identities. - * - * Use this endpoint if instructed to do so by an operational manual or support. - */ - get: operations['getValidatorDomainDataSnapshot'] - put?: never - post?: never - delete?: never - options?: never - head?: never - patch?: never - trace?: never - } '/v0/admin/transfer-preapprovals/by-party/{receiver-party}': { parameters: { query?: never @@ -668,6 +646,18 @@ export interface components { authorizedStoreSnapshot: string version?: string } + Contract: { + template_id: string + contract_id: string + payload: Record + created_event_blob: string + created_at: string + } + ContractWithState: { + contract: components['schemas']['Contract'] + domain_id?: string + } + ContractId: string ParticipantIdentityProvider: { id: string /** @default false */ @@ -706,18 +696,6 @@ export interface components { identityProviders: components['schemas']['ParticipantIdentityProvider'][] users: components['schemas']['ParticipantUser'][] } - Contract: { - template_id: string - contract_id: string - payload: Record - created_event_blob: string - created_at: string - } - ContractWithState: { - contract: components['schemas']['Contract'] - domain_id?: string - } - ContractId: string } responses: { /** @description bad request */ @@ -747,15 +725,6 @@ export interface components { 'application/json': components['schemas']['ErrorResponse'] } } - /** @description internal server error */ - 500: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['ErrorResponse'] - } - } /** @description not implemented */ 501: { headers: { @@ -972,43 +941,6 @@ export interface operations { } } } - getValidatorDomainDataSnapshot: { - parameters: { - query: { - /** - * @description The timestamp as of which the dump (in particular, the ACS) is valid. - * - * Must in the ISO-8601 format in UTC timezone, e.g., - * `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'`. - */ - timestamp: string - /** @description The current migration id. */ - migration_id?: number - /** - * @description If true, do not check whether the provided timestamp is clean. - * Not recommended for production, - * see the `ExportAcs` endpoint of the `ParticipantRepairService` participant gRPC API. - */ - force?: boolean - } - header?: never - path?: never - cookie?: never - } - requestBody?: never - responses: { - /** @description ok */ - 200: { - headers: { - [name: string]: unknown - } - content: { - 'application/json': components['schemas']['GetValidatorDomainDataSnapshotResponse'] - } - } - 500: components['responses']['500'] - } - } lookupTransferPreapprovalByParty: { parameters: { query?: never diff --git a/core/token-standard/src/generated-clients/splice-api-token-metadata-v1/token-metadata-v1.ts b/core/token-standard/src/generated-clients/splice-api-token-metadata-v1/token-metadata-v1.ts index 648b05e10..57bc9f051 100644 --- a/core/token-standard/src/generated-clients/splice-api-token-metadata-v1/token-metadata-v1.ts +++ b/core/token-standard/src/generated-clients/splice-api-token-metadata-v1/token-metadata-v1.ts @@ -93,7 +93,39 @@ export interface components { * @default 10 */ decimals: number + /** + * @description Indicates whether the instrument is currently paused. A paused instrument cannot be + * transferred or allocated. + * @default false + */ + paused: boolean + pauseInfo?: components['schemas']['PauseInfo'] supportedApis: components['schemas']['SupportedApis'] + /** + * @deprecated + * @description Informs wallets whether the instrument supports non-basic accounts + * and the wallet should thus show input fields for both the account + * provider and the account id in input forms for transfers and allocations. + * + * Note that wallets should always show non-null account providers and + * account ids when displaying transfers and allocations. + * + * This property is deprecated in favor of the more fine-grained + * `accountInputFieldsToShow` property. + * @default false + */ + showAccountInputFields: boolean + /** + * @description Fine-grained control for account input field display in wallets. + * + * If set, then wallets should only display the specified input + * field(s) in transfer and allocation input forms + * *independently* of the `showAccountInputFields` property. + * + * Note that wallets should always show non-null account providers and + * account ids when displaying transfers and allocations. + */ + accountInputFieldsToShow?: components['schemas']['AccountInputFieldsToShow'] } ListInstrumentsResponse: { instruments: components['schemas']['Instrument'][] @@ -110,6 +142,23 @@ export interface components { SupportedApis: { [key: string]: number } + /** @description Additional information about the instrument pause state. */ + PauseInfo: { + /** @description Why the instrument is paused. */ + reason?: string + /** + * Format: date-time + * @description Timestamp (exclusive) until which the instrument is paused, if known. + */ + until?: string + } + /** @description Which account input field(s) wallets should show in forms. */ + AccountInputFieldsToShow: components['schemas']['AccountInputFieldToShow'][] + /** + * @description Which single account input field wallets should show in forms. + * @enum {string} + */ + AccountInputFieldToShow: 'provider' | 'accountId' } responses: { /** @description bad request */ diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json index 6de02959b..990e359bd 100644 --- a/examples/test-token-v1-registry/package.json +++ b/examples/test-token-v1-registry/package.json @@ -17,8 +17,9 @@ } }, "scripts": { - "build": "tsup --onSuccess \"tsc\"", - "dev": "node --experimental-transform-types --watch src/index.ts", + "generate:types": "tsx ./src/common/generateTypes.ts", + "build": "yarn generate:types && tsup --onSuccess \"tsc\"", + "dev": "yarn generate:types && node --experimental-transform-types --watch src/index.ts", "clean": "tsc -b --clean; rm -rf dist", "flatpack": "yarn pack --out \"$FLATPACK_OUTDIR\"", "test": "vitest run --project node --project browser", @@ -26,10 +27,10 @@ }, "devDependencies": { "@types/koa": "^3", + "@types/lodash": "^4.17.24", "@types/node": "^25.9.3", "@vitest/browser-playwright": "^4.1.8", "@vitest/coverage-v8": "^4.1.8", - "openapi-typescript": "^7.13.0", "playwright": "^1.60.0", "tsup": "^8.5.1", "typescript": "^5.9.3", @@ -37,8 +38,11 @@ }, "dependencies": { "@canton-network/wallet-sdk": "workspace:^", - "@koa/router": "^15.7.0", - "koa": "^3.2.1" + "koa": "^3.2.1", + "lodash": "^4.18.1", + "openapi-backend": "^5.18.0", + "openapicmd": "^2.9.2", + "tsx": "^4.23.0" }, "files": [ "dist/**" diff --git a/examples/test-token-v1-registry/src/api/metadata/index.ts b/examples/test-token-v1-registry/src/api/metadata/index.ts new file mode 100644 index 000000000..9204e58d4 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/metadata/index.ts @@ -0,0 +1,21 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import OpenAPIBackend, { Context } from 'openapi-backend' +import { availableOpenAPIPaths } from '../../common/getOpenApiPath' +import { GetRegistryInfoResponse } from '../../openapi-ts/token-metadata-v1' + +const api = new OpenAPIBackend({ + definition: availableOpenAPIPaths['token-metadata-v1.yaml'], + handlers: { + getRegistryInfo(ctx: Context): GetRegistryInfoResponse { + console.log(ctx) + return { + adminId: '', + supportedApis: {}, + } + }, + }, +}) + +api.init() diff --git a/examples/test-token-v1-registry/src/common/generateTypes.ts b/examples/test-token-v1-registry/src/common/generateTypes.ts new file mode 100644 index 000000000..0b2865817 --- /dev/null +++ b/examples/test-token-v1-registry/src/common/generateTypes.ts @@ -0,0 +1,32 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { execSync } from 'node:child_process' +import { existsSync, mkdirSync } from 'node:fs' +import path, { basename } from 'node:path' +import { availableOpenAPIPaths } from './getOpenApiPath' + +const outDir = path.join(import.meta.dirname, '../openapi-ts') + +// Create dir if it doesn't exist +if (!existsSync(outDir)) { + mkdirSync(outDir, { recursive: true }) +} + +for (const file of Object.values(availableOpenAPIPaths)) { + const filename = basename(file).replace(/\.[^.]*$/, '.ts') + const outputFile = `${outDir}/${filename}` + + const command = `openapi typegen --backend ${file} > ${outputFile}` + + console.log(`Running command: ${command}`) + + try { + execSync(command) + console.log(`✓ Generated ${outputFile}`) + } catch (error) { + console.error(`✗ Failed to generate for ${file}:`, error) + } +} + +console.log('Done!') diff --git a/examples/test-token-v1-registry/src/common/getOpenApiPath.ts b/examples/test-token-v1-registry/src/common/getOpenApiPath.ts new file mode 100644 index 000000000..6c728089f --- /dev/null +++ b/examples/test-token-v1-registry/src/common/getOpenApiPath.ts @@ -0,0 +1,40 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { fileURLToPath } from 'node:url' +import { dirname, join } from 'node:path' +import versionConfig from '/Users/mpiatkowski/projects/wallet/scripts/src/lib/version-config.json' with { type: 'json' } + +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) + +type Network = 'mainnet' | 'devnet' + +export const availableOpenAPIs = [ + 'allocation-instruction-v1.yaml', + 'allocation-v1.yaml', + 'token-metadata-v1.yaml', + 'transfer-instruction-v1.yaml', +] as const + +export const availableOpenAPIPaths = Object.fromEntries( + availableOpenAPIs.map((apiFileName) => [ + apiFileName, + getOpenAPIPath(apiFileName), + ]) +) as Record< + (typeof availableOpenAPIs)[number], + ReturnType +> + +export function getOpenAPIPath( + specName: (typeof availableOpenAPIs)[number], + network: Network = 'devnet' +) { + const spliceVersion = + versionConfig.SUPPORTED_VERSIONS[network].splice.version + return join( + __dirname, + `../../../../api-specs/splice/${spliceVersion}/${specName}` + ) +} diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts index 5a8cfba0a..885a98fc9 100644 --- a/examples/test-token-v1-registry/src/index.ts +++ b/examples/test-token-v1-registry/src/index.ts @@ -2,8 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 import Koa from 'koa' -import router from './router' const app = new Koa() -app.use(router.routes()).use(router.allowedMethods()).listen(3000) +app.use((ctx) => { + console.log(ctx) +}).listen(3000) diff --git a/examples/test-token-v1-registry/src/openapi-ts/.gitignore b/examples/test-token-v1-registry/src/openapi-ts/.gitignore new file mode 100644 index 000000000..d6b7ef32c --- /dev/null +++ b/examples/test-token-v1-registry/src/openapi-ts/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts deleted file mode 100644 index 338909808..000000000 --- a/examples/test-token-v1-registry/src/router.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. -// SPDX-License-Identifier: Apache-2.0 - -import Router from '@koa/router' - -const router = new Router() - -router.get('/', (ctx, next) => { - console.log('TEST') - return next() -}) - -export default router diff --git a/examples/test-token-v1-registry/src/sdk.ts b/examples/test-token-v1-registry/src/sdk.ts index a188e40d5..2e2766689 100644 --- a/examples/test-token-v1-registry/src/sdk.ts +++ b/examples/test-token-v1-registry/src/sdk.ts @@ -1,20 +1,28 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { localNetStaticConfig, SDK } from '@canton-network/wallet-sdk' +import { + localNetStaticConfig, + SDK, + WalletSDKTestTokenPlugin, +} from '@canton-network/wallet-sdk' -const sdk = await SDK.create({ - auth: { - method: 'self_signed', - issuer: 'unsafe-auth', - credentials: { - clientId: localNetStaticConfig.LOCALNET_USER_ID, - clientSecret: 'unsafe', - audience: 'https://canton.network.global', - scope: '', +const sdk = ( + await SDK.create({ + auth: { + method: 'self_signed', + issuer: 'unsafe-auth', + credentials: { + clientId: localNetStaticConfig.LOCALNET_USER_ID, + clientSecret: 'unsafe', + audience: 'https://canton.network.global', + scope: '', + }, }, - }, - ledgerClientUrl: localNetStaticConfig.LOCALNET_APP_USER_LEDGER_URL, + ledgerClientUrl: localNetStaticConfig.LOCALNET_APP_USER_LEDGER_URL, + }) +).registerPlugins({ + testToken: WalletSDKTestTokenPlugin, }) export default sdk diff --git a/examples/test-token-v1-registry/tsconfig.json b/examples/test-token-v1-registry/tsconfig.json index 9cf98da56..2399b4444 100644 --- a/examples/test-token-v1-registry/tsconfig.json +++ b/examples/test-token-v1-registry/tsconfig.json @@ -2,7 +2,10 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": "./src", - "outDir": "./dist" + "outDir": "./dist", + "noUncheckedIndexedAccess": true, + "allowImportingTsExtensions": true, + "noEmit": true }, "include": ["src"] } diff --git a/scripts/src/lib/version-config.json b/scripts/src/lib/version-config.json index 6a3be400f..d8e7d9dc7 100644 --- a/scripts/src/lib/version-config.json +++ b/scripts/src/lib/version-config.json @@ -1,17 +1,17 @@ { - "DAML_RELEASE_VERSION": "3.4.11", + "DAML_RELEASE_VERSION": "3.5.8", "SUPPORTED_VERSIONS": { "devnet": { "canton": { - "version": "3.5.1-snapshot.20260423.18760.0.v0d74e51b", - "hash": "3debf0d5f3a79ea5e29ab682e31428f9f853a5236d56bf9bd1d3af45673a6ca7" + "version": "3.5.8", + "hash": "8146f793d1dc334f1ecfddcef82ed184b15742495e61186d84501acf63a1e0b8" }, "splice": { "version": "0.6.12", "hashes": { "localnet": "e15e8263156f4f220ce44046332830abf3f83f6f40c68a8152eaae5504ebcd73", - "splice": "a075448a786ce91b80079466ba8b8a71fa6d8d2d74864e47f328ddb552441af3", - "spliceSpec": "3968a0e4fbb77a6a643a59429bf5ecd6d88df1fbce31c58f5102c0a9924006e2" + "splice": "731fb559ab23529a671af500ebbac8a312428b27f07ae166db533fb346cca10e", + "spliceSpec": "7911768c48a24c0c40014835af821bbdf63ffca3a5c4c1aba78d1b29362784d5" } } }, diff --git a/sdk/wallet-sdk/src/plugins/__test__/testToken.test.ts b/sdk/wallet-sdk/src/plugins/__test__/testToken.test.ts index 25d1cb61d..601347661 100644 --- a/sdk/wallet-sdk/src/plugins/__test__/testToken.test.ts +++ b/sdk/wallet-sdk/src/plugins/__test__/testToken.test.ts @@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import * as mock from '../../wallet/__test__/mocks' -import WalletSDKTestTokenPlugin from '../testToken' +import { WalletSDKTestTokenPlugin } from '../testToken' import { Holding, Transfer, diff --git a/sdk/wallet-sdk/src/plugins/testToken.ts b/sdk/wallet-sdk/src/plugins/testToken.ts index 5d820ea69..121475d75 100644 --- a/sdk/wallet-sdk/src/plugins/testToken.ts +++ b/sdk/wallet-sdk/src/plugins/testToken.ts @@ -14,7 +14,7 @@ import { SDKContext, SDKPlugin } from '../wallet' import { WrappedCommand } from '@/wallet/namespace/ledger' import { PartyId } from '@canton-network/core-types' -export default class WalletSDKTestTokenPlugin extends SDKPlugin { +export class WalletSDKTestTokenPlugin extends SDKPlugin { constructor(protected readonly ctx: SDKContext) { super('testToken', ctx) } diff --git a/yarn.lock b/yarn.lock index 993c71521..3cdcb9505 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,6 +19,78 @@ __metadata: languageName: node linkType: hard +"@anttiviljami/dtsgenerator@npm:^3.20.0": + version: 3.20.0 + resolution: "@anttiviljami/dtsgenerator@npm:3.20.0" + dependencies: + commander: "npm:^11.1.0" + cross-fetch: "npm:^4.0.0" + debug: "npm:^4.3.4" + glob: "npm:^10.3.10" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.2" + js-yaml: "npm:^4.1.0" + tslib: "npm:^2.6.2" + typescript: "npm:^5.2.2" + bin: + dtsgen: bin/dtsgen + checksum: 10c0/f697943da974c94e77d919e502e08591d9c583e230c8c435220e321598514459f7e63927b5d685b657e4b15167ff2716e31589e87d06202f0c29c465ccc5f62c + languageName: node + linkType: hard + +"@apidevtools/json-schema-ref-parser@npm:11.7.2": + version: 11.7.2 + resolution: "@apidevtools/json-schema-ref-parser@npm:11.7.2" + dependencies: + "@jsdevtools/ono": "npm:^7.1.3" + "@types/json-schema": "npm:^7.0.15" + js-yaml: "npm:^4.1.0" + checksum: 10c0/90dd8e60e25ccfe5c7de2453de893d5f5bb7c6cabcce028edf0678a119f0e433f422d730aa14fd718542e80fa7b3acf40923d69dc8e9f6c25603842b76ad2f16 + languageName: node + linkType: hard + +"@apidevtools/json-schema-ref-parser@npm:^11.1.0": + version: 11.9.3 + resolution: "@apidevtools/json-schema-ref-parser@npm:11.9.3" + dependencies: + "@jsdevtools/ono": "npm:^7.1.3" + "@types/json-schema": "npm:^7.0.15" + js-yaml: "npm:^4.1.0" + checksum: 10c0/5745813b3d964279f387677b7a903ba6634cdeaf879ff3a331a694392cbc923763f398506df190be114f2574b8b570baab3e367c2194bb35f50147ff6cf27d7a + languageName: node + linkType: hard + +"@apidevtools/openapi-schemas@npm:^2.1.0": + version: 2.1.0 + resolution: "@apidevtools/openapi-schemas@npm:2.1.0" + checksum: 10c0/f4aa0f9df32e474d166c84ef91bceb18fa1c4f44b5593879529154ef340846811ea57dc2921560f157f692262827d28d988dd6e19fb21f00320e9961964176b4 + languageName: node + linkType: hard + +"@apidevtools/swagger-methods@npm:^3.0.2": + version: 3.0.2 + resolution: "@apidevtools/swagger-methods@npm:3.0.2" + checksum: 10c0/8c390e8e50c0be7787ba0ba4c3758488bde7c66c2d995209b4b48c1f8bc988faf393cbb24a4bd1cd2d42ce5167c26538e8adea5c85eb922761b927e4dab9fa1c + languageName: node + linkType: hard + +"@apidevtools/swagger-parser@npm:^10.1.0": + version: 10.1.1 + resolution: "@apidevtools/swagger-parser@npm:10.1.1" + dependencies: + "@apidevtools/json-schema-ref-parser": "npm:11.7.2" + "@apidevtools/openapi-schemas": "npm:^2.1.0" + "@apidevtools/swagger-methods": "npm:^3.0.2" + "@jsdevtools/ono": "npm:^7.1.3" + ajv: "npm:^8.17.1" + ajv-draft-04: "npm:^1.0.0" + call-me-maybe: "npm:^1.0.2" + peerDependencies: + openapi-types: ">=7" + checksum: 10c0/21be668c64311d54579ef06e71b6d5640df032f4cdd959dfde93210f26128cbe3c84eb29ead1895c93af703cd4f2fd7efae31dd316549f1f9d29293c78b0ccd4 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" @@ -30,6 +102,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/code-frame@npm:7.29.7" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.29.7" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/169fc2080169a40c1760155eaaaf739bcb882df0bec76a83adbda5493645bc17270a3434b8848c494b1933e96fe1d147370001e3cda09a39f43ae30f08ef2069 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.28.6, @babel/compat-data@npm:^7.29.0": version: 7.29.0 resolution: "@babel/compat-data@npm:7.29.0" @@ -37,6 +120,36 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/compat-data@npm:7.29.7" + checksum: 10c0/47913f05e08a45a1c9df38c02b4b49e391005085b489432647a1abe112e5d9c75e3be8ea5972b7f6da4ec5d1339922ceb9ea02b8a25d4ed1cb8636e5261f344e + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": + version: 7.29.7 + resolution: "@babel/core@npm:7.29.7" + dependencies: + "@babel/code-frame": "npm:^7.29.7" + "@babel/generator": "npm:^7.29.7" + "@babel/helper-compilation-targets": "npm:^7.29.7" + "@babel/helper-module-transforms": "npm:^7.29.7" + "@babel/helpers": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.7" + "@babel/template": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + "@jridgewell/remapping": "npm:^2.3.5" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/112fb09c24de7a1de64d1de2c31fe65c4e6af4cb2fb6e6d99ea5373e6fc51e75b88581c0efae4c4c68f119a02a988c7106e95011a41530a2fb8ed793c7eaa07b + languageName: node + linkType: hard + "@babel/core@npm:^7.23.2, @babel/core@npm:^7.23.7, @babel/core@npm:^7.24.4, @babel/core@npm:^7.28.4, @babel/core@npm:^7.28.5, @babel/core@npm:^7.29.0": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" @@ -73,6 +186,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": + version: 7.29.7 + resolution: "@babel/generator@npm:7.29.7" + dependencies: + "@babel/parser": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" @@ -95,6 +221,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-compilation-targets@npm:7.29.7" + dependencies: + "@babel/compat-data": "npm:^7.29.7" + "@babel/helper-validator-option": "npm:^7.29.7" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/4c15fd4c69a0a7047799a28a88460c19cede0a0ee8af994ea169114986f4af48b92c7393a4a3fee0456c11a656eece3448a6ed06354453d6c27cccf17195453b + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" @@ -147,6 +286,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-globals@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-globals@npm:7.29.7" + checksum: 10c0/f38417c40b1129a1b2b519ca961b9040c8827d1444fd74068702286b91b77089431dc76b6b9d5c1496e5da2a4f3ad329c6946e688ba3fa0d1d0b3d2b4f34f36a + languageName: node + linkType: hard + "@babel/helper-member-expression-to-functions@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-member-expression-to-functions@npm:7.28.5" @@ -167,6 +313,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-imports@npm:7.29.7" + dependencies: + "@babel/traverse": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/6adf60d97356027413342a092f818d9678c4f5caff716a33e3284b5ae14e47a9e88059d421dde4ee4894691260039a12602c0e7becadc175602194b40dfa345d + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" @@ -180,6 +336,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-transforms@npm:7.29.7" + dependencies: + "@babel/helper-module-imports": "npm:^7.29.7" + "@babel/helper-validator-identifier": "npm:^7.29.7" + "@babel/traverse": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ee5a2172c24a42be696836f4b0d947489c9729d8adf5821885cf77d1ad5333e3c447368e9a71f67df1099570490553dccf9f888ef0a92a48aa63cb086bd8c7e1 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" @@ -196,6 +365,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.29.7, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.29.7 + resolution: "@babel/helper-plugin-utils@npm:7.29.7" + checksum: 10c0/380477a06133274a2759f9355929cb60a95e8b8fee624a1ae1fa349e1d1645b89daca456f72833f6d1062bffa12ee4271c5bf0cc5a61c0166cdc24c7591e2408 + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" @@ -239,6 +415,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-string-parser@npm:7.29.7" + checksum: 10c0/194bc0f1716e396d5ffde56ad6119745fb9557662c98611590e5e454906783a4ccb21ce93056b8eb69a4909044834e45d96e50ac695bbe9e3221648fe033c06c + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-validator-identifier@npm:7.28.5" @@ -246,6 +429,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-validator-identifier@npm:7.29.7" + checksum: 10c0/4795354e7ae0dcafa72de1cd04ec51252dc1498517170beaf019e03effc5b7bf13c6b21a3949a77e07b8125be7f106ed1131350d8ebd4566ae874094a726d62b + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-validator-option@npm:7.27.1" @@ -253,6 +443,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-validator-option@npm:7.29.7" + checksum: 10c0/d2a06c6d0ac40ba4a2f219fc2cab249c7a94bacdb2686273b7f9598571c908809b48468ff588915a346e6cc7296f60b581023d1d498b747fed06f779d335c2cc + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.27.1": version: 7.28.6 resolution: "@babel/helper-wrap-function@npm:7.28.6" @@ -274,6 +471,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helpers@npm:7.29.7" + dependencies: + "@babel/template": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/218e8d10953647c9f44775f5a022b227a182674853b5ea8631889deb7e1a3e4bc870388aaecf59bb8bd92a87f9a96220ed3f70a35bffec6bcf9169ecb67891ac + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.4, @babel/parser@npm:^7.28.5, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.0 resolution: "@babel/parser@npm:7.29.0" @@ -285,6 +492,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.14.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/parser@npm:7.29.7" + dependencies: + "@babel/types": "npm:^7.29.7" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/65133038f80b54a714d6027cb77cee3f9a6b5c4c6842ce674301e13947cbcbfa8055e63acaf1b84c085d34226a14425b2c2b97b829e0e226d2e8f1299942a51d + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.28.5" @@ -366,6 +584,50 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + "@babel/plugin-syntax-decorators@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-decorators@npm:7.28.6" @@ -388,6 +650,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.29.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b9a47e869d8c06676297069895ae34e2bd244ec4c3bdf15002f1e69aed32eef0361044af22a43f271b8de5e23a40534fe6a74a63e7ab98e3d60a74b322444b49 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-attributes@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-syntax-import-attributes@npm:7.28.6" @@ -399,6 +672,28 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + "@babel/plugin-syntax-jsx@npm:^7.27.1": version: 7.28.6 resolution: "@babel/plugin-syntax-jsx@npm:7.28.6" @@ -410,6 +705,105 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.29.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1736000de183538ba8eef34520105508860e48b0c763254ba9158af5e814ed8bbceeedbb4281fbda33de787ae5b3870e92f60c6ae7131e7d322e451d57387896 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + "@babel/plugin-syntax-typescript@npm:^7.28.6, @babel/plugin-syntax-typescript@npm:^7.3.3": version: 7.28.6 resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" @@ -421,6 +815,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.29.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.29.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c49883b0327e8683b770dc823205af5c697da216e590dcf5bf53f3f031e7e381de450b164f8f99853f0837a3de5cb793298e2be6697a0f6e452bb9dd34b5165e + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1227,6 +1632,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.29.7, @babel/template@npm:^7.3.3": + version: 7.29.7 + resolution: "@babel/template@npm:7.29.7" + dependencies: + "@babel/code-frame": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + checksum: 10c0/8bb7f900dcab0e9e1c5ffbc33ca10e0d26b7b2e2ca804becb73ee771b9c4ed6e2908a4ae4a14c08560febb45d2b6b9a173955e42ad404d05f8b04840a14d9c58 + languageName: node + linkType: hard + "@babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.23.7, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 resolution: "@babel/traverse@npm:7.29.0" @@ -1242,6 +1658,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/traverse@npm:7.29.7" + dependencies: + "@babel/code-frame": "npm:^7.29.7" + "@babel/generator": "npm:^7.29.7" + "@babel/helper-globals": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.7" + "@babel/template": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" + debug: "npm:^4.3.1" + checksum: 10c0/e256a1fbdb956555b76f3c285b1e453f6bedec8b3afb61751d99d933efd11c7d79caf5ddf2493570058a9f7deaa1b48324380d7c1aa1443fd9508becbf56331a + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.23.6, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0, @babel/types@npm:^7.4.4": version: 7.29.0 resolution: "@babel/types@npm:7.29.0" @@ -1252,6 +1683,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.29.7, @babel/types@npm:^7.3.3": + version: 7.29.7 + resolution: "@babel/types@npm:7.29.7" + dependencies: + "@babel/helper-string-parser": "npm:^7.29.7" + "@babel/helper-validator-identifier": "npm:^7.29.7" + checksum: 10c0/b6623994c69717fa27294f5fa46d59140338e2d86c6c1c13085c84ef7d53086ee357fbf4fe9abe3dd3da75734dc77c4c0df2f90fb29e667558bb3b3fb705e88f + languageName: node + linkType: hard + "@balena/dockerignore@npm:^1.0.2": version: 1.0.2 resolution: "@balena/dockerignore@npm:1.0.2" @@ -1259,6 +1700,13 @@ __metadata: languageName: node linkType: hard +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^1.0.2": version: 1.0.2 resolution: "@bcoe/v8-coverage@npm:1.0.2" @@ -2162,15 +2610,18 @@ __metadata: resolution: "@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry" dependencies: "@canton-network/wallet-sdk": "workspace:^" - "@koa/router": "npm:^15.7.0" "@types/koa": "npm:^3" + "@types/lodash": "npm:^4.17.24" "@types/node": "npm:^25.9.3" "@vitest/browser-playwright": "npm:^4.1.8" "@vitest/coverage-v8": "npm:^4.1.8" koa: "npm:^3.2.1" - openapi-typescript: "npm:^7.13.0" + lodash: "npm:^4.18.1" + openapi-backend: "npm:^5.18.0" + openapicmd: "npm:^2.9.2" playwright: "npm:^1.60.0" tsup: "npm:^8.5.1" + tsx: "npm:^4.23.0" typescript: "npm:^5.9.3" vitest: "npm:^4.1.8" languageName: unknown @@ -3456,6 +3907,13 @@ __metadata: languageName: node linkType: hard +"@exodus/schemasafe@npm:^1.0.0-rc.2": + version: 1.3.0 + resolution: "@exodus/schemasafe@npm:1.3.0" + checksum: 10c0/e19397c14db76342154c32a9088536149babfd9b18ecae815add0b2f911d9aa292aa51c6ab33b857b4b6bb371a74ebde845e6f17b2824e73b4e307230f23f86a + languageName: node + linkType: hard + "@fireblocks/ts-sdk@npm:^13.0.0": version: 13.0.0 resolution: "@fireblocks/ts-sdk@npm:13.0.0" @@ -3498,6 +3956,13 @@ __metadata: languageName: node linkType: hard +"@gar/promise-retry@npm:^1.0.2": + version: 1.0.3 + resolution: "@gar/promise-retry@npm:1.0.3" + checksum: 10c0/885b02c8b0d75b2d215da25f3b639158c4fbe8fefe0d79163304534b9a6d0710db4b7699f7cd3cc1a730792bff04cbe19f4850a62d3e105a663eaeec88f38332 + languageName: node + linkType: hard + "@gerrit0/mini-shiki@npm:^3.23.0": version: 3.23.0 resolution: "@gerrit0/mini-shiki@npm:3.23.0" @@ -3549,6 +4014,13 @@ __metadata: languageName: node linkType: hard +"@hapi/bourne@npm:^3.0.0": + version: 3.0.0 + resolution: "@hapi/bourne@npm:3.0.0" + checksum: 10c0/2e2df62f6bc6f32b980ba5bbdc09200c93c55c8306399ec0f2781da088a82aab699498c89fe94fec4acf770210f9aee28c75bfc2f04044849ac01b034134e717 + languageName: node + linkType: hard + "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -4262,13 +4734,270 @@ __metadata: languageName: node linkType: hard -"@jest/diff-sequences@npm:30.0.1": +"@isaacs/string-locale-compare@npm:^1.1.0": + version: 1.1.0 + resolution: "@isaacs/string-locale-compare@npm:1.1.0" + checksum: 10c0/d67226ff7ac544a495c77df38187e69e0e3a0783724777f86caadafb306e2155dc3b5787d5927916ddd7fb4a53561ac8f705448ac3235d18ea60da5854829fdf + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.6 + resolution: "@istanbuljs/schema@npm:0.1.6" + checksum: 10c0/bb0d370bf3dd454d2f37f1bccb8921e2da99adacef2da56ef47850e25d7a4de69cf639ead8c189755aef38921369024b4afea3535a5c2ac9082b3e1171bcbc3a + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + languageName: node + linkType: hard + +"@jest/diff-sequences@npm:30.0.1": version: 30.0.1 resolution: "@jest/diff-sequences@npm:30.0.1" checksum: 10c0/3a840404e6021725ef7f86b11f7b2d13dd02846481264db0e447ee33b7ee992134e402cdc8b8b0ac969d37c6c0183044e382dedee72001cdf50cfb3c8088de74 languageName: node linkType: hard +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.13 resolution: "@jridgewell/gen-mapping@npm:0.3.13" @@ -4313,7 +5042,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": version: 0.3.31 resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: @@ -4330,6 +5059,13 @@ __metadata: languageName: node linkType: hard +"@jsdevtools/ono@npm:^7.1.3": + version: 7.1.3 + resolution: "@jsdevtools/ono@npm:7.1.3" + checksum: 10c0/a9f7e3e8e3bc315a34959934a5e2f874c423cf4eae64377d3fc9de0400ed9f36cb5fd5ebce3300d2e8f4085f557c4a8b591427a583729a87841fda46e6c216b9 + languageName: node + linkType: hard + "@jsep-plugin/assignment@npm:^1.3.0": version: 1.3.0 resolution: "@jsep-plugin/assignment@npm:1.3.0" @@ -4423,20 +5159,12 @@ __metadata: languageName: node linkType: hard -"@koa/router@npm:^15.7.0": - version: 15.7.0 - resolution: "@koa/router@npm:15.7.0" +"@koa/cors@npm:^5.0.0": + version: 5.0.0 + resolution: "@koa/cors@npm:5.0.0" dependencies: - debug: "npm:^4.4.3" - http-errors: "npm:^2.0.1" - koa-compose: "npm:^4.1.0" - path-to-regexp: "npm:^8.4.2" - peerDependencies: - koa: ^2.0.0 || ^3.0.0 - peerDependenciesMeta: - koa: - optional: false - checksum: 10c0/da1f23f07684f5b39db5536cd6d4b77f7e38930786c2c0c13cf27d84ab90b6c9eea5ecf17f8f4c1b87ccc822a874f64c351b6e9b4c2e6c9324765564fce689cb + vary: "npm:^1.1.2" + checksum: 10c0/49e5f3b861590bd81aa3663a2f0658234a9b378840bb54a2947b3c5f2067f9d966b6fa2e9049fdc7c74c787456d1885bacd0b7ee1f134274d28282c7df99c3fd languageName: node linkType: hard @@ -5131,6 +5859,33 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + "@npmcli/agent@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/agent@npm:4.0.0" @@ -5144,6 +5899,66 @@ __metadata: languageName: node linkType: hard +"@npmcli/arborist@npm:^9.9.0": + version: 9.9.0 + resolution: "@npmcli/arborist@npm:9.9.0" + dependencies: + "@gar/promise-retry": "npm:^1.0.0" + "@isaacs/string-locale-compare": "npm:^1.1.0" + "@npmcli/fs": "npm:^5.0.0" + "@npmcli/installed-package-contents": "npm:^4.0.0" + "@npmcli/map-workspaces": "npm:^5.0.0" + "@npmcli/metavuln-calculator": "npm:^9.0.2" + "@npmcli/name-from-folder": "npm:^4.0.0" + "@npmcli/node-gyp": "npm:^5.0.0" + "@npmcli/package-json": "npm:^7.0.0" + "@npmcli/query": "npm:^5.0.0" + "@npmcli/redact": "npm:^4.0.0" + "@npmcli/run-script": "npm:^10.0.0" + bin-links: "npm:^6.0.0" + cacache: "npm:^20.0.1" + common-ancestor-path: "npm:^2.0.0" + hosted-git-info: "npm:^9.0.0" + json-stringify-nice: "npm:^1.1.4" + lru-cache: "npm:^11.2.1" + minimatch: "npm:^10.0.3" + nopt: "npm:^9.0.0" + npm-install-checks: "npm:^8.0.0" + npm-package-arg: "npm:^13.0.0" + npm-pick-manifest: "npm:^11.0.1" + npm-registry-fetch: "npm:^19.0.0" + pacote: "npm:^21.0.2" + parse-conflict-json: "npm:^5.0.1" + proc-log: "npm:^6.0.0" + proggy: "npm:^4.0.0" + promise-all-reject-late: "npm:^1.0.0" + promise-call-limit: "npm:^3.0.1" + semver: "npm:^7.3.7" + ssri: "npm:^13.0.0" + treeverse: "npm:^3.0.0" + walk-up-path: "npm:^4.0.0" + bin: + arborist: bin/index.js + checksum: 10c0/789b2e0bed19ad0c6729bcbd5e7315954459663204bbbf072f18c4bf84640c798006c7c49729f570d66fe443de759f3eb0957bd43e11e405a34d9d32fdc415b1 + languageName: node + linkType: hard + +"@npmcli/config@npm:^10.12.0": + version: 10.12.0 + resolution: "@npmcli/config@npm:10.12.0" + dependencies: + "@npmcli/map-workspaces": "npm:^5.0.0" + "@npmcli/package-json": "npm:^7.0.0" + ci-info: "npm:^4.0.0" + ini: "npm:^6.0.0" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + walk-up-path: "npm:^4.0.0" + checksum: 10c0/486bea93f4acaffb60376852fce43a50db445695a8e913802805709aae057134f998900c011f4fee34ff2a7505b7cf91156cc8ac85ed24c12bde373c20fd033f + languageName: node + linkType: hard + "@npmcli/fs@npm:^5.0.0": version: 5.0.0 resolution: "@npmcli/fs@npm:5.0.0" @@ -5153,6 +5968,126 @@ __metadata: languageName: node linkType: hard +"@npmcli/git@npm:^7.0.0": + version: 7.0.2 + resolution: "@npmcli/git@npm:7.0.2" + dependencies: + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/promise-spawn": "npm:^9.0.0" + ini: "npm:^6.0.0" + lru-cache: "npm:^11.2.1" + npm-pick-manifest: "npm:^11.0.1" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + which: "npm:^6.0.0" + checksum: 10c0/1936471c3188aa470d0c0dd4d49724bf144e381d122252d001475d69a96cd9de950936f55fec8c6a673a47cf607b11a662fc8b8a45c67d5c37c795b07d2be8e9 + languageName: node + linkType: hard + +"@npmcli/installed-package-contents@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/installed-package-contents@npm:4.0.0" + dependencies: + npm-bundled: "npm:^5.0.0" + npm-normalize-package-bin: "npm:^5.0.0" + bin: + installed-package-contents: bin/index.js + checksum: 10c0/297f32afc350e92c85981c1c793358af19e63c64d090f4e09997393fa2471f92da52317cb551356dc13594f2bdfad32d02c78bc2c664e2b7e0109d0d8713b39e + languageName: node + linkType: hard + +"@npmcli/map-workspaces@npm:^5.0.0, @npmcli/map-workspaces@npm:^5.0.3": + version: 5.0.3 + resolution: "@npmcli/map-workspaces@npm:5.0.3" + dependencies: + "@npmcli/name-from-folder": "npm:^4.0.0" + "@npmcli/package-json": "npm:^7.0.0" + glob: "npm:^13.0.0" + minimatch: "npm:^10.0.3" + checksum: 10c0/975c3f94f9bc9e646b28ddabea2eebd11e6528241f7f7621cdfc083311c91b608a7b9647797e07a18bb8ce775e54a80d361800fffa3ced22803c5140f0a50553 + languageName: node + linkType: hard + +"@npmcli/metavuln-calculator@npm:^9.0.2, @npmcli/metavuln-calculator@npm:^9.0.3": + version: 9.0.3 + resolution: "@npmcli/metavuln-calculator@npm:9.0.3" + dependencies: + cacache: "npm:^20.0.0" + json-parse-even-better-errors: "npm:^5.0.0" + pacote: "npm:^21.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + checksum: 10c0/cc5905788b0dbd2372beff690566ed917be8643b8c24352e669339f6ee66a6edf4a82ba22c7b88b8fa0c52589556c6aa4613a47825ab3727caee6ae8451ab09a + languageName: node + linkType: hard + +"@npmcli/name-from-folder@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/name-from-folder@npm:4.0.0" + checksum: 10c0/edaeb4a4098f920e373cddd7f765347f1013e3a84e1cdb16da4b83144bc377fe7cd4fa37562596a53a9e46dfca381c2b8706c2661014921bc1bf710303dff713 + languageName: node + linkType: hard + +"@npmcli/node-gyp@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/node-gyp@npm:5.0.0" + checksum: 10c0/dc78219a848a30d26d46cd174816bdf21936aaee15469888cbd04433981ef866b35611275a1f94a31d68ea60cc18747d0d02430e4ce59f8a5c2423ec35b1bbed + languageName: node + linkType: hard + +"@npmcli/package-json@npm:^7.0.0, @npmcli/package-json@npm:^7.0.5": + version: 7.0.5 + resolution: "@npmcli/package-json@npm:7.0.5" + dependencies: + "@npmcli/git": "npm:^7.0.0" + glob: "npm:^13.0.0" + hosted-git-info: "npm:^9.0.0" + json-parse-even-better-errors: "npm:^5.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.5.3" + spdx-expression-parse: "npm:^4.0.0" + checksum: 10c0/4a04af494cd7273d4a5e930f53f30217dad389c7eaeb4de667aca84be27e668ebd8b16a6923ce58dc3090030f9126885b4cfc790517050acf179d0d9e0ca6de1 + languageName: node + linkType: hard + +"@npmcli/promise-spawn@npm:^9.0.0, @npmcli/promise-spawn@npm:^9.0.1": + version: 9.0.1 + resolution: "@npmcli/promise-spawn@npm:9.0.1" + dependencies: + which: "npm:^6.0.0" + checksum: 10c0/361872192934bda684f590f140a2edd68add90d5936ca9a2e8792435447847adb59e249d5976950e20bbf213898c04da1b51b62fbc8f258b2fa8601af37fa0e2 + languageName: node + linkType: hard + +"@npmcli/query@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/query@npm:5.0.0" + dependencies: + postcss-selector-parser: "npm:^7.0.0" + checksum: 10c0/7512163d7035af44e3db58f86911e6ba26a17c21e3f065039181b0f94b0ef7de6faa1ac3ce437b4c017eaefd71bcaae3a0768090e6d2dc154ad6306a940232d0 + languageName: node + linkType: hard + +"@npmcli/redact@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/redact@npm:4.0.0" + checksum: 10c0/a1e9ba9c70a6b40e175bda2c3dd8cfdaf096e6b7f7a132c855c083c8dfe545c3237cd56702e2e6627a580b1d63373599d49a1192c4078a85bf47bbde824df31c + languageName: node + linkType: hard + +"@npmcli/run-script@npm:^10.0.0, @npmcli/run-script@npm:^10.0.4": + version: 10.0.4 + resolution: "@npmcli/run-script@npm:10.0.4" + dependencies: + "@npmcli/node-gyp": "npm:^5.0.0" + "@npmcli/package-json": "npm:^7.0.0" + "@npmcli/promise-spawn": "npm:^9.0.0" + node-gyp: "npm:^12.1.0" + proc-log: "npm:^6.0.0" + checksum: 10c0/4d65682491ce7462c6a16a3d20511f70074a0ab384e4e08786ff6c2df9630ad29caa564b5ace49ec3ba5a7f483dfbd13168da903c433a48e59c73189306b1a2f + languageName: node + linkType: hard + "@nx/cypress@npm:22.7.5": version: 22.7.5 resolution: "@nx/cypress@npm:22.7.5" @@ -5437,60 +6372,293 @@ __metadata: languageName: node linkType: hard -"@open-rpc/examples@npm:^1.7.2": - version: 1.7.2 - resolution: "@open-rpc/examples@npm:1.7.2" - checksum: 10c0/176a96a6eab15ccf0d15b4c565a6343e1f9b9b650fb483f38536e2aadd8c730042f452f1c032f7bb7d10391394cb7ee46596b0c5319b923112561c5da53e5fe8 +"@oclif/command@npm:^1.8.36": + version: 1.8.36 + resolution: "@oclif/command@npm:1.8.36" + dependencies: + "@oclif/config": "npm:^1.18.2" + "@oclif/errors": "npm:^1.3.6" + "@oclif/help": "npm:^1.0.1" + "@oclif/parser": "npm:^3.8.17" + debug: "npm:^4.1.1" + semver: "npm:^7.5.4" + peerDependencies: + "@oclif/config": ^1 + checksum: 10c0/5513d9b3ab3ed9a46a525db1dd42ee8a580fc70324fd6416ed4c4f2d7c046c874684b991a808236c1f2b2c7291bc63addc0a14a7df4a1d166f4944f4de59b657 languageName: node linkType: hard -"@open-rpc/generator@npm:^2.1.1": - version: 2.1.1 - resolution: "@open-rpc/generator@npm:2.1.1" +"@oclif/config@npm:1.18.16": + version: 1.18.16 + resolution: "@oclif/config@npm:1.18.16" dependencies: - "@iarna/toml": "npm:^2.2.5" - "@open-rpc/typings": "npm:1.13.0" - commander: "npm:^7.2.0" - fs-extra: "npm:^11.2.0" - inquirer: "npm:^12.4.2" - lodash: "npm:^4.17.21" - bin: - open-rpc-generator: build/cli.js - checksum: 10c0/c7181f40cda5e9e267e1ea0f017023c2712f13bfda71faa60536f375544d59f17ab5a84131aff326613abd6b446b5f176826a2e4b02e2df295bcc43898489c1d + "@oclif/errors": "npm:^1.3.6" + "@oclif/parser": "npm:^3.8.16" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-wsl: "npm:^2.1.1" + tslib: "npm:^2.6.1" + checksum: 10c0/65300cd8bf90fefe250dac57de3c07e79601542d76f5a59d602c226945a7b2edfe4b42bf25a84f44432f444d1b0e41a7ca5b244c3cb28d5ee88fe68b8c16e74d languageName: node linkType: hard -"@open-rpc/meta-schema@npm:^1.14.9": - version: 1.14.9 - resolution: "@open-rpc/meta-schema@npm:1.14.9" - checksum: 10c0/1604f1e698376ddc6e1be820339c4d0bc16cce072373205ad4142e3969f891d6c7d8c2f6da0e1758833d00ea89df70dfb15338906c41e12caac9a53c5502a25f +"@oclif/config@npm:^1.18.17, @oclif/config@npm:^1.18.2": + version: 1.18.17 + resolution: "@oclif/config@npm:1.18.17" + dependencies: + "@oclif/errors": "npm:^1.3.6" + "@oclif/parser": "npm:^3.8.17" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-wsl: "npm:^2.1.1" + tslib: "npm:^2.6.1" + checksum: 10c0/6f261d9eb07e3a0f5c493eb929231787bbe6f99f68e6a7c84e68f60a58c5c5f31a03d0a593b0a74c9a6611be1f2e40ae4dcdaa2c4d231fefa096ade0cc5b4089 languageName: node linkType: hard -"@open-rpc/mock-server@npm:^1.7.8": - version: 1.7.8 - resolution: "@open-rpc/mock-server@npm:1.7.8" +"@oclif/core@npm:^1.1.1": + version: 1.26.2 + resolution: "@oclif/core@npm:1.26.2" dependencies: - "@open-rpc/examples": "npm:^1.7.2" - "@open-rpc/schema-utils-js": "npm:^2.0.2" - "@open-rpc/server-js": "npm:^1.9.5" - commander: "npm:^6.1.0" - lodash: "npm:^4.17.19" - bin: - open-rpc-mock-server: build/cli.js - checksum: 10c0/dc175643e3a3c6f23178f698ca375c8ef2056ab7d3a402515e3d4fb5adf72b1650e37eb20d5c27bc6f30a4cf0c1955fe46006ea25c05b1438c7bc3092681c54c + "@oclif/linewrap": "npm:^1.0.0" + "@oclif/screen": "npm:^3.0.4" + ansi-escapes: "npm:^4.3.2" + ansi-styles: "npm:^4.3.0" + cardinal: "npm:^2.1.1" + chalk: "npm:^4.1.2" + clean-stack: "npm:^3.0.1" + cli-progress: "npm:^3.10.0" + debug: "npm:^4.3.4" + ejs: "npm:^3.1.6" + fs-extra: "npm:^9.1.0" + get-package-type: "npm:^0.1.0" + globby: "npm:^11.1.0" + hyperlinker: "npm:^1.0.0" + indent-string: "npm:^4.0.0" + is-wsl: "npm:^2.2.0" + js-yaml: "npm:^3.14.1" + natural-orderby: "npm:^2.0.3" + object-treeify: "npm:^1.1.33" + password-prompt: "npm:^1.1.2" + semver: "npm:^7.3.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + supports-color: "npm:^8.1.1" + supports-hyperlinks: "npm:^2.2.0" + tslib: "npm:^2.4.1" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/9affbfba7bd4c825df9a1c3f48f2e48152c64201565efd447261db0cdff6be269946267cc79ca95301f08c9a75a1108ba4c58e29ee417e3609ee8be24229a005 languageName: node linkType: hard -"@open-rpc/schema-utils-js@npm:2.0.2": - version: 2.0.2 - resolution: "@open-rpc/schema-utils-js@npm:2.0.2" +"@oclif/core@npm:^3": + version: 3.27.0 + resolution: "@oclif/core@npm:3.27.0" dependencies: - "@json-schema-tools/dereferencer": "npm:^1.6.3" - "@json-schema-tools/meta-schema": "npm:^1.7.5" - "@json-schema-tools/reference-resolver": "npm:^1.2.6" - "@open-rpc/meta-schema": "npm:^1.14.9" - ajv: "npm:^6.10.0" + "@types/cli-progress": "npm:^3.11.5" + ansi-escapes: "npm:^4.3.2" + ansi-styles: "npm:^4.3.0" + cardinal: "npm:^2.1.1" + chalk: "npm:^4.1.2" + clean-stack: "npm:^3.0.1" + cli-progress: "npm:^3.12.0" + color: "npm:^4.2.3" + debug: "npm:^4.3.5" + ejs: "npm:^3.1.10" + get-package-type: "npm:^0.1.0" + globby: "npm:^11.1.0" + hyperlinker: "npm:^1.0.0" + indent-string: "npm:^4.0.0" + is-wsl: "npm:^2.2.0" + js-yaml: "npm:^3.14.1" + minimatch: "npm:^9.0.4" + natural-orderby: "npm:^2.0.3" + object-treeify: "npm:^1.1.33" + password-prompt: "npm:^1.1.3" + slice-ansi: "npm:^4.0.0" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + supports-color: "npm:^8.1.1" + supports-hyperlinks: "npm:^2.2.0" + widest-line: "npm:^3.1.0" + wordwrap: "npm:^1.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4f663ccb3bed74fa5b73a82f3bf722c9be5564f0543cc29bd70e1a76b953bd2fe6ca1d6684561a3bd7bd1fe70eab1855b98f5563b2109d11161c06283c312b93 + languageName: node + linkType: hard + +"@oclif/core@npm:^4, @oclif/core@npm:^4.11.14": + version: 4.11.14 + resolution: "@oclif/core@npm:4.11.14" + dependencies: + ansi-escapes: "npm:^4.3.2" + ansis: "npm:^3.17.0" + clean-stack: "npm:^3.0.1" + cli-spinners: "npm:^2.9.2" + debug: "npm:^4.4.3" + ejs: "npm:^3.1.10" + get-package-type: "npm:^0.1.0" + indent-string: "npm:^4.0.0" + is-wsl: "npm:^2.2.0" + lilconfig: "npm:^3.1.3" + minimatch: "npm:^10.2.5" + semver: "npm:^7.8.1" + string-width: "npm:^4.2.3" + supports-color: "npm:^8" + tinyglobby: "npm:^0.2.17" + widest-line: "npm:^3.1.0" + wordwrap: "npm:^1.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/3131cf7b2a064b66522cbbd11dea10988276c9b34cf83fef822823cdea4216ceae5da613d3e71ed2c2b550924685a01e73377075bf2e78072a8eb10c12411ec1 + languageName: node + linkType: hard + +"@oclif/errors@npm:1.3.6, @oclif/errors@npm:^1.3.6": + version: 1.3.6 + resolution: "@oclif/errors@npm:1.3.6" + dependencies: + clean-stack: "npm:^3.0.0" + fs-extra: "npm:^8.1" + indent-string: "npm:^4.0.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/b665bc13993bd8a03390ce91e0f0b3bbb9ec5cf9b7b2c738eb1b33a1fb9ccc9a5da947a297bfe8892d87eaceac0c79e3225564fa6e90abb74229902f45106a2a + languageName: node + linkType: hard + +"@oclif/help@npm:^1.0.1": + version: 1.0.15 + resolution: "@oclif/help@npm:1.0.15" + dependencies: + "@oclif/config": "npm:1.18.16" + "@oclif/errors": "npm:1.3.6" + chalk: "npm:^4.1.2" + indent-string: "npm:^4.0.0" + lodash: "npm:^4.17.21" + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/433b722f0a97e1ab617261f917b0ff126a8a3e33c622de60dc00730a6b81f6f38bc7e9e2a9730b4b8a2ce8138ac8f59b9f07871d913eb5ef23419dccdbcf4486 + languageName: node + linkType: hard + +"@oclif/linewrap@npm:^1.0.0": + version: 1.0.0 + resolution: "@oclif/linewrap@npm:1.0.0" + checksum: 10c0/d05a36dcba003f59dc0913018619c1ce1ddc62cfea8feb41453551bbf97e552067ea794fff7a4150218ccc96b61a1b5e77b21ef972ac2c7527911a3fff1573aa + languageName: node + linkType: hard + +"@oclif/parser@npm:^3.8.16, @oclif/parser@npm:^3.8.17": + version: 3.8.17 + resolution: "@oclif/parser@npm:3.8.17" + dependencies: + "@oclif/errors": "npm:^1.3.6" + "@oclif/linewrap": "npm:^1.0.0" + chalk: "npm:^4.1.0" + tslib: "npm:^2.6.2" + checksum: 10c0/93bb593d8ec03391d90c0736d43cf97b27cd88c17242e01d1f71d8bae3cbac08ff976a02488220f20f867b4d2c0a9592fa8a4358cca1fd9b67fe580acaa35956 + languageName: node + linkType: hard + +"@oclif/plugin-help@npm:^6.0.2": + version: 6.2.53 + resolution: "@oclif/plugin-help@npm:6.2.53" + dependencies: + "@oclif/core": "npm:^4" + checksum: 10c0/eb36f48a6a93dbff2d3048e903fc0b9b12fece9ef8adee43e69df45c9bb359920d65ef14e71c48a5f8e252cb2edd495f4ff5350d1fab4f9107c0f9fe54408d9a + languageName: node + linkType: hard + +"@oclif/plugin-plugins@npm:^5.4.4": + version: 5.4.84 + resolution: "@oclif/plugin-plugins@npm:5.4.84" + dependencies: + "@oclif/core": "npm:^4.11.14" + ansis: "npm:^3.17.0" + debug: "npm:^4.4.0" + npm: "npm:^11.18.0" + npm-package-arg: "npm:^11.0.3" + npm-run-path: "npm:^5.3.0" + object-treeify: "npm:^4.0.1" + semver: "npm:^7.8.5" + validate-npm-package-name: "npm:^5.0.1" + which: "npm:^4.0.0" + yarn: "npm:^1.22.22" + checksum: 10c0/3b49fa480a9623a914d14354b1472b39b944e286195491d1bf8517a2ca70cd0e91cafe42fc2210d31688138677b0cb1f46aefb109a95777e60020b2ded42368a + languageName: node + linkType: hard + +"@oclif/screen@npm:^1.0.4 ": + version: 1.0.4 + resolution: "@oclif/screen@npm:1.0.4" + checksum: 10c0/f3733d81501d4871757271bc5f0260a9a64de129dec7adec2a6e7084b130ea13354d1ec2adc312a788a2220f702476d20b0db7639a41c9eca9a60d4c78b87679 + languageName: node + linkType: hard + +"@oclif/screen@npm:^3.0.4": + version: 3.0.8 + resolution: "@oclif/screen@npm:3.0.8" + checksum: 10c0/320756b6a9e248f3f94f3edfcb81cfa6a254a54232f6d36b1581762ef1662c4f51689c16145660ffe5e38fd064e841098bcacbc1f19dc6b7593c42fb17adb8dc + languageName: node + linkType: hard + +"@open-rpc/examples@npm:^1.7.2": + version: 1.7.2 + resolution: "@open-rpc/examples@npm:1.7.2" + checksum: 10c0/176a96a6eab15ccf0d15b4c565a6343e1f9b9b650fb483f38536e2aadd8c730042f452f1c032f7bb7d10391394cb7ee46596b0c5319b923112561c5da53e5fe8 + languageName: node + linkType: hard + +"@open-rpc/generator@npm:^2.1.1": + version: 2.1.1 + resolution: "@open-rpc/generator@npm:2.1.1" + dependencies: + "@iarna/toml": "npm:^2.2.5" + "@open-rpc/typings": "npm:1.13.0" + commander: "npm:^7.2.0" + fs-extra: "npm:^11.2.0" + inquirer: "npm:^12.4.2" + lodash: "npm:^4.17.21" + bin: + open-rpc-generator: build/cli.js + checksum: 10c0/c7181f40cda5e9e267e1ea0f017023c2712f13bfda71faa60536f375544d59f17ab5a84131aff326613abd6b446b5f176826a2e4b02e2df295bcc43898489c1d + languageName: node + linkType: hard + +"@open-rpc/meta-schema@npm:^1.14.9": + version: 1.14.9 + resolution: "@open-rpc/meta-schema@npm:1.14.9" + checksum: 10c0/1604f1e698376ddc6e1be820339c4d0bc16cce072373205ad4142e3969f891d6c7d8c2f6da0e1758833d00ea89df70dfb15338906c41e12caac9a53c5502a25f + languageName: node + linkType: hard + +"@open-rpc/mock-server@npm:^1.7.8": + version: 1.7.8 + resolution: "@open-rpc/mock-server@npm:1.7.8" + dependencies: + "@open-rpc/examples": "npm:^1.7.2" + "@open-rpc/schema-utils-js": "npm:^2.0.2" + "@open-rpc/server-js": "npm:^1.9.5" + commander: "npm:^6.1.0" + lodash: "npm:^4.17.19" + bin: + open-rpc-mock-server: build/cli.js + checksum: 10c0/dc175643e3a3c6f23178f698ca375c8ef2056ab7d3a402515e3d4fb5adf72b1650e37eb20d5c27bc6f30a4cf0c1955fe46006ea25c05b1438c7bc3092681c54c + languageName: node + linkType: hard + +"@open-rpc/schema-utils-js@npm:2.0.2": + version: 2.0.2 + resolution: "@open-rpc/schema-utils-js@npm:2.0.2" + dependencies: + "@json-schema-tools/dereferencer": "npm:^1.6.3" + "@json-schema-tools/meta-schema": "npm:^1.7.5" + "@json-schema-tools/reference-resolver": "npm:^1.2.6" + "@open-rpc/meta-schema": "npm:^1.14.9" + ajv: "npm:^6.10.0" detect-node: "npm:^2.0.4" fast-safe-stringify: "npm:^2.0.7" fs-extra: "npm:^10.1.0" @@ -7008,6 +8176,13 @@ __metadata: languageName: node linkType: hard +"@scarf/scarf@npm:=1.4.0": + version: 1.4.0 + resolution: "@scarf/scarf@npm:1.4.0" + checksum: 10c0/332118bb488e7a70eaad068fb1a33f016d30442fb0498b37a80cb425c1e741853a5de1a04dce03526ed6265481ecf744aa6e13f072178d19e6b94b19f623ae1c + languageName: node + linkType: hard + "@scure/base@npm:1.2.6, @scure/base@npm:^1.1.3, @scure/base@npm:~1.2.5": version: 1.2.6 resolution: "@scure/base@npm:1.2.6" @@ -7109,6 +8284,64 @@ __metadata: languageName: node linkType: hard +"@sigstore/bundle@npm:^4.0.0": + version: 4.0.0 + resolution: "@sigstore/bundle@npm:4.0.0" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.5.0" + checksum: 10c0/0606ed6274f8e042298cdbcbef293d57de7dc00082e6ab076c8bda9c1765dc502e160aecaa034c112c1f1d08266dd7376437a86e7ecab03e3865cb4e03ee24c2 + languageName: node + linkType: hard + +"@sigstore/core@npm:^3.2.0, @sigstore/core@npm:^3.2.1": + version: 3.2.1 + resolution: "@sigstore/core@npm:3.2.1" + checksum: 10c0/b7f7dadf07234b6fa110dfeedd8453c6d81fa0fc77731c097dc72b3fb9e0e8750e7b3fa82c33f4b9d8bdda1be634eda18231f5dad1679bdf31f204f855926f61 + languageName: node + linkType: hard + +"@sigstore/protobuf-specs@npm:^0.5.0": + version: 0.5.1 + resolution: "@sigstore/protobuf-specs@npm:0.5.1" + checksum: 10c0/4284797bcac5f7250b7cb7000a67e76045d38da05a24a5912085b2472e0635efe4db3c6dd118e4023d7ba7ec5adc06cc8c35bf750cf2b39743e73c9f35311fe0 + languageName: node + linkType: hard + +"@sigstore/sign@npm:^4.1.1": + version: 4.1.1 + resolution: "@sigstore/sign@npm:4.1.1" + dependencies: + "@gar/promise-retry": "npm:^1.0.2" + "@sigstore/bundle": "npm:^4.0.0" + "@sigstore/core": "npm:^3.2.0" + "@sigstore/protobuf-specs": "npm:^0.5.0" + make-fetch-happen: "npm:^15.0.4" + proc-log: "npm:^6.1.0" + checksum: 10c0/88a6e5d2ce49477a52574d5dd5f4531cbb3472435fad29730969b77988efb23bdd5ce031a74f738da5b24c950f99030704b75b8cc65d5179b56ce9ede9711784 + languageName: node + linkType: hard + +"@sigstore/tuf@npm:^4.0.2": + version: 4.0.2 + resolution: "@sigstore/tuf@npm:4.0.2" + dependencies: + "@sigstore/protobuf-specs": "npm:^0.5.0" + tuf-js: "npm:^4.1.0" + checksum: 10c0/eb7ba5b9d4859948bfd5552a1c6d93f0d05b9482bf21dede53779ea429f833dcd13c3a52524596c556729d75d85326ce0a7d0857d3d23ef99784b0e94e948818 + languageName: node + linkType: hard + +"@sigstore/verify@npm:^3.1.1": + version: 3.1.1 + resolution: "@sigstore/verify@npm:3.1.1" + dependencies: + "@sigstore/bundle": "npm:^4.0.0" + "@sigstore/core": "npm:^3.2.1" + "@sigstore/protobuf-specs": "npm:^0.5.0" + checksum: 10c0/3b8c0b224b23a0e215e90a60a03193b77f333d9fd6838671aec2aef1bc9e8d42b9cb5cf246d5fb31135705bef0384e919364c5ba7f749e2cb4c10c93ae856a5c + languageName: node + linkType: hard + "@simple-libs/child-process-utils@npm:^1.0.0": version: 1.0.2 resolution: "@simple-libs/child-process-utils@npm:1.0.2" @@ -7125,6 +8358,31 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.10 + resolution: "@sinclair/typebox@npm:0.27.10" + checksum: 10c0/ca42a02817656dbdae464ed4bb8aca6ad4718d7618e270760fea84a834ad0ecc1a22eba51421f09e5047174571131356ff3b5d80d609ced775d631df7b404b0d + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + languageName: node + linkType: hard + "@solid-primitives/event-listener@npm:^2.4.3, @solid-primitives/event-listener@npm:^2.4.5": version: 2.4.5 resolution: "@solid-primitives/event-listener@npm:2.4.5" @@ -7896,6 +9154,23 @@ __metadata: languageName: node linkType: hard +"@tufjs/canonical-json@npm:2.0.0": + version: 2.0.0 + resolution: "@tufjs/canonical-json@npm:2.0.0" + checksum: 10c0/52c5ffaef1483ed5c3feedfeba26ca9142fa386eea54464e70ff515bd01c5e04eab05d01eff8c2593291dcaf2397ca7d9c512720e11f52072b04c47a5c279415 + languageName: node + linkType: hard + +"@tufjs/models@npm:4.1.0": + version: 4.1.0 + resolution: "@tufjs/models@npm:4.1.0" + dependencies: + "@tufjs/canonical-json": "npm:2.0.0" + minimatch: "npm:^10.1.1" + checksum: 10c0/0a4ab524061c97bb43ccd3ffaaaed224eb41469fa2b748f66599d298798f7556e7158a12a9cbdfb89476df0ae538ca562292ac10909e411aa17f81f72b3e8931 + languageName: node + linkType: hard + "@tybys/wasm-util@npm:0.9.0, @tybys/wasm-util@npm:^0.9.0": version: 0.9.0 resolution: "@tybys/wasm-util@npm:0.9.0" @@ -7939,7 +9214,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.20.5": +"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.5": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -7971,7 +9246,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:*": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": version: 7.28.0 resolution: "@types/babel__traverse@npm:7.28.0" dependencies: @@ -8027,6 +9302,15 @@ __metadata: languageName: node linkType: hard +"@types/cli-progress@npm:^3.11.5": + version: 3.11.6 + resolution: "@types/cli-progress@npm:3.11.6" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/d9a2d60b8fc6ccef73368fa20a23d5b16506808a81ec65f7e8eedf58d236ebaf2ab46578936c000c8e39dde825cb48a3cf9195c8b410177efd5388bcf9d07370 + languageName: node + linkType: hard + "@types/connect@npm:*": version: 3.4.38 resolution: "@types/connect@npm:3.4.38" @@ -8171,6 +9455,15 @@ __metadata: languageName: node linkType: hard +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b + languageName: node + linkType: hard + "@types/hast@npm:^3.0.4": version: 3.0.4 resolution: "@types/hast@npm:3.0.4" @@ -8194,6 +9487,16 @@ __metadata: languageName: node linkType: hard +"@types/inquirer@npm:^7.3.1": + version: 7.3.3 + resolution: "@types/inquirer@npm:7.3.3" + dependencies: + "@types/through": "npm:*" + rxjs: "npm:^6.4.0" + checksum: 10c0/f79a333a1b2f08f5c16da88e2a0afbad95ba24e9cadddec069947489836aeae59f7ea8c9484979c71c2adc475bba57d6763e461f3355720d0836ca152f7f2ca4 + languageName: node + linkType: hard + "@types/isomorphic-fetch@npm:^0.0.39": version: 0.0.39 resolution: "@types/isomorphic-fetch@npm:0.0.39" @@ -8201,6 +9504,31 @@ __metadata: languageName: node linkType: hard +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + "@types/js-yaml@npm:^4.0.9": version: 4.0.9 resolution: "@types/js-yaml@npm:4.0.9" @@ -8458,6 +9786,13 @@ __metadata: languageName: node linkType: hard +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + "@types/superagent@npm:^8.1.0": version: 8.1.9 resolution: "@types/superagent@npm:8.1.9" @@ -8499,6 +9834,15 @@ __metadata: languageName: node linkType: hard +"@types/through@npm:*": + version: 0.0.33 + resolution: "@types/through@npm:0.0.33" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/6a8edd7f40cd7e197318e86310a40e568cddd380609dde59b30d5cc6c5f8276ddc698905eac4b3b429eb39f2e8ee326bc20dc6e95a2cdc41c4d3fc9a1ebd4929 + languageName: node + linkType: hard + "@types/trusted-types@npm:^2.0.2": version: 2.0.7 resolution: "@types/trusted-types@npm:2.0.7" @@ -8536,6 +9880,22 @@ __metadata: languageName: node linkType: hard +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:8.61.0, @typescript-eslint/eslint-plugin@npm:^8.61.0": version: 8.61.0 resolution: "@typescript-eslint/eslint-plugin@npm:8.61.0" @@ -9434,7 +10794,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^1.3.8": +"accepts@npm:^1.3.5, accepts@npm:^1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -9589,6 +10949,20 @@ __metadata: languageName: node linkType: hard +"ajv-formats@npm:^2.0.2, ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + languageName: node + linkType: hard + "ajv-formats@npm:^3.0.1, ajv-formats@npm:~3.0.1": version: 3.0.1 resolution: "ajv-formats@npm:3.0.1" @@ -9627,6 +11001,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.1.0, ajv@npm:^8.12.0, ajv@npm:^8.6.2, ajv@npm:^8.8.2": + version: 8.20.0 + resolution: "ajv@npm:8.20.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/5df9a1c8f83863cde1bd3a9ddb426f599718f88e3dc9153616c79fb28e0be455335830d7f21d745576519f057b371352daa31047b6a33d7036fe08777d60cf2a + languageName: node + linkType: hard + "alien-signals@npm:^0.4.9": version: 0.4.14 resolution: "alien-signals@npm:0.4.14" @@ -9666,7 +11052,7 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.3.2": +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.2": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: @@ -9698,7 +11084,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:4.3.0, ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": +"ansi-styles@npm:4.3.0, ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0, ansi-styles@npm:^4.2.0, ansi-styles@npm:^4.3.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: @@ -9707,6 +11093,22 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + "ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": version: 6.2.3 resolution: "ansi-styles@npm:6.2.3" @@ -9714,6 +11116,13 @@ __metadata: languageName: node linkType: hard +"ansicolors@npm:~0.3.2": + version: 0.3.2 + resolution: "ansicolors@npm:0.3.2" + checksum: 10c0/e202182895e959c5357db6c60791b2abaade99fcc02221da11a581b26a7f83dc084392bc74e4d3875c22f37b3c9ef48842e896e3bfed394ec278194b8003e0ac + languageName: node + linkType: hard + "ansis@npm:4.0.0-node10": version: 4.0.0-node10 resolution: "ansis@npm:4.0.0-node10" @@ -9721,6 +11130,13 @@ __metadata: languageName: node linkType: hard +"ansis@npm:^3.17.0": + version: 3.17.0 + resolution: "ansis@npm:3.17.0" + checksum: 10c0/d8fa94ca7bb91e7e5f8a7d323756aa075facce07c5d02ca883673e128b2873d16f93e0dec782f98f1eeb1f2b3b4b7b60dcf0ad98fb442e75054fe857988cc5cb + languageName: node + linkType: hard + "ansis@npm:^4.1.0": version: 4.2.0 resolution: "ansis@npm:4.2.0" @@ -9735,7 +11151,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.3, anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -9745,7 +11161,14 @@ __metadata: languageName: node linkType: hard -"archiver-utils@npm:^5.0.0, archiver-utils@npm:^5.0.2": +"aproba@npm:^2.0.0": + version: 2.1.0 + resolution: "aproba@npm:2.1.0" + checksum: 10c0/ec8c1d351bac0717420c737eb062766fb63bde1552900e0f4fdad9eb064c3824fef23d1c416aa5f7a80f21ca682808e902d79b7c9ae756d342b5f1884f36932f + languageName: node + linkType: hard + +"archiver-utils@npm:^5.0.0, archiver-utils@npm:^5.0.2": version: 5.0.2 resolution: "archiver-utils@npm:5.0.2" dependencies: @@ -9775,6 +11198,13 @@ __metadata: languageName: node linkType: hard +"archy@npm:~1.0.0": + version: 1.0.0 + resolution: "archy@npm:1.0.0" + checksum: 10c0/200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 + languageName: node + linkType: hard + "arg@npm:^4.1.0": version: 4.1.3 resolution: "arg@npm:4.1.3" @@ -9819,6 +11249,13 @@ __metadata: languageName: node linkType: hard +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + "array-union@npm:^3.0.1": version: 3.0.1 resolution: "array-union@npm:3.0.1" @@ -9878,6 +11315,13 @@ __metadata: languageName: node linkType: hard +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + "async-function@npm:^1.0.0": version: 1.0.0 resolution: "async-function@npm:1.0.0" @@ -9931,6 +11375,13 @@ __metadata: languageName: node linkType: hard +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + languageName: node + linkType: hard + "atomic-sleep@npm:^1.0.0": version: 1.0.0 resolution: "atomic-sleep@npm:1.0.0" @@ -9971,6 +11422,18 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.3.4": + version: 1.18.1 + resolution: "axios@npm:1.18.1" + dependencies: + follow-redirects: "npm:^1.16.0" + form-data: "npm:^4.0.5" + https-proxy-agent: "npm:^5.0.1" + proxy-from-env: "npm:^2.1.0" + checksum: 10c0/9d9378a3af0d0ad730a52ad9d15ec7201f3926ad6e7e8bbffc5ae21ca2835ad11d1d9598698f5dd9718917486039f55ea1d7dc23d8e44fa827a55cc3262c02fc + languageName: node + linkType: hard + "axios@npm:^1.6.7": version: 1.17.0 resolution: "axios@npm:1.17.0" @@ -10007,6 +11470,23 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + languageName: node + linkType: hard + "babel-plugin-const-enum@npm:^1.0.1": version: 1.2.0 resolution: "babel-plugin-const-enum@npm:1.2.0" @@ -10020,6 +11500,31 @@ __metadata: languageName: node linkType: hard +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + languageName: node + linkType: hard + "babel-plugin-macros@npm:^3.1.0": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0" @@ -10088,6 +11593,43 @@ __metadata: languageName: node linkType: hard +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 10c0/94a4f81cddf9b051045d08489e4fff7336292016301664c138cfa3d9ffe3fe2ba10a24ad6ae589fd95af1ac72ba0216e1653555c187e694d7b17be0c002bea10 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + languageName: node + linkType: hard + "balanced-match@npm:4.0.3": version: 4.0.3 resolution: "balanced-match@npm:4.0.3" @@ -10217,6 +11759,13 @@ __metadata: languageName: node linkType: hard +"bath-es5@npm:^3.0.3": + version: 3.0.3 + resolution: "bath-es5@npm:3.0.3" + checksum: 10c0/cab899940a0eb492afcfd888562cf6a42bebbc63f8cb0b3ba7dfcc828e64e112b23f1270f41beb4649947befddb122cf5515464139281904a61b05de4b82cf42 + languageName: node + linkType: hard + "bcrypt-pbkdf@npm:^1.0.2": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" @@ -10251,6 +11800,19 @@ __metadata: languageName: node linkType: hard +"bin-links@npm:^6.0.0": + version: 6.0.2 + resolution: "bin-links@npm:6.0.2" + dependencies: + cmd-shim: "npm:^8.0.0" + npm-normalize-package-bin: "npm:^5.0.0" + proc-log: "npm:^6.0.0" + read-cmd-shim: "npm:^6.0.0" + write-file-atomic: "npm:^7.0.0" + checksum: 10c0/b6a95482a712a154e5ea0a43002a4bbaa3d51bb3a71160a368d0acfe98f1a3a5dbcec06718d24ac12cfcf299545f179a5a48cd4f59372e9d9221cb66e070b6f0 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" @@ -10258,6 +11820,13 @@ __metadata: languageName: node linkType: hard +"binary-extensions@npm:^3.0.0": + version: 3.1.0 + resolution: "binary-extensions@npm:3.1.0" + checksum: 10c0/5488342caf45e895fd578ff6fdc849dd32ab0a034660761261d9e450b37375e719e7ecc62907250b95f14bf7c9677a975a9dfde4b736a269b3f84187e6ba89d4 + languageName: node + linkType: hard + "bindings@npm:^1.5.0": version: 1.5.0 resolution: "bindings@npm:1.5.0" @@ -10405,7 +11974,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:~3.0.2": +"braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -10438,6 +12007,15 @@ __metadata: languageName: node linkType: hard +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + "buffer-crc32@npm:^1.0.0": version: 1.0.0 resolution: "buffer-crc32@npm:1.0.0" @@ -10520,7 +12098,7 @@ __metadata: languageName: node linkType: hard -"bytes@npm:^3.1.2, bytes@npm:~3.1.2": +"bytes@npm:^3.1.0, bytes@npm:^3.1.2, bytes@npm:~3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e @@ -10534,6 +12112,24 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^20.0.0, cacache@npm:^20.0.4": + version: 20.0.4 + resolution: "cacache@npm:20.0.4" + dependencies: + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + checksum: 10c0/539bf4020e44ba9ca5afc2ec435623ed7e0dd80c020097677e6b4a0545df5cc9d20b473212d01209c8b4aea43c0d095af0bb6da97bcb991642ea6fac0d7c462b + languageName: node + linkType: hard + "cacache@npm:^20.0.1": version: 20.0.3 resolution: "cacache@npm:20.0.3" @@ -10553,6 +12149,16 @@ __metadata: languageName: node linkType: hard +"cache-content-type@npm:^1.0.0": + version: 1.0.1 + resolution: "cache-content-type@npm:1.0.1" + dependencies: + mime-types: "npm:^2.1.18" + ylru: "npm:^1.2.0" + checksum: 10c0/59b50e29e64a24bb52a16e5d35b69ad27ef14313701acc5e462b0aeebf2f09ff87fb6538eb0c0f0de4de05c8a1eecaef47f455f5b4928079e68f607f816a0843 + languageName: node + linkType: hard + "call-bind-apply-helpers@npm:1.0.2, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 resolution: "call-bind-apply-helpers@npm:1.0.2" @@ -10563,7 +12169,7 @@ __metadata: languageName: node linkType: hard -"call-bound@npm:^1.0.2": +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.4": version: 1.0.4 resolution: "call-bound@npm:1.0.4" dependencies: @@ -10573,7 +12179,7 @@ __metadata: languageName: node linkType: hard -"call-me-maybe@npm:^1.0.1": +"call-me-maybe@npm:^1.0.1, call-me-maybe@npm:^1.0.2": version: 1.0.2 resolution: "call-me-maybe@npm:1.0.2" checksum: 10c0/8eff5dbb61141ebb236ed71b4e9549e488bcb5451c48c11e5667d5c75b0532303788a1101e6978cafa2d0c8c1a727805599c2741e3e0982855c9f1d78cd06c9f @@ -10606,13 +12212,20 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^5.0.0": +"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 languageName: node linkType: hard +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + "camelcase@npm:^9.0.0": version: 9.0.0 resolution: "camelcase@npm:9.0.0" @@ -10627,6 +12240,18 @@ __metadata: languageName: node linkType: hard +"cardinal@npm:^2.1.1": + version: 2.1.1 + resolution: "cardinal@npm:2.1.1" + dependencies: + ansicolors: "npm:~0.3.2" + redeyed: "npm:~2.1.0" + bin: + cdl: ./bin/cdl.js + checksum: 10c0/0051d0e64c0e1dff480c1aace4c018c48ecca44030533257af3f023107ccdeb061925603af6d73710f0345b0ae0eb57e5241d181d9b5fdb595d45c5418161675 + languageName: node + linkType: hard + "case-anything@npm:^2.1.13": version: 2.1.13 resolution: "case-anything@npm:2.1.13" @@ -10674,6 +12299,17 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + "chalk@npm:^5.3.0, chalk@npm:^5.6.2": version: 5.6.2 resolution: "chalk@npm:5.6.2" @@ -10688,6 +12324,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + "chardet@npm:^0.7.0": version: 0.7.0 resolution: "chardet@npm:0.7.0" @@ -10814,6 +12457,43 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"ci-info@npm:^4.0.0, ci-info@npm:^4.4.0": + version: 4.4.0 + resolution: "ci-info@npm:4.4.0" + checksum: 10c0/44156201545b8dde01aa8a09ee2fe9fc7a73b1bef9adbd4606c9f61c8caeeb73fb7a575c88b0443f7b4edb5ee45debaa59ed54ba5f99698339393ca01349eb3a + languageName: node + linkType: hard + +"cidr-regex@npm:^5.0.4": + version: 5.0.5 + resolution: "cidr-regex@npm:5.0.5" + checksum: 10c0/a75ad52448136c9db08e5ddef41325435337011b0b8385a433922750cbe0c864bcc17bb84f9910f110e0c2ca6d324305e7603a5080e1c3f457029c1ca0ff0d55 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.4.3 + resolution: "cjs-module-lexer@npm:1.4.3" + checksum: 10c0/076b3af85adc4d65dbdab1b5b240fe5b45d44fcf0ef9d429044dd94d19be5589376805c44fb2d4b3e684e5fe6a9b7cf3e426476a6507c45283c5fc6ff95240be + languageName: node + linkType: hard + +"clean-stack@npm:^3.0.0, clean-stack@npm:^3.0.1": + version: 3.0.1 + resolution: "clean-stack@npm:3.0.1" + dependencies: + escape-string-regexp: "npm:4.0.0" + checksum: 10c0/4ea5c03bdf78e8afb2592f34c1b5832d0c7858d37d8b0d40fba9d61a103508fa3bb527d39a99469019083e58e05d1ad54447e04217d5d36987e97182adab0e03 + languageName: node + linkType: hard + "cli-boxes@npm:^3.0.0": version: 3.0.0 resolution: "cli-boxes@npm:3.0.0" @@ -10839,6 +12519,15 @@ __metadata: languageName: node linkType: hard +"cli-progress@npm:^3.10.0, cli-progress@npm:^3.12.0": + version: 3.12.0 + resolution: "cli-progress@npm:3.12.0" + dependencies: + string-width: "npm:^4.2.3" + checksum: 10c0/f464cb19ebde2f3880620a2adfaeeefaec6cb15c8e610c8a659ca1047ee90d69f3bf2fdabbb1fe33ac408678e882e3e0eecdb84ab5df0edf930b269b8a72682d + languageName: node + linkType: hard + "cli-spinners@npm:2.6.1": version: 2.6.1 resolution: "cli-spinners@npm:2.6.1" @@ -10872,6 +12561,46 @@ __metadata: languageName: node linkType: hard +"cli-ux@npm:^6.0.9": + version: 6.0.9 + resolution: "cli-ux@npm:6.0.9" + dependencies: + "@oclif/core": "npm:^1.1.1" + "@oclif/linewrap": "npm:^1.0.0" + "@oclif/screen": "npm:^1.0.4 " + ansi-escapes: "npm:^4.3.0" + ansi-styles: "npm:^4.2.0" + cardinal: "npm:^2.1.1" + chalk: "npm:^4.1.0" + clean-stack: "npm:^3.0.0" + cli-progress: "npm:^3.10.0" + extract-stack: "npm:^2.0.0" + fs-extra: "npm:^8.1" + hyperlinker: "npm:^1.0.0" + indent-string: "npm:^4.0.0" + is-wsl: "npm:^2.2.0" + js-yaml: "npm:^3.13.1" + lodash: "npm:^4.17.21" + natural-orderby: "npm:^2.0.1" + object-treeify: "npm:^1.1.4" + password-prompt: "npm:^1.1.2" + semver: "npm:^7.3.2" + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + supports-color: "npm:^8.1.0" + supports-hyperlinks: "npm:^2.1.0" + tslib: "npm:^2.0.0" + checksum: 10c0/341e0ce98addaf39e9dceff1cd0cc0ccd057896f56f93023a4ede5c534c28de408825a90f1d6b2b1dea3b97d5ca036d53ff0bbde7f271906612807c397773df0 + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + "cli-width@npm:^4.1.0": version: 4.1.0 resolution: "cli-width@npm:4.1.0" @@ -10915,6 +12644,40 @@ __metadata: languageName: node linkType: hard +"cmd-shim@npm:^8.0.0": + version: 8.0.0 + resolution: "cmd-shim@npm:8.0.0" + checksum: 10c0/63b86934aa62cfeac78675034944041ef8ed526a21d9b2a945571a3075e89a1b99ac55c6bd24f357be9c96c819a37d856eaff3f18b343dfdcfa5118a2d19282b + languageName: node + linkType: hard + +"co-body@npm:^6.0.0": + version: 6.2.0 + resolution: "co-body@npm:6.2.0" + dependencies: + "@hapi/bourne": "npm:^3.0.0" + inflation: "npm:^2.0.0" + qs: "npm:^6.5.2" + raw-body: "npm:^2.3.3" + type-is: "npm:^1.6.16" + checksum: 10c0/3a320d8b324abc14031243f427d2584cfe8f61562204f1a45d0a08bba20fff7122a04883f4d312ba648fb455246030916cacb92c19c6f7b329aaf1de70045e37 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.3 + resolution: "collect-v8-coverage@npm:1.0.3" + checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc + languageName: node + linkType: hard + "color-convert@npm:2.0.1, color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -10924,13 +12687,49 @@ __metadata: languageName: node linkType: hard -"color-name@npm:1.1.4, color-name@npm:~1.1.4": +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:1.1.4, color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard +"color-string@npm:^1.9.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: "npm:^1.0.0" + simple-swizzle: "npm:^0.2.2" + checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404 + languageName: node + linkType: hard + +"color@npm:^4.2.3": + version: 4.2.3 + resolution: "color@npm:4.2.3" + dependencies: + color-convert: "npm:^2.0.1" + color-string: "npm:^1.9.0" + checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118 + languageName: node + linkType: hard + "colorette@npm:1.4.0": version: 1.4.0 resolution: "colorette@npm:1.4.0" @@ -10987,6 +12786,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^11.1.0": + version: 11.1.0 + resolution: "commander@npm:11.1.0" + checksum: 10c0/13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179 + languageName: node + linkType: hard + "commander@npm:^14.0.3": version: 14.0.3 resolution: "commander@npm:14.0.3" @@ -11034,7 +12840,14 @@ __metadata: languageName: node linkType: hard -"common-tags@npm:1.8.2": +"common-ancestor-path@npm:^2.0.0": + version: 2.0.0 + resolution: "common-ancestor-path@npm:2.0.0" + checksum: 10c0/fa0872dc8d5ffb2c0bb006d1f9e7ba4586773df4f0cf3dfa4b4c95710cedb8a78246fbbcc1392c71c882bd5428a2d003851bdd9033f549a445ac2c5deacb45ca + languageName: node + linkType: hard + +"common-tags@npm:1.8.2, common-tags@npm:^1.8.2": version: 1.8.2 resolution: "common-tags@npm:1.8.2" checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 @@ -11173,7 +12986,16 @@ __metadata: languageName: node linkType: hard -"content-type@npm:^1.0.5, content-type@npm:~1.0.5": +"content-disposition@npm:~0.5.2": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + languageName: node + linkType: hard + +"content-type@npm:^1.0.4, content-type@npm:^1.0.5, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af @@ -11252,6 +13074,13 @@ __metadata: languageName: node linkType: hard +"cookie@npm:^1.0.1": + version: 1.1.1 + resolution: "cookie@npm:1.1.1" + checksum: 10c0/79c4ddc0fcad9c4f045f826f42edf54bcc921a29586a4558b0898277fa89fb47be95bc384c2253f493af7b29500c830da28341274527328f18eba9f58afa112c + languageName: node + linkType: hard + "cookiejar@npm:^2.1.4": version: 2.1.4 resolution: "cookiejar@npm:2.1.4" @@ -11259,7 +13088,7 @@ __metadata: languageName: node linkType: hard -"cookies@npm:~0.9.1": +"cookies@npm:~0.9.0, cookies@npm:~0.9.1": version: 0.9.1 resolution: "cookies@npm:0.9.1" dependencies: @@ -11269,6 +13098,13 @@ __metadata: languageName: node linkType: hard +"copy-to@npm:^2.0.1": + version: 2.0.1 + resolution: "copy-to@npm:2.0.1" + checksum: 10c0/ee10fa7ab257ccc1fada75d8571312f7a7eb2fa6a3129d89c6e3afc9884e0eb0cbb79140a92671fd3e35fa285b1e7f27f5422f885494ff14cf4c8c56e62d9daf + languageName: node + linkType: hard + "core-js-compat@npm:^3.43.0, core-js-compat@npm:^3.48.0": version: 3.48.0 resolution: "core-js-compat@npm:3.48.0" @@ -11375,6 +13211,23 @@ __metadata: languageName: node linkType: hard +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -11398,7 +13251,16 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.6": +"cross-fetch@npm:^4.0.0": + version: 4.1.0 + resolution: "cross-fetch@npm:4.1.0" + dependencies: + node-fetch: "npm:^2.7.0" + checksum: 10c0/628b134ea27cfcada67025afe6ef1419813fffc5d63d175553efa75a2334522d450300a0f3f0719029700da80e96327930709d5551cf6deb39bb62f1d536642e + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -11445,6 +13307,15 @@ __metadata: languageName: node linkType: hard +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + "csstype@npm:^3.0.2, csstype@npm:^3.1.0, csstype@npm:^3.2.2, csstype@npm:^3.2.3": version: 3.2.3 resolution: "csstype@npm:3.2.3" @@ -11531,7 +13402,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.4.3, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:^4.4.0, debug@npm:^4.4.1, debug@npm:^4.4.3": +"debug@npm:4, debug@npm:4.4.3, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:^4.4.0, debug@npm:^4.4.1, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -11543,7 +13414,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.6": +"debug@npm:^3.1.0, debug@npm:^3.2.6": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -11594,6 +13465,18 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^1.0.0": + version: 1.7.2 + resolution: "dedent@npm:1.7.2" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/acaff07cac355b93f17b1b17ebbb84d3cc55af6ab4b7814c3f505e061903e168bc6bf9ddce331552d64dee1525f0b4c549c9ade46aebfac6f69caaed74e90751 + languageName: node + linkType: hard + "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -11622,7 +13505,7 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2": +"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 @@ -11715,6 +13598,13 @@ __metadata: languageName: node linkType: hard +"dereference-json-schema@npm:^0.2.1": + version: 0.2.2 + resolution: "dereference-json-schema@npm:0.2.2" + checksum: 10c0/d112b0b89ad969204662c28a2a9e00fdb8bf4682b4c3b73fad580fedf418780142f0dfd2f1aaf4f6aa92c7a437c3a85bf1365e783ad1b1fabc33686bbfe94f75 + languageName: node + linkType: hard + "destr@npm:^2.0.5": version: 2.0.5 resolution: "destr@npm:2.0.5" @@ -11722,7 +13612,7 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0, destroy@npm:^1.2.0, destroy@npm:~1.2.0": +"destroy@npm:1.2.0, destroy@npm:^1.0.4, destroy@npm:^1.2.0, destroy@npm:~1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 @@ -11752,6 +13642,13 @@ __metadata: languageName: node linkType: hard +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -11781,6 +13678,20 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^27.5.1": + version: 27.5.1 + resolution: "diff-sequences@npm:27.5.1" + checksum: 10c0/a52566d891b89a666f48ba69f54262fa8293ae6264ae04da82c7bf3b6661cba75561de0729f18463179d56003cc0fd69aa09845f2c2cd7a353b1ec1e1a96beb9 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.4 resolution: "diff@npm:4.0.4" @@ -11809,6 +13720,15 @@ __metadata: languageName: node linkType: hard +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + "docker-compose@npm:^1.4.2": version: 1.4.2 resolution: "docker-compose@npm:1.4.2" @@ -12034,14 +13954,25 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.263": - version: 1.5.302 - resolution: "electron-to-chromium@npm:1.5.302" +"ejs@npm:^3.1.10, ejs@npm:^3.1.6": + version: 3.1.10 + resolution: "ejs@npm:3.1.10" + dependencies: + jake: "npm:^10.8.5" + bin: + ejs: bin/cli.js + checksum: 10c0/52eade9e68416ed04f7f92c492183340582a36482836b11eab97b159fcdcfdedc62233a1bf0bf5e5e1851c501f2dca0e2e9afd111db2599e4e7f53ee29429ae1 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.263": + version: 1.5.302 + resolution: "electron-to-chromium@npm:1.5.302" checksum: 10c0/014413f2b4ec3a0e043c68f6c07a760d230b14e36b8549c5b124f386a6318d9641e69be2aa0df1877395dd99922745c1722c8ecb3d72205f0f3b3b3dc44c8442 languageName: node linkType: hard -"emittery@npm:^0.13.0": +"emittery@npm:^0.13.0, emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 @@ -12069,6 +14000,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:^1.0.2, encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + languageName: node + linkType: hard + "encodeurl@npm:^2.0.0, encodeurl@npm:~2.0.0": version: 2.0.0 resolution: "encodeurl@npm:2.0.0" @@ -12076,13 +14014,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec - languageName: node - linkType: hard - "encoding-sniffer@npm:^0.2.1": version: 0.2.1 resolution: "encoding-sniffer@npm:0.2.1" @@ -12230,6 +14161,13 @@ __metadata: languageName: node linkType: hard +"es6-promise@npm:^3.2.1": + version: 3.3.1 + resolution: "es6-promise@npm:3.3.1" + checksum: 10c0/b4fc87cb8509c001f62f860f97b05d1fd3f87220c8b832578e6a483c719ca272b73a77f2231cb26395fa865e1cab2fd4298ab67786b69e97b8d757b938f4fc1f + languageName: node + linkType: hard + "esbuild-plugin-replace@npm:^1.4.0": version: 1.4.0 resolution: "esbuild-plugin-replace@npm:1.4.0" @@ -12445,13 +14383,20 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^4.0.0": +"escape-string-regexp@npm:4.0.0, escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 languageName: node linkType: hard +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + "escodegen@npm:^2.1.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" @@ -12866,6 +14811,30 @@ __metadata: languageName: node linkType: hard +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + "expand-template@npm:^2.0.3": version: 2.0.3 resolution: "expand-template@npm:2.0.3" @@ -12880,6 +14849,19 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.3 resolution: "exponential-backoff@npm:3.1.3" @@ -12951,7 +14933,7 @@ __metadata: languageName: node linkType: hard -"external-editor@npm:^3.1.0": +"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": version: 3.1.0 resolution: "external-editor@npm:3.1.0" dependencies: @@ -12962,6 +14944,13 @@ __metadata: languageName: node linkType: hard +"extract-stack@npm:^2.0.0": + version: 2.0.0 + resolution: "extract-stack@npm:2.0.0" + checksum: 10c0/61d41216b2295953c9c4110c7d922b03c0e2572d9ebce80bfea246381d9fe9ef6172500209536ca80ad0801aaba5da682cc3aeabc2a734d9d9d3f520d7fc8a6e + languageName: node + linkType: hard + "extrareqp2@npm:^1.0.0": version: 1.0.0 resolution: "extrareqp2@npm:1.0.0" @@ -12999,6 +14988,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.9": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + "fast-json-patch@npm:3.1.1, fast-json-patch@npm:^3.1.0": version: 3.1.1 resolution: "fast-json-patch@npm:3.1.1" @@ -13006,7 +15008,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b @@ -13059,6 +15061,31 @@ __metadata: languageName: node linkType: hard +"fastest-levenshtein@npm:^1.0.16": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.20.1 + resolution: "fastq@npm:1.20.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + "fclone@npm:1.0.11, fclone@npm:~1.0.11": version: 1.0.11 resolution: "fclone@npm:1.0.11" @@ -13087,7 +15114,7 @@ __metadata: languageName: node linkType: hard -"figures@npm:3.2.0, figures@npm:^3.2.0": +"figures@npm:3.2.0, figures@npm:^3.0.0, figures@npm:^3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" dependencies: @@ -13112,6 +15139,15 @@ __metadata: languageName: node linkType: hard +"filelist@npm:^1.0.4": + version: 1.0.6 + resolution: "filelist@npm:1.0.6" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 10c0/6ee725bec3e1936d680a45f14439b224d9f7c71658c145addcf551dd82f03d608522eb6b191aa086b392bc3e52ed4ce0ed8d78e24b203e6c5e867560a05d1121 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -13157,7 +15193,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.1.0": +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: @@ -13348,6 +15384,29 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^8.1": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 + languageName: node + linkType: hard + +"fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: "npm:^1.0.0" + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + languageName: node + linkType: hard + "fs-extra@npm:~7.0.1": version: 7.0.1 resolution: "fs-extra@npm:7.0.1" @@ -13359,7 +15418,7 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^3.0.0": +"fs-minipass@npm:^3.0.0, fs-minipass@npm:^3.0.3": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" dependencies: @@ -13378,7 +15437,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -13397,7 +15456,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -13496,6 +15555,20 @@ __metadata: languageName: node linkType: hard +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-port@npm:^5.0.0": + version: 5.1.1 + resolution: "get-port@npm:5.1.1" + checksum: 10c0/2873877a469b24e6d5e0be490724a17edb39fafc795d1d662e7bea951ca649713b4a50117a473f9d162312cb0e946597bd0e049ed2f866e79e576e8e213d3d1c + languageName: node + linkType: hard + "get-port@npm:^7.2.0": version: 7.2.0 resolution: "get-port@npm:7.2.0" @@ -13513,6 +15586,13 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + "get-uri@npm:^6.0.1": version: 6.0.5 resolution: "get-uri@npm:6.0.5" @@ -13557,6 +15637,15 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + "glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" @@ -13566,15 +15655,6 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - "glob-to-regexp@npm:^0.4.1": version: 0.4.1 resolution: "glob-to-regexp@npm:0.4.1" @@ -13630,6 +15710,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -13660,7 +15754,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -13717,6 +15811,13 @@ __metadata: languageName: node linkType: hard +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + "has-symbols@npm:1.1.0, has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 resolution: "has-symbols@npm:1.1.0" @@ -13783,6 +15884,24 @@ __metadata: languageName: node linkType: hard +"hosted-git-info@npm:^7.0.0": + version: 7.0.2 + resolution: "hosted-git-info@npm:7.0.2" + dependencies: + lru-cache: "npm:^10.0.1" + checksum: 10c0/b19dbd92d3c0b4b0f1513cf79b0fc189f54d6af2129eeb201de2e9baaa711f1936929c848b866d9c8667a0f956f34bf4f07418c12be1ee9ca74fd9246335ca1f + languageName: node + linkType: hard + +"hosted-git-info@npm:^9.0.0, hosted-git-info@npm:^9.0.3": + version: 9.0.3 + resolution: "hosted-git-info@npm:9.0.3" + dependencies: + lru-cache: "npm:^11.1.0" + checksum: 10c0/8f216ccb461ca54ae1846745325ced6a880b53101a58c820b813f067caa301576bf974f787df5688b7f0f1b752cdfcbaa2979751d1fcfd604032cc57bc538607 + languageName: node + linkType: hard + "html-encoding-sniffer@npm:^3.0.0": version: 3.0.0 resolution: "html-encoding-sniffer@npm:3.0.0" @@ -13811,7 +15930,7 @@ __metadata: languageName: node linkType: hard -"http-assert@npm:^1.5.0": +"http-assert@npm:^1.3.0, http-assert@npm:^1.5.0": version: 1.5.0 resolution: "http-assert@npm:1.5.0" dependencies: @@ -13828,6 +15947,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:^1.6.3, http-errors@npm:^1.7.3, http-errors@npm:~1.8.0": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:>= 1.5.0 < 2" + toidentifier: "npm:1.0.1" + checksum: 10c0/f01aeecd76260a6fe7f08e192fcbe9b2f39ed20fc717b852669a69930167053b01790998275c6297d44f435cf0e30edd50c05223d1bec9bc484e6cf35b2d6f43 + languageName: node + linkType: hard + "http-errors@npm:^2.0.0, http-errors@npm:^2.0.1, http-errors@npm:~2.0.1": version: 2.0.1 resolution: "http-errors@npm:2.0.1" @@ -13841,16 +15973,15 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:~1.8.0": - version: 1.8.1 - resolution: "http-errors@npm:1.8.1" +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" dependencies: depd: "npm:~1.1.2" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:>= 1.5.0 < 2" - toidentifier: "npm:1.0.1" - checksum: 10c0/f01aeecd76260a6fe7f08e192fcbe9b2f39ed20fc717b852669a69930167053b01790998275c6297d44f435cf0e30edd50c05223d1bec9bc484e6cf35b2d6f43 + inherits: "npm:2.0.3" + setprototypeof: "npm:1.1.0" + statuses: "npm:>= 1.4.0 < 2" + checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 languageName: node linkType: hard @@ -13898,7 +16029,14 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:7.0.6, https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.5, https-proxy-agent@npm:^7.0.6": +"http2-client@npm:^1.2.5": + version: 1.3.5 + resolution: "http2-client@npm:1.3.5" + checksum: 10c0/4974f10f5c8b5b7b9e23771190471d02690e9a22c22e028d84715b7ecdcda05017fc9e565476558da3bdf0ba642d24186a94818d0b9afee706ccf9874034be73 + languageName: node + linkType: hard + +"https-proxy-agent@npm:7.0.6, https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.2, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.5, https-proxy-agent@npm:^7.0.6": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" dependencies: @@ -13918,6 +16056,20 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"humanize-number@npm:0.0.2": + version: 0.0.2 + resolution: "humanize-number@npm:0.0.2" + checksum: 10c0/cf21bc2049d6fb54a5052d3fd9bea55aa5a933a14263ccd7149e4d68a6f2404ea68c13ca5c07f8b9fc539b8fd57460513527a19c4375f9bb3b3bfdec115260e6 + languageName: node + linkType: hard + "husky@npm:^9.1.7": version: 9.1.7 resolution: "husky@npm:9.1.7" @@ -13927,6 +16079,13 @@ __metadata: languageName: node linkType: hard +"hyperlinker@npm:^1.0.0": + version: 1.0.0 + resolution: "hyperlinker@npm:1.0.0" + checksum: 10c0/7b980f51611fb5efb62ad5aa3a8af9305b7fb0c203eb9d8915e24e96cdb43c5a4121e2d461bfd74cf47d4e01e39ce473700ea0e2353cb1f71758f94be37a44b0 + languageName: node + linkType: hard + "iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -13968,6 +16127,15 @@ __metadata: languageName: node linkType: hard +"ignore-walk@npm:^8.0.0": + version: 8.0.0 + resolution: "ignore-walk@npm:8.0.0" + dependencies: + minimatch: "npm:^10.0.3" + checksum: 10c0/fec71d904adaaf233f2f5a67cc547857d960abe1f41a8b43f675617a322aabe9401fb9afa13aba825d21d91c454d5cad72ecba156e69443f3df40288d6ebd058 + languageName: node + linkType: hard + "ignore@npm:7.0.5, ignore@npm:^7.0.5": version: 7.0.5 resolution: "ignore@npm:7.0.5" @@ -14015,6 +16183,18 @@ __metadata: languageName: node linkType: hard +"import-local@npm:^3.0.2": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + "import-meta-resolve@npm:^4.0.0": version: 4.2.0 resolution: "import-meta-resolve@npm:4.2.0" @@ -14043,6 +16223,20 @@ __metadata: languageName: node linkType: hard +"inflation@npm:^2.0.0": + version: 2.1.0 + resolution: "inflation@npm:2.1.0" + checksum: 10c0/aadfcb8047a7e00d644e2e195f901dd9d7266c2be2326b7f8f6a99298f14916f1e322d00108a7e2778d6e76a8dc2174ddb9ac14bcdfe4f4866dfd612b695ab5d + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 + languageName: node + linkType: hard + "inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" @@ -14057,7 +16251,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:6.0.0": +"ini@npm:6.0.0, ini@npm:^6.0.0": version: 6.0.0 resolution: "ini@npm:6.0.0" checksum: 10c0/9a7f55f306e2b25b41ae67c8b526e8f4673f057b70852b9025816ef4f15f07bf1ba35ed68ea4471ff7b31718f7ef1bc50d709f8d03cb012e10a3135eb99c7206 @@ -14078,6 +16272,20 @@ __metadata: languageName: node linkType: hard +"init-package-json@npm:^8.2.5": + version: 8.2.5 + resolution: "init-package-json@npm:8.2.5" + dependencies: + "@npmcli/package-json": "npm:^7.0.0" + npm-package-arg: "npm:^13.0.0" + promzard: "npm:^3.0.1" + read: "npm:^5.0.1" + semver: "npm:^7.7.2" + validate-npm-package-name: "npm:^7.0.0" + checksum: 10c0/865409910077363225173f78d9495dd184dae40414f7e34d2f13408138f8ae7432e715e98d2dc717a52e73e224134fbf7c7a7f53267fc891952611ccda7c9242 + languageName: node + linkType: hard + "inquirer-select-pro@npm:^1.0.0-alpha.9": version: 1.0.0-alpha.9 resolution: "inquirer-select-pro@npm:1.0.0-alpha.9" @@ -14111,6 +16319,27 @@ __metadata: languageName: node linkType: hard +"inquirer@npm:^7.1.0": + version: 7.3.3 + resolution: "inquirer@npm:7.3.3" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.19" + mute-stream: "npm:0.0.8" + run-async: "npm:^2.4.0" + rxjs: "npm:^6.6.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + checksum: 10c0/96e75974cfd863fe6653c075e41fa5f1a290896df141189816db945debabcd92d3277145f11aef8d2cfca5409ab003ccdd18a099744814057b52a2f27aeb8c94 + languageName: node + linkType: hard + "ip-address@npm:^10.0.1": version: 10.1.0 resolution: "ip-address@npm:10.1.0" @@ -14155,6 +16384,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.3.1": + version: 0.3.4 + resolution: "is-arrayish@npm:0.3.4" + checksum: 10c0/1fa672a2f0bedb74154440310f616c0b6e53a95cf0625522ae050f06626d1cabd1a3d8085c882dc45c61ad0e7df2529aff122810b3b4a552880bf170d6df94e0 + languageName: node + linkType: hard + "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -14164,6 +16400,15 @@ __metadata: languageName: node linkType: hard +"is-cidr@npm:^6.0.4": + version: 6.0.4 + resolution: "is-cidr@npm:6.0.4" + dependencies: + cidr-regex: "npm:^5.0.4" + checksum: 10c0/795de8f4ed8a2ac4ce0e2ffa09541d6b2a6049fe133a4815398ad9bc284be4a3412164e112c7cdbb890f0ad8f43cc2dbfc38a0da9c9b8154edeede2325d6e973 + languageName: node + linkType: hard + "is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" @@ -14214,6 +16459,26 @@ __metadata: languageName: node linkType: hard +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.7": + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" + dependencies: + call-bound: "npm:^1.0.4" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372 + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -14325,6 +16590,18 @@ __metadata: languageName: node linkType: hard +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 + languageName: node + linkType: hard + "is-relative@npm:^0.1.0": version: 0.1.3 resolution: "is-relative@npm:0.1.3" @@ -14332,7 +16609,7 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^2.0.1": +"is-stream@npm:^2.0.0, is-stream@npm:^2.0.1": version: 2.0.1 resolution: "is-stream@npm:2.0.1" checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 @@ -14360,7 +16637,7 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:2.2.0, is-wsl@npm:^2.2.0": +"is-wsl@npm:2.2.0, is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: @@ -14406,6 +16683,13 @@ __metadata: languageName: node linkType: hard +"isexe@npm:^3.1.1": + version: 3.1.5 + resolution: "isexe@npm:3.1.5" + checksum: 10c0/8be2973a09f2f804ea1f34bfccfd5ea219ef48083bdb12107fe5bcf96b3e36b85084409e1b09ddaf2fae8927fdd9f6d70d90baadb78caa1ca7c530935706c8a4 + languageName: node + linkType: hard + "isexe@npm:^4.0.0": version: 4.0.0 resolution: "isexe@npm:4.0.0" @@ -14423,13 +16707,39 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0, istanbul-lib-coverage@npm:^3.2.2": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b languageName: node linkType: hard +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": version: 3.0.1 resolution: "istanbul-lib-report@npm:3.0.1" @@ -14441,7 +16751,18 @@ __metadata: languageName: node linkType: hard -"istanbul-reports@npm:^3.2.0": +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3, istanbul-reports@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-reports@npm:3.2.0" dependencies: @@ -14464,8 +16785,503 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.6.1": - version: 2.6.1 +"jake@npm:^10.8.5": + version: 10.9.4 + resolution: "jake@npm:10.9.4" + dependencies: + async: "npm:^3.2.6" + filelist: "npm:^1.0.4" + picocolors: "npm:^1.1.1" + bin: + jake: bin/cli.js + checksum: 10c0/bb52f000340d4a32f1a3893b9abe56ef2b77c25da4dbf2c0c874a8159d082dddda50a5ad10e26060198bd645b928ba8dba3b362710f46a247e335321188c5a9c + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + languageName: node + linkType: hard + +"jest-diff@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-diff@npm:27.5.1" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^27.5.1" + jest-get-type: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" + checksum: 10c0/48f008c7b4ea7794108319eb61050315b1723e7391cb01e4377c072cadcab10a984cb09d2a6876cb65f100d06c970fd932996192e092b26006f885c00945e7ad + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + languageName: node + linkType: hard + +"jest-get-type@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-get-type@npm:27.5.1" + checksum: 10c0/42ee0101336bccfc3c1cff598b603c6006db7876b6117e5bd4a9fb7ffaadfb68febdb9ae68d1c47bc3a4174b070153fc6cfb59df995dcd054e81ace5028a7269 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + languageName: node + linkType: hard + +"jest-json-schema@npm:^6.1.0": + version: 6.1.0 + resolution: "jest-json-schema@npm:6.1.0" + dependencies: + ajv: "npm:^8.8.2" + ajv-formats: "npm:^2.1.1" + chalk: "npm:^4.1.2" + jest-matcher-utils: "npm:^27.3.1" + checksum: 10c0/e7c86e1c8d33504db33b8d9e415f3444e421c9ed40614e7af62be7afe2dbd0f8a79c7f8102da301feabcc418c400c74b7a148ff5bbae272745cfeb6ad200831c + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^27.3.1": + version: 27.5.1 + resolution: "jest-matcher-utils@npm:27.5.1" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^27.5.1" + jest-get-type: "npm:^27.5.1" + pretty-format: "npm:^27.5.1" + checksum: 10c0/a2f082062e8bedc9cfe2654177a894ca43768c6db4c0f4efc0d6ec195e305a99e3d868ff54cc61bcd7f1c810d8ee28c9ac6374de21715dc52f136876de739a73 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + languageName: node + linkType: hard + +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + languageName: node + linkType: hard + +"jiti@npm:^2.6.1": + version: 2.6.1 resolution: "jiti@npm:2.6.1" bin: jiti: lib/jiti-cli.mjs @@ -14586,6 +17402,18 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": + version: 3.15.0 + resolution: "js-yaml@npm:3.15.0" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/ca966bd354ac5b1b7a4694ebdba46526796aa3a6a99529fa540af2abf85918bd155a50ccc0166b413130a00622999973754458ec01e7095bc902177bfdbd5b64 + languageName: node + linkType: hard + "js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1, js-yaml@npm:^4.2.0": version: 4.3.0 resolution: "js-yaml@npm:4.3.0" @@ -14636,6 +17464,13 @@ __metadata: languageName: node linkType: hard +"json-parse-even-better-errors@npm:^5.0.0": + version: 5.0.0 + resolution: "json-parse-even-better-errors@npm:5.0.0" + checksum: 10c0/9a33d120090a7637a2aa850acec610c011d7c6488c5184d7ffc0460ee0401057f3131a4dff70c6510900cf15a95ab99d3f0f2d959f59edfe6438d227e90bf5ca + languageName: node + linkType: hard + "json-schema-faker@npm:^0.5.0-rcv.26": version: 0.5.9 resolution: "json-schema-faker@npm:0.5.9" @@ -14680,6 +17515,13 @@ __metadata: languageName: node linkType: hard +"json-stringify-nice@npm:^1.1.4": + version: 1.1.4 + resolution: "json-stringify-nice@npm:1.1.4" + checksum: 10c0/13673b67ba9e7fde75a103cade0b0d2dd0d21cd3b918de8d8f6cd59d48ad8c78b0e85f6f4a5842073ddfc91ebdde5ef7c81c7f51945b96a33eaddc5d41324b87 + languageName: node + linkType: hard + "json-stringify-safe@npm:^5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" @@ -14758,6 +17600,13 @@ __metadata: languageName: node linkType: hard +"jsonparse@npm:^1.3.1": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 + languageName: node + linkType: hard + "jsonpath-plus@npm:^10.3.0": version: 10.4.0 resolution: "jsonpath-plus@npm:10.4.0" @@ -14809,6 +17658,20 @@ __metadata: languageName: node linkType: hard +"just-diff-apply@npm:^5.2.0": + version: 5.5.0 + resolution: "just-diff-apply@npm:5.5.0" + checksum: 10c0/d7b85371f2a5a17a108467fda35dddd95264ab438ccec7837b67af5913c57ded7246039d1df2b5bc1ade034ccf815b56d69786c5f1e07383168a066007c796c0 + languageName: node + linkType: hard + +"just-diff@npm:^6.0.0": + version: 6.0.2 + resolution: "just-diff@npm:6.0.2" + checksum: 10c0/1931ca1f0cea4cc480172165c189a84889033ad7a60bee302268ba8ca9f222b43773fd5f272a23ee618d43d85d3048411f06b635571a198159e9a85bb2495f5c + languageName: node + linkType: hard + "jwa@npm:^2.0.1": version: 2.0.1 resolution: "jwa@npm:2.0.1" @@ -14855,6 +17718,31 @@ __metadata: languageName: node linkType: hard +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + +"klona@npm:^2.0.6": + version: 2.0.6 + resolution: "klona@npm:2.0.6" + checksum: 10c0/94eed2c6c2ce99f409df9186a96340558897b3e62a85afdc1ee39103954d2ebe1c1c4e9fe2b0952771771fa96d70055ede8b27962a7021406374fdb695fd4d01 + languageName: node + linkType: hard + +"koa-bodyparser@npm:^4.3.0": + version: 4.4.1 + resolution: "koa-bodyparser@npm:4.4.1" + dependencies: + co-body: "npm:^6.0.0" + copy-to: "npm:^2.0.1" + type-is: "npm:^1.6.18" + checksum: 10c0/72abf648bb62649cebfed310ef8fd09db3ca48867e083814b63f799fedadfdc440817507b9edbcd1d8d75282b23ed64812d924d4d5fc12375ae935150b224c1d + languageName: node + linkType: hard + "koa-compose@npm:^4.1.0": version: 4.1.0 resolution: "koa-compose@npm:4.1.0" @@ -14862,6 +17750,103 @@ __metadata: languageName: node linkType: hard +"koa-convert@npm:^2.0.0": + version: 2.0.0 + resolution: "koa-convert@npm:2.0.0" + dependencies: + co: "npm:^4.6.0" + koa-compose: "npm:^4.1.0" + checksum: 10c0/d3e243ceccd11524d5f4942f6ccd828a9b18a1a967c4375192aa9eedf844f790563632839f006732ce8ca720275737c65a3bab344e13b25f41fb2be451ea102c + languageName: node + linkType: hard + +"koa-logger@npm:^3.2.1": + version: 3.2.1 + resolution: "koa-logger@npm:3.2.1" + dependencies: + bytes: "npm:^3.1.0" + chalk: "npm:^2.4.2" + humanize-number: "npm:0.0.2" + passthrough-counter: "npm:^1.0.0" + checksum: 10c0/7ad37a81ea1e1017caa886c909eeda8d9278ec87c1460818bb83c9326f55be8f35a1909f485b6d9e94b1566e4a955da53cc1bc1428520521d02ba6aaddeb1f7d + languageName: node + linkType: hard + +"koa-mount@npm:^4.0.0": + version: 4.2.0 + resolution: "koa-mount@npm:4.2.0" + dependencies: + debug: "npm:^4.0.1" + koa-compose: "npm:^4.1.0" + checksum: 10c0/2eb2201df6ab7ad09e8a9c4c9e2da3b51c8e4b1acd1847e4e44d9e9f317abdf3b014bf7ccf2a89558381fe8b1773a25ea1fde2212c79d76b4fb052d3e8a38363 + languageName: node + linkType: hard + +"koa-router@npm:^12.0.0": + version: 12.0.1 + resolution: "koa-router@npm:12.0.1" + dependencies: + debug: "npm:^4.3.4" + http-errors: "npm:^2.0.0" + koa-compose: "npm:^4.1.0" + methods: "npm:^1.1.2" + path-to-regexp: "npm:^6.2.1" + checksum: 10c0/061a6205d304e7f100b5c262f7a8b69d116f53680b3114e006d638211b377ea1abc5a1849c6eecc652388514569f44776b7ff5247ff17dcb1ff046a2e19850a9 + languageName: node + linkType: hard + +"koa-send@npm:^5.0.0": + version: 5.0.1 + resolution: "koa-send@npm:5.0.1" + dependencies: + debug: "npm:^4.1.1" + http-errors: "npm:^1.7.3" + resolve-path: "npm:^1.4.0" + checksum: 10c0/787a8abaf3690a86cf2e6021f1d870daba5f8393f4b4da4da74c26e7d1f7a89636fa2f251a0ec1ea75364fc81a9ef20d3c52e8e2dc7ad9f1d5053357a0db204f + languageName: node + linkType: hard + +"koa-static@npm:^5.0.0": + version: 5.0.0 + resolution: "koa-static@npm:5.0.0" + dependencies: + debug: "npm:^3.1.0" + koa-send: "npm:^5.0.0" + checksum: 10c0/4cb7a4e98506d54274658eb3565b24fcbe606bbb6916cb5ef226b2613d3ffd417dec3404000baa171f2206f2a6d29117bbe881fd26b27d54ef746d9de6de3e91 + languageName: node + linkType: hard + +"koa@npm:^2.14.1": + version: 2.16.4 + resolution: "koa@npm:2.16.4" + dependencies: + accepts: "npm:^1.3.5" + cache-content-type: "npm:^1.0.0" + content-disposition: "npm:~0.5.2" + content-type: "npm:^1.0.4" + cookies: "npm:~0.9.0" + debug: "npm:^4.3.2" + delegates: "npm:^1.0.0" + depd: "npm:^2.0.0" + destroy: "npm:^1.0.4" + encodeurl: "npm:^1.0.2" + escape-html: "npm:^1.0.3" + fresh: "npm:~0.5.2" + http-assert: "npm:^1.3.0" + http-errors: "npm:^1.6.3" + is-generator-function: "npm:^1.0.7" + koa-compose: "npm:^4.1.0" + koa-convert: "npm:^2.0.0" + on-finished: "npm:^2.3.0" + only: "npm:~0.0.2" + parseurl: "npm:^1.3.2" + statuses: "npm:^1.5.0" + type-is: "npm:^1.6.16" + vary: "npm:^1.1.2" + checksum: 10c0/bf21ffcf409bf847dca3f60349fc64a3b33e725e0ced3f405192a22fa51b4211cac29748f51df9674df82ca87691b3bdda64bbf80755ba6cdc6b2f35e878b0f5 + languageName: node + linkType: hard + "koa@npm:^3.2.1": version: 3.2.1 resolution: "koa@npm:3.2.1" @@ -14913,44 +17898,176 @@ __metadata: version: 9.0.0 resolution: "latest-version@npm:9.0.0" dependencies: - package-json: "npm:^10.0.0" - checksum: 10c0/643cfda3a58dfb3af221a2950e433393d28a5adbe225d1cbbb358dbcbb04e9f8dce15b892f8ae3e3156f50693428dbd7ca13a69edfbdfcd94e62519480d7041e + package-json: "npm:^10.0.0" + checksum: 10c0/643cfda3a58dfb3af221a2950e433393d28a5adbe225d1cbbb358dbcbb04e9f8dce15b892f8ae3e3156f50693428dbd7ca13a69edfbdfcd94e62519480d7041e + languageName: node + linkType: hard + +"launch-editor@npm:^2.11.1": + version: 2.13.1 + resolution: "launch-editor@npm:2.13.1" + dependencies: + picocolors: "npm:^1.1.1" + shell-quote: "npm:^1.8.3" + checksum: 10c0/6ceb606b16a8c6520f79e0370b94958ab91206bea60375fbc18bcdd343508a0e225c6d74592e1dfe784db8b2a6d30f8bb67fbac6f297ae6ec616e2a513636ad7 + languageName: node + linkType: hard + +"lazystream@npm:^1.0.0": + version: 1.0.1 + resolution: "lazystream@npm:1.0.1" + dependencies: + readable-stream: "npm:^2.0.5" + checksum: 10c0/ea4e509a5226ecfcc303ba6782cc269be8867d372b9bcbd625c88955df1987ea1a20da4643bf9270336415a398d33531ebf0d5f0d393b9283dc7c98bfcbd7b69 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"leven@npm:^4.0.0": + version: 4.1.0 + resolution: "leven@npm:4.1.0" + checksum: 10c0/de45316555624d7616c562055ce4773ad44dff7486a1696be300b040eb85472a429c2f18fd0f6352101b1fb01b336405b893f048d88d30f6fb7f8a2a2999a0c0 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"libnpmaccess@npm:^10.0.3": + version: 10.0.3 + resolution: "libnpmaccess@npm:10.0.3" + dependencies: + npm-package-arg: "npm:^13.0.0" + npm-registry-fetch: "npm:^19.0.0" + checksum: 10c0/4582f7a1b5e5a0103ed4e76776df3b82f5b296fc5d3ab92391d61ef526899783cdfa7983cb4cbc0d354ca4cdfd9e183523f8e45cb8be80a6804af05a7291127d + languageName: node + linkType: hard + +"libnpmdiff@npm:^8.1.11": + version: 8.1.11 + resolution: "libnpmdiff@npm:8.1.11" + dependencies: + "@npmcli/arborist": "npm:^9.9.0" + "@npmcli/installed-package-contents": "npm:^4.0.0" + binary-extensions: "npm:^3.0.0" + diff: "npm:^8.0.2" + minimatch: "npm:^10.0.3" + npm-package-arg: "npm:^13.0.0" + pacote: "npm:^21.0.2" + tar: "npm:^7.5.1" + checksum: 10c0/bb447c19d287120e33277d91bba9662a933336957b93390bb0a016df3e6a7ab9d633c1cefedb861b5f0e0be55b6be708b1ff3576b4d6b57b12882f6d1a55f14d + languageName: node + linkType: hard + +"libnpmexec@npm:^10.3.1": + version: 10.3.1 + resolution: "libnpmexec@npm:10.3.1" + dependencies: + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/arborist": "npm:^9.9.0" + "@npmcli/package-json": "npm:^7.0.0" + "@npmcli/run-script": "npm:^10.0.0" + ci-info: "npm:^4.0.0" + npm-package-arg: "npm:^13.0.0" + pacote: "npm:^21.0.2" + proc-log: "npm:^6.0.0" + read: "npm:^5.0.1" + semver: "npm:^7.3.7" + signal-exit: "npm:^4.1.0" + walk-up-path: "npm:^4.0.0" + checksum: 10c0/50bbc038f5ec4bef0c152d16d3441fd00a41a0e46ef4419302fdd21204bf3de0fe7da0a4aaa14307c795d12f0c11a547ff24722c4412c9d00225d636e450bc3d + languageName: node + linkType: hard + +"libnpmfund@npm:^7.0.25": + version: 7.0.25 + resolution: "libnpmfund@npm:7.0.25" + dependencies: + "@npmcli/arborist": "npm:^9.9.0" + checksum: 10c0/cd9c03d3926b36f9ca375de90f635be5b44c77b72872f7e5e5b66a356009f3701247e7e83ffa683fd1a8ccb6067ebe8b3fcdbf21f4fbe2dc011c4807db09f1a8 + languageName: node + linkType: hard + +"libnpmorg@npm:^8.0.1": + version: 8.0.1 + resolution: "libnpmorg@npm:8.0.1" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^19.0.0" + checksum: 10c0/5f63f522e5012ec797d9780fae053bb45ef26bdd88222df656aad986741aa42a5d40488f9b479c78922ddf0b5e8540272e72ce45b54f33475b8fa40f2a17a336 + languageName: node + linkType: hard + +"libnpmpack@npm:^9.1.11": + version: 9.1.11 + resolution: "libnpmpack@npm:9.1.11" + dependencies: + "@npmcli/arborist": "npm:^9.9.0" + "@npmcli/run-script": "npm:^10.0.0" + npm-package-arg: "npm:^13.0.0" + pacote: "npm:^21.0.2" + checksum: 10c0/93a6556ef1ce056228c3bcfe81c888bb5b59af69f3202ac2c0ae7fd5bcd39e6a3b295e7a1663a3895c890e3b360e9181b568eafd70de55199f60da72d7ca9c01 languageName: node linkType: hard -"launch-editor@npm:^2.11.1": - version: 2.13.1 - resolution: "launch-editor@npm:2.13.1" +"libnpmpublish@npm:^11.2.0": + version: 11.2.0 + resolution: "libnpmpublish@npm:11.2.0" dependencies: - picocolors: "npm:^1.1.1" - shell-quote: "npm:^1.8.3" - checksum: 10c0/6ceb606b16a8c6520f79e0370b94958ab91206bea60375fbc18bcdd343508a0e225c6d74592e1dfe784db8b2a6d30f8bb67fbac6f297ae6ec616e2a513636ad7 + "@npmcli/package-json": "npm:^7.0.0" + ci-info: "npm:^4.0.0" + npm-package-arg: "npm:^13.0.0" + npm-registry-fetch: "npm:^19.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.7" + sigstore: "npm:^4.0.0" + ssri: "npm:^13.0.0" + checksum: 10c0/1531fd719da5e5a56f40872c458650ab2b9b4f9c1451ac77c1bb3a79b611ec4520bfc43888e3a79995b6825ad3ec5c603b05a185127fbf44a1c82b3aec12bc1f languageName: node linkType: hard -"lazystream@npm:^1.0.0": - version: 1.0.1 - resolution: "lazystream@npm:1.0.1" +"libnpmsearch@npm:^9.0.1": + version: 9.0.1 + resolution: "libnpmsearch@npm:9.0.1" dependencies: - readable-stream: "npm:^2.0.5" - checksum: 10c0/ea4e509a5226ecfcc303ba6782cc269be8867d372b9bcbd625c88955df1987ea1a20da4643bf9270336415a398d33531ebf0d5f0d393b9283dc7c98bfcbd7b69 + npm-registry-fetch: "npm:^19.0.0" + checksum: 10c0/7731c2437a73c327498fcdc127f93d5f5393af5733a3ba3e14c65cb17efa128df81794b4140885df24616ca842caef66472ae0b31e0aeef399c72436ce199caf languageName: node linkType: hard -"leven@npm:^4.0.0": - version: 4.1.0 - resolution: "leven@npm:4.1.0" - checksum: 10c0/de45316555624d7616c562055ce4773ad44dff7486a1696be300b040eb85472a429c2f18fd0f6352101b1fb01b336405b893f048d88d30f6fb7f8a2a2999a0c0 +"libnpmteam@npm:^8.0.2": + version: 8.0.2 + resolution: "libnpmteam@npm:8.0.2" + dependencies: + aproba: "npm:^2.0.0" + npm-registry-fetch: "npm:^19.0.0" + checksum: 10c0/a937d664aacf81fa94d041b10210252978c9538f89b48f173e74cdb1c11cee9f4ba41335facb93ff2610d40e78e9d369ab2680100a0a2e481aa3320e26fcbf19 languageName: node linkType: hard -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" +"libnpmversion@npm:^8.0.4": + version: 8.0.4 + resolution: "libnpmversion@npm:8.0.4" dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + "@npmcli/git": "npm:^7.0.0" + "@npmcli/run-script": "npm:^10.0.0" + json-parse-even-better-errors: "npm:^5.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.7" + checksum: 10c0/f147ece277796b886afc323cc8475aca4947bbaad9580e7f33c08a6527bd3379b47d014eb85f3cc5a68d78ee3f1b82a54560839e292b62ae4b6d8f760207859f languageName: node linkType: hard @@ -14973,7 +18090,7 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^3.1.1": +"lilconfig@npm:^3.1.1, lilconfig@npm:^3.1.3": version: 3.1.3 resolution: "lilconfig@npm:3.1.3" checksum: 10c0/f5604e7240c5c275743561442fbc5abf2a84ad94da0f5adc71d25e31fa8483048de3dcedcb7a44112a942fed305fd75841cdf6c9681c7f640c63f1049e9a5dcc @@ -15186,7 +18303,7 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:^4.6.2": +"lodash.merge@npm:^4.6.1, lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 @@ -15276,7 +18393,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb @@ -15393,6 +18510,35 @@ __metadata: languageName: node linkType: hard +"make-fetch-happen@npm:^15.0.1, make-fetch-happen@npm:^15.0.4, make-fetch-happen@npm:^15.0.6": + version: 15.0.6 + resolution: "make-fetch-happen@npm:15.0.6" + dependencies: + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/agent": "npm:^4.0.0" + "@npmcli/redact": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + ssri: "npm:^13.0.0" + checksum: 10c0/2c5805dee83efd1cd1d3f57505120ae98f4a328be72d82447e24b8f72b8e5475910d7dbc49d7da1c5bd96a62bf8ef6ffda88ebadfdfbec7c715cfde2459c9295 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + "map-obj@npm:6.0.0": version: 6.0.0 resolution: "map-obj@npm:6.0.0" @@ -15465,6 +18611,20 @@ __metadata: languageName: node linkType: hard +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + "methods@npm:^1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" @@ -15479,6 +18639,16 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -15493,7 +18663,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -15566,7 +18736,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:10.2.5, minimatch@npm:^10.2.4, minimatch@npm:^10.2.5": +"minimatch@npm:10.2.5, minimatch@npm:^10.0.3, minimatch@npm:^10.1.1, minimatch@npm:^10.2.4, minimatch@npm:^10.2.5": version: 10.2.5 resolution: "minimatch@npm:10.2.5" dependencies: @@ -15602,7 +18772,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.1.0": +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": version: 5.1.9 resolution: "minimatch@npm:5.1.9" dependencies: @@ -15687,7 +18857,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2, minipass@npm:^7.1.3": version: 7.1.3 resolution: "minipass@npm:7.1.3" checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb @@ -15740,6 +18910,15 @@ __metadata: languageName: node linkType: hard +"mock-json-schema@npm:^1.0.7": + version: 1.1.2 + resolution: "mock-json-schema@npm:1.1.2" + dependencies: + lodash: "npm:^4.17.21" + checksum: 10c0/c6bf912694ad1e582bd695f6e01998425b299692f86746155c20f7f8c6a77dee3b779d953a0f85141886b13458a0fcba9d488e3364dd68aad080227630fa4b48 + languageName: node + linkType: hard + "module-details-from-path@npm:^1.0.3": version: 1.0.4 resolution: "module-details-from-path@npm:1.0.4" @@ -15761,7 +18940,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.2, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -15794,6 +18973,13 @@ __metadata: languageName: node linkType: hard +"mute-stream@npm:0.0.8, mute-stream@npm:~0.0.4": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + "mute-stream@npm:^1.0.0": version: 1.0.0 resolution: "mute-stream@npm:1.0.0" @@ -15815,13 +19001,6 @@ __metadata: languageName: node linkType: hard -"mute-stream@npm:~0.0.4": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 - languageName: node - linkType: hard - "mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -15865,6 +19044,13 @@ __metadata: languageName: node linkType: hard +"natural-orderby@npm:^2.0.1, natural-orderby@npm:^2.0.3": + version: 2.0.3 + resolution: "natural-orderby@npm:2.0.3" + checksum: 10c0/e46508c89b8217c752a25feb251dd9229354cbbb7f3cc9263db94138732ef2cf0b3428e5ad517cffe8c9a295512721123a1c88d560dab3ae2ad5d9e8d83868c7 + languageName: node + linkType: hard + "needle@npm:2.4.0": version: 2.4.0 resolution: "needle@npm:2.4.0" @@ -15908,6 +19094,15 @@ __metadata: languageName: node linkType: hard +"node-fetch-h2@npm:^2.3.0": + version: 2.3.0 + resolution: "node-fetch-h2@npm:2.3.0" + dependencies: + http2-client: "npm:^1.2.5" + checksum: 10c0/10f117c5aa1d475fff05028dddd617a61606083e4d6c4195dd5f5b03c973182e0d125e804771e6888d04f7d92b5c9c27a6149d1beedd6af1e0744f163e8a02d9 + languageName: node + linkType: hard + "node-fetch-native@npm:^1.6.7": version: 1.6.7 resolution: "node-fetch-native@npm:1.6.7" @@ -15936,6 +19131,26 @@ __metadata: languageName: node linkType: hard +"node-gyp@npm:^12.1.0, node-gyp@npm:^12.4.0": + version: 12.4.0 + resolution: "node-gyp@npm:12.4.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.5.4" + tinyglobby: "npm:^0.2.12" + undici: "npm:^6.25.0" + which: "npm:^6.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/9acb7c798e124275a6f9c1f7eb64b5abd6196bb885a3945fb44ee0dccf435514e88cdfb0f228ee7ff76ef25107c1f39ff37a067bf92fd00b9aff9234db29ff9e + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 12.2.0 resolution: "node-gyp@npm:12.2.0" @@ -15956,6 +19171,13 @@ __metadata: languageName: node linkType: hard +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + "node-ipc@npm:9.1.1": version: 9.1.1 resolution: "node-ipc@npm:9.1.1" @@ -15988,6 +19210,15 @@ __metadata: languageName: node linkType: hard +"node-readfiles@npm:^0.2.0": + version: 0.2.0 + resolution: "node-readfiles@npm:0.2.0" + dependencies: + es6-promise: "npm:^3.2.1" + checksum: 10c0/9de2f741baae29f2422b22ef4399b5f7cb6c20372d4e88447a98d00a92cf1a35efdf942d24eee153a87d885aa7e7442b4bc6de33d4b91c47ba9da501780c76a1 + languageName: node + linkType: hard + "node-releases@npm:^2.0.27": version: 2.0.27 resolution: "node-releases@npm:2.0.27" @@ -16024,6 +19255,110 @@ __metadata: languageName: node linkType: hard +"npm-audit-report@npm:^7.0.0": + version: 7.0.0 + resolution: "npm-audit-report@npm:7.0.0" + checksum: 10c0/dae0ced5030cdb7e13bb59d980233e3c5969e3b9a3b819bc1618b86c1467a75c520f587a1f1f577df5840c949f02f409baa67cbb7d4b89f1f55178bade61e28b + languageName: node + linkType: hard + +"npm-bundled@npm:^5.0.0": + version: 5.0.0 + resolution: "npm-bundled@npm:5.0.0" + dependencies: + npm-normalize-package-bin: "npm:^5.0.0" + checksum: 10c0/6408b38343b51d5e329a0a4af4cf19d7872bc9099f6f7553fbadb5d56e69092d5af76fe501fa0817fcb8af29cf3cc8f8806a88031580f54068e5e80abf1ca870 + languageName: node + linkType: hard + +"npm-install-checks@npm:^8.0.0": + version: 8.0.0 + resolution: "npm-install-checks@npm:8.0.0" + dependencies: + semver: "npm:^7.1.1" + checksum: 10c0/a979cbc8fceacedf91bf59c2883f46f3c56bd421869f6664cce66aa605af14f875041730e66f3d1c543d49bdb032cbb147cdb481a17c541780d016bc2df89141 + languageName: node + linkType: hard + +"npm-normalize-package-bin@npm:^5.0.0": + version: 5.0.0 + resolution: "npm-normalize-package-bin@npm:5.0.0" + checksum: 10c0/9cd875669354ce451779495a111dc1622bedf702f7ad8b36b05b4037a2c961356361cff49c1e2e77d90b80194dffd18fdb52f16bf64e00ccffe6129003a55248 + languageName: node + linkType: hard + +"npm-package-arg@npm:^11.0.3": + version: 11.0.3 + resolution: "npm-package-arg@npm:11.0.3" + dependencies: + hosted-git-info: "npm:^7.0.0" + proc-log: "npm:^4.0.0" + semver: "npm:^7.3.5" + validate-npm-package-name: "npm:^5.0.0" + checksum: 10c0/e18333485e05c3a8774f4b5701ef74f4799533e650b70a68ca8dd697666c9a8d46932cb765fc593edce299521033bd4025a40323d5240cea8a393c784c0c285a + languageName: node + linkType: hard + +"npm-package-arg@npm:^13.0.0, npm-package-arg@npm:^13.0.2": + version: 13.0.2 + resolution: "npm-package-arg@npm:13.0.2" + dependencies: + hosted-git-info: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + validate-npm-package-name: "npm:^7.0.0" + checksum: 10c0/bf4ecdbfac876250f17710c6d0fac014bb345555acc80ce3b9e685d828107f3682378a9c413278c2fe4e958f4aad261677769be9a2b7c3965ab219b5bb852197 + languageName: node + linkType: hard + +"npm-packlist@npm:^10.0.1": + version: 10.0.4 + resolution: "npm-packlist@npm:10.0.4" + dependencies: + ignore-walk: "npm:^8.0.0" + proc-log: "npm:^6.0.0" + checksum: 10c0/500ec00ed5edc3f7136255a8c17dfd36fb718182af61a86a68768aa3b325f69739953fe8888fa8e4765db00e7892a9d0a30093b145d091b23e96b7d1bbf1187e + languageName: node + linkType: hard + +"npm-pick-manifest@npm:^11.0.1, npm-pick-manifest@npm:^11.0.3": + version: 11.0.3 + resolution: "npm-pick-manifest@npm:11.0.3" + dependencies: + npm-install-checks: "npm:^8.0.0" + npm-normalize-package-bin: "npm:^5.0.0" + npm-package-arg: "npm:^13.0.0" + semver: "npm:^7.3.5" + checksum: 10c0/214a9966de69bbb1e3c4ade8f33e99fefa1bdc7cbef480e4d2dc3fa63104e05f94bd84b56814c13b20bf838398bfc72f39691cb5d06d7c17333fe0ee33fe3e71 + languageName: node + linkType: hard + +"npm-profile@npm:^12.0.2": + version: 12.0.2 + resolution: "npm-profile@npm:12.0.2" + dependencies: + npm-registry-fetch: "npm:^19.0.0" + proc-log: "npm:^6.1.0" + checksum: 10c0/a7ad12918786685fde1d67e747242f843440e3a1e23cb4e8cdca929e7870690a8bda4450611011ecc5304a3685686130d5f5fe37bdc8f33270119a33e3e29cbe + languageName: node + linkType: hard + +"npm-registry-fetch@npm:^19.0.0, npm-registry-fetch@npm:^19.1.1": + version: 19.1.1 + resolution: "npm-registry-fetch@npm:19.1.1" + dependencies: + "@npmcli/redact": "npm:^4.0.0" + jsonparse: "npm:^1.3.1" + make-fetch-happen: "npm:^15.0.0" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minizlib: "npm:^3.0.1" + npm-package-arg: "npm:^13.0.0" + proc-log: "npm:^6.0.0" + checksum: 10c0/19903dc5cfd6cfc0d6922e4eeac042e95461f4cc58d280e6d6585e187a839a1d039c6a25b909157d7d655016aec8a8a5f3fa75f62cffa87ac133f95842e12b2c + languageName: node + linkType: hard + "npm-run-path@npm:4.0.1, npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -16033,6 +19368,98 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^5.3.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba + languageName: node + linkType: hard + +"npm-user-validate@npm:^4.0.0": + version: 4.0.0 + resolution: "npm-user-validate@npm:4.0.0" + checksum: 10c0/11ea46e82778d4d339ed50c2dfb888ecf3a6adca689f9f1fa91f338bd153dc51d6ae4763884ccf1d6d9d6c470d296f902a012bf2eed5ce569b493ef6ea9f02fa + languageName: node + linkType: hard + +"npm@npm:^11.18.0": + version: 11.18.0 + resolution: "npm@npm:11.18.0" + dependencies: + "@isaacs/string-locale-compare": "npm:^1.1.0" + "@npmcli/arborist": "npm:^9.9.0" + "@npmcli/config": "npm:^10.12.0" + "@npmcli/fs": "npm:^5.0.0" + "@npmcli/map-workspaces": "npm:^5.0.3" + "@npmcli/metavuln-calculator": "npm:^9.0.3" + "@npmcli/package-json": "npm:^7.0.5" + "@npmcli/promise-spawn": "npm:^9.0.1" + "@npmcli/redact": "npm:^4.0.0" + "@npmcli/run-script": "npm:^10.0.4" + "@sigstore/tuf": "npm:^4.0.2" + abbrev: "npm:^4.0.0" + archy: "npm:~1.0.0" + cacache: "npm:^20.0.4" + chalk: "npm:^5.6.2" + ci-info: "npm:^4.4.0" + fastest-levenshtein: "npm:^1.0.16" + fs-minipass: "npm:^3.0.3" + glob: "npm:^13.0.6" + graceful-fs: "npm:^4.2.11" + hosted-git-info: "npm:^9.0.3" + ini: "npm:^6.0.0" + init-package-json: "npm:^8.2.5" + is-cidr: "npm:^6.0.4" + json-parse-even-better-errors: "npm:^5.0.0" + libnpmaccess: "npm:^10.0.3" + libnpmdiff: "npm:^8.1.11" + libnpmexec: "npm:^10.3.1" + libnpmfund: "npm:^7.0.25" + libnpmorg: "npm:^8.0.1" + libnpmpack: "npm:^9.1.11" + libnpmpublish: "npm:^11.2.0" + libnpmsearch: "npm:^9.0.1" + libnpmteam: "npm:^8.0.2" + libnpmversion: "npm:^8.0.4" + make-fetch-happen: "npm:^15.0.6" + minimatch: "npm:^10.2.5" + minipass: "npm:^7.1.3" + minipass-pipeline: "npm:^1.2.4" + ms: "npm:^2.1.2" + node-gyp: "npm:^12.4.0" + nopt: "npm:^9.0.0" + npm-audit-report: "npm:^7.0.0" + npm-install-checks: "npm:^8.0.0" + npm-package-arg: "npm:^13.0.2" + npm-pick-manifest: "npm:^11.0.3" + npm-profile: "npm:^12.0.2" + npm-registry-fetch: "npm:^19.1.1" + npm-user-validate: "npm:^4.0.0" + p-map: "npm:^7.0.4" + pacote: "npm:^21.5.1" + parse-conflict-json: "npm:^5.0.1" + proc-log: "npm:^6.1.0" + qrcode-terminal: "npm:^0.12.0" + read: "npm:^5.0.1" + semver: "npm:^7.8.5" + spdx-expression-parse: "npm:^4.0.0" + ssri: "npm:^13.0.1" + supports-color: "npm:^10.2.2" + tar: "npm:^7.5.19" + text-table: "npm:~0.2.0" + tiny-relative-date: "npm:^2.0.2" + treeverse: "npm:^3.0.0" + validate-npm-package-name: "npm:^7.0.2" + which: "npm:^6.0.1" + bin: + npm: bin/npm-cli.js + npx: bin/npx-cli.js + checksum: 10c0/13471a2e548c295044d16f4a117387edb69ee2e41e016a914a3a32739514252069c7213399d196fd7a906488503dc61a0cd5cd25afddf696a2048888ae70c0a6 + languageName: node + linkType: hard + "nth-check@npm:^2.0.1": version: 2.1.1 resolution: "nth-check@npm:2.1.1" @@ -16202,6 +19629,64 @@ __metadata: languageName: node linkType: hard +"oas-kit-common@npm:^1.0.8": + version: 1.0.8 + resolution: "oas-kit-common@npm:1.0.8" + dependencies: + fast-safe-stringify: "npm:^2.0.7" + checksum: 10c0/5619a0bd19a07b52af1afeff26e44601002c0fd558d0020fdb720cb3723b60c83b80efede3a62110ce315f15b971751fb46396760e0e507fb8fd412cdc3808dd + languageName: node + linkType: hard + +"oas-linter@npm:^3.2.2": + version: 3.2.2 + resolution: "oas-linter@npm:3.2.2" + dependencies: + "@exodus/schemasafe": "npm:^1.0.0-rc.2" + should: "npm:^13.2.1" + yaml: "npm:^1.10.0" + checksum: 10c0/5a8ea3d8a0bf185b676659d1e1c0b9b50695aeff53ccd5c264c8e99b4a7c0021f802b937913d76f0bc1a6a2b8ae151df764d95302b0829063b9b26f8c436871c + languageName: node + linkType: hard + +"oas-resolver@npm:^2.5.6": + version: 2.5.6 + resolution: "oas-resolver@npm:2.5.6" + dependencies: + node-fetch-h2: "npm:^2.3.0" + oas-kit-common: "npm:^1.0.8" + reftools: "npm:^1.1.9" + yaml: "npm:^1.10.0" + yargs: "npm:^17.0.1" + bin: + resolve: resolve.js + checksum: 10c0/cfba5ba3f7ea6673a840836cf194a80ba7f77e6d1ee005aa35cc838cad56d7e455fa53753ae7cc38810c96405b8606e675098ea7023639cf546cb10343f180f9 + languageName: node + linkType: hard + +"oas-schema-walker@npm:^1.1.5": + version: 1.1.5 + resolution: "oas-schema-walker@npm:1.1.5" + checksum: 10c0/8ba6bd2a9a8ede2c5574f217653a9e2b889a7c5be69c664a57e293591c58952e8510f4f9e2a82fd5f52491c859ce5c2b68342e9b971e9667f6b811e7fb56fd54 + languageName: node + linkType: hard + +"oas-validator@npm:^5.0.8": + version: 5.0.8 + resolution: "oas-validator@npm:5.0.8" + dependencies: + call-me-maybe: "npm:^1.0.1" + oas-kit-common: "npm:^1.0.8" + oas-linter: "npm:^3.2.2" + oas-resolver: "npm:^2.5.6" + oas-schema-walker: "npm:^1.1.5" + reftools: "npm:^1.1.9" + should: "npm:^13.2.1" + yaml: "npm:^1.10.0" + checksum: 10c0/16bb722042dcba93892c50db2201df6aeea9c3dd60e2f7bc18b36f23c610d136f52a5946908817f6fdd4139219fa4b177f952b9831039078b4c8730fa026b180 + languageName: node + linkType: hard + "oauth2-mock-server@npm:^8.2.3": version: 8.2.3 resolution: "oauth2-mock-server@npm:8.2.3" @@ -16224,13 +19709,27 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.3": +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": version: 1.13.4 resolution: "object-inspect@npm:1.13.4" checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 languageName: node linkType: hard +"object-treeify@npm:^1.1.33, object-treeify@npm:^1.1.4": + version: 1.1.33 + resolution: "object-treeify@npm:1.1.33" + checksum: 10c0/5b735ac552200bf14f9892ce58295303e8d15a8cc7a0fd4fe6ff99923ab0c196fb70a870ab2a0eefc6820c4acb49e614b88c72d344b9c6bd22584a3efbd386fe + languageName: node + linkType: hard + +"object-treeify@npm:^4.0.1": + version: 4.0.1 + resolution: "object-treeify@npm:4.0.1" + checksum: 10c0/90330936d097da8741bb5099488319c252501504a63f68a17e40a9b2425c9713e44b6c86c5232594e1d92395da55ca37756a534f6d392a2de52ba58d22f71b42 + languageName: node + linkType: hard + "obug@npm:^2.1.1": version: 2.1.1 resolution: "obug@npm:2.1.1" @@ -16256,7 +19755,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": +"on-finished@npm:^2.3.0, on-finished@npm:^2.4.1, on-finished@npm:~2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -16283,7 +19782,7 @@ __metadata: languageName: node linkType: hard -"onetime@npm:5.1.2, onetime@npm:^5.1.0": +"onetime@npm:5.1.2, onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: @@ -16301,6 +19800,13 @@ __metadata: languageName: node linkType: hard +"only@npm:~0.0.2": + version: 0.0.2 + resolution: "only@npm:0.0.2" + checksum: 10c0/d26b1347835a5a9b17afbd889ed60de3d3ae14cdeca5ba008d86e6bf055466a431adc731b82e1e8ab24a3b8be5b5c2cdbc16e652d231d18cc1a5752320aaf0a0 + languageName: node + linkType: hard + "ono@npm:^4.0.11": version: 4.0.11 resolution: "ono@npm:4.0.11" @@ -16347,6 +19853,38 @@ __metadata: languageName: node linkType: hard +"openapi-backend@npm:^5.10.6, openapi-backend@npm:^5.18.0": + version: 5.18.0 + resolution: "openapi-backend@npm:5.18.0" + dependencies: + "@apidevtools/json-schema-ref-parser": "npm:^11.1.0" + ajv: "npm:^8.6.2" + bath-es5: "npm:^3.0.3" + cookie: "npm:^1.0.1" + dereference-json-schema: "npm:^0.2.1" + lodash: "npm:^4.17.15" + mock-json-schema: "npm:^1.0.7" + openapi-schema-validator: "npm:^12.0.0" + openapi-types: "npm:^12.0.2" + qs: "npm:^6.15.0" + checksum: 10c0/6e727c997a97fd7e091d3618457842dfa507510ae5b5006604f6b6480e8ee2a7a436ef53c094985796a5dd5ad323df0204c77feeb00dabac02b71526740c6144 + languageName: node + linkType: hard + +"openapi-client-axios@npm:^7.5.5": + version: 7.9.0 + resolution: "openapi-client-axios@npm:7.9.0" + dependencies: + bath-es5: "npm:^3.0.3" + dereference-json-schema: "npm:^0.2.1" + openapi-types: "npm:^12.1.3" + peerDependencies: + axios: ">=0.25.0" + js-yaml: ^4.1.0 + checksum: 10c0/1413f787f570d958a1c55b2b331dc51b546624986566e0e2a23d82b0ec0ce6552f9228b662319d864c0d46711776779d3d68d2c364d9d26a4bfdd36692b61278 + languageName: node + linkType: hard + "openapi-fetch@npm:^0.15.2": version: 0.15.2 resolution: "openapi-fetch@npm:0.15.2" @@ -16365,6 +19903,25 @@ __metadata: languageName: node linkType: hard +"openapi-schema-validator@npm:^12.0.0": + version: 12.1.3 + resolution: "openapi-schema-validator@npm:12.1.3" + dependencies: + ajv: "npm:^8.1.0" + ajv-formats: "npm:^2.0.2" + lodash.merge: "npm:^4.6.1" + openapi-types: "npm:^12.1.3" + checksum: 10c0/701c2f3d911fb7f69760642169defe7ab114a337a23063caeb36a1dda4362b742be526feb4c5cd0ff645836c2d32aca9d5e6fdf6a1b49af3f2ac89ecbfb1a64b + languageName: node + linkType: hard + +"openapi-types@npm:^12.0.2, openapi-types@npm:^12.1.3": + version: 12.1.3 + resolution: "openapi-types@npm:12.1.3" + checksum: 10c0/4ad4eb91ea834c237edfa6ab31394e87e00c888fc2918009763389c00d02342345195d6f302d61c3fd807f17723cd48df29b47b538b68375b3827b3758cd520f + languageName: node + linkType: hard + "openapi-typescript-helpers@npm:^0.0.15": version: 0.0.15 resolution: "openapi-typescript-helpers@npm:0.0.15" @@ -16392,8 +19949,54 @@ __metadata: peerDependencies: typescript: ^5.x bin: - openapi-typescript: bin/cli.js - checksum: 10c0/56d25e160fee33a231646d0648407ca4e65415ff7696b6545bca948828a941a3aeb55585fe34159b71ba8ad93bac55d025db46815132ea092d07ef7386efa462 + openapi-typescript: bin/cli.js + checksum: 10c0/56d25e160fee33a231646d0648407ca4e65415ff7696b6545bca948828a941a3aeb55585fe34159b71ba8ad93bac55d025db46815132ea092d07ef7386efa462 + languageName: node + linkType: hard + +"openapicmd@npm:^2.9.2": + version: 2.9.2 + resolution: "openapicmd@npm:2.9.2" + dependencies: + "@anttiviljami/dtsgenerator": "npm:^3.20.0" + "@apidevtools/swagger-parser": "npm:^10.1.0" + "@koa/cors": "npm:^5.0.0" + "@oclif/command": "npm:^1.8.36" + "@oclif/config": "npm:^1.18.17" + "@oclif/core": "npm:^3" + "@oclif/errors": "npm:^1.3.6" + "@oclif/plugin-help": "npm:^6.0.2" + "@oclif/plugin-plugins": "npm:^5.4.4" + "@types/inquirer": "npm:^7.3.1" + ajv: "npm:^8.12.0" + axios: "npm:^1.3.4" + chalk: "npm:^4.0.0" + cli-ux: "npm:^6.0.9" + common-tags: "npm:^1.8.2" + debug: "npm:^4.1.1" + deepmerge: "npm:^4.3.0" + get-port: "npm:^5.0.0" + inquirer: "npm:^7.1.0" + jest: "npm:^29.7.0" + jest-json-schema: "npm:^6.1.0" + js-yaml: "npm:^4.1.0" + klona: "npm:^2.0.6" + koa: "npm:^2.14.1" + koa-bodyparser: "npm:^4.3.0" + koa-logger: "npm:^3.2.1" + koa-mount: "npm:^4.0.0" + koa-router: "npm:^12.0.0" + koa-static: "npm:^5.0.0" + openapi-backend: "npm:^5.10.6" + openapi-client-axios: "npm:^7.5.5" + swagger-editor-dist: "npm:^4.11.2" + swagger-ui-dist: "npm:^5.9.0" + swagger2openapi: "npm:^7.0.8" + tslib: "npm:^2.5.0" + yargs: "npm:^17.7.2" + bin: + openapi: bin/run.js + checksum: 10c0/440620602a6a4bac97ba5a826e14a053dc6ed91764af8262518d4a0530dcb33a2214f1fd753240feea4a27f6f8ef0f709ebbef0b3427d4b0b349f501098ed81a languageName: node linkType: hard @@ -16678,7 +20281,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -16712,6 +20315,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.4": + version: 7.0.5 + resolution: "p-map@npm:7.0.5" + checksum: 10c0/4ccbb67d36a8d6e2125ab64ccabee424d1c89b03c10afb43830523c7b9aacc1005e5d21ca7aea70bdc556bd548b7bde65df23c7a18091bbf2b5daf9b86fbc8c5 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -16764,6 +20374,33 @@ __metadata: languageName: node linkType: hard +"pacote@npm:^21.0.0, pacote@npm:^21.0.2, pacote@npm:^21.5.1": + version: 21.5.1 + resolution: "pacote@npm:21.5.1" + dependencies: + "@gar/promise-retry": "npm:^1.0.0" + "@npmcli/git": "npm:^7.0.0" + "@npmcli/installed-package-contents": "npm:^4.0.0" + "@npmcli/package-json": "npm:^7.0.0" + "@npmcli/promise-spawn": "npm:^9.0.0" + "@npmcli/run-script": "npm:^10.0.0" + cacache: "npm:^20.0.0" + fs-minipass: "npm:^3.0.0" + minipass: "npm:^7.0.2" + npm-package-arg: "npm:^13.0.0" + npm-packlist: "npm:^10.0.1" + npm-pick-manifest: "npm:^11.0.1" + npm-registry-fetch: "npm:^19.0.0" + proc-log: "npm:^6.0.0" + sigstore: "npm:^4.0.0" + ssri: "npm:^13.0.0" + tar: "npm:^7.4.3" + bin: + pacote: bin/index.js + checksum: 10c0/61649e22d3c03e5de416c2073032120820ef494f8dece2bcf205d1e17f0ea76d02872d5f2e0804832ba39c1ccc73b454152f7466bfa717053e7a552db690cd4a + languageName: node + linkType: hard + "pako@npm:^0.2.5": version: 0.2.9 resolution: "pako@npm:0.2.9" @@ -16787,6 +20424,17 @@ __metadata: languageName: node linkType: hard +"parse-conflict-json@npm:^5.0.1": + version: 5.0.1 + resolution: "parse-conflict-json@npm:5.0.1" + dependencies: + json-parse-even-better-errors: "npm:^5.0.0" + just-diff: "npm:^6.0.0" + just-diff-apply: "npm:^5.2.0" + checksum: 10c0/9478c015d138b4ad1538296fc50316f7341d909d4d1a66561abe4e0c9975ff5485f62ac423b52cd4b63aa37ef8e83efe536f544c2cc13b07b61104480f3c8be2 + languageName: node + linkType: hard + "parse-json@npm:8.3.0, parse-json@npm:^8.3.0": version: 8.3.0 resolution: "parse-json@npm:8.3.0" @@ -16838,13 +20486,30 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:^1.3.3, parseurl@npm:~1.3.3": +"parseurl@npm:^1.3.2, parseurl@npm:^1.3.3, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 languageName: node linkType: hard +"passthrough-counter@npm:^1.0.0": + version: 1.0.0 + resolution: "passthrough-counter@npm:1.0.0" + checksum: 10c0/fd2675d6029c9a664ce72db3998b017fd83264ffbb2c273fbe2e106ec2156c668b50ce3015bf6ae438711723c49ee00a5740b1c23f43cb438d1fed2ba6032f77 + languageName: node + linkType: hard + +"password-prompt@npm:^1.1.2, password-prompt@npm:^1.1.3": + version: 1.1.3 + resolution: "password-prompt@npm:1.1.3" + dependencies: + ansi-escapes: "npm:^4.3.2" + cross-spawn: "npm:^7.0.3" + checksum: 10c0/f6c2ec49e8bb91a421ed42809c00f8c1d09ee7ea8454c05a40150ec3c47e67b1f16eea7bceace13451accb7bb85859ee3e8d67e8fa3a85f622ba36ebe681ee51 + languageName: node + linkType: hard + "path-browserify@npm:^1.0.1": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" @@ -16859,6 +20524,13 @@ __metadata: languageName: node linkType: hard +"path-is-absolute@npm:1.0.1": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + "path-key@npm:3.1.1, path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -16866,6 +20538,13 @@ __metadata: languageName: node linkType: hard +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -16883,6 +20562,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^6.2.1": + version: 6.3.0 + resolution: "path-to-regexp@npm:6.3.0" + checksum: 10c0/73b67f4638b41cde56254e6354e46ae3a2ebc08279583f6af3d96fe4664fc75788f74ed0d18ca44fa4a98491b69434f9eee73b97bb5314bd1b5adb700f5c18d6 + languageName: node + linkType: hard + "path-to-regexp@npm:^8.0.0": version: 8.3.0 resolution: "path-to-regexp@npm:8.3.0" @@ -16890,13 +20576,6 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:^8.4.2": - version: 8.4.2 - resolution: "path-to-regexp@npm:8.4.2" - checksum: 10c0/05b115c49b47ad252ce05faa32930f643f23769c68b8bcfe78ad833545140c48bbffb3266986d6c8d5db13a64cf12e07e0d72d9882cab830efeefa553533ebaf - languageName: node - linkType: hard - "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -17034,6 +20713,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.2 + resolution: "picomatch@npm:2.3.2" + checksum: 10c0/a554d1709e59be97d1acb9eaedbbc700a5c03dbd4579807baed95100b00420bc729335440ef15004ae2378984e2487a7c1cebd743cfdb72b6fa9ab69223c0d61 + languageName: node + linkType: hard + "picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": version: 4.0.3 resolution: "picomatch@npm:4.0.3" @@ -17158,13 +20844,22 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1, pirates@npm:^4.0.7": +"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.7": version: 4.0.7 resolution: "pirates@npm:4.0.7" checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a languageName: node linkType: hard +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + "pkg-types@npm:^1.3.1": version: 1.3.1 resolution: "pkg-types@npm:1.3.1" @@ -17378,6 +21073,16 @@ __metadata: languageName: node linkType: hard +"postcss-selector-parser@npm:^7.0.0": + version: 7.1.4 + resolution: "postcss-selector-parser@npm:7.1.4" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/3d533d25bab83592e7134be0435e6cb1e2865f5e7d9fde65f1e7e1c75ccc5905168c9f55b05d2a3e10d01914a178433d3a54eab003f5ef6aa9a9d6816926caa2 + languageName: node + linkType: hard + "postcss@npm:^8.5.6": version: 8.5.10 resolution: "postcss@npm:8.5.10" @@ -17482,7 +21187,36 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^6.0.0": +"pretty-format@npm:^27.5.1": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^17.0.1" + checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed + languageName: node + linkType: hard + +"pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"proc-log@npm:^4.0.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 + languageName: node + linkType: hard + +"proc-log@npm:^6.0.0, proc-log@npm:^6.1.0": version: 6.1.0 resolution: "proc-log@npm:6.1.0" checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 @@ -17510,6 +21244,27 @@ __metadata: languageName: node linkType: hard +"proggy@npm:^4.0.0": + version: 4.0.0 + resolution: "proggy@npm:4.0.0" + checksum: 10c0/c4b1e2a38c967189cf7c25c7b9fed8a904bf52dabc7f72a37fd372a74738f449d74ce12109d9643a4b8c4259e53e57d74f5fe9695c47baec3f531259a51dd269 + languageName: node + linkType: hard + +"promise-all-reject-late@npm:^1.0.0": + version: 1.0.1 + resolution: "promise-all-reject-late@npm:1.0.1" + checksum: 10c0/f1af0c7b0067e84d64751148ee5bb6c3e84f4a4d1316d6fe56261e1d2637cf71b49894bcbd2c6daf7d45afb1bc99efc3749be277c3e0518b70d0c5a29d037011 + languageName: node + linkType: hard + +"promise-call-limit@npm:^3.0.1": + version: 3.0.2 + resolution: "promise-call-limit@npm:3.0.2" + checksum: 10c0/1f984c16025925594d738833f5da7525b755f825a198d5a0cac1c0280b4f38ecc3c32c1f4e5ef614ddcfd6718c1a8c3f98a3290ae6f421342281c9a88c488bf7 + languageName: node + linkType: hard + "promise-toolbox@npm:0.21.0": version: 0.21.0 resolution: "promise-toolbox@npm:0.21.0" @@ -17528,6 +21283,25 @@ __metadata: languageName: node linkType: hard +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + +"promzard@npm:^3.0.1": + version: 3.0.1 + resolution: "promzard@npm:3.0.1" + dependencies: + read: "npm:^5.0.0" + checksum: 10c0/a971d9d26a27b956fad93f90324aa20e11071fba60c83d78c3243440486d9ac69fb26018f450829e5e4133d10bb742ab0e867347ac503ff894ba84bad4624b18 + languageName: node + linkType: hard + "prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" @@ -17653,6 +21427,22 @@ __metadata: languageName: node linkType: hard +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 10c0/1abe217897bf74dcb3a0c9aba3555fe975023147b48db540aa2faf507aee91c03bf54f6aef0eb2bf59cc259a16d06b28eca37f0dc426d94f4692aeff02fb0e65 + languageName: node + linkType: hard + +"qrcode-terminal@npm:^0.12.0": + version: 0.12.0 + resolution: "qrcode-terminal@npm:0.12.0" + bin: + qrcode-terminal: ./bin/qrcode-terminal.js + checksum: 10c0/1d8996a743d6c95e22056bd45fe958c306213adc97d7ef8cf1e03bc1aeeb6f27180a747ec3d761141921351eb1e3ca688f7b673ab54cdae9fa358dffaa49563c + languageName: node + linkType: hard + "qrcode@npm:^1.5.4": version: 1.5.4 resolution: "qrcode@npm:1.5.4" @@ -17675,6 +21465,16 @@ __metadata: languageName: node linkType: hard +"qs@npm:^6.15.0, qs@npm:^6.5.2": + version: 6.15.3 + resolution: "qs@npm:6.15.3" + dependencies: + es-define-property: "npm:^1.0.1" + side-channel: "npm:^1.1.1" + checksum: 10c0/8f3f6e45ece255347d57696628401cde29e9ec649fff698b53bd3150dea7cefdf33036e1bc1826b9f110bfa7cb0ec4ab9f5297eca628ce216c55af82c304e08e + languageName: node + linkType: hard + "qs@npm:~6.14.0": version: 6.14.2 resolution: "qs@npm:6.14.2" @@ -17691,6 +21491,13 @@ __metadata: languageName: node linkType: hard +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + "quick-format-unescaped@npm:^4.0.3": version: 4.0.4 resolution: "quick-format-unescaped@npm:4.0.4" @@ -17719,27 +21526,27 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^3.0.1": - version: 3.0.2 - resolution: "raw-body@npm:3.0.2" +"raw-body@npm:^2.3.3, raw-body@npm:~2.5.3": + version: 2.5.3 + resolution: "raw-body@npm:2.5.3" dependencies: bytes: "npm:~3.1.2" http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.7.0" + iconv-lite: "npm:~0.4.24" unpipe: "npm:~1.0.0" - checksum: 10c0/d266678d08e1e7abea62c0ce5864344e980fa81c64f6b481e9842c5beaed2cdcf975f658a3ccd67ad35fc919c1f6664ccc106067801850286a6cbe101de89f29 + checksum: 10c0/449844344fc90547fb994383a494b83300e4f22199f146a79f68d78a199a8f2a923ea9fd29c3be979bfd50291a3884733619ffc15ba02a32e703b612f8d3f74a languageName: node linkType: hard -"raw-body@npm:~2.5.3": - version: 2.5.3 - resolution: "raw-body@npm:2.5.3" +"raw-body@npm:^3.0.1": + version: 3.0.2 + resolution: "raw-body@npm:3.0.2" dependencies: bytes: "npm:~3.1.2" http-errors: "npm:~2.0.1" - iconv-lite: "npm:~0.4.24" + iconv-lite: "npm:~0.7.0" unpipe: "npm:~1.0.0" - checksum: 10c0/449844344fc90547fb994383a494b83300e4f22199f146a79f68d78a199a8f2a923ea9fd29c3be979bfd50291a3884733619ffc15ba02a32e703b612f8d3f74a + checksum: 10c0/d266678d08e1e7abea62c0ce5864344e980fa81c64f6b481e9842c5beaed2cdcf975f658a3ccd67ad35fc919c1f6664ccc106067801850286a6cbe101de89f29 languageName: node linkType: hard @@ -17788,6 +21595,20 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + "react-is@npm:^19.2.3": version: 19.2.4 resolution: "react-is@npm:19.2.4" @@ -17838,6 +21659,13 @@ __metadata: languageName: node linkType: hard +"read-cmd-shim@npm:^6.0.0": + version: 6.0.0 + resolution: "read-cmd-shim@npm:6.0.0" + checksum: 10c0/0cebe92efe184a1d2ce9e9f69f2e07d222c6cdf8a23b62f0fddc284bc40634a143756b79f34f0693f29e76ff948a974d689f573726629dde1865240d7728ec1c + languageName: node + linkType: hard + "read@npm:^1.0.4": version: 1.0.7 resolution: "read@npm:1.0.7" @@ -17847,6 +21675,15 @@ __metadata: languageName: node linkType: hard +"read@npm:^5.0.0, read@npm:^5.0.1": + version: 5.0.1 + resolution: "read@npm:5.0.1" + dependencies: + mute-stream: "npm:^3.0.0" + checksum: 10c0/18ebee0e545f99edee2ac0f2a5327bf57a40de1e216c9a5dc375a4e81bd167f5dae074440348b548e4f3d8dff3e479e3a5c7ece8f0b470d1acb0b8fe43d66356 + languageName: node + linkType: hard + "readable-stream@npm:3.6.2, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -17948,6 +21785,22 @@ __metadata: languageName: node linkType: hard +"redeyed@npm:~2.1.0": + version: 2.1.1 + resolution: "redeyed@npm:2.1.1" + dependencies: + esprima: "npm:~4.0.0" + checksum: 10c0/350f5e39aebab3886713a170235c38155ee64a74f0f7e629ecc0144ba33905efea30c2c3befe1fcbf0b0366e344e7bfa34e6b2502b423c9a467d32f1306ef166 + languageName: node + linkType: hard + +"reftools@npm:^1.1.9": + version: 1.1.9 + resolution: "reftools@npm:1.1.9" + checksum: 10c0/4b44c9e75d6e5328b43b974de08776ee1718a0b48f24e033b2699f872cc9a698234a4aa0553b9e1a766b828aeb9834e4aa988410f0279e86179edb33b270da6c + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^10.2.2": version: 10.2.2 resolution: "regenerate-unicode-properties@npm:10.2.2" @@ -18060,6 +21913,15 @@ __metadata: languageName: node linkType: hard +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -18074,7 +21936,17 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:2.0.3": +"resolve-path@npm:^1.4.0": + version: 1.4.0 + resolution: "resolve-path@npm:1.4.0" + dependencies: + http-errors: "npm:~1.6.2" + path-is-absolute: "npm:1.0.1" + checksum: 10c0/7405c01e02c7c71c62f89e42eac1b876e5a1bb9c3b85e07ce674646841dd177571bca5639ff6780528bec9ff58be7b44845e69eced1d8c5d519f4c1d72c30907 + languageName: node + linkType: hard + +"resolve.exports@npm:2.0.3, resolve.exports@npm:^2.0.0": version: 2.0.3 resolution: "resolve.exports@npm:2.0.3" checksum: 10c0/1ade1493f4642a6267d0a5e68faeac20b3d220f18c28b140343feb83694d8fed7a286852aef43689d16042c61e2ddb270be6578ad4a13990769e12065191200d @@ -18094,6 +21966,20 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.20.0": + version: 1.22.12 + resolution: "resolve@npm:1.22.12" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/b16dc9b537c02e8c3388f7d3dcff9741d3071625f9a97ac1c885f2b0ca51e78df22328fb6d6ef214dd9101fb7cfc19aa2836fe3410402a94f3f7b8639c7149bf + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.11#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": version: 1.22.11 resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" @@ -18107,6 +21993,20 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A^1.20.0#optional!builtin": + version: 1.22.12 + resolution: "resolve@patch:resolve@npm%3A1.22.12#optional!builtin::version=1.22.12&hash=c3c19d" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/fc6519984ae1f894d877c0060ba8b1f5ba3bc0e85a02f74e141929c118c23d74d9735619a9cc2965397387e514884245c65d72a40731dcb6cfc84c7bcdc8321e + languageName: node + linkType: hard + "restore-cursor@npm:3.1.0, restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -18141,6 +22041,13 @@ __metadata: languageName: node linkType: hard +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + "rfdc@npm:^1.4.1": version: 1.4.1 resolution: "rfdc@npm:1.4.1" @@ -18367,6 +22274,13 @@ __metadata: languageName: node linkType: hard +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + "run-async@npm:^3.0.0": version: 3.0.0 resolution: "run-async@npm:3.0.0" @@ -18381,6 +22295,15 @@ __metadata: languageName: node linkType: hard +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + "run-series@npm:^1.1.8": version: 1.1.9 resolution: "run-series@npm:1.1.9" @@ -18388,6 +22311,15 @@ __metadata: languageName: node linkType: hard +"rxjs@npm:^6.4.0, rxjs@npm:^6.6.0": + version: 6.6.7 + resolution: "rxjs@npm:6.6.7" + dependencies: + tslib: "npm:^1.9.0" + checksum: 10c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe + languageName: node + linkType: hard + "rxjs@npm:^7.8.2": version: 7.8.2 resolution: "rxjs@npm:7.8.2" @@ -18411,6 +22343,17 @@ __metadata: languageName: node linkType: hard +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + languageName: node + linkType: hard + "safe-stable-stringify@npm:^2.3.1": version: 2.5.0 resolution: "safe-stable-stringify@npm:2.5.0" @@ -18471,7 +22414,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.1": +"semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -18480,6 +22423,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.7, semver@npm:^7.7.2, semver@npm:^7.8.1, semver@npm:^7.8.5": + version: 7.8.5 + resolution: "semver@npm:7.8.5" + bin: + semver: bin/semver.js + checksum: 10c0/b1f3127a5be8125a94f37188b361c212466c292c6910adce3ec106cff5dc211ccaedc4739c11bb70fda59d6fc1f040a9bca289f4e093451521a2372e5231fe0c + languageName: node + linkType: hard + "semver@npm:^7.5.2": version: 7.8.4 resolution: "semver@npm:7.8.4" @@ -18603,6 +22555,13 @@ __metadata: languageName: node linkType: hard +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 + languageName: node + linkType: hard + "setprototypeof@npm:1.2.0, setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" @@ -18640,17 +22599,73 @@ __metadata: languageName: node linkType: hard -"shellwords@npm:^0.1.1": - version: 0.1.1 - resolution: "shellwords@npm:0.1.1" - checksum: 10c0/7d66b28927e0b524b71b2e185651fcd88a70473a077dd230fbf86188380e948ffb36cea00832d78fc13c93cd15f6f52286fb05f2746b7580623ca1ec619eb004 +"shellwords@npm:^0.1.1": + version: 0.1.1 + resolution: "shellwords@npm:0.1.1" + checksum: 10c0/7d66b28927e0b524b71b2e185651fcd88a70473a077dd230fbf86188380e948ffb36cea00832d78fc13c93cd15f6f52286fb05f2746b7580623ca1ec619eb004 + languageName: node + linkType: hard + +"shimmer@npm:^1.2.0": + version: 1.2.1 + resolution: "shimmer@npm:1.2.1" + checksum: 10c0/ae8b27c389db2a00acfc8da90240f11577685a8f3e40008f826a3bea8b4f3b3ecd305c26be024b4a0fd3b123d132c1569d6e238097960a9a543b6c60760fb46a + languageName: node + linkType: hard + +"should-equal@npm:^2.0.0": + version: 2.0.0 + resolution: "should-equal@npm:2.0.0" + dependencies: + should-type: "npm:^1.4.0" + checksum: 10c0/b375e1da2586671e2b9442ac5b700af508f56438af9923f69123b1fe4e02ccddc9a8a3eb803447a6df91e616cec236c41d6f28fdaa100467f9fdb81651089538 + languageName: node + linkType: hard + +"should-format@npm:^3.0.3": + version: 3.0.3 + resolution: "should-format@npm:3.0.3" + dependencies: + should-type: "npm:^1.3.0" + should-type-adaptors: "npm:^1.0.1" + checksum: 10c0/ef2a31148d79a3fabd0dc6c1c1b10f90d9e071ad8e1f99452bd01e8aceaca62985b43974cf8103185fa1a3ade85947c6f664e44ca9af253afd1ce93c223bd8e4 + languageName: node + linkType: hard + +"should-type-adaptors@npm:^1.0.1": + version: 1.1.0 + resolution: "should-type-adaptors@npm:1.1.0" + dependencies: + should-type: "npm:^1.3.0" + should-util: "npm:^1.0.0" + checksum: 10c0/cf127f8807f69ace9db04dbec3f274330a854405feef9821b5fa525748961da65747869cca36c813132b98757bd3e42d53541579cb16630ccf3c0dd9c0082320 + languageName: node + linkType: hard + +"should-type@npm:^1.3.0, should-type@npm:^1.4.0": + version: 1.4.0 + resolution: "should-type@npm:1.4.0" + checksum: 10c0/50cb50d776ee117b151068367c09ec12ac8e6f5fe2bd4d167413972813f06e930fe8624232a56c335846d3afcb784455f9a9690baa4350b3919bd001f0c4c94b + languageName: node + linkType: hard + +"should-util@npm:^1.0.0": + version: 1.0.1 + resolution: "should-util@npm:1.0.1" + checksum: 10c0/1790719e05eae9edae86e44cbbad98529bd333df3f7cdfd63ea80acb6af718990e70abbc173aa9ccb93fff5ab6ee08d38412d707ff4003840be2256a278a61f3 languageName: node linkType: hard -"shimmer@npm:^1.2.0": - version: 1.2.1 - resolution: "shimmer@npm:1.2.1" - checksum: 10c0/ae8b27c389db2a00acfc8da90240f11577685a8f3e40008f826a3bea8b4f3b3ecd305c26be024b4a0fd3b123d132c1569d6e238097960a9a543b6c60760fb46a +"should@npm:^13.2.1": + version: 13.2.3 + resolution: "should@npm:13.2.3" + dependencies: + should-equal: "npm:^2.0.0" + should-format: "npm:^3.0.3" + should-type: "npm:^1.4.0" + should-type-adaptors: "npm:^1.0.1" + should-util: "npm:^1.0.0" + checksum: 10c0/99581d8615f6fb27cd23c9f431cfacef58d118a90d0cccf58775b90631a47441397cfbdcbe6379e2718e9e60f293e3dfc0e87857f4b5a36fe962814e46ab05fa languageName: node linkType: hard @@ -18664,6 +22679,16 @@ __metadata: languageName: node linkType: hard +"side-channel-list@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-list@npm:1.0.1" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.4" + checksum: 10c0/d346c787fd2f9f1c2fdea14f00e8250118db0e7596d85a6cb9faa75f105d31a73a8f7a341c93d7df2a2429098c3d37a77bd3be9e88c37094b8c01807bc77c7a2 + languageName: node + linkType: hard + "side-channel-map@npm:^1.0.1": version: 1.0.1 resolution: "side-channel-map@npm:1.0.1" @@ -18702,6 +22727,19 @@ __metadata: languageName: node linkType: hard +"side-channel@npm:^1.1.1": + version: 1.1.1 + resolution: "side-channel@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.4" + side-channel-list: "npm:^1.0.1" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/dc0ab81d67f61bda9247d053ce93f41c3fd8ad2bdcb9cf9d8d2f8540d488f26d87a5e99ebfc07eea49ec025867b2452b705442d974b1478f0395e69f6bfb3270 + languageName: node + linkType: hard + "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" @@ -18709,7 +22747,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:3.0.7, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": +"signal-exit@npm:3.0.7, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 @@ -18723,6 +22761,20 @@ __metadata: languageName: node linkType: hard +"sigstore@npm:^4.0.0": + version: 4.1.1 + resolution: "sigstore@npm:4.1.1" + dependencies: + "@sigstore/bundle": "npm:^4.0.0" + "@sigstore/core": "npm:^3.2.1" + "@sigstore/protobuf-specs": "npm:^0.5.0" + "@sigstore/sign": "npm:^4.1.1" + "@sigstore/tuf": "npm:^4.0.2" + "@sigstore/verify": "npm:^3.1.1" + checksum: 10c0/8ebe0c2a7cb3cf9ed9fb775636ab2ae364cbdea9360ea256ab003d83b83dd5eeda8dd899cffcd3853fe711425c481fab2a74246772d75e3ecb9a9483f6700289 + languageName: node + linkType: hard + "simple-concat@npm:^1.0.0": version: 1.0.1 resolution: "simple-concat@npm:1.0.1" @@ -18741,6 +22793,15 @@ __metadata: languageName: node linkType: hard +"simple-swizzle@npm:^0.2.2": + version: 0.2.4 + resolution: "simple-swizzle@npm:0.2.4" + dependencies: + is-arrayish: "npm:^0.3.1" + checksum: 10c0/846c3fdd1325318d5c71295cfbb99bfc9edc4c8dffdda5e6e9efe30482bbcd32cf360fc2806f46ac43ff7d09bcfaff20337bb79f826f0e6a8e366efd3cdd7868 + languageName: node + linkType: hard + "sirv@npm:^3.0.2": version: 3.0.2 resolution: "sirv@npm:3.0.2" @@ -18752,6 +22813,31 @@ __metadata: languageName: node linkType: hard +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + "slice-ansi@npm:^7.1.0": version: 7.1.2 resolution: "slice-ansi@npm:7.1.2" @@ -18841,6 +22927,16 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + "source-map-support@npm:0.5.19": version: 0.5.19 resolution: "source-map-support@npm:0.5.19" @@ -18868,7 +22964,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:~0.6.1": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 @@ -18899,6 +22995,30 @@ __metadata: languageName: node linkType: hard +"spdx-exceptions@npm:^2.1.0": + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^4.0.0": + version: 4.0.0 + resolution: "spdx-expression-parse@npm:4.0.0" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/965c487e77f4fb173f1c471f3eef4eb44b9f0321adc7f93d95e7620da31faa67d29356eb02523cd7df8a7fc1ec8238773cdbf9e45bd050329d2b26492771b736 + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.23 + resolution: "spdx-license-ids@npm:3.0.23" + checksum: 10c0/8495620f6f2a237749cce922ea2d593a66f7885c301b1a0f5542183e7041182f27f616a8f13345cefdea0c9b3e0899328e0aa8cec100cf4f3fac4bb3bd975515 + languageName: node + linkType: hard + "split-ca@npm:^1.0.1": version: 1.0.1 resolution: "split-ca@npm:1.0.1" @@ -18963,7 +23083,7 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^13.0.0": +"ssri@npm:^13.0.0, ssri@npm:^13.0.1": version: 13.0.1 resolution: "ssri@npm:13.0.1" dependencies: @@ -18972,6 +23092,15 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -18979,7 +23108,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": +"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0, statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 @@ -19054,7 +23183,17 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:4.2.3, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:4.2.3, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -19166,6 +23305,20 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + "strip-indent@npm:^3.0.0": version: 3.0.0 resolution: "strip-indent@npm:3.0.0" @@ -19265,7 +23418,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:7.2.0, supports-color@npm:^7.1.0": +"supports-color@npm:7.2.0, supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -19281,7 +23434,16 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:~8.1.1": +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^8, supports-color@npm:^8.0.0, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1, supports-color@npm:~8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -19290,6 +23452,16 @@ __metadata: languageName: node linkType: hard +"supports-hyperlinks@npm:^2.1.0, supports-hyperlinks@npm:^2.2.0": + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" + dependencies: + has-flag: "npm:^4.0.0" + supports-color: "npm:^7.0.0" + checksum: 10c0/4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -19297,6 +23469,47 @@ __metadata: languageName: node linkType: hard +"swagger-editor-dist@npm:^4.11.2": + version: 4.14.8 + resolution: "swagger-editor-dist@npm:4.14.8" + dependencies: + "@scarf/scarf": "npm:=1.4.0" + checksum: 10c0/4dfad283f7a756dd96e01a2040e00391725aa1b88d7c32b237f09296126a1e7acc4893d09517ed55ea4e6e9273b506421610721fd3fe232f67a7ac823d1389a9 + languageName: node + linkType: hard + +"swagger-ui-dist@npm:^5.9.0": + version: 5.32.8 + resolution: "swagger-ui-dist@npm:5.32.8" + dependencies: + "@scarf/scarf": "npm:=1.4.0" + checksum: 10c0/149dcd0f86cd9d5a60ac7a10422681494c2a9ca1ebf4973249caa0555407b85dbd3d114e76c541b5fe2f5bb420d9056f11e42d80a9ad5d92425fcbc89bb6abb4 + languageName: node + linkType: hard + +"swagger2openapi@npm:^7.0.8": + version: 7.0.8 + resolution: "swagger2openapi@npm:7.0.8" + dependencies: + call-me-maybe: "npm:^1.0.1" + node-fetch: "npm:^2.6.1" + node-fetch-h2: "npm:^2.3.0" + node-readfiles: "npm:^0.2.0" + oas-kit-common: "npm:^1.0.8" + oas-resolver: "npm:^2.5.6" + oas-schema-walker: "npm:^1.1.5" + oas-validator: "npm:^5.0.8" + reftools: "npm:^1.1.9" + yaml: "npm:^1.10.0" + yargs: "npm:^17.0.1" + bin: + boast: boast.js + oas-validate: oas-validate.js + swagger2openapi: swagger2openapi.js + checksum: 10c0/441a4d3a7d353f99395b14a0c8d6124be6390f2f8aa53336905e7314a7f80b66f5f2a40ac0dc2dbe2f7bc01f52a223a94f54a2ece345095fd3ad8ae8b03d688b + languageName: node + linkType: hard + "synckit@npm:^0.11.13": version: 0.11.13 resolution: "synckit@npm:0.11.13" @@ -19372,6 +23585,19 @@ __metadata: languageName: node linkType: hard +"tar@npm:^7.4.3, tar@npm:^7.5.1, tar@npm:^7.5.19": + version: 7.5.19 + resolution: "tar@npm:7.5.19" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 10c0/7022e8cb04a8ceccc0689f2c731743fa2aab2e3c3f559f7dbc37b65ef7d5913049b427284eded2ec0765c5db5ff72dd7939fe2ae15785ff422cef2116c95d798 + languageName: node + linkType: hard + "teex@npm:^1.0.1": version: 1.0.1 resolution: "teex@npm:1.0.1" @@ -19381,6 +23607,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + "testcontainers@npm:^11.14.0": version: 11.14.0 resolution: "testcontainers@npm:11.14.0" @@ -19413,6 +23650,13 @@ __metadata: languageName: node linkType: hard +"text-table@npm:~0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + "thenify-all@npm:^1.0.0": version: 1.6.0 resolution: "thenify-all@npm:1.6.0" @@ -19449,7 +23693,7 @@ __metadata: languageName: node linkType: hard -"through@npm:2": +"through@npm:2, through@npm:^2.3.6": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc @@ -19463,6 +23707,13 @@ __metadata: languageName: node linkType: hard +"tiny-relative-date@npm:^2.0.2": + version: 2.0.2 + resolution: "tiny-relative-date@npm:2.0.2" + checksum: 10c0/d54534b403beb51c9885b2303d5cf8591d853313f3d4f3927f2d31c7d6ffc111ac9375b8140da6e5622af5713c9939ddd2d1fc5d85d7309ccc456b59f70190cb + languageName: node + linkType: hard + "tinybench@npm:^2.9.0": version: 2.9.0 resolution: "tinybench@npm:2.9.0" @@ -19501,7 +23752,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.16": +"tinyglobby@npm:^0.2.16, tinyglobby@npm:^0.2.17": version: 0.2.17 resolution: "tinyglobby@npm:0.2.17" dependencies: @@ -19539,6 +23790,13 @@ __metadata: languageName: node linkType: hard +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -19578,6 +23836,13 @@ __metadata: languageName: node linkType: hard +"treeverse@npm:^3.0.0": + version: 3.0.0 + resolution: "treeverse@npm:3.0.0" + checksum: 10c0/286479b9c05a8fb0538ee7d67a5502cea7704f258057c784c9c1118a2f598788b2c0f7a8d89e74648af88af0225b31766acecd78e6060736f09b21dd3fa255db + languageName: node + linkType: hard + "ts-api-utils@npm:^2.4.0": version: 2.4.0 resolution: "ts-api-utils@npm:2.4.0" @@ -19705,7 +23970,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:1.14.1": +"tslib@npm:1.14.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 @@ -19719,7 +23984,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.8.1, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.8.0, tslib@npm:^2.8.1": +"tslib@npm:2.8.1, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -19790,6 +24055,32 @@ __metadata: languageName: node linkType: hard +"tsx@npm:^4.23.0": + version: 4.23.0 + resolution: "tsx@npm:4.23.0" + dependencies: + esbuild: "npm:~0.28.0" + fsevents: "npm:~2.3.3" + dependenciesMeta: + fsevents: + optional: true + bin: + tsx: dist/cli.mjs + checksum: 10c0/e4fade6bf8a4447424652da3a68f5ab7b927d1cbe5f697dba876c626c5fb7bf7663c4f71777992c9cbbdc8148c63ee1ddcf15536ff9d1863f9fbea25247ee0a9 + languageName: node + linkType: hard + +"tuf-js@npm:^4.1.0": + version: 4.1.0 + resolution: "tuf-js@npm:4.1.0" + dependencies: + "@tufjs/models": "npm:4.1.0" + debug: "npm:^4.4.3" + make-fetch-happen: "npm:^15.0.1" + checksum: 10c0/38330b0b2d16f7f58eccd49b3a6ff0f87dd20743d6f2c26c2621089d8d83d807808e0e660c5be891122538d32db250e3e88267da4421537253e7aa99a45e5800 + languageName: node + linkType: hard + "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -19845,6 +24136,13 @@ __metadata: languageName: node linkType: hard +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -19868,6 +24166,16 @@ __metadata: languageName: node linkType: hard +"type-is@npm:^1.6.16, type-is@npm:^1.6.18, type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + languageName: node + linkType: hard + "type-is@npm:^2.0.1": version: 2.0.1 resolution: "type-is@npm:2.0.1" @@ -19879,16 +24187,6 @@ __metadata: languageName: node linkType: hard -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d - languageName: node - linkType: hard - "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -19965,7 +24263,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.9.3, typescript@npm:~5.9.2, typescript@npm:~5.9.3": +"typescript@npm:^5.2.2, typescript@npm:^5.9.3, typescript@npm:~5.9.2, typescript@npm:~5.9.3": version: 5.9.3 resolution: "typescript@npm:5.9.3" bin: @@ -20005,7 +24303,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.9.3#optional!builtin, typescript@patch:typescript@npm%3A~5.9.2#optional!builtin, typescript@patch:typescript@npm%3A~5.9.3#optional!builtin": +"typescript@patch:typescript@npm%3A^5.2.2#optional!builtin, typescript@patch:typescript@npm%3A^5.9.3#optional!builtin, typescript@patch:typescript@npm%3A~5.9.2#optional!builtin, typescript@patch:typescript@npm%3A~5.9.3#optional!builtin": version: 5.9.3 resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5" bin: @@ -20086,6 +24384,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^6.25.0": + version: 6.27.0 + resolution: "undici@npm:6.27.0" + checksum: 10c0/f88c3dae3957dbf9d93cb481440aced317bd3c4941b5914fea5efba516d51138988cdb5c76006f0bb1337e41d56c3443351055d492e73af2428521c37ba2a76f + languageName: node + linkType: hard + "undici@npm:^7.19.0, undici@npm:^7.24.5": version: 7.28.0 resolution: "undici@npm:7.28.0" @@ -20332,7 +24637,7 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:1.0.2, util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": +"util-deprecate@npm:1.0.2, util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 @@ -20389,6 +24694,31 @@ __metadata: languageName: node linkType: hard +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^5.0.0, validate-npm-package-name@npm:^5.0.1": + version: 5.0.1 + resolution: "validate-npm-package-name@npm:5.0.1" + checksum: 10c0/903e738f7387404bb72f7ac34e45d7010c877abd2803dc2d614612527927a40a6d024420033132e667b1bade94544b8a1f65c9431a4eb30d0ce0d80093cd1f74 + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^7.0.0, validate-npm-package-name@npm:^7.0.2": + version: 7.0.2 + resolution: "validate-npm-package-name@npm:7.0.2" + checksum: 10c0/adf32e943148e13e8df13d06b855493908e6ae7a847610e8543c6291cbf42f40e653249a5b2275e2e615e3224c574ade5a9064a9e2d1ab629386284ea99e8f39 + languageName: node + linkType: hard + "validator@npm:^13.7.0": version: 13.15.35 resolution: "validator@npm:13.15.35" @@ -20591,6 +24921,22 @@ __metadata: languageName: node linkType: hard +"walk-up-path@npm:^4.0.0": + version: 4.0.0 + resolution: "walk-up-path@npm:4.0.0" + checksum: 10c0/fabe344f91387d1d41df230af962ef18bf703dd4178006d55cd6412caacd187b54440002d4d53a982d4f7f0455567dcffb6d3884533c8b2268928eca3ebd8a19 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + "wallet-kernel@workspace:.": version: 0.0.0-use.local resolution: "wallet-kernel@workspace:." @@ -20803,7 +25149,18 @@ __metadata: languageName: node linkType: hard -"which@npm:^6.0.0": +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"which@npm:^6.0.0, which@npm:^6.0.1": version: 6.0.1 resolution: "which@npm:6.0.1" dependencies: @@ -20826,6 +25183,15 @@ __metadata: languageName: node linkType: hard +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: "npm:^4.0.0" + checksum: 10c0/b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f + languageName: node + linkType: hard + "widest-line@npm:^5.0.0": version: 5.0.0 resolution: "widest-line@npm:5.0.0" @@ -20849,6 +25215,13 @@ __metadata: languageName: node linkType: hard +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -20900,6 +25273,25 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + +"write-file-atomic@npm:^7.0.0": + version: 7.0.1 + resolution: "write-file-atomic@npm:7.0.1" + dependencies: + signal-exit: "npm:^4.0.1" + checksum: 10c0/69cebb64945e22928a24ae7e2a55bf54438c92d6f657c1fa5e96b7c7a50f6c022e7454ab5c259079bb35f60296242f3a21234c79320d64a8ad57675b56a2098d + languageName: node + linkType: hard + "ws@npm:^7.0.0, ws@npm:^7.5.1, ws@npm:~7.5.10": version: 7.5.10 resolution: "ws@npm:7.5.10" @@ -21098,6 +25490,31 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.0.1, yargs@npm:^17.3.1": + version: 17.7.3 + resolution: "yargs@npm:17.7.3" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/7a28572f7e785a57886e34fdbddb9b28756dec552e1453d5f6e7cdd00ad8721a4e8c4321d33683f5e61cacb36ad43258adbb48396b71ec4ed14abee0fc0d0c1f + languageName: node + linkType: hard + +"yarn@npm:^1.22.22": + version: 1.22.22 + resolution: "yarn@npm:1.22.22" + bin: + yarn: bin/yarn.js + yarnpkg: bin/yarn.js + checksum: 10c0/8c77198c93d7542e7f4e131c63b66de357b7076ecfbcfe709ec0d674115c2dd9edaa45196e5510e6e9366d368707a802579e3402071002e1c9d9a99d491478de + languageName: node + linkType: hard + "yauzl@npm:2.10.0": version: 2.10.0 resolution: "yauzl@npm:2.10.0" @@ -21118,6 +25535,13 @@ __metadata: languageName: node linkType: hard +"ylru@npm:^1.2.0": + version: 1.4.0 + resolution: "ylru@npm:1.4.0" + checksum: 10c0/eaadc38ed6d78d4fda49abed45cfdaf149bd334df761dbeadd3cff62936d25ffa94571f84c25b64a9a4b5efd8f489ee6fee3eaaf8e7b2886418a3bcb9ec84b84 + languageName: node + linkType: hard + "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1" From ca90ebd7a86e464c1ea87d3c745ed2a6760e6bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Mon, 13 Jul 2026 21:18:43 +0200 Subject: [PATCH 08/28] feat(examples-test-token-v1-registry): add metadata api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .yarnrc.yml | 4 +++ examples/test-token-v1-registry/package.json | 8 +++-- .../src/api/metadata/common.ts | 24 +++++++++++++++ .../src/api/metadata/getInstrument.ts | 25 ++++++++++++++++ .../src/api/metadata/getRegistryInfo.ts | 29 +++++++++++++++++++ .../src/api/metadata/index.ts | 21 +++++++------- .../src/api/metadata/listInstruments.ts | 13 +++++++++ .../src/common/generateTypes.ts | 2 -- examples/test-token-v1-registry/src/index.ts | 25 +++++++++++++--- examples/test-token-v1-registry/src/sdk.ts | 24 ++++++++------- .../test-token-v1-registry/tsup.config.ts | 5 ++++ scripts/src/lib/version-config.json | 2 +- yarn.lock | 29 +++++++++++++------ 13 files changed, 171 insertions(+), 40 deletions(-) create mode 100644 examples/test-token-v1-registry/src/api/metadata/common.ts create mode 100644 examples/test-token-v1-registry/src/api/metadata/getInstrument.ts create mode 100644 examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts create mode 100644 examples/test-token-v1-registry/src/api/metadata/listInstruments.ts diff --git a/.yarnrc.yml b/.yarnrc.yml index 56a501971..b0dd51a60 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -23,6 +23,10 @@ packageExtensions: dependencies: '@inquirer/prompts': ^3.0.0 '@open-rpc/schema-utils-js': ^2.0.2 + openapicmd@*: + dependencies: + indent-string: ^4.0.0 + lodash: '*' undici-types@*: dependencies: '@types/node': '*' diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json index 990e359bd..ebba71413 100644 --- a/examples/test-token-v1-registry/package.json +++ b/examples/test-token-v1-registry/package.json @@ -19,7 +19,7 @@ "scripts": { "generate:types": "tsx ./src/common/generateTypes.ts", "build": "yarn generate:types && tsup --onSuccess \"tsc\"", - "dev": "yarn generate:types && node --experimental-transform-types --watch src/index.ts", + "dev": "yarn generate:types && tsx --watch src/index.ts", "clean": "tsc -b --clean; rm -rf dist", "flatpack": "yarn pack --out \"$FLATPACK_OUTDIR\"", "test": "vitest run --project node --project browser", @@ -27,21 +27,23 @@ }, "devDependencies": { "@types/koa": "^3", + "@types/koa-bodyparser": "^4", "@types/lodash": "^4.17.24", "@types/node": "^25.9.3", "@vitest/browser-playwright": "^4.1.8", "@vitest/coverage-v8": "^4.1.8", + "openapicmd": "^2.9.2", "playwright": "^1.60.0", "tsup": "^8.5.1", "typescript": "^5.9.3", "vitest": "^4.1.8" }, "dependencies": { + "@canton-network/core-token-standard": "workspace:^", "@canton-network/wallet-sdk": "workspace:^", "koa": "^3.2.1", - "lodash": "^4.18.1", + "koa-bodyparser": "^4.4.1", "openapi-backend": "^5.18.0", - "openapicmd": "^2.9.2", "tsx": "^4.23.0" }, "files": [ diff --git a/examples/test-token-v1-registry/src/api/metadata/common.ts b/examples/test-token-v1-registry/src/api/metadata/common.ts new file mode 100644 index 000000000..8a538f1fb --- /dev/null +++ b/examples/test-token-v1-registry/src/api/metadata/common.ts @@ -0,0 +1,24 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { Instrument, SupportedApis } from '../../openapi-ts/token-metadata-v1' + +export const supportedApis: SupportedApis = { + 'splice-api-token-metadata-v1': 1, + 'splice-api-token-transfer-instruction-v1': 1, + 'splice-api-token-allocation-v1': 1, + 'splice-api-token-allocation-instruction-v1': 1, +} + +// TODO: link with a database +export const instruments: Instrument[] = [ + { + id: 'test-token-v1', + name: 'TestTokenV1', + symbol: 'tt', + totalSupply: '1_000_000_000', + totalSupplyAsOf: '2026-07-13T09:49:23.104Z', + decimals: 2, + supportedApis, + }, +] diff --git a/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts new file mode 100644 index 000000000..1dee33573 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts @@ -0,0 +1,25 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { + ErrorResponse, + OperationHandler, +} from '../../openapi-ts/token-metadata-v1' +import { instruments } from './common' + +export const getInstrument: OperationHandler<'getInstrument'> = async (ctx) => { + const instrumentId = ctx.request.params.instrumentId + const instrument = instruments.find( + (instrument) => instrument.id === instrumentId + ) + if (!instrument) { + return { + status: 404, + payload: { + error: 'Not Found', + } satisfies ErrorResponse, + } + } + + return instrument +} diff --git a/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts new file mode 100644 index 000000000..2ee36b4b6 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts @@ -0,0 +1,29 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { OperationHandler } from '../../openapi-ts/token-metadata-v1' +import sdk from '../../sdk' +import { supportedApis } from './common' + +export const getRegistryInfo: OperationHandler< + 'getRegistryInfo' +> = async () => { + let adminId = '' + let userList + do { + userList = await sdk.user.list() + if (!userList.users) break + // TODO: figure out a better way to find an admin + const potentialAdmin = userList.users.find((user) => + user.id.includes('admin') + ) + if (potentialAdmin) { + adminId = potentialAdmin.id + break + } + } while (userList.nextPageToken) + return { + adminId, + supportedApis, + } +} diff --git a/examples/test-token-v1-registry/src/api/metadata/index.ts b/examples/test-token-v1-registry/src/api/metadata/index.ts index 9204e58d4..2f5fd80ea 100644 --- a/examples/test-token-v1-registry/src/api/metadata/index.ts +++ b/examples/test-token-v1-registry/src/api/metadata/index.ts @@ -1,21 +1,20 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import OpenAPIBackend, { Context } from 'openapi-backend' +import { OpenAPIBackend } from 'openapi-backend' import { availableOpenAPIPaths } from '../../common/getOpenApiPath' -import { GetRegistryInfoResponse } from '../../openapi-ts/token-metadata-v1' +import { getRegistryInfo } from './getRegistryInfo' +import { listInstruments } from './listInstruments' +import { getInstrument } from './getInstrument' -const api = new OpenAPIBackend({ +export const metatadaAPI = new OpenAPIBackend({ definition: availableOpenAPIPaths['token-metadata-v1.yaml'], + quick: true, handlers: { - getRegistryInfo(ctx: Context): GetRegistryInfoResponse { - console.log(ctx) - return { - adminId: '', - supportedApis: {}, - } - }, + getRegistryInfo, + listInstruments, + getInstrument, }, }) -api.init() +await metatadaAPI.init() diff --git a/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts b/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts new file mode 100644 index 000000000..52a096c6e --- /dev/null +++ b/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { OperationHandler } from '../../openapi-ts/token-metadata-v1' +import { instruments } from './common' + +export const listInstruments: OperationHandler< + 'listInstruments' +> = async () => { + return { + instruments, + } +} diff --git a/examples/test-token-v1-registry/src/common/generateTypes.ts b/examples/test-token-v1-registry/src/common/generateTypes.ts index 0b2865817..f36e332af 100644 --- a/examples/test-token-v1-registry/src/common/generateTypes.ts +++ b/examples/test-token-v1-registry/src/common/generateTypes.ts @@ -28,5 +28,3 @@ for (const file of Object.values(availableOpenAPIPaths)) { console.error(`✗ Failed to generate for ${file}:`, error) } } - -console.log('Done!') diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts index 885a98fc9..4dfbee3e8 100644 --- a/examples/test-token-v1-registry/src/index.ts +++ b/examples/test-token-v1-registry/src/index.ts @@ -1,10 +1,27 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import Koa from 'koa' +import Koa, { type Context } from 'koa' +import bodyParser from 'koa-bodyparser' +import { metatadaAPI } from './api/metadata/index' +import type { Request } from 'openapi-backend' const app = new Koa() -app.use((ctx) => { - console.log(ctx) -}).listen(3000) +const contextToRequest = (ctx: Context): Request => { + return { + method: ctx.method, + path: ctx.path, + body: ctx.request.body, + query: ctx.query as Record, + headers: ctx.headers as Record, + } +} + +app.use(bodyParser()) + .use(async (ctx) => { + const response = await metatadaAPI.handleRequest(contextToRequest(ctx)) + ctx.status = response.status || 200 + ctx.body = response.payload + }) + .listen(3000, () => console.info('api listening on http://localhost:3000')) diff --git a/examples/test-token-v1-registry/src/sdk.ts b/examples/test-token-v1-registry/src/sdk.ts index 2e2766689..3ecda02ec 100644 --- a/examples/test-token-v1-registry/src/sdk.ts +++ b/examples/test-token-v1-registry/src/sdk.ts @@ -4,21 +4,25 @@ import { localNetStaticConfig, SDK, + TokenProviderConfig, WalletSDKTestTokenPlugin, } from '@canton-network/wallet-sdk' +// TODO: consider switching to another auth method +const auth: TokenProviderConfig = { + method: 'self_signed', + issuer: 'unsafe-auth', + credentials: { + clientId: localNetStaticConfig.LOCALNET_USER_ID, + clientSecret: 'unsafe', + audience: 'https://canton.network.global', + scope: '', + }, +} + const sdk = ( await SDK.create({ - auth: { - method: 'self_signed', - issuer: 'unsafe-auth', - credentials: { - clientId: localNetStaticConfig.LOCALNET_USER_ID, - clientSecret: 'unsafe', - audience: 'https://canton.network.global', - scope: '', - }, - }, + auth, ledgerClientUrl: localNetStaticConfig.LOCALNET_APP_USER_LEDGER_URL, }) ).registerPlugins({ diff --git a/examples/test-token-v1-registry/tsup.config.ts b/examples/test-token-v1-registry/tsup.config.ts index 1f4074292..b365e1bce 100644 --- a/examples/test-token-v1-registry/tsup.config.ts +++ b/examples/test-token-v1-registry/tsup.config.ts @@ -7,4 +7,9 @@ import { base } from '../../tsup.base' export default defineConfig({ ...base, entry: ['src/index.ts'], + + // Overrides to support top-level await + target: 'es2022', + outExtension: () => ({ js: '.js' }), + format: 'esm', }) diff --git a/scripts/src/lib/version-config.json b/scripts/src/lib/version-config.json index d8e7d9dc7..9258340c3 100644 --- a/scripts/src/lib/version-config.json +++ b/scripts/src/lib/version-config.json @@ -1,5 +1,5 @@ { - "DAML_RELEASE_VERSION": "3.5.8", + "DAML_RELEASE_VERSION": "3.4.11", "SUPPORTED_VERSIONS": { "devnet": { "canton": { diff --git a/yarn.lock b/yarn.lock index 3cdcb9505..94f537c31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2609,14 +2609,16 @@ __metadata: version: 0.0.0-use.local resolution: "@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry" dependencies: + "@canton-network/core-token-standard": "workspace:^" "@canton-network/wallet-sdk": "workspace:^" "@types/koa": "npm:^3" + "@types/koa-bodyparser": "npm:^4" "@types/lodash": "npm:^4.17.24" "@types/node": "npm:^25.9.3" "@vitest/browser-playwright": "npm:^4.1.8" "@vitest/coverage-v8": "npm:^4.1.8" koa: "npm:^3.2.1" - lodash: "npm:^4.18.1" + koa-bodyparser: "npm:^4.4.1" openapi-backend: "npm:^5.18.0" openapicmd: "npm:^2.9.2" playwright: "npm:^1.60.0" @@ -9559,6 +9561,15 @@ __metadata: languageName: node linkType: hard +"@types/koa-bodyparser@npm:^4": + version: 4.3.13 + resolution: "@types/koa-bodyparser@npm:4.3.13" + dependencies: + "@types/koa": "npm:*" + checksum: 10c0/b29f9b3a6a03050f51b087ab8eeb15b0fc0322c374a23e8ab3005a0fd1cc7dba129a472ce42eebda739e604409eb15304be639c3adaf0a57b2b0b3c4407a3151 + languageName: node + linkType: hard + "@types/koa-compose@npm:*": version: 3.2.9 resolution: "@types/koa-compose@npm:3.2.9" @@ -17732,7 +17743,7 @@ __metadata: languageName: node linkType: hard -"koa-bodyparser@npm:^4.3.0": +"koa-bodyparser@npm:^4.3.0, koa-bodyparser@npm:^4.4.1": version: 4.4.1 resolution: "koa-bodyparser@npm:4.4.1" dependencies: @@ -18331,6 +18342,13 @@ __metadata: languageName: node linkType: hard +"lodash@npm:*, lodash@npm:^4.17.15, lodash@npm:^4.18.1": + version: 4.18.1 + resolution: "lodash@npm:4.18.1" + checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27 + languageName: node + linkType: hard + "lodash@npm:^4.17.14, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.5, lodash@npm:~4.17.23": version: 4.17.23 resolution: "lodash@npm:4.17.23" @@ -18338,13 +18356,6 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.15, lodash@npm:^4.18.1": - version: 4.18.1 - resolution: "lodash@npm:4.18.1" - checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27 - languageName: node - linkType: hard - "log-symbols@npm:4.1.0, log-symbols@npm:^4.0.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" From 74d68766952f57035d7153ff0581432e732dc75b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Tue, 14 Jul 2026 09:32:03 +0200 Subject: [PATCH 09/28] feat(examples-test-token-v1-registry): establish handler interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/api/metadata/common.ts | 11 +++++++++- .../src/api/metadata/getInstrument.ts | 15 ++++++------- .../src/api/metadata/getRegistryInfo.ts | 21 +++++++++++++------ .../src/api/metadata/listInstruments.ts | 9 ++++---- .../src/api/transfer/index.ts | 13 ++++++++++++ examples/test-token-v1-registry/src/index.ts | 7 +++++-- examples/test-token-v1-registry/src/types.ts | 13 ++++++++++++ examples/test-token-v1-registry/tsconfig.json | 3 ++- 8 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 examples/test-token-v1-registry/src/api/transfer/index.ts create mode 100644 examples/test-token-v1-registry/src/types.ts diff --git a/examples/test-token-v1-registry/src/api/metadata/common.ts b/examples/test-token-v1-registry/src/api/metadata/common.ts index 8a538f1fb..5766f5d9b 100644 --- a/examples/test-token-v1-registry/src/api/metadata/common.ts +++ b/examples/test-token-v1-registry/src/api/metadata/common.ts @@ -1,7 +1,13 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Instrument, SupportedApis } from '../../openapi-ts/token-metadata-v1' +import { + Instrument, + OperationHandler, + Operations, + SupportedApis, +} from '../../openapi-ts/token-metadata-v1' +import { APIOperationHandler } from '../../types' export const supportedApis: SupportedApis = { 'splice-api-token-metadata-v1': 1, @@ -22,3 +28,6 @@ export const instruments: Instrument[] = [ supportedApis, }, ] + +export type MetadataAPIHandler = + APIOperationHandler> diff --git a/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts index 1dee33573..045596f22 100644 --- a/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts +++ b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts @@ -1,13 +1,12 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { - ErrorResponse, - OperationHandler, -} from '../../openapi-ts/token-metadata-v1' -import { instruments } from './common' +import { ErrorResponse } from '../../openapi-ts/token-metadata-v1' +import { instruments, MetadataAPIHandler } from './common' -export const getInstrument: OperationHandler<'getInstrument'> = async (ctx) => { +export const getInstrument: MetadataAPIHandler<'getInstrument'> = async ( + ctx +) => { const instrumentId = ctx.request.params.instrumentId const instrument = instruments.find( (instrument) => instrument.id === instrumentId @@ -21,5 +20,7 @@ export const getInstrument: OperationHandler<'getInstrument'> = async (ctx) => { } } - return instrument + return { + payload: instrument, + } } diff --git a/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts index 2ee36b4b6..ddd24c1c3 100644 --- a/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts +++ b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts @@ -1,14 +1,13 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { OperationHandler } from '../../openapi-ts/token-metadata-v1' import sdk from '../../sdk' -import { supportedApis } from './common' +import { MetadataAPIHandler, supportedApis } from './common' -export const getRegistryInfo: OperationHandler< +export const getRegistryInfo: MetadataAPIHandler< 'getRegistryInfo' > = async () => { - let adminId = '' + let adminId let userList do { userList = await sdk.user.list() @@ -22,8 +21,18 @@ export const getRegistryInfo: OperationHandler< break } } while (userList.nextPageToken) + if (!adminId) { + return { + status: 404, + payload: { + error: 'Admin Not Found', + }, + } + } return { - adminId, - supportedApis, + payload: { + adminId, + supportedApis, + }, } } diff --git a/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts b/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts index 52a096c6e..f4781292d 100644 --- a/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts +++ b/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts @@ -1,13 +1,14 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { OperationHandler } from '../../openapi-ts/token-metadata-v1' -import { instruments } from './common' +import { instruments, MetadataAPIHandler } from './common' -export const listInstruments: OperationHandler< +export const listInstruments: MetadataAPIHandler< 'listInstruments' > = async () => { return { - instruments, + payload: { + instruments, + }, } } diff --git a/examples/test-token-v1-registry/src/api/transfer/index.ts b/examples/test-token-v1-registry/src/api/transfer/index.ts new file mode 100644 index 000000000..691828e02 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/transfer/index.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { OpenAPIBackend } from 'openapi-backend' +import { availableOpenAPIPaths } from '../../common/getOpenApiPath' + +export const transferInstructionAPI = new OpenAPIBackend({ + definition: availableOpenAPIPaths['transfer-instruction-v1.yaml'], + quick: true, + handlers: {}, +}) + +await transferInstructionAPI.init() diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts index 4dfbee3e8..b20d68265 100644 --- a/examples/test-token-v1-registry/src/index.ts +++ b/examples/test-token-v1-registry/src/index.ts @@ -5,6 +5,7 @@ import Koa, { type Context } from 'koa' import bodyParser from 'koa-bodyparser' import { metatadaAPI } from './api/metadata/index' import type { Request } from 'openapi-backend' +import { APIHandlerResponse } from './types' const app = new Koa() @@ -20,8 +21,10 @@ const contextToRequest = (ctx: Context): Request => { app.use(bodyParser()) .use(async (ctx) => { - const response = await metatadaAPI.handleRequest(contextToRequest(ctx)) + const response: APIHandlerResponse = await metatadaAPI.handleRequest( + contextToRequest(ctx) + ) ctx.status = response.status || 200 - ctx.body = response.payload + ctx.body = response?.payload ?? response }) .listen(3000, () => console.info('api listening on http://localhost:3000')) diff --git a/examples/test-token-v1-registry/src/types.ts b/examples/test-token-v1-registry/src/types.ts new file mode 100644 index 000000000..1a4bc42ff --- /dev/null +++ b/examples/test-token-v1-registry/src/types.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +export type APIHandlerResponse = { + status?: number // default is 200 + payload: unknown +} + +export type APIOperationHandler = OperationHandler extends ( + ...args: infer P +) => unknown + ? (...params: P) => Promise + : never diff --git a/examples/test-token-v1-registry/tsconfig.json b/examples/test-token-v1-registry/tsconfig.json index 2399b4444..af7104b8a 100644 --- a/examples/test-token-v1-registry/tsconfig.json +++ b/examples/test-token-v1-registry/tsconfig.json @@ -5,7 +5,8 @@ "outDir": "./dist", "noUncheckedIndexedAccess": true, "allowImportingTsExtensions": true, - "noEmit": true + "noEmit": true, + "noImplicitAny": true }, "include": ["src"] } From 5c8eeff41ce68f44f32f72cff2ab93c742f51cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Tue, 14 Jul 2026 09:34:59 +0200 Subject: [PATCH 10/28] feat(examples-test-token-v1-registry): create new api dirs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/api/allocation-instruction/index.ts | 13 +++++++++++++ .../src/api/allocation/index.ts | 13 +++++++++++++ .../api/{transfer => transfer-instruction}/index.ts | 0 3 files changed, 26 insertions(+) create mode 100644 examples/test-token-v1-registry/src/api/allocation-instruction/index.ts create mode 100644 examples/test-token-v1-registry/src/api/allocation/index.ts rename examples/test-token-v1-registry/src/api/{transfer => transfer-instruction}/index.ts (100%) diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/index.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/index.ts new file mode 100644 index 000000000..af63f5c41 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/index.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { OpenAPIBackend } from 'openapi-backend' +import { availableOpenAPIPaths } from '../../common/getOpenApiPath' + +export const allocationInstructionAPI = new OpenAPIBackend({ + definition: availableOpenAPIPaths['allocation-instruction-v1.yaml'], + quick: true, + handlers: {}, +}) + +await allocationInstructionAPI.init() diff --git a/examples/test-token-v1-registry/src/api/allocation/index.ts b/examples/test-token-v1-registry/src/api/allocation/index.ts new file mode 100644 index 000000000..9e9a20cbe --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation/index.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { OpenAPIBackend } from 'openapi-backend' +import { availableOpenAPIPaths } from '../../common/getOpenApiPath' + +export const allocationAPI = new OpenAPIBackend({ + definition: availableOpenAPIPaths['allocation-v1.yaml'], + quick: true, + handlers: {}, +}) + +await allocationAPI.init() diff --git a/examples/test-token-v1-registry/src/api/transfer/index.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts similarity index 100% rename from examples/test-token-v1-registry/src/api/transfer/index.ts rename to examples/test-token-v1-registry/src/api/transfer-instruction/index.ts From f25faea61749c4f65c917434b29d87b5560c7ba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Tue, 14 Jul 2026 09:56:03 +0200 Subject: [PATCH 11/28] feat(example-test-token-v1-registry): setup router MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/package.json | 1 + .../src/api/metadata/common.ts | 6 +-- .../src/api/transfer-instruction/common.ts | 12 +++++ .../getTransferFactory.ts | 15 ++++++ .../getTransferInstructionAcceptContext.ts | 15 ++++++ .../getTransferInstructionRejectContext.ts | 15 ++++++ .../getTransferInstructionWithdrawContext.ts | 15 ++++++ .../src/api/transfer-instruction/index.ts | 5 +- examples/test-token-v1-registry/src/index.ts | 25 ++------- examples/test-token-v1-registry/src/router.ts | 54 +++++++++++++++++++ yarn.lock | 25 +++++++++ 11 files changed, 163 insertions(+), 25 deletions(-) create mode 100644 examples/test-token-v1-registry/src/api/transfer-instruction/common.ts create mode 100644 examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts create mode 100644 examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts create mode 100644 examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts create mode 100644 examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts create mode 100644 examples/test-token-v1-registry/src/router.ts diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json index ebba71413..7d6599544 100644 --- a/examples/test-token-v1-registry/package.json +++ b/examples/test-token-v1-registry/package.json @@ -41,6 +41,7 @@ "dependencies": { "@canton-network/core-token-standard": "workspace:^", "@canton-network/wallet-sdk": "workspace:^", + "@koa/router": "^15.7.0", "koa": "^3.2.1", "koa-bodyparser": "^4.4.1", "openapi-backend": "^5.18.0", diff --git a/examples/test-token-v1-registry/src/api/metadata/common.ts b/examples/test-token-v1-registry/src/api/metadata/common.ts index 5766f5d9b..5b0788e1b 100644 --- a/examples/test-token-v1-registry/src/api/metadata/common.ts +++ b/examples/test-token-v1-registry/src/api/metadata/common.ts @@ -9,6 +9,9 @@ import { } from '../../openapi-ts/token-metadata-v1' import { APIOperationHandler } from '../../types' +export type MetadataAPIHandler = + APIOperationHandler> + export const supportedApis: SupportedApis = { 'splice-api-token-metadata-v1': 1, 'splice-api-token-transfer-instruction-v1': 1, @@ -28,6 +31,3 @@ export const instruments: Instrument[] = [ supportedApis, }, ] - -export type MetadataAPIHandler = - APIOperationHandler> diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts new file mode 100644 index 000000000..638fc776b --- /dev/null +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts @@ -0,0 +1,12 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { + OperationHandler, + Operations, +} from '../../openapi-ts/transfer-instruction-v1' +import { APIOperationHandler } from '../../types' + +export type TransferInstructionAPIHandler< + operationId extends keyof Operations, +> = APIOperationHandler> diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts new file mode 100644 index 000000000..c4d66d641 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts @@ -0,0 +1,15 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { TransferInstructionAPIHandler } from './common' + +export const getTransferFactory: TransferInstructionAPIHandler< + 'getTransferFactory' +> = async (ctx) => { + console.log(ctx) + return { + payload: { + test: true, + }, + } +} diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts new file mode 100644 index 000000000..bcddb4950 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts @@ -0,0 +1,15 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { TransferInstructionAPIHandler } from './common' + +export const getTransferInstructionAcceptContext: TransferInstructionAPIHandler< + 'getTransferInstructionAcceptContext' +> = async (ctx) => { + console.log(ctx) + return { + payload: { + test: true, + }, + } +} diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts new file mode 100644 index 000000000..3803b8dd2 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts @@ -0,0 +1,15 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { TransferInstructionAPIHandler } from './common' + +export const getTransferInstructionRejectContext: TransferInstructionAPIHandler< + 'getTransferInstructionRejectContext' +> = async (ctx) => { + console.log(ctx) + return { + payload: { + test: true, + }, + } +} diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts new file mode 100644 index 000000000..0e51caa25 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts @@ -0,0 +1,15 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { TransferInstructionAPIHandler } from './common' + +export const getTransferInstructionWithdrawContext: TransferInstructionAPIHandler< + 'getTransferInstructionWithdrawContext' +> = async (ctx) => { + console.log(ctx) + return { + payload: { + test: true, + }, + } +} diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts index 691828e02..4326f1832 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts @@ -3,11 +3,14 @@ import { OpenAPIBackend } from 'openapi-backend' import { availableOpenAPIPaths } from '../../common/getOpenApiPath' +import { getTransferFactory } from './getTransferFactory' export const transferInstructionAPI = new OpenAPIBackend({ definition: availableOpenAPIPaths['transfer-instruction-v1.yaml'], quick: true, - handlers: {}, + handlers: { + getTransferFactory, + }, }) await transferInstructionAPI.init() diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts index b20d68265..83a9abd3b 100644 --- a/examples/test-token-v1-registry/src/index.ts +++ b/examples/test-token-v1-registry/src/index.ts @@ -1,30 +1,13 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import Koa, { type Context } from 'koa' +import Koa from 'koa' import bodyParser from 'koa-bodyparser' -import { metatadaAPI } from './api/metadata/index' -import type { Request } from 'openapi-backend' -import { APIHandlerResponse } from './types' +import router from './router' const app = new Koa() -const contextToRequest = (ctx: Context): Request => { - return { - method: ctx.method, - path: ctx.path, - body: ctx.request.body, - query: ctx.query as Record, - headers: ctx.headers as Record, - } -} - app.use(bodyParser()) - .use(async (ctx) => { - const response: APIHandlerResponse = await metatadaAPI.handleRequest( - contextToRequest(ctx) - ) - ctx.status = response.status || 200 - ctx.body = response?.payload ?? response - }) + .use(router.routes()) + .use(router.allowedMethods()) .listen(3000, () => console.info('api listening on http://localhost:3000')) diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts new file mode 100644 index 000000000..3e81cfe04 --- /dev/null +++ b/examples/test-token-v1-registry/src/router.ts @@ -0,0 +1,54 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import Router, { RouterContext } from '@koa/router' +import { APIHandlerResponse } from './types' +import { metatadaAPI } from './api/metadata/index' +import { transferInstructionAPI } from './api/transfer-instruction/index' +import { allocationAPI } from './api/allocation/index' +import { allocationInstructionAPI } from './api/allocation-instruction/index' + +const contextToRequest = (ctx: RouterContext) => { + return { + method: ctx.method, + path: ctx.path, + body: ctx.request.body, + query: ctx.query as Record, + headers: ctx.headers as Record, + } +} + +const router = new Router() + +router.all('/registry/metadata/v1/:method', async (ctx) => { + console.log() + const response: APIHandlerResponse = await metatadaAPI.handleRequest( + contextToRequest(ctx) + ) + ctx.status = response.status || 200 + ctx.body = response.payload +}) + +router.all('/registry/transfer-instruction/v1/:method', async (ctx) => { + const response: APIHandlerResponse = + await transferInstructionAPI.handleRequest(contextToRequest(ctx)) + ctx.status = response.status || 200 + ctx.body = response.payload +}) + +router.all('/registry/allocation/v1/:method', async (ctx) => { + const response: APIHandlerResponse = await allocationAPI.handleRequest( + contextToRequest(ctx) + ) + ctx.status = response.status || 200 + ctx.body = response.payload +}) + +router.all('/registry/allocation-instruction/v1/:method', async (ctx) => { + const response: APIHandlerResponse = + await allocationInstructionAPI.handleRequest(contextToRequest(ctx)) + ctx.status = response.status || 200 + ctx.body = response.payload +}) + +export default router diff --git a/yarn.lock b/yarn.lock index 94f537c31..9c3a6cab7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2611,6 +2611,7 @@ __metadata: dependencies: "@canton-network/core-token-standard": "workspace:^" "@canton-network/wallet-sdk": "workspace:^" + "@koa/router": "npm:^15.7.0" "@types/koa": "npm:^3" "@types/koa-bodyparser": "npm:^4" "@types/lodash": "npm:^4.17.24" @@ -5170,6 +5171,23 @@ __metadata: languageName: node linkType: hard +"@koa/router@npm:^15.7.0": + version: 15.7.0 + resolution: "@koa/router@npm:15.7.0" + dependencies: + debug: "npm:^4.4.3" + http-errors: "npm:^2.0.1" + koa-compose: "npm:^4.1.0" + path-to-regexp: "npm:^8.4.2" + peerDependencies: + koa: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + koa: + optional: false + checksum: 10c0/da1f23f07684f5b39db5536cd6d4b77f7e38930786c2c0c13cf27d84ab90b6c9eea5ecf17f8f4c1b87ccc822a874f64c351b6e9b4c2e6c9324765564fce689cb + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -20587,6 +20605,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^8.4.2": + version: 8.4.2 + resolution: "path-to-regexp@npm:8.4.2" + checksum: 10c0/05b115c49b47ad252ce05faa32930f643f23769c68b8bcfe78ad833545140c48bbffb3266986d6c8d5db13a64cf12e07e0d72d9882cab830efeefa553533ebaf + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" From 1d50b1caf0116d7626069c2c44840c857501f49c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Tue, 14 Jul 2026 12:48:51 +0200 Subject: [PATCH 12/28] refactor(example-test-token-v1-registry): improve types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .vscode/extensions.json | 12 ++++++------ .../src/api/metadata/getInstrument.ts | 5 ++--- .../src/api/transfer-instruction/index.ts | 6 ++++++ examples/test-token-v1-registry/src/types.ts | 17 ++++++++++++----- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 7189b02a6..f86685cf9 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,8 @@ { - "recommendations": [ - "arcanis.vscode-zipfs", - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "runem.lit-plugin" - ] + "recommendations": [ + "arcanis.vscode-zipfs", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "runem.lit-plugin" + ] } diff --git a/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts index 045596f22..e9136f66b 100644 --- a/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts +++ b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts @@ -1,7 +1,6 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { ErrorResponse } from '../../openapi-ts/token-metadata-v1' import { instruments, MetadataAPIHandler } from './common' export const getInstrument: MetadataAPIHandler<'getInstrument'> = async ( @@ -15,8 +14,8 @@ export const getInstrument: MetadataAPIHandler<'getInstrument'> = async ( return { status: 404, payload: { - error: 'Not Found', - } satisfies ErrorResponse, + error: 'Instrument Not Found', + }, } } diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts index 4326f1832..65a084813 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/index.ts @@ -4,12 +4,18 @@ import { OpenAPIBackend } from 'openapi-backend' import { availableOpenAPIPaths } from '../../common/getOpenApiPath' import { getTransferFactory } from './getTransferFactory' +import { getTransferInstructionAcceptContext } from './getTransferInstructionAcceptContext' +import { getTransferInstructionRejectContext } from './getTransferInstructionRejectContext' +import { getTransferInstructionWithdrawContext } from './getTransferInstructionWithdrawContext' export const transferInstructionAPI = new OpenAPIBackend({ definition: availableOpenAPIPaths['transfer-instruction-v1.yaml'], quick: true, handlers: { getTransferFactory, + getTransferInstructionAcceptContext, + getTransferInstructionRejectContext, + getTransferInstructionWithdrawContext, }, }) diff --git a/examples/test-token-v1-registry/src/types.ts b/examples/test-token-v1-registry/src/types.ts index 1a4bc42ff..fed21e7ee 100644 --- a/examples/test-token-v1-registry/src/types.ts +++ b/examples/test-token-v1-registry/src/types.ts @@ -1,13 +1,20 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -export type APIHandlerResponse = { +export type APIHandlerResponse = { status?: number // default is 200 - payload: unknown + payload: Payload } +type ExtractOperationPayload = + Awaited extends { _t?: infer ResponseBody } + ? NonNullable + : Awaited + export type APIOperationHandler = OperationHandler extends ( - ...args: infer P -) => unknown - ? (...params: P) => Promise + ...args: infer Args +) => infer OperationReturn + ? ( + ...params: Args + ) => Promise>> : never From b02b17e29a44e915dfc33bbad5f52a4b6bced2c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Wed, 15 Jul 2026 07:58:20 +0200 Subject: [PATCH 13/28] feat(core-token-standard): export test token package id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- core/token-standard/src/index.ts | 4 ++-- core/token-standard/src/test-token.ts | 9 +++++++++ core/token-standard/src/types.ts | 3 --- 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 core/token-standard/src/test-token.ts diff --git a/core/token-standard/src/index.ts b/core/token-standard/src/index.ts index 565ffa932..90df05e12 100644 --- a/core/token-standard/src/index.ts +++ b/core/token-standard/src/index.ts @@ -3,6 +3,6 @@ export * from './token-standard-client.js' export * from './interface-ids.const.js' -export * from './types' - +export * from './types.js' +export * from './test-token.js' export * from '@daml.js/token-standard-models-1.0.0' diff --git a/core/token-standard/src/test-token.ts b/core/token-standard/src/test-token.ts new file mode 100644 index 000000000..f9e09dcb6 --- /dev/null +++ b/core/token-standard/src/test-token.ts @@ -0,0 +1,9 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { Splice, packageId } from '@daml.js/test-token-v1' + +export const TestTokenV1 = { + ...Splice.Testing.Tokens.TestTokenV1, + packageId, +} diff --git a/core/token-standard/src/types.ts b/core/token-standard/src/types.ts index 91b35b167..6d9a7dbf2 100644 --- a/core/token-standard/src/types.ts +++ b/core/token-standard/src/types.ts @@ -3,9 +3,6 @@ import { Splice } from '@daml.js/token-standard-models-1.0.0' import { PartyId } from '@canton-network/core-types' -import * as testTokenCodegen from '@daml.js/test-token-v1' - -export const TestTokenV1 = testTokenCodegen.Splice.Testing.Tokens.TestTokenV1 export * from './interface-ids.const.js' From f7ccac9013f3906aff3a89550d824e46e6d65385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Wed, 15 Jul 2026 08:00:29 +0200 Subject: [PATCH 14/28] feat(example-test-token-v1-registry): rearrange files, vet daml, setup admin party MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/package.json | 5 ++-- .../src/api/metadata/common.ts | 4 ++- .../src/api/metadata/getRegistryInfo.ts | 26 ++----------------- .../src/common/admin.ts | 21 +++++++++++++++ .../src/{ => common}/sdk.ts | 4 ++- .../src/common/vetDaml.ts | 23 ++++++++++++++++ examples/test-token-v1-registry/src/index.ts | 9 +++++++ .../src/{common => scripts}/generateTypes.ts | 2 +- yarn.lock | 2 ++ 9 files changed, 67 insertions(+), 29 deletions(-) create mode 100644 examples/test-token-v1-registry/src/common/admin.ts rename examples/test-token-v1-registry/src/{ => common}/sdk.ts (92%) create mode 100644 examples/test-token-v1-registry/src/common/vetDaml.ts rename examples/test-token-v1-registry/src/{common => scripts}/generateTypes.ts (93%) diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json index 7d6599544..d201f57c6 100644 --- a/examples/test-token-v1-registry/package.json +++ b/examples/test-token-v1-registry/package.json @@ -17,9 +17,9 @@ } }, "scripts": { - "generate:types": "tsx ./src/common/generateTypes.ts", + "generate:types": "tsx ./src/scripts/generateTypes.ts", "build": "yarn generate:types && tsup --onSuccess \"tsc\"", - "dev": "yarn generate:types && tsx --watch src/index.ts", + "dev": "yarn generate:types && NODE_ENV=development tsx --watch src/index.ts", "clean": "tsc -b --clean; rm -rf dist", "flatpack": "yarn pack --out \"$FLATPACK_OUTDIR\"", "test": "vitest run --project node --project browser", @@ -40,6 +40,7 @@ }, "dependencies": { "@canton-network/core-token-standard": "workspace:^", + "@canton-network/core-types": "workspace:^", "@canton-network/wallet-sdk": "workspace:^", "@koa/router": "^15.7.0", "koa": "^3.2.1", diff --git a/examples/test-token-v1-registry/src/api/metadata/common.ts b/examples/test-token-v1-registry/src/api/metadata/common.ts index 5b0788e1b..6202bffba 100644 --- a/examples/test-token-v1-registry/src/api/metadata/common.ts +++ b/examples/test-token-v1-registry/src/api/metadata/common.ts @@ -19,7 +19,9 @@ export const supportedApis: SupportedApis = { 'splice-api-token-allocation-instruction-v1': 1, } -// TODO: link with a database +/** + * @customize link data with a database + */ export const instruments: Instrument[] = [ { id: 'test-token-v1', diff --git a/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts index ddd24c1c3..984b722cf 100644 --- a/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts +++ b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts @@ -1,37 +1,15 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import sdk from '../../sdk' +import { admin } from '../../common/admin' import { MetadataAPIHandler, supportedApis } from './common' export const getRegistryInfo: MetadataAPIHandler< 'getRegistryInfo' > = async () => { - let adminId - let userList - do { - userList = await sdk.user.list() - if (!userList.users) break - // TODO: figure out a better way to find an admin - const potentialAdmin = userList.users.find((user) => - user.id.includes('admin') - ) - if (potentialAdmin) { - adminId = potentialAdmin.id - break - } - } while (userList.nextPageToken) - if (!adminId) { - return { - status: 404, - payload: { - error: 'Admin Not Found', - }, - } - } return { payload: { - adminId, + adminId: admin.party, supportedApis, }, } diff --git a/examples/test-token-v1-registry/src/common/admin.ts b/examples/test-token-v1-registry/src/common/admin.ts new file mode 100644 index 000000000..fa220ccb0 --- /dev/null +++ b/examples/test-token-v1-registry/src/common/admin.ts @@ -0,0 +1,21 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import sdk from './sdk' + +export const admin = { + party: '', + keys: sdk.keys.generate(), +} + +export const initAdminParty = async () => { + const createdParty = await sdk.party.external + .create(admin.keys.publicKey, { + // isAdmin: true, + partyHint: 'admin', + }) + .sign(admin.keys.privateKey) + .execute() + + admin.party = createdParty.partyId +} diff --git a/examples/test-token-v1-registry/src/sdk.ts b/examples/test-token-v1-registry/src/common/sdk.ts similarity index 92% rename from examples/test-token-v1-registry/src/sdk.ts rename to examples/test-token-v1-registry/src/common/sdk.ts index 3ecda02ec..253956925 100644 --- a/examples/test-token-v1-registry/src/sdk.ts +++ b/examples/test-token-v1-registry/src/common/sdk.ts @@ -8,7 +8,9 @@ import { WalletSDKTestTokenPlugin, } from '@canton-network/wallet-sdk' -// TODO: consider switching to another auth method +/** + * @customize consider switching to another auth method + */ const auth: TokenProviderConfig = { method: 'self_signed', issuer: 'unsafe-auth', diff --git a/examples/test-token-v1-registry/src/common/vetDaml.ts b/examples/test-token-v1-registry/src/common/vetDaml.ts new file mode 100644 index 000000000..1b62c85df --- /dev/null +++ b/examples/test-token-v1-registry/src/common/vetDaml.ts @@ -0,0 +1,23 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import sdk from './sdk' +import { readFileSync } from 'node:fs' +import { TestTokenV1 } from '@canton-network/core-token-standard' + +/** + * @customize The registry shouldn't be responsible for vetting daml files. We're doing this for development purposes only. Feel free to remove this when constructing your own token. + */ +const vetDaml = async () => { + const darFile = path.join( + path.dirname(fileURLToPath(import.meta.url)), + '../../../../.localnet/dars/splice-test-token-v1-1.0.0.dar' + ) + const darBytes = readFileSync(darFile) + + await sdk.ledger.dar.upload(darBytes, TestTokenV1.packageId) +} + +export default vetDaml diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts index 83a9abd3b..7a106d0c7 100644 --- a/examples/test-token-v1-registry/src/index.ts +++ b/examples/test-token-v1-registry/src/index.ts @@ -4,9 +4,18 @@ import Koa from 'koa' import bodyParser from 'koa-bodyparser' import router from './router' +import { initAdminParty } from './common/admin' +import vetDaml from './common/vetDaml' const app = new Koa() +await initAdminParty() + +/** + * @customize see {@link ./common/vetDaml.ts} + */ +if (process.env.NODE_ENV === 'development') await vetDaml() + app.use(bodyParser()) .use(router.routes()) .use(router.allowedMethods()) diff --git a/examples/test-token-v1-registry/src/common/generateTypes.ts b/examples/test-token-v1-registry/src/scripts/generateTypes.ts similarity index 93% rename from examples/test-token-v1-registry/src/common/generateTypes.ts rename to examples/test-token-v1-registry/src/scripts/generateTypes.ts index f36e332af..54564ac7f 100644 --- a/examples/test-token-v1-registry/src/common/generateTypes.ts +++ b/examples/test-token-v1-registry/src/scripts/generateTypes.ts @@ -4,7 +4,7 @@ import { execSync } from 'node:child_process' import { existsSync, mkdirSync } from 'node:fs' import path, { basename } from 'node:path' -import { availableOpenAPIPaths } from './getOpenApiPath' +import { availableOpenAPIPaths } from '../common/getOpenApiPath' const outDir = path.join(import.meta.dirname, '../openapi-ts') diff --git a/yarn.lock b/yarn.lock index 9c3a6cab7..eb42642cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2610,6 +2610,7 @@ __metadata: resolution: "@canton-network/example-test-token-v1-registry@workspace:examples/test-token-v1-registry" dependencies: "@canton-network/core-token-standard": "workspace:^" + "@canton-network/core-types": "workspace:^" "@canton-network/wallet-sdk": "workspace:^" "@koa/router": "npm:^15.7.0" "@types/koa": "npm:^3" @@ -2627,6 +2628,7 @@ __metadata: tsx: "npm:^4.23.0" typescript: "npm:^5.9.3" vitest: "npm:^4.1.8" + zod: "npm:^4.4.3" languageName: unknown linkType: soft From f95a8c7ddcf80edc4dbc3549a02e47ab1d64294e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Wed, 15 Jul 2026 08:00:58 +0200 Subject: [PATCH 15/28] feat(example-test-token-v1-registry): implement get transfer factory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../getTransferFactory.ts | 62 ++++++++++++++++++- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts index c4d66d641..b49183fb8 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts @@ -1,15 +1,71 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 +import { TestTokenV1 } from '@canton-network/core-token-standard' +import sdk from '../../common/sdk' import { TransferInstructionAPIHandler } from './common' +import { admin } from '../../common/admin' export const getTransferFactory: TransferInstructionAPIHandler< 'getTransferFactory' -> = async (ctx) => { - console.log(ctx) +> = async () => { + const fetchedFactory = ( + await sdk.ledger.acsReader.readJsContracts({ + filterByParty: true, + parties: [admin.party], + templateIds: [TestTokenV1.TokenRules.templateId], + }) + )[0] + + if (fetchedFactory) { + return { + payload: { + factoryId: fetchedFactory.contractId, + transferKind: 'offer', + choiceContext: { + choiceContextData: {}, + disclosedContracts: [], + }, + }, + } + } + + const executionResult = await sdk.ledger + .prepare({ + partyId: admin.party, + commands: sdk.testToken.create.rules({ admin: admin.party }), + }) + .sign(admin.keys.privateKey) + .execute({ + partyId: admin.party, + }) + + const factoryContracts = await sdk.ledger.acsReader.readJsContracts({ + filterByParty: true, + parties: [admin.party], + offset: executionResult.completionOffset, + templateIds: [TestTokenV1.TokenRules.templateId], + }) + + const factoryContract = factoryContracts[0] + + if (!factoryContract) { + return { + status: 500, + payload: { + error: `Error instantiating transfer factory (completionOffset=${executionResult.completionOffset}, contractsAtOffset=${factoryContracts.length}`, + }, + } + } + return { payload: { - test: true, + factoryId: factoryContract.contractId, + transferKind: 'offer', + choiceContext: { + choiceContextData: {}, + disclosedContracts: [], + }, }, } } From 5e3450ef02e1b8c366615901c99453dd90d1fb52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Wed, 15 Jul 2026 08:56:11 +0200 Subject: [PATCH 16/28] feat(example-test-token-v1-registry): swap @koa/router with homemade solution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/package.json | 1 - examples/test-token-v1-registry/src/index.ts | 5 +- examples/test-token-v1-registry/src/router.ts | 51 ++++++++----------- 3 files changed, 22 insertions(+), 35 deletions(-) diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json index d201f57c6..48d992197 100644 --- a/examples/test-token-v1-registry/package.json +++ b/examples/test-token-v1-registry/package.json @@ -42,7 +42,6 @@ "@canton-network/core-token-standard": "workspace:^", "@canton-network/core-types": "workspace:^", "@canton-network/wallet-sdk": "workspace:^", - "@koa/router": "^15.7.0", "koa": "^3.2.1", "koa-bodyparser": "^4.4.1", "openapi-backend": "^5.18.0", diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts index 7a106d0c7..738d77454 100644 --- a/examples/test-token-v1-registry/src/index.ts +++ b/examples/test-token-v1-registry/src/index.ts @@ -3,9 +3,9 @@ import Koa from 'koa' import bodyParser from 'koa-bodyparser' -import router from './router' import { initAdminParty } from './common/admin' import vetDaml from './common/vetDaml' +import { setRoutes } from './router' const app = new Koa() @@ -17,6 +17,5 @@ await initAdminParty() if (process.env.NODE_ENV === 'development') await vetDaml() app.use(bodyParser()) - .use(router.routes()) - .use(router.allowedMethods()) + .use(setRoutes) .listen(3000, () => console.info('api listening on http://localhost:3000')) diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts index 3e81cfe04..ede169827 100644 --- a/examples/test-token-v1-registry/src/router.ts +++ b/examples/test-token-v1-registry/src/router.ts @@ -1,54 +1,43 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import Router, { RouterContext } from '@koa/router' import { APIHandlerResponse } from './types' import { metatadaAPI } from './api/metadata/index' import { transferInstructionAPI } from './api/transfer-instruction/index' import { allocationAPI } from './api/allocation/index' import { allocationInstructionAPI } from './api/allocation-instruction/index' +import { Context } from 'koa' -const contextToRequest = (ctx: RouterContext) => { +const contextToRequest = (ctx: Context) => { return { method: ctx.method, path: ctx.path, - body: ctx.request.body, + body: ctx.body, query: ctx.query as Record, headers: ctx.headers as Record, } } -const router = new Router() +const routeMap = new Map([ + ['/registry/metadata/v1/', metatadaAPI], + ['/registry/transfer-instruction/v1/', transferInstructionAPI], + ['/registry/allocation/v1/', allocationAPI], + ['/registry/allocation-instruction/v1/', allocationInstructionAPI], +]) -router.all('/registry/metadata/v1/:method', async (ctx) => { - console.log() - const response: APIHandlerResponse = await metatadaAPI.handleRequest( - contextToRequest(ctx) +export const setRoutes = async (ctx: Context) => { + const route = [...routeMap.keys()].find((route) => + ctx.path.startsWith(route) ) - ctx.status = response.status || 200 - ctx.body = response.payload -}) - -router.all('/registry/transfer-instruction/v1/:method', async (ctx) => { - const response: APIHandlerResponse = - await transferInstructionAPI.handleRequest(contextToRequest(ctx)) - ctx.status = response.status || 200 - ctx.body = response.payload -}) -router.all('/registry/allocation/v1/:method', async (ctx) => { - const response: APIHandlerResponse = await allocationAPI.handleRequest( - contextToRequest(ctx) - ) - ctx.status = response.status || 200 - ctx.body = response.payload -}) + if (!route) { + ctx.status = 501 + return + } -router.all('/registry/allocation-instruction/v1/:method', async (ctx) => { - const response: APIHandlerResponse = - await allocationInstructionAPI.handleRequest(contextToRequest(ctx)) + const response: APIHandlerResponse = await routeMap + .get(route) + ?.handleRequest(contextToRequest(ctx)) ctx.status = response.status || 200 ctx.body = response.payload -}) - -export default router +} From 052b04df8a981b54f8bd81e022ebc184a697ce30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Thu, 16 Jul 2026 12:59:07 +0200 Subject: [PATCH 17/28] feat(example-test-token-v1-registry): finish transfer instruction api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/package.json | 3 +- .../src/api/transfer-instruction/common.ts | 6 +++ .../getTransferFactory.ts | 51 ++++++++++++++----- .../getTransferInstructionAcceptContext.ts | 9 ++-- .../getTransferInstructionRejectContext.ts | 9 ++-- .../getTransferInstructionWithdrawContext.ts | 9 ++-- examples/test-token-v1-registry/src/index.ts | 4 +- examples/test-token-v1-registry/src/router.ts | 4 +- yarn.lock | 25 --------- 9 files changed, 60 insertions(+), 60 deletions(-) diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json index 48d992197..e3bfcca7b 100644 --- a/examples/test-token-v1-registry/package.json +++ b/examples/test-token-v1-registry/package.json @@ -45,7 +45,8 @@ "koa": "^3.2.1", "koa-bodyparser": "^4.4.1", "openapi-backend": "^5.18.0", - "tsx": "^4.23.0" + "tsx": "^4.23.0", + "zod": "^4.4.3" }, "files": [ "dist/**" diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts index 638fc776b..73dfdecfd 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { + ChoiceContext, OperationHandler, Operations, } from '../../openapi-ts/transfer-instruction-v1' @@ -10,3 +11,8 @@ import { APIOperationHandler } from '../../types' export type TransferInstructionAPIHandler< operationId extends keyof Operations, > = APIOperationHandler> + +export const emptyChoiceContext: ChoiceContext = { + choiceContextData: {}, + disclosedContracts: [], +} diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts index b49183fb8..74a9c9353 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts @@ -3,12 +3,45 @@ import { TestTokenV1 } from '@canton-network/core-token-standard' import sdk from '../../common/sdk' -import { TransferInstructionAPIHandler } from './common' +import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' import { admin } from '../../common/admin' +import { GetFactoryRequest } from '../../openapi-ts/transfer-instruction-v1' +import z from 'zod' + +export const GetTransferFactoryChoiceArguments = z.object({ + sender: z.string(), + receiver: z.string(), + transferKind: z.optional( + z.union([z.literal('self'), z.literal('offer'), z.literal('direct')]) + ), +}) export const getTransferFactory: TransferInstructionAPIHandler< 'getTransferFactory' -> = async () => { +> = async (ctx) => { + const { choiceArguments } = ctx.request.body as GetFactoryRequest + + const parsedChoiceArguments = + GetTransferFactoryChoiceArguments.safeParse(choiceArguments) + + if (!parsedChoiceArguments.success) { + return { + status: 400, + payload: { + error: JSON.stringify( + JSON.parse(parsedChoiceArguments.error.message) + ), + }, + } + } + + const transferKind = + (parsedChoiceArguments.data.transferKind ?? + parsedChoiceArguments.data.sender === + parsedChoiceArguments.data.receiver) + ? 'self' + : 'offer' + const fetchedFactory = ( await sdk.ledger.acsReader.readJsContracts({ filterByParty: true, @@ -21,11 +54,8 @@ export const getTransferFactory: TransferInstructionAPIHandler< return { payload: { factoryId: fetchedFactory.contractId, - transferKind: 'offer', - choiceContext: { - choiceContextData: {}, - disclosedContracts: [], - }, + transferKind, + choiceContext: emptyChoiceContext, }, } } @@ -61,11 +91,8 @@ export const getTransferFactory: TransferInstructionAPIHandler< return { payload: { factoryId: factoryContract.contractId, - transferKind: 'offer', - choiceContext: { - choiceContextData: {}, - disclosedContracts: [], - }, + transferKind, + choiceContext: emptyChoiceContext, }, } } diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts index bcddb4950..4b4caef19 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts @@ -1,15 +1,12 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { TransferInstructionAPIHandler } from './common' +import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' export const getTransferInstructionAcceptContext: TransferInstructionAPIHandler< 'getTransferInstructionAcceptContext' -> = async (ctx) => { - console.log(ctx) +> = async () => { return { - payload: { - test: true, - }, + payload: emptyChoiceContext, } } diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts index 3803b8dd2..bde792d68 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts @@ -1,15 +1,12 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { TransferInstructionAPIHandler } from './common' +import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' export const getTransferInstructionRejectContext: TransferInstructionAPIHandler< 'getTransferInstructionRejectContext' -> = async (ctx) => { - console.log(ctx) +> = async () => { return { - payload: { - test: true, - }, + payload: emptyChoiceContext, } } diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts index 0e51caa25..3c23b9db0 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts @@ -1,15 +1,12 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { TransferInstructionAPIHandler } from './common' +import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' export const getTransferInstructionWithdrawContext: TransferInstructionAPIHandler< 'getTransferInstructionWithdrawContext' -> = async (ctx) => { - console.log(ctx) +> = async () => { return { - payload: { - test: true, - }, + payload: emptyChoiceContext, } } diff --git a/examples/test-token-v1-registry/src/index.ts b/examples/test-token-v1-registry/src/index.ts index 738d77454..cdbcc6730 100644 --- a/examples/test-token-v1-registry/src/index.ts +++ b/examples/test-token-v1-registry/src/index.ts @@ -5,7 +5,7 @@ import Koa from 'koa' import bodyParser from 'koa-bodyparser' import { initAdminParty } from './common/admin' import vetDaml from './common/vetDaml' -import { setRoutes } from './router' +import { router } from './router' const app = new Koa() @@ -17,5 +17,5 @@ await initAdminParty() if (process.env.NODE_ENV === 'development') await vetDaml() app.use(bodyParser()) - .use(setRoutes) + .use(router) .listen(3000, () => console.info('api listening on http://localhost:3000')) diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts index ede169827..7c488ac56 100644 --- a/examples/test-token-v1-registry/src/router.ts +++ b/examples/test-token-v1-registry/src/router.ts @@ -12,7 +12,7 @@ const contextToRequest = (ctx: Context) => { return { method: ctx.method, path: ctx.path, - body: ctx.body, + body: ctx.request.body, query: ctx.query as Record, headers: ctx.headers as Record, } @@ -25,7 +25,7 @@ const routeMap = new Map([ ['/registry/allocation-instruction/v1/', allocationInstructionAPI], ]) -export const setRoutes = async (ctx: Context) => { +export const router = async (ctx: Context) => { const route = [...routeMap.keys()].find((route) => ctx.path.startsWith(route) ) diff --git a/yarn.lock b/yarn.lock index eb42642cd..fd43606c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2612,7 +2612,6 @@ __metadata: "@canton-network/core-token-standard": "workspace:^" "@canton-network/core-types": "workspace:^" "@canton-network/wallet-sdk": "workspace:^" - "@koa/router": "npm:^15.7.0" "@types/koa": "npm:^3" "@types/koa-bodyparser": "npm:^4" "@types/lodash": "npm:^4.17.24" @@ -5173,23 +5172,6 @@ __metadata: languageName: node linkType: hard -"@koa/router@npm:^15.7.0": - version: 15.7.0 - resolution: "@koa/router@npm:15.7.0" - dependencies: - debug: "npm:^4.4.3" - http-errors: "npm:^2.0.1" - koa-compose: "npm:^4.1.0" - path-to-regexp: "npm:^8.4.2" - peerDependencies: - koa: ^2.0.0 || ^3.0.0 - peerDependenciesMeta: - koa: - optional: false - checksum: 10c0/da1f23f07684f5b39db5536cd6d4b77f7e38930786c2c0c13cf27d84ab90b6c9eea5ecf17f8f4c1b87ccc822a874f64c351b6e9b4c2e6c9324765564fce689cb - languageName: node - linkType: hard - "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -20607,13 +20589,6 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:^8.4.2": - version: 8.4.2 - resolution: "path-to-regexp@npm:8.4.2" - checksum: 10c0/05b115c49b47ad252ce05faa32930f643f23769c68b8bcfe78ad833545140c48bbffb3266986d6c8d5db13a64cf12e07e0d72d9882cab830efeefa553533ebaf - languageName: node - linkType: hard - "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" From 1413b4def2219b9f1b8d033ee061ef4995a018ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Thu, 16 Jul 2026 13:42:01 +0200 Subject: [PATCH 18/28] refactor(example-test-token-v1-registry): move emptychoicecontext MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/src/api/common.ts | 14 ++++++++++++++ .../src/api/transfer-instruction/common.ts | 6 ------ .../api/transfer-instruction/getTransferFactory.ts | 3 ++- .../getTransferInstructionAcceptContext.ts | 3 ++- .../getTransferInstructionRejectContext.ts | 3 ++- .../getTransferInstructionWithdrawContext.ts | 3 ++- 6 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 examples/test-token-v1-registry/src/api/common.ts diff --git a/examples/test-token-v1-registry/src/api/common.ts b/examples/test-token-v1-registry/src/api/common.ts new file mode 100644 index 000000000..89d49516d --- /dev/null +++ b/examples/test-token-v1-registry/src/api/common.ts @@ -0,0 +1,14 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { ChoiceContext as AllocationInstructionChoiceContext } from '../openapi-ts/allocation-instruction-v1' +import { ChoiceContext as AllocationChoiceContext } from '../openapi-ts/allocation-v1' +import { ChoiceContext as TransferInstructionChoiceContext } from '../openapi-ts/transfer-instruction-v1' + +export const emptyChoiceContext: + | AllocationChoiceContext + | AllocationInstructionChoiceContext + | TransferInstructionChoiceContext = { + choiceContextData: {}, + disclosedContracts: [], +} diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts index 73dfdecfd..638fc776b 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/common.ts @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 import { - ChoiceContext, OperationHandler, Operations, } from '../../openapi-ts/transfer-instruction-v1' @@ -11,8 +10,3 @@ import { APIOperationHandler } from '../../types' export type TransferInstructionAPIHandler< operationId extends keyof Operations, > = APIOperationHandler> - -export const emptyChoiceContext: ChoiceContext = { - choiceContextData: {}, - disclosedContracts: [], -} diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts index 74a9c9353..3611d690f 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts @@ -3,10 +3,11 @@ import { TestTokenV1 } from '@canton-network/core-token-standard' import sdk from '../../common/sdk' -import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' +import { TransferInstructionAPIHandler } from './common' import { admin } from '../../common/admin' import { GetFactoryRequest } from '../../openapi-ts/transfer-instruction-v1' import z from 'zod' +import { emptyChoiceContext } from '../common' export const GetTransferFactoryChoiceArguments = z.object({ sender: z.string(), diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts index 4b4caef19..8407fee02 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts @@ -1,7 +1,8 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' +import { emptyChoiceContext } from '../common' +import { TransferInstructionAPIHandler } from './common' export const getTransferInstructionAcceptContext: TransferInstructionAPIHandler< 'getTransferInstructionAcceptContext' diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts index bde792d68..0ff4b8c2e 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts @@ -1,7 +1,8 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' +import { emptyChoiceContext } from '../common' +import { TransferInstructionAPIHandler } from './common' export const getTransferInstructionRejectContext: TransferInstructionAPIHandler< 'getTransferInstructionRejectContext' diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts index 3c23b9db0..f9205fd8e 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts @@ -1,7 +1,8 @@ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { emptyChoiceContext, TransferInstructionAPIHandler } from './common' +import { emptyChoiceContext } from '../common' +import { TransferInstructionAPIHandler } from './common' export const getTransferInstructionWithdrawContext: TransferInstructionAPIHandler< 'getTransferInstructionWithdrawContext' From af7a98b767189a9cbdd128b8a61882204274eeb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Thu, 16 Jul 2026 13:44:59 +0200 Subject: [PATCH 19/28] feat(example-test-token-v1-registry): add allocation api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/api/allocation/common.ts | 8 ++++++++ .../api/allocation/getAllocationCancelContext.ts | 13 +++++++++++++ .../api/allocation/getAllocationTransferContext.ts | 13 +++++++++++++ .../api/allocation/getAllocationWithdrawContext.ts | 13 +++++++++++++ .../src/api/allocation/index.ts | 9 ++++++++- examples/test-token-v1-registry/src/router.ts | 2 +- 6 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 examples/test-token-v1-registry/src/api/allocation/common.ts create mode 100644 examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts create mode 100644 examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts create mode 100644 examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts diff --git a/examples/test-token-v1-registry/src/api/allocation/common.ts b/examples/test-token-v1-registry/src/api/allocation/common.ts new file mode 100644 index 000000000..03f7cc7f8 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation/common.ts @@ -0,0 +1,8 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { OperationHandler, Operations } from '../../openapi-ts/allocation-v1' +import { APIOperationHandler } from '../../types' + +export type AllocationAPIHandler = + APIOperationHandler> diff --git a/examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts b/examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts new file mode 100644 index 000000000..9cbcfb0a6 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { emptyChoiceContext } from '../common' +import { AllocationAPIHandler } from './common' + +export const getAllocationCancelContext: AllocationAPIHandler< + 'getAllocationCancelContext' +> = async () => { + return { + payload: emptyChoiceContext, + } +} diff --git a/examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts b/examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts new file mode 100644 index 000000000..5269489bf --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { emptyChoiceContext } from '../common' +import { AllocationAPIHandler } from './common' + +export const getAllocationTransferContext: AllocationAPIHandler< + 'getAllocationTransferContext' +> = async () => { + return { + payload: emptyChoiceContext, + } +} diff --git a/examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts b/examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts new file mode 100644 index 000000000..9fdcb7245 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts @@ -0,0 +1,13 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { emptyChoiceContext } from '../common' +import { AllocationAPIHandler } from './common' + +export const getAllocationWithdrawContext: AllocationAPIHandler< + 'getAllocationWithdrawContext' +> = async () => { + return { + payload: emptyChoiceContext, + } +} diff --git a/examples/test-token-v1-registry/src/api/allocation/index.ts b/examples/test-token-v1-registry/src/api/allocation/index.ts index 9e9a20cbe..a7c8105f7 100644 --- a/examples/test-token-v1-registry/src/api/allocation/index.ts +++ b/examples/test-token-v1-registry/src/api/allocation/index.ts @@ -3,11 +3,18 @@ import { OpenAPIBackend } from 'openapi-backend' import { availableOpenAPIPaths } from '../../common/getOpenApiPath' +import { getAllocationCancelContext } from './getAllocationCancelContext' +import { getAllocationTransferContext } from './getAllocationTransferContext' +import { getAllocationWithdrawContext } from './getAllocationWithdrawContext' export const allocationAPI = new OpenAPIBackend({ definition: availableOpenAPIPaths['allocation-v1.yaml'], quick: true, - handlers: {}, + handlers: { + getAllocationTransferContext, + getAllocationWithdrawContext, + getAllocationCancelContext, + }, }) await allocationAPI.init() diff --git a/examples/test-token-v1-registry/src/router.ts b/examples/test-token-v1-registry/src/router.ts index 7c488ac56..e5ecc1b58 100644 --- a/examples/test-token-v1-registry/src/router.ts +++ b/examples/test-token-v1-registry/src/router.ts @@ -21,7 +21,7 @@ const contextToRequest = (ctx: Context) => { const routeMap = new Map([ ['/registry/metadata/v1/', metatadaAPI], ['/registry/transfer-instruction/v1/', transferInstructionAPI], - ['/registry/allocation/v1/', allocationAPI], + ['/registry/allocations/v1/', allocationAPI], ['/registry/allocation-instruction/v1/', allocationInstructionAPI], ]) From eb183f68b93ede437f2828a18deb374a4b542e00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Thu, 16 Jul 2026 14:31:06 +0200 Subject: [PATCH 20/28] feat(example-test-token-v1-registry): add allocation-instruction api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/api/allocation-instruction/common.ts | 12 +++ .../getAllocationFactory.ts | 87 +++++++++++++++++++ .../src/api/allocation-instruction/index.ts | 5 +- 3 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 examples/test-token-v1-registry/src/api/allocation-instruction/common.ts create mode 100644 examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/common.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/common.ts new file mode 100644 index 000000000..2a61e5b82 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/common.ts @@ -0,0 +1,12 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { + OperationHandler, + Operations, +} from '../../openapi-ts/allocation-instruction-v1' +import { APIOperationHandler } from '../../types' + +export type AllocationInstructionAPIHandler< + operationId extends keyof Operations, +> = APIOperationHandler> diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts new file mode 100644 index 000000000..7811c92b5 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts @@ -0,0 +1,87 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import z from 'zod' +import { AllocationInstructionAPIHandler } from './common' +import { GetFactoryRequest } from '../../openapi-ts/allocation-instruction-v1' +import sdk from '../../common/sdk' +import { admin } from '../../common/admin' +import { TestTokenV1 } from '@canton-network/core-token-standard' +import { emptyChoiceContext } from '../common' + +export const GetTransferFactoryChoiceArguments = z.object({ + sender: z.string(), + receiver: z.string(), +}) + +export const getAllocationFactory: AllocationInstructionAPIHandler< + 'getAllocationFactory' +> = async (ctx) => { + const { choiceArguments } = ctx.request.body as GetFactoryRequest + + const parsedChoiceArguments = + GetTransferFactoryChoiceArguments.safeParse(choiceArguments) + + if (!parsedChoiceArguments.success) { + return { + status: 400, + payload: { + error: JSON.stringify( + JSON.parse(parsedChoiceArguments.error.message) + ), + }, + } + } + + const fetchedFactory = ( + await sdk.ledger.acsReader.readJsContracts({ + filterByParty: true, + parties: [admin.party], + templateIds: [TestTokenV1.TokenRules.templateId], + }) + )[0] + + if (fetchedFactory) { + return { + payload: { + factoryId: fetchedFactory.contractId, + choiceContext: emptyChoiceContext, + }, + } + } + + const executionResult = await sdk.ledger + .prepare({ + partyId: admin.party, + commands: sdk.testToken.create.rules({ admin: admin.party }), + }) + .sign(admin.keys.privateKey) + .execute({ + partyId: admin.party, + }) + + const factoryContracts = await sdk.ledger.acsReader.readJsContracts({ + filterByParty: true, + parties: [admin.party], + offset: executionResult.completionOffset, + templateIds: [TestTokenV1.TokenRules.templateId], + }) + + const factoryContract = factoryContracts[0] + + if (!factoryContract) { + return { + status: 500, + payload: { + error: `Error instantiating transfer factory (completionOffset=${executionResult.completionOffset}, contractsAtOffset=${factoryContracts.length}`, + }, + } + } + + return { + payload: { + factoryId: factoryContract.contractId, + choiceContext: emptyChoiceContext, + }, + } +} diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/index.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/index.ts index af63f5c41..a4238c73c 100644 --- a/examples/test-token-v1-registry/src/api/allocation-instruction/index.ts +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/index.ts @@ -3,11 +3,14 @@ import { OpenAPIBackend } from 'openapi-backend' import { availableOpenAPIPaths } from '../../common/getOpenApiPath' +import { getAllocationFactory } from './getAllocationFactory' export const allocationInstructionAPI = new OpenAPIBackend({ definition: availableOpenAPIPaths['allocation-instruction-v1.yaml'], quick: true, - handlers: {}, + handlers: { + getAllocationFactory, + }, }) await allocationInstructionAPI.init() From b31bf14f0c2948a2ed3cbff4a3e944d062d7e876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 17 Jul 2026 13:05:30 +0200 Subject: [PATCH 21/28] test(example-test-token-v1-registry): :construction: start working on unit tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/api/allocation/allocation.test.ts | 16 + yarn.lock | 1161 ++++++++++++++++- 2 files changed, 1113 insertions(+), 64 deletions(-) create mode 100644 examples/test-token-v1-registry/src/api/allocation/allocation.test.ts diff --git a/examples/test-token-v1-registry/src/api/allocation/allocation.test.ts b/examples/test-token-v1-registry/src/api/allocation/allocation.test.ts new file mode 100644 index 000000000..75f0cd9d3 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation/allocation.test.ts @@ -0,0 +1,16 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, expect, it } from 'vitest' +import { getAllocationTransferContext } from './getAllocationTransferContext' +import { Operations } from '../../openapi-ts/allocation-v1' + +const ctx = {} as Operations['getAllocationTransferContext']['context'] + +describe('Allocation', () => { + it('should return correct allocation transfer context', async () => { + const result = await getAllocationTransferContext(ctx) + + expect(result).toBeDefined() + }) +}) diff --git a/yarn.lock b/yarn.lock index fd43606c3..52b36515b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,7 +102,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.29.7": +"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.29.7": version: 7.29.7 resolution: "@babel/code-frame@npm:7.29.7" dependencies: @@ -127,7 +127,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": version: 7.29.7 resolution: "@babel/core@npm:7.29.7" dependencies: @@ -173,29 +173,29 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.29.0": - version: 7.29.1 - resolution: "@babel/generator@npm:7.29.1" +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": + version: 7.29.7 + resolution: "@babel/generator@npm:7.29.7" dependencies: - "@babel/parser": "npm:^7.29.0" - "@babel/types": "npm:^7.29.0" + "@babel/parser": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 + checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 languageName: node linkType: hard -"@babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": - version: 7.29.7 - resolution: "@babel/generator@npm:7.29.7" +"@babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.29.0": + version: 7.29.1 + resolution: "@babel/generator@npm:7.29.1" dependencies: - "@babel/parser": "npm:^7.29.7" - "@babel/types": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 + checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 languageName: node linkType: hard @@ -804,25 +804,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.28.6, @babel/plugin-syntax-typescript@npm:^7.3.3": - version: 7.28.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.29.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.29.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.29.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 + checksum: 10c0/c49883b0327e8683b770dc823205af5c697da216e590dcf5bf53f3f031e7e381de450b164f8f99853f0837a3de5cb793298e2be6697a0f6e452bb9dd34b5165e languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.29.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.29.7" +"@babel/plugin-syntax-typescript@npm:^7.28.6, @babel/plugin-syntax-typescript@npm:^7.3.3": + version: 7.28.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.29.7" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c49883b0327e8683b770dc823205af5c697da216e590dcf5bf53f3f031e7e381de450b164f8f99853f0837a3de5cb793298e2be6697a0f6e452bb9dd34b5165e + checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 languageName: node linkType: hard @@ -2612,6 +2612,7 @@ __metadata: "@canton-network/core-token-standard": "workspace:^" "@canton-network/core-types": "workspace:^" "@canton-network/wallet-sdk": "workspace:^" + "@jest/core": "npm:^30.4.2" "@types/koa": "npm:^3" "@types/koa-bodyparser": "npm:^4" "@types/lodash": "npm:^4.17.24" @@ -4765,6 +4766,20 @@ __metadata: languageName: node linkType: hard +"@jest/console@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/console@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + jest-message-util: "npm:30.4.1" + jest-util: "npm:30.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/f782722ef5754ab864b996000cf1f0545f7be9db6ba8f89cb2381dfab9910a52c59a830e5ea069a76840023e40806493d9900d8eb7e9821d23a11a498f32739e + languageName: node + linkType: hard + "@jest/console@npm:^29.7.0": version: 29.7.0 resolution: "@jest/console@npm:29.7.0" @@ -4820,6 +4835,47 @@ __metadata: languageName: node linkType: hard +"@jest/core@npm:^30.4.2": + version: 30.4.2 + resolution: "@jest/core@npm:30.4.2" + dependencies: + "@jest/console": "npm:30.4.1" + "@jest/pattern": "npm:30.4.0" + "@jest/reporters": "npm:30.4.1" + "@jest/test-result": "npm:30.4.1" + "@jest/transform": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + exit-x: "npm:^0.2.2" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.11" + jest-changed-files: "npm:30.4.1" + jest-config: "npm:30.4.2" + jest-haste-map: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-regex-util: "npm:30.4.0" + jest-resolve: "npm:30.4.1" + jest-resolve-dependencies: "npm:30.4.2" + jest-runner: "npm:30.4.2" + jest-runtime: "npm:30.4.2" + jest-snapshot: "npm:30.4.1" + jest-util: "npm:30.4.1" + jest-validate: "npm:30.4.1" + jest-watcher: "npm:30.4.1" + pretty-format: "npm:30.4.1" + slash: "npm:^3.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/4237ec79d5403b82ba89e3be6e4318d9f37c3a11281bd76cfbdd4ff08d8c89850555607c4d494dab3526e01a90db3539e549017883967dd392b5084f1be0d5b2 + languageName: node + linkType: hard + "@jest/diff-sequences@npm:30.0.1": version: 30.0.1 resolution: "@jest/diff-sequences@npm:30.0.1" @@ -4827,6 +4883,25 @@ __metadata: languageName: node linkType: hard +"@jest/diff-sequences@npm:30.4.0": + version: 30.4.0 + resolution: "@jest/diff-sequences@npm:30.4.0" + checksum: 10c0/b4358b1b885098b905cb777f58788ddd45f90c4ebc3ce2c04fb1d4c9516f35ac2d9daef8263cd21c537bd7a52ab320f03e4ba9521677959ae20e3d405356b420 + languageName: node + linkType: hard + +"@jest/environment@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/environment@npm:30.4.1" + dependencies: + "@jest/fake-timers": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + jest-mock: "npm:30.4.1" + checksum: 10c0/704987ff8650c91a8ed13796ce47e9c55da3c12a01902d9e384330cead18eb4d34ce665a8d9962dddf2736fac006f92efc1039b8da424adf8fdc16f8d81aff6c + languageName: node + linkType: hard + "@jest/environment@npm:^29.7.0": version: 29.7.0 resolution: "@jest/environment@npm:29.7.0" @@ -4839,6 +4914,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/expect-utils@npm:30.4.1" + dependencies: + "@jest/get-type": "npm:30.1.0" + checksum: 10c0/6dea9e11ebcc7be68fea5950ae5a1b7ff9fd1490101ee8af0aede336b9934ab24a28bcafe2f1171dac0f95982406386c609ca2659b9132e1a9d419e8d69b9cd4 + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -4848,6 +4932,16 @@ __metadata: languageName: node linkType: hard +"@jest/expect@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/expect@npm:30.4.1" + dependencies: + expect: "npm:30.4.1" + jest-snapshot: "npm:30.4.1" + checksum: 10c0/2133183e735982879408036237b115abc2e57fa52bb7324be0a1f2ab6941a57da93b2e6f498dc110b7d007dd20463013fbcc5b24377cf65e6a8518d3b2ff76bd + languageName: node + linkType: hard + "@jest/expect@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect@npm:29.7.0" @@ -4858,6 +4952,20 @@ __metadata: languageName: node linkType: hard +"@jest/fake-timers@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/fake-timers@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@sinonjs/fake-timers": "npm:^15.4.0" + "@types/node": "npm:*" + jest-message-util: "npm:30.4.1" + jest-mock: "npm:30.4.1" + jest-util: "npm:30.4.1" + checksum: 10c0/4a10e4eb64bb5ea2531cdcc79f3058731f5c14faf2a74f498fcb37f6690c3c0f9b12a9856736d26e34631eb38db12e12812da71de27b9d332df44dda9f460fbe + languageName: node + linkType: hard + "@jest/fake-timers@npm:^29.7.0": version: 29.7.0 resolution: "@jest/fake-timers@npm:29.7.0" @@ -4872,6 +4980,25 @@ __metadata: languageName: node linkType: hard +"@jest/get-type@npm:30.1.0": + version: 30.1.0 + resolution: "@jest/get-type@npm:30.1.0" + checksum: 10c0/3e65fd5015f551c51ec68fca31bbd25b466be0e8ee8075d9610fa1c686ea1e70a942a0effc7b10f4ea9a338c24337e1ad97ff69d3ebacc4681b7e3e80d1b24ac + languageName: node + linkType: hard + +"@jest/globals@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/globals@npm:30.4.1" + dependencies: + "@jest/environment": "npm:30.4.1" + "@jest/expect": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + jest-mock: "npm:30.4.1" + checksum: 10c0/7961eefdc9e69ba7754d11a1bae4bc2960f33e03d9c1d6c73f27895b8cf92a9118a234330f31dc8efe16e835fe70ef9cc6c26f60121f6b6e9fac71c8b1bcd709 + languageName: node + linkType: hard + "@jest/globals@npm:^29.7.0": version: 29.7.0 resolution: "@jest/globals@npm:29.7.0" @@ -4884,6 +5011,52 @@ __metadata: languageName: node linkType: hard +"@jest/pattern@npm:30.4.0": + version: 30.4.0 + resolution: "@jest/pattern@npm:30.4.0" + dependencies: + "@types/node": "npm:*" + jest-regex-util: "npm:30.4.0" + checksum: 10c0/05bc0799f84f3750bbbff0f9a546979efd0dbcee86c1be98b9e2811a68885809ec7b5cca39b8dda1497cb7cf17b7be936019fba8dfbcd9c53b181e03e67f4f82 + languageName: node + linkType: hard + +"@jest/reporters@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/reporters@npm:30.4.1" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:30.4.1" + "@jest/test-result": "npm:30.4.1" + "@jest/transform": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@jridgewell/trace-mapping": "npm:^0.3.25" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + collect-v8-coverage: "npm:^1.0.2" + exit-x: "npm:^0.2.2" + glob: "npm:^10.5.0" + graceful-fs: "npm:^4.2.11" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^5.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:30.4.1" + jest-util: "npm:30.4.1" + jest-worker: "npm:30.4.1" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.2" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/cf5220462c6242fa564bbeb6d5988ebfd814e0351f3bddae07323b55c68c7ebd4aa4c23e717231ab4b2d63c4fc7fa4615b9dad8584be534bd44622981242dceb + languageName: node + linkType: hard + "@jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" @@ -4921,6 +5094,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/schemas@npm:30.4.1" + dependencies: + "@sinclair/typebox": "npm:^0.34.0" + checksum: 10c0/96f388ebfc1974457fcbde2ad36c40a0b549cba3f624fe8d9d6e5903a152dc75e4043f4ac9ac7668622f2ecb0f9a4dcb9a38edf3bc0d52b82045b2bb2b69b72a + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -4930,6 +5112,29 @@ __metadata: languageName: node linkType: hard +"@jest/snapshot-utils@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/snapshot-utils@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + natural-compare: "npm:^1.4.0" + checksum: 10c0/81da9079719eece02b89c45cb97162b5b7d794981652c8d8fe2846843ac81ce219ea4bc21bde7cf76c9032006435f82bd9aee8d6139d90b77078ddad4865af02 + languageName: node + linkType: hard + +"@jest/source-map@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/source-map@npm:30.0.1" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + callsites: "npm:^3.1.0" + graceful-fs: "npm:^4.2.11" + checksum: 10c0/e7bda2786fc9f483d9dd7566c58c4bd948830997be862dfe80a3ae5550ff3f84753abb52e705d02ebe9db9f34ba7ebec4c2db11882048cdeef7a66f6332b3897 + languageName: node + linkType: hard + "@jest/source-map@npm:^29.6.3": version: 29.6.3 resolution: "@jest/source-map@npm:29.6.3" @@ -4941,6 +5146,18 @@ __metadata: languageName: node linkType: hard +"@jest/test-result@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/test-result@npm:30.4.1" + dependencies: + "@jest/console": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + collect-v8-coverage: "npm:^1.0.2" + checksum: 10c0/920fa3fe3cc8b5e11bfe36066d733030f1245865d7cac4862e3783a96f9c0a087fd8073c8cb56e4c87c6fcc97b46e6f828ecd3b10dd8e208f5e1b983fcc5cdb8 + languageName: node + linkType: hard + "@jest/test-result@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-result@npm:29.7.0" @@ -4953,6 +5170,18 @@ __metadata: languageName: node linkType: hard +"@jest/test-sequencer@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/test-sequencer@npm:30.4.1" + dependencies: + "@jest/test-result": "npm:30.4.1" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/531b19ffb2358b3b22a56b306359acf66db2073978dd6df8a9522b5b4034ad7540a9cb84bdfebbcb2872686d6d2ab8cabea04ad23ef9d4488cbafd03f7511501 + languageName: node + linkType: hard + "@jest/test-sequencer@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-sequencer@npm:29.7.0" @@ -4965,6 +5194,28 @@ __metadata: languageName: node linkType: hard +"@jest/transform@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/transform@npm:30.4.1" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/types": "npm:30.4.1" + "@jridgewell/trace-mapping": "npm:^0.3.25" + babel-plugin-istanbul: "npm:^7.0.1" + chalk: "npm:^4.1.2" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.4.1" + jest-regex-util: "npm:30.4.0" + jest-util: "npm:30.4.1" + pirates: "npm:^4.0.7" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^5.0.1" + checksum: 10c0/194f463f179f6ab3ccd6f4f0f03a117e3c01a7ce098ebf562250aca4c900ed3a9ec08b694227788eabd7cb4e0597f1d0788077c7550ddc679f68a0ad21cc87e0 + languageName: node + linkType: hard + "@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" @@ -4988,6 +5239,21 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:30.4.1": + version: 30.4.1 + resolution: "@jest/types@npm:30.4.1" + dependencies: + "@jest/pattern": "npm:30.4.0" + "@jest/schemas": "npm:30.4.1" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + "@types/istanbul-reports": "npm:^3.0.4" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.33" + chalk: "npm:^4.1.2" + checksum: 10c0/4c79f6dbdb1c7eaab5da255fc696c7cae744759d4020e42da8aa63b37fe55ce594be73075fe1ee5407dd59d7e47975be9f674bfc81e91bae2c89c62d27ba55a1 + languageName: node + linkType: hard + "@jest/types@npm:^29.6.3": version: 29.6.3 resolution: "@jest/types@npm:29.6.3" @@ -5046,7 +5312,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": version: 0.3.31 resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: @@ -8369,7 +8635,14 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.52 + resolution: "@sinclair/typebox@npm:0.34.52" + checksum: 10c0/03e9be17ffb536ddd6dc35b6131c88eb113b2ce6cbec4fa60b1d5219de99e59b2649fc40ad70a85db561104395faa3406608971dc7b0abef529b80fb001dc821 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0, @sinonjs/commons@npm:^3.0.1": version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" dependencies: @@ -8387,6 +8660,15 @@ __metadata: languageName: node linkType: hard +"@sinonjs/fake-timers@npm:^15.4.0": + version: 15.4.0 + resolution: "@sinonjs/fake-timers@npm:15.4.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10c0/de4522afe0699fa8d3ae9d1715cbaa4b47e518c707bb7988a9ec6c7c67557d9f6df451f6be0338598b984a86f65aab9fab38dd9ce75a3c0ffb801a9500d5b10d + languageName: node + linkType: hard + "@solid-primitives/event-listener@npm:^2.4.3, @solid-primitives/event-listener@npm:^2.4.5": version: 2.4.5 resolution: "@solid-primitives/event-listener@npm:2.4.5" @@ -9508,7 +9790,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 @@ -9524,7 +9806,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": +"@types/istanbul-reports@npm:^3.0.0, @types/istanbul-reports@npm:^3.0.4": version: 3.0.4 resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: @@ -9799,7 +10081,7 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": +"@types/stack-utils@npm:^2.0.0, @types/stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c @@ -9900,7 +10182,7 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.8": +"@types/yargs@npm:^17.0.33, @types/yargs@npm:^17.0.8": version: 17.0.35 resolution: "@types/yargs@npm:17.0.35" dependencies: @@ -10154,6 +10436,171 @@ __metadata: languageName: node linkType: hard +"@ungap/structured-clone@npm:^1.3.0": + version: 1.3.3 + resolution: "@ungap/structured-clone@npm:1.3.3" + checksum: 10c0/b199e280ee06e9c447e0ccd38df60a65c2b2c13d3c77af50b1e6d77230aee1ea7da309d7b80c5a4850c8e22e4eee9e4b2813c6a33f8c360560d7f2e99a9f6e8f + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm-eabi@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.12.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.12.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.12.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.12.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.12.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2" + conditions: os=linux & cpu=loong64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.12.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-openharmony-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-openharmony-arm64@npm:1.12.2" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.12.2" + dependencies: + "@emnapi/core": "npm:1.10.0" + "@emnapi/runtime": "npm:1.10.0" + "@napi-rs/wasm-runtime": "npm:^1.1.4" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@vitejs/plugin-react@npm:^5.2.0": version: 5.2.0 resolution: "@vitejs/plugin-react@npm:5.2.0" @@ -11115,7 +11562,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": +"ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df @@ -11483,6 +11930,23 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:30.4.1": + version: 30.4.1 + resolution: "babel-jest@npm:30.4.1" + dependencies: + "@jest/transform": "npm:30.4.1" + "@types/babel__core": "npm:^7.20.5" + babel-plugin-istanbul: "npm:^7.0.1" + babel-preset-jest: "npm:30.4.0" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-0 + checksum: 10c0/339b449011f31dc9eb18d9c49f0bb84e8de284e1107e64159a2f4a432bbd532d6a729774a56b7fbe76f5ddd716a0b4b7ad737265feab23b4d0225489b79a6f72 + languageName: node + linkType: hard + "babel-jest@npm:^29.7.0": version: 29.7.0 resolution: "babel-jest@npm:29.7.0" @@ -11522,7 +11986,29 @@ __metadata: "@istanbuljs/schema": "npm:^0.1.2" istanbul-lib-instrument: "npm:^5.0.4" test-exclude: "npm:^6.0.0" - checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^7.0.1": + version: 7.0.1 + resolution: "babel-plugin-istanbul@npm:7.0.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-instrument: "npm:^6.0.2" + test-exclude: "npm:^6.0.0" + checksum: 10c0/92975e3df12503b168695463b451468da0c20e117807221652eb8e33a26c160f3b9d4c5c4e65495657420e871c6a54e5e31f539e2e1da37ef2261d7ddd4b1dfd + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:30.4.0": + version: 30.4.0 + resolution: "babel-plugin-jest-hoist@npm:30.4.0" + dependencies: + "@types/babel__core": "npm:^7.20.5" + checksum: 10c0/1738ed536bb5ff536b4d406b8db7dbbd76cf10f80bb20d902e6efdda79898f045b9a991124d7104d8c398d0bd995d511d57694952645fba0f6250595a45277b0 languageName: node linkType: hard @@ -11606,7 +12092,7 @@ __metadata: languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0": +"babel-preset-current-node-syntax@npm:^1.0.0, babel-preset-current-node-syntax@npm:^1.2.0": version: 1.2.0 resolution: "babel-preset-current-node-syntax@npm:1.2.0" dependencies: @@ -11631,6 +12117,18 @@ __metadata: languageName: node linkType: hard +"babel-preset-jest@npm:30.4.0": + version: 30.4.0 + resolution: "babel-preset-jest@npm:30.4.0" + dependencies: + babel-plugin-jest-hoist: "npm:30.4.0" + babel-preset-current-node-syntax: "npm:^1.2.0" + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-beta.1 + checksum: 10c0/ca2623aa4d8bf82b1fd01e5724a87cea7f80ff089341cf12415e9ce4b10f74838ecc6c8a48921f421f90bcd44f7929c0ad300146082e2f400253adb97ab5eb3a + languageName: node + linkType: hard + "babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" @@ -12199,7 +12697,7 @@ __metadata: languageName: node linkType: hard -"callsites@npm:^3.0.0": +"callsites@npm:^3.0.0, callsites@npm:^3.1.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 @@ -12232,7 +12730,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0": +"camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 @@ -12477,7 +12975,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.0.0, ci-info@npm:^4.4.0": +"ci-info@npm:^4.0.0, ci-info@npm:^4.2.0, ci-info@npm:^4.4.0": version: 4.4.0 resolution: "ci-info@npm:4.4.0" checksum: 10c0/44156201545b8dde01aa8a09ee2fe9fc7a73b1bef9adbd4606c9f61c8caeeb73fb7a575c88b0443f7b4edb5ee45debaa59ed54ba5f99698339393ca01349eb3a @@ -12498,6 +12996,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^2.1.0": + version: 2.2.0 + resolution: "cjs-module-lexer@npm:2.2.0" + checksum: 10c0/aec4ca58f87145fac221386790ecaae8b012f2e2359a45acb61d8c75ea4fa84f6ea869f17abc1a7e91a808eff0fed581209632f03540de16f72f0a28f5fd35ac + languageName: node + linkType: hard + "clean-stack@npm:^3.0.0, clean-stack@npm:^3.0.1": version: 3.0.1 resolution: "clean-stack@npm:3.0.1" @@ -12684,7 +13189,7 @@ __metadata: languageName: node linkType: hard -"collect-v8-coverage@npm:^1.0.0": +"collect-v8-coverage@npm:^1.0.0, collect-v8-coverage@npm:^1.0.2": version: 1.0.3 resolution: "collect-v8-coverage@npm:1.0.3" checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc @@ -13478,7 +13983,7 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": +"dedent@npm:^1.0.0, dedent@npm:^1.6.0": version: 1.7.2 resolution: "dedent@npm:1.7.2" peerDependencies: @@ -13518,7 +14023,7 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0": +"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 @@ -13655,7 +14160,7 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": +"detect-newline@npm:^3.0.0, detect-newline@npm:^3.1.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d @@ -14824,7 +15329,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0": +"execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -14841,6 +15346,13 @@ __metadata: languageName: node linkType: hard +"exit-x@npm:^0.2.2": + version: 0.2.2 + resolution: "exit-x@npm:0.2.2" + checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -14862,6 +15374,20 @@ __metadata: languageName: node linkType: hard +"expect@npm:30.4.1": + version: 30.4.1 + resolution: "expect@npm:30.4.1" + dependencies: + "@jest/expect-utils": "npm:30.4.1" + "@jest/get-type": "npm:30.1.0" + jest-matcher-utils: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-mock: "npm:30.4.1" + jest-util: "npm:30.4.1" + checksum: 10c0/ad04fbdffac5a2bae186478938a60f737e3aac823db9a80c87f3f390f9f458bddcc454dc3a3997d715706747c6aff928923e6a71db3a221adb89a51cc1582e72 + languageName: node + linkType: hard + "expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -15090,7 +15616,7 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": +"fb-watchman@npm:^2.0.0, fb-watchman@npm:^2.0.2": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" dependencies: @@ -15450,7 +15976,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:^2.3.2, fsevents@npm:^2.3.3, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -15469,7 +15995,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -16472,7 +16998,7 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": +"is-generator-fn@npm:^2.0.0, is-generator-fn@npm:^2.1.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d @@ -16740,7 +17266,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.0": +"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": version: 6.0.3 resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: @@ -16775,6 +17301,17 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-source-maps@npm:^5.0.0": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f + languageName: node + linkType: hard + "istanbul-reports@npm:^3.1.3, istanbul-reports@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-reports@npm:3.2.0" @@ -16811,6 +17348,17 @@ __metadata: languageName: node linkType: hard +"jest-changed-files@npm:30.4.1": + version: 30.4.1 + resolution: "jest-changed-files@npm:30.4.1" + dependencies: + execa: "npm:^5.1.1" + jest-util: "npm:30.4.1" + p-limit: "npm:^3.1.0" + checksum: 10c0/324bbec3920a7d9ceb1d11872b9f1befe73d152a7ef289243f663bf3b22afe124c2c656ec316e44393f30a83b74a1738b56307a066906fa49b800686fd4d0f04 + languageName: node + linkType: hard + "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -16822,6 +17370,34 @@ __metadata: languageName: node linkType: hard +"jest-circus@npm:30.4.2": + version: 30.4.2 + resolution: "jest-circus@npm:30.4.2" + dependencies: + "@jest/environment": "npm:30.4.1" + "@jest/expect": "npm:30.4.1" + "@jest/test-result": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + co: "npm:^4.6.0" + dedent: "npm:^1.6.0" + is-generator-fn: "npm:^2.1.0" + jest-each: "npm:30.4.1" + jest-matcher-utils: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-runtime: "npm:30.4.2" + jest-snapshot: "npm:30.4.1" + jest-util: "npm:30.4.1" + p-limit: "npm:^3.1.0" + pretty-format: "npm:30.4.1" + pure-rand: "npm:^7.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/5d99f1336eb249057063a007fabad4ced802501fbaad7ddeea8db9553fa54fbd44d26e71e8bf61a0979d42b3b93a3d920e6f00afa26cdbb70d1e7d0969515d10 + languageName: node + linkType: hard + "jest-circus@npm:^29.7.0": version: 29.7.0 resolution: "jest-circus@npm:29.7.0" @@ -16876,6 +17452,48 @@ __metadata: languageName: node linkType: hard +"jest-config@npm:30.4.2": + version: 30.4.2 + resolution: "jest-config@npm:30.4.2" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/get-type": "npm:30.1.0" + "@jest/pattern": "npm:30.4.0" + "@jest/test-sequencer": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + babel-jest: "npm:30.4.1" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + deepmerge: "npm:^4.3.1" + glob: "npm:^10.5.0" + graceful-fs: "npm:^4.2.11" + jest-circus: "npm:30.4.2" + jest-docblock: "npm:30.4.0" + jest-environment-node: "npm:30.4.1" + jest-regex-util: "npm:30.4.0" + jest-resolve: "npm:30.4.1" + jest-runner: "npm:30.4.2" + jest-util: "npm:30.4.1" + jest-validate: "npm:30.4.1" + parse-json: "npm:^5.2.0" + pretty-format: "npm:30.4.1" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + esbuild-register: ">=3.4.0" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + checksum: 10c0/18300b1dc54a4bfb5d1db6c10aeb01b6c64736224e3f60d119da9504d49cbab5a76d789f38c44af7d168418463356db6843ad7e44f249c63ce7f409758eba0c6 + languageName: node + linkType: hard + "jest-config@npm:^29.7.0": version: 29.7.0 resolution: "jest-config@npm:29.7.0" @@ -16914,6 +17532,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:30.4.1": + version: 30.4.1 + resolution: "jest-diff@npm:30.4.1" + dependencies: + "@jest/diff-sequences": "npm:30.4.0" + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + pretty-format: "npm:30.4.1" + checksum: 10c0/787e11f0ea27e94815479d6c5415e4173da1e74bede34c1515b8515fc9d1fe053e2ad25a3c31f9998a7292c186a0e4d395ed82e0e149d57d7708ee6759b442e9 + languageName: node + linkType: hard + "jest-diff@npm:^27.5.1": version: 27.5.1 resolution: "jest-diff@npm:27.5.1" @@ -16938,6 +17568,15 @@ __metadata: languageName: node linkType: hard +"jest-docblock@npm:30.4.0": + version: 30.4.0 + resolution: "jest-docblock@npm:30.4.0" + dependencies: + detect-newline: "npm:^3.1.0" + checksum: 10c0/1fe1c971207e1b905e4f23d98e508a03ae631337e9ffa347ff2f6df81a1d75ced7ed3e52a809fad75fb8a8cd55b6bda4483bc124e5e1d7529eeb4ef76b29e913 + languageName: node + linkType: hard + "jest-docblock@npm:^29.7.0": version: 29.7.0 resolution: "jest-docblock@npm:29.7.0" @@ -16947,6 +17586,19 @@ __metadata: languageName: node linkType: hard +"jest-each@npm:30.4.1": + version: 30.4.1 + resolution: "jest-each@npm:30.4.1" + dependencies: + "@jest/get-type": "npm:30.1.0" + "@jest/types": "npm:30.4.1" + chalk: "npm:^4.1.2" + jest-util: "npm:30.4.1" + pretty-format: "npm:30.4.1" + checksum: 10c0/41bc1cec23901cb0c7d8f547a70574fffca8cc16a1660ed97645bf3b61f4e6151aaa58bb14ce55a3cd9f5a63a2cc782a39366caf3304a2159d1e3cc5ae79a9e4 + languageName: node + linkType: hard + "jest-each@npm:^29.7.0": version: 29.7.0 resolution: "jest-each@npm:29.7.0" @@ -16960,6 +17612,21 @@ __metadata: languageName: node linkType: hard +"jest-environment-node@npm:30.4.1": + version: 30.4.1 + resolution: "jest-environment-node@npm:30.4.1" + dependencies: + "@jest/environment": "npm:30.4.1" + "@jest/fake-timers": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + jest-mock: "npm:30.4.1" + jest-util: "npm:30.4.1" + jest-validate: "npm:30.4.1" + checksum: 10c0/d8d6bb22bfd280f077b5856558d9d7112c48fd3bae6eda9b76694f1c8e1be783a725686a137437d180c9d49e6b37386c8e342e0b8e5bfcb6526dee9c10cc31ec + languageName: node + linkType: hard + "jest-environment-node@npm:^29.7.0": version: 29.7.0 resolution: "jest-environment-node@npm:29.7.0" @@ -16988,6 +17655,28 @@ __metadata: languageName: node linkType: hard +"jest-haste-map@npm:30.4.1": + version: 30.4.1 + resolution: "jest-haste-map@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + anymatch: "npm:^3.1.3" + fb-watchman: "npm:^2.0.2" + fsevents: "npm:^2.3.3" + graceful-fs: "npm:^4.2.11" + jest-regex-util: "npm:30.4.0" + jest-util: "npm:30.4.1" + jest-worker: "npm:30.4.1" + picomatch: "npm:^4.0.3" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/1350c24952bbf31c86cb1ed4e2e5edd4766a93e2be8816c4648c05463d06cfae89f3c73732f9274fdb626fdfdfe6605ed6f259b6c21257df536a6379d4b9a5e7 + languageName: node + linkType: hard + "jest-haste-map@npm:^29.7.0": version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" @@ -17023,6 +17712,16 @@ __metadata: languageName: node linkType: hard +"jest-leak-detector@npm:30.4.1": + version: 30.4.1 + resolution: "jest-leak-detector@npm:30.4.1" + dependencies: + "@jest/get-type": "npm:30.1.0" + pretty-format: "npm:30.4.1" + checksum: 10c0/57256ac08f12186e3ed1687126b8d75a12de9c4ffa959ff41322e9ba5f93e3ed8af91dc36bc4d59f77cef6d4008bcf5a3e646cdd950743898576aec8dbae6778 + languageName: node + linkType: hard + "jest-leak-detector@npm:^29.7.0": version: 29.7.0 resolution: "jest-leak-detector@npm:29.7.0" @@ -17033,6 +17732,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:30.4.1": + version: 30.4.1 + resolution: "jest-matcher-utils@npm:30.4.1" + dependencies: + "@jest/get-type": "npm:30.1.0" + chalk: "npm:^4.1.2" + jest-diff: "npm:30.4.1" + pretty-format: "npm:30.4.1" + checksum: 10c0/ddbb0c7075def27ba30160883c327cb3fd13f561f5789d00a1edca1b48b0651f8ea23a1c51bcfcb6413a68c47d658bcf47a34701b8a39ce135dd28d87a3117af + languageName: node + linkType: hard + "jest-matcher-utils@npm:^27.3.1": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" @@ -17057,6 +17768,24 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:30.4.1": + version: 30.4.1 + resolution: "jest-message-util@npm:30.4.1" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@jest/types": "npm:30.4.1" + "@types/stack-utils": "npm:^2.0.3" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + jest-util: "npm:30.4.1" + picomatch: "npm:^4.0.3" + pretty-format: "npm:30.4.1" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/ae7427544e042bc1c14abf3c0dbe8b83d0dbec22a9a5efefaca5b8ccb6b9bf391abe732e6f2117ca995c6889bfe1be35c78cec75e5ea0a50e28cffe1ba6f9fdf + languageName: node + linkType: hard + "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -17074,6 +17803,17 @@ __metadata: languageName: node linkType: hard +"jest-mock@npm:30.4.1": + version: 30.4.1 + resolution: "jest-mock@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + jest-util: "npm:30.4.1" + checksum: 10c0/5185a41255285c1634c5d85dda037afaaadfc12793b3293c9e253a30bb67449f8df968447f830abb9cf7a52e63694e6734680130e8085ce119056280890bf6fc + languageName: node + linkType: hard + "jest-mock@npm:^29.7.0": version: 29.7.0 resolution: "jest-mock@npm:29.7.0" @@ -17085,7 +17825,7 @@ __metadata: languageName: node linkType: hard -"jest-pnp-resolver@npm:^1.2.2": +"jest-pnp-resolver@npm:^1.2.2, jest-pnp-resolver@npm:^1.2.3": version: 1.2.3 resolution: "jest-pnp-resolver@npm:1.2.3" peerDependencies: @@ -17097,6 +17837,13 @@ __metadata: languageName: node linkType: hard +"jest-regex-util@npm:30.4.0": + version: 30.4.0 + resolution: "jest-regex-util@npm:30.4.0" + checksum: 10c0/fe7426f67b54d38bed8e9d6e6a099d63d72f41f5bf65b922d9d03fedcb55c614b45657207632f6ee22d0a59d8d11327891f258d23f68a58912fcdb0f7db48435 + languageName: node + linkType: hard + "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -17104,6 +17851,16 @@ __metadata: languageName: node linkType: hard +"jest-resolve-dependencies@npm:30.4.2": + version: 30.4.2 + resolution: "jest-resolve-dependencies@npm:30.4.2" + dependencies: + jest-regex-util: "npm:30.4.0" + jest-snapshot: "npm:30.4.1" + checksum: 10c0/4101afabd2a4ef4e6c82bf82ea145286c1238373f7611938e8d47ddcf5aaa6e10af365436a934b7af194451e351774829cb021ac73f857b4873dcccc7aabb616 + languageName: node + linkType: hard + "jest-resolve-dependencies@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve-dependencies@npm:29.7.0" @@ -17114,6 +17871,22 @@ __metadata: languageName: node linkType: hard +"jest-resolve@npm:30.4.1": + version: 30.4.1 + resolution: "jest-resolve@npm:30.4.1" + dependencies: + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.4.1" + jest-pnp-resolver: "npm:^1.2.3" + jest-util: "npm:30.4.1" + jest-validate: "npm:30.4.1" + slash: "npm:^3.0.0" + unrs-resolver: "npm:^1.7.11" + checksum: 10c0/0a99ef4f4fd7b3678d58a5e1cf8f0b5ec1997cdba21f5d66a8b26353d57a226f8e6a5fffc450c8836e90ab0e20d5e7935d0dea939d9a9b6a08781b9a7413184c + languageName: node + linkType: hard + "jest-resolve@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" @@ -17131,6 +17904,36 @@ __metadata: languageName: node linkType: hard +"jest-runner@npm:30.4.2": + version: 30.4.2 + resolution: "jest-runner@npm:30.4.2" + dependencies: + "@jest/console": "npm:30.4.1" + "@jest/environment": "npm:30.4.1" + "@jest/test-result": "npm:30.4.1" + "@jest/transform": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-docblock: "npm:30.4.0" + jest-environment-node: "npm:30.4.1" + jest-haste-map: "npm:30.4.1" + jest-leak-detector: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-resolve: "npm:30.4.1" + jest-runtime: "npm:30.4.2" + jest-util: "npm:30.4.1" + jest-watcher: "npm:30.4.1" + jest-worker: "npm:30.4.1" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/339e630fb1a7db52e208ed9f12f722122733fe9a450d9bd83c0fccc10fbc5142a8808f624c41ab1e25833af02f9c3eca85561554b75a5b3ad75b4a226f72c5cf + languageName: node + linkType: hard + "jest-runner@npm:^29.7.0": version: 29.7.0 resolution: "jest-runner@npm:29.7.0" @@ -17160,6 +17963,36 @@ __metadata: languageName: node linkType: hard +"jest-runtime@npm:30.4.2": + version: 30.4.2 + resolution: "jest-runtime@npm:30.4.2" + dependencies: + "@jest/environment": "npm:30.4.1" + "@jest/fake-timers": "npm:30.4.1" + "@jest/globals": "npm:30.4.1" + "@jest/source-map": "npm:30.0.1" + "@jest/test-result": "npm:30.4.1" + "@jest/transform": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + cjs-module-lexer: "npm:^2.1.0" + collect-v8-coverage: "npm:^1.0.2" + glob: "npm:^10.5.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-mock: "npm:30.4.1" + jest-regex-util: "npm:30.4.0" + jest-resolve: "npm:30.4.1" + jest-snapshot: "npm:30.4.1" + jest-util: "npm:30.4.1" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/9fce55b0c78fbe47dc2c10a944e9513833fd43c14f292460ef5cdd91e375088bf35549336e66f69fc9d29bf4f410894e9a7eef0bf12a6f39d99174a5300c2c53 + languageName: node + linkType: hard + "jest-runtime@npm:^29.7.0": version: 29.7.0 resolution: "jest-runtime@npm:29.7.0" @@ -17190,6 +18023,35 @@ __metadata: languageName: node linkType: hard +"jest-snapshot@npm:30.4.1": + version: 30.4.1 + resolution: "jest-snapshot@npm:30.4.1" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/generator": "npm:^7.27.5" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/types": "npm:^7.27.3" + "@jest/expect-utils": "npm:30.4.1" + "@jest/get-type": "npm:30.1.0" + "@jest/snapshot-utils": "npm:30.4.1" + "@jest/transform": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + babel-preset-current-node-syntax: "npm:^1.2.0" + chalk: "npm:^4.1.2" + expect: "npm:30.4.1" + graceful-fs: "npm:^4.2.11" + jest-diff: "npm:30.4.1" + jest-matcher-utils: "npm:30.4.1" + jest-message-util: "npm:30.4.1" + jest-util: "npm:30.4.1" + pretty-format: "npm:30.4.1" + semver: "npm:^7.7.2" + synckit: "npm:^0.11.8" + checksum: 10c0/cebd70277b6f0d2606f22815480146cf1e37295ed69a1d16e260a99a2ab48db167857e2fb9a938923d22ac13203c83a5e31d7f066b58d87c6d42db58c914ff13 + languageName: node + linkType: hard + "jest-snapshot@npm:^29.7.0": version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" @@ -17218,6 +18080,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:30.4.1": + version: 30.4.1 + resolution: "jest-util@npm:30.4.1" + dependencies: + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + graceful-fs: "npm:^4.2.11" + picomatch: "npm:^4.0.3" + checksum: 10c0/3efe1f25e5a172d04c6af8612d82867ab603b7c1bd8cb89073ff834679b44eba178793cf3af162cf5e25be13aa736ebd23a7826683acc85bddc5873f305b1f6e + languageName: node + linkType: hard + "jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" @@ -17232,6 +18108,20 @@ __metadata: languageName: node linkType: hard +"jest-validate@npm:30.4.1": + version: 30.4.1 + resolution: "jest-validate@npm:30.4.1" + dependencies: + "@jest/get-type": "npm:30.1.0" + "@jest/types": "npm:30.4.1" + camelcase: "npm:^6.3.0" + chalk: "npm:^4.1.2" + leven: "npm:^3.1.0" + pretty-format: "npm:30.4.1" + checksum: 10c0/23e6677ee6d06476f368c8b6d442b4207e5fbe062e74c1da3eae9ed30a18605f4e8a14809fa9cc7f22a2d8446e8de91a512f59c278720db2ad61c77dc25ffefc + languageName: node + linkType: hard + "jest-validate@npm:^29.7.0": version: 29.7.0 resolution: "jest-validate@npm:29.7.0" @@ -17246,6 +18136,22 @@ __metadata: languageName: node linkType: hard +"jest-watcher@npm:30.4.1": + version: 30.4.1 + resolution: "jest-watcher@npm:30.4.1" + dependencies: + "@jest/test-result": "npm:30.4.1" + "@jest/types": "npm:30.4.1" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + jest-util: "npm:30.4.1" + string-length: "npm:^4.0.2" + checksum: 10c0/a56e1714b7b0f9c620c5cee95a84a48b780093594cd188e365a24768f208714895a0deb784ee48e4eec7f1828bc00435ab3c39208d490c33be3786937e997c97 + languageName: node + linkType: hard + "jest-watcher@npm:^29.7.0": version: 29.7.0 resolution: "jest-watcher@npm:29.7.0" @@ -17262,6 +18168,19 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:30.4.1": + version: 30.4.1 + resolution: "jest-worker@npm:30.4.1" + dependencies: + "@types/node": "npm:*" + "@ungap/structured-clone": "npm:^1.3.0" + jest-util: "npm:30.4.1" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.1.1" + checksum: 10c0/3eb7ec7e928b82491e66ae6709e3a1eef3edad2bc351514a5d52037b997151989de6ce2912d6a5a3806ae3ae3bf6a1c36b1ad7bbc567d0790503fdb74576f140 + languageName: node + linkType: hard + "jest-worker@npm:^29.7.0": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" @@ -19050,6 +19969,15 @@ __metadata: languageName: node linkType: hard +"napi-postinstall@npm:^0.3.4": + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" + bin: + napi-postinstall: lib/cli.js + checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -21200,6 +22128,18 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:30.4.1": + version: 30.4.1 + resolution: "pretty-format@npm:30.4.1" + dependencies: + "@jest/schemas": "npm:30.4.1" + ansi-styles: "npm:^5.2.0" + react-is-18: "npm:react-is@^18.3.1" + react-is-19: "npm:react-is@^19.2.5" + checksum: 10c0/c7e6633740cd2f6d382f188c00c8b4b3f2bee3cda16db6753471c6bb4b94f76531358d3a7793062a0fb00d72ebfb934e8ae1d4f5ced6bb34c8e7f60996f90076 + languageName: node + linkType: hard + "pretty-format@npm:^27.5.1": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" @@ -21447,6 +22387,13 @@ __metadata: languageName: node linkType: hard +"pure-rand@npm:^7.0.0": + version: 7.0.1 + resolution: "pure-rand@npm:7.0.1" + checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e + languageName: node + linkType: hard + "qrcode-terminal@npm:^0.12.0": version: 0.12.0 resolution: "qrcode-terminal@npm:0.12.0" @@ -21601,6 +22548,20 @@ __metadata: languageName: node linkType: hard +"react-is-18@npm:react-is@^18.3.1, react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"react-is-19@npm:react-is@^19.2.5, react-is@npm:^19.2.6": + version: 19.2.7 + resolution: "react-is@npm:19.2.7" + checksum: 10c0/419fe54d5bd7fdf5414a5bb7bd9a1e0e36f9fae28ffb4cb73290fbe342bde15d8584a90d1db62547f6aa03018dce517b178a041abb522136cd4b4b51b4e94c83 + languageName: node + linkType: hard + "react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" @@ -21615,13 +22576,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - "react-is@npm:^19.2.3": version: 19.2.4 resolution: "react-is@npm:19.2.4" @@ -21636,13 +22590,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^19.2.6": - version: 19.2.7 - resolution: "react-is@npm:19.2.7" - checksum: 10c0/419fe54d5bd7fdf5414a5bb7bd9a1e0e36f9fae28ffb4cb73290fbe342bde15d8584a90d1db62547f6aa03018dce517b178a041abb522136cd4b4b51b4e94c83 - languageName: node - linkType: hard - "react-refresh@npm:^0.18.0": version: 0.18.0 resolution: "react-refresh@npm:0.18.0" @@ -23105,7 +24052,7 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": +"stack-utils@npm:^2.0.3, stack-utils@npm:^2.0.6": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: @@ -23196,7 +24143,7 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.1": +"string-length@npm:^4.0.1, string-length@npm:^4.0.2": version: 4.0.2 resolution: "string-length@npm:4.0.2" dependencies: @@ -23523,7 +24470,7 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.11.13": +"synckit@npm:^0.11.13, synckit@npm:^0.11.8": version: 0.11.13 resolution: "synckit@npm:0.11.13" dependencies: @@ -24513,6 +25460,82 @@ __metadata: languageName: node linkType: hard +"unrs-resolver@npm:^1.7.11": + version: 1.12.2 + resolution: "unrs-resolver@npm:1.12.2" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.12.2" + "@unrs/resolver-binding-android-arm64": "npm:1.12.2" + "@unrs/resolver-binding-darwin-arm64": "npm:1.12.2" + "@unrs/resolver-binding-darwin-x64": "npm:1.12.2" + "@unrs/resolver-binding-freebsd-x64": "npm:1.12.2" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.12.2" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.12.2" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.12.2" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.12.2" + "@unrs/resolver-binding-linux-loong64-gnu": "npm:1.12.2" + "@unrs/resolver-binding-linux-loong64-musl": "npm:1.12.2" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.12.2" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.12.2" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.12.2" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.12.2" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.12.2" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.12.2" + "@unrs/resolver-binding-openharmony-arm64": "npm:1.12.2" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.12.2" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.12.2" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.12.2" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.12.2" + napi-postinstall: "npm:^0.3.4" + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-loong64-gnu": + optional: true + "@unrs/resolver-binding-linux-loong64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-openharmony-arm64": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/ddc27f6d920eabdafeac0077ebff9fd799c895cea025751dc17b360bf9be7c93c471fafebf65f205eec476f90d7daa36aef889d47362b2dd4705d68852bcfea4 + languageName: node + linkType: hard + "unstorage@npm:^1.9.0": version: 1.17.5 resolution: "unstorage@npm:1.17.5" @@ -25296,6 +26319,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^4.0.1" + checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d + languageName: node + linkType: hard + "write-file-atomic@npm:^7.0.0": version: 7.0.1 resolution: "write-file-atomic@npm:7.0.1" From ff20dd3a6c6e873c885445688a45c079819cd52c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 17 Jul 2026 18:20:27 +0200 Subject: [PATCH 22/28] test(example-test-token-v1-registry): create tests for allocation & allocation instruction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/package.json | 4 +- .../src/__test__/mocks.ts | 37 + .../allocationInstruction.test.ts | 98 ++ .../getAllocationFactory.ts | 18 +- .../src/api/allocation/allocation.test.ts | 19 +- yarn.lock | 1161 +---------------- 6 files changed, 228 insertions(+), 1109 deletions(-) create mode 100644 examples/test-token-v1-registry/src/__test__/mocks.ts create mode 100644 examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts diff --git a/examples/test-token-v1-registry/package.json b/examples/test-token-v1-registry/package.json index e3bfcca7b..5f2bd590f 100644 --- a/examples/test-token-v1-registry/package.json +++ b/examples/test-token-v1-registry/package.json @@ -22,8 +22,8 @@ "dev": "yarn generate:types && NODE_ENV=development tsx --watch src/index.ts", "clean": "tsc -b --clean; rm -rf dist", "flatpack": "yarn pack --out \"$FLATPACK_OUTDIR\"", - "test": "vitest run --project node --project browser", - "test:coverage": "vitest run --project node --project browser --coverage" + "test": "yarn generate:types && vitest run --project node --project browser", + "test:coverage": "yarn generate:types && vitest run --project node --project browser --coverage" }, "devDependencies": { "@types/koa": "^3", diff --git a/examples/test-token-v1-registry/src/__test__/mocks.ts b/examples/test-token-v1-registry/src/__test__/mocks.ts new file mode 100644 index 000000000..570181810 --- /dev/null +++ b/examples/test-token-v1-registry/src/__test__/mocks.ts @@ -0,0 +1,37 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { vi } from 'vitest' + +const execute = vi.fn().mockResolvedValue({ + completionOffset: 100, +}) +const sign = vi.fn().mockReturnValue({ execute }) +const prepare = vi.fn().mockReturnValue({ sign }) + +const sdk = { + ledger: { + acsReader: { + readJsContracts: vi.fn(), + }, + prepare, + }, + keys: { + generate: vi.fn().mockReturnValue({ + publicKey: 'test-public-key', + privateKey: 'test-private-key', + }), + }, + testToken: { + create: { + rules: vi.fn(), + }, + }, +} + +export const mock = { + sdk, + prepare, + sign, + execute, +} diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts new file mode 100644 index 000000000..fd3330130 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts @@ -0,0 +1,98 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, vi, it, expect, beforeEach } from 'vitest' +import { Operations } from '../../openapi-ts/allocation-instruction-v1' +import { mock } from '../../__test__/mocks' +import { emptyChoiceContext } from '../common' + +vi.mock('../../common/sdk', () => { + return { + default: mock.sdk, + } +}) + +const { getAllocationFactory } = await import('./getAllocationFactory') + +const correctChoiceArguments = { + request: { + body: { + choiceArguments: { + sender: 's', + receiver: 'r', + }, + }, + }, +} as Operations['getAllocationFactory']['context'] + +const incorrectChoiceArguments = { + request: { + body: { + choiceArguments: {}, + }, + }, +} as Operations['getAllocationFactory']['context'] + +describe('Allocation Instruction', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it('should fail if provided request body is invalid', async () => { + const result = await getAllocationFactory(incorrectChoiceArguments) + + expect(result.status).toBe(400) + }) + + it('should successfully return factory contract from acs reader', async () => { + mock.sdk.ledger.acsReader.readJsContracts.mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const result = await getAllocationFactory(correctChoiceArguments) + + expect(mock.sdk.ledger.acsReader.readJsContracts).toHaveBeenCalledOnce() + expect(result).toStrictEqual({ + payload: { + factoryId: 'cid', + choiceContext: emptyChoiceContext, + }, + }) + }) + + it('should return error in case contract creation fails', async () => { + mock.sdk.ledger.acsReader.readJsContracts.mockResolvedValue([]) + + const result = await getAllocationFactory(correctChoiceArguments) + + expect(mock.sdk.ledger.acsReader.readJsContracts).toHaveBeenCalledTimes( + 2 + ) + expect(mock.prepare).toHaveBeenCalledOnce() + expect(mock.sign).toHaveBeenCalledOnce() + expect(mock.execute).toHaveBeenCalledOnce() + + expect(result.status).toBe(500) + }) + + it('should successfully create factory contract', async () => { + mock.sdk.ledger.acsReader.readJsContracts + .mockResolvedValueOnce([]) + .mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const result = await getAllocationFactory(correctChoiceArguments) + + expect(result).toStrictEqual({ + payload: { + factoryId: 'cid', + choiceContext: emptyChoiceContext, + }, + }) + }) +}) diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts index 7811c92b5..efca1e649 100644 --- a/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts @@ -60,20 +60,20 @@ export const getAllocationFactory: AllocationInstructionAPIHandler< partyId: admin.party, }) - const factoryContracts = await sdk.ledger.acsReader.readJsContracts({ - filterByParty: true, - parties: [admin.party], - offset: executionResult.completionOffset, - templateIds: [TestTokenV1.TokenRules.templateId], - }) - - const factoryContract = factoryContracts[0] + const factoryContract = ( + await sdk.ledger.acsReader.readJsContracts({ + filterByParty: true, + parties: [admin.party], + offset: executionResult.completionOffset, + templateIds: [TestTokenV1.TokenRules.templateId], + }) + )[0] if (!factoryContract) { return { status: 500, payload: { - error: `Error instantiating transfer factory (completionOffset=${executionResult.completionOffset}, contractsAtOffset=${factoryContracts.length}`, + error: `Error instantiating transfer factory (completionOffset=${executionResult.completionOffset}`, }, } } diff --git a/examples/test-token-v1-registry/src/api/allocation/allocation.test.ts b/examples/test-token-v1-registry/src/api/allocation/allocation.test.ts index 75f0cd9d3..0e6710477 100644 --- a/examples/test-token-v1-registry/src/api/allocation/allocation.test.ts +++ b/examples/test-token-v1-registry/src/api/allocation/allocation.test.ts @@ -3,9 +3,14 @@ import { describe, expect, it } from 'vitest' import { getAllocationTransferContext } from './getAllocationTransferContext' +import { getAllocationCancelContext } from './getAllocationCancelContext' +import { getAllocationWithdrawContext } from './getAllocationWithdrawContext' import { Operations } from '../../openapi-ts/allocation-v1' -const ctx = {} as Operations['getAllocationTransferContext']['context'] +const ctx = {} as Operations[ + | 'getAllocationTransferContext' + | 'getAllocationCancelContext' + | 'getAllocationWithdrawContext']['context'] describe('Allocation', () => { it('should return correct allocation transfer context', async () => { @@ -13,4 +18,16 @@ describe('Allocation', () => { expect(result).toBeDefined() }) + + it('should return correct allocation cancel context', async () => { + const result = await getAllocationCancelContext(ctx) + + expect(result).toBeDefined() + }) + + it('should return correct allocation withdraw context', async () => { + const result = await getAllocationWithdrawContext(ctx) + + expect(result).toBeDefined() + }) }) diff --git a/yarn.lock b/yarn.lock index 52b36515b..fd43606c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -102,7 +102,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.29.7": +"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.29.7": version: 7.29.7 resolution: "@babel/code-frame@npm:7.29.7" dependencies: @@ -127,7 +127,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": version: 7.29.7 resolution: "@babel/core@npm:7.29.7" dependencies: @@ -173,29 +173,29 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": - version: 7.29.7 - resolution: "@babel/generator@npm:7.29.7" +"@babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.29.0": + version: 7.29.1 + resolution: "@babel/generator@npm:7.29.1" dependencies: - "@babel/parser": "npm:^7.29.7" - "@babel/types": "npm:^7.29.7" + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 + checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 languageName: node linkType: hard -"@babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.29.0": - version: 7.29.1 - resolution: "@babel/generator@npm:7.29.1" +"@babel/generator@npm:^7.29.7, @babel/generator@npm:^7.7.2": + version: 7.29.7 + resolution: "@babel/generator@npm:7.29.7" dependencies: - "@babel/parser": "npm:^7.29.0" - "@babel/types": "npm:^7.29.0" + "@babel/parser": "npm:^7.29.7" + "@babel/types": "npm:^7.29.7" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/349086e6876258ef3fb2823030fee0f6c0eb9c3ebe35fc572e16997f8c030d765f636ddc6299edae63e760ea6658f8ee9a2edfa6d6b24c9a80c917916b973551 + checksum: 10c0/9bf72b01b5bd0ea5b1288a0e37dbd360bff2f2b1ce73342c0d40fb3db2ec3dc004ada5ffa925c5e12939a416eed59e600d562b8ecd938ce0d27dfd0eb6c6c2b7 languageName: node linkType: hard @@ -804,25 +804,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.29.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.29.7" +"@babel/plugin-syntax-typescript@npm:^7.28.6, @babel/plugin-syntax-typescript@npm:^7.3.3": + version: 7.28.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.29.7" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c49883b0327e8683b770dc823205af5c697da216e590dcf5bf53f3f031e7e381de450b164f8f99853f0837a3de5cb793298e2be6697a0f6e452bb9dd34b5165e + checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.28.6, @babel/plugin-syntax-typescript@npm:^7.3.3": - version: 7.28.6 - resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" +"@babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.29.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.29.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.29.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b0c392a35624883ac480277401ac7d92d8646b66e33639f5d350de7a6723924265985ae11ab9ebd551740ded261c443eaa9a87ea19def9763ca1e0d78c97dea8 + checksum: 10c0/c49883b0327e8683b770dc823205af5c697da216e590dcf5bf53f3f031e7e381de450b164f8f99853f0837a3de5cb793298e2be6697a0f6e452bb9dd34b5165e languageName: node linkType: hard @@ -2612,7 +2612,6 @@ __metadata: "@canton-network/core-token-standard": "workspace:^" "@canton-network/core-types": "workspace:^" "@canton-network/wallet-sdk": "workspace:^" - "@jest/core": "npm:^30.4.2" "@types/koa": "npm:^3" "@types/koa-bodyparser": "npm:^4" "@types/lodash": "npm:^4.17.24" @@ -4766,20 +4765,6 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/console@npm:30.4.1" - dependencies: - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - jest-message-util: "npm:30.4.1" - jest-util: "npm:30.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/f782722ef5754ab864b996000cf1f0545f7be9db6ba8f89cb2381dfab9910a52c59a830e5ea069a76840023e40806493d9900d8eb7e9821d23a11a498f32739e - languageName: node - linkType: hard - "@jest/console@npm:^29.7.0": version: 29.7.0 resolution: "@jest/console@npm:29.7.0" @@ -4835,47 +4820,6 @@ __metadata: languageName: node linkType: hard -"@jest/core@npm:^30.4.2": - version: 30.4.2 - resolution: "@jest/core@npm:30.4.2" - dependencies: - "@jest/console": "npm:30.4.1" - "@jest/pattern": "npm:30.4.0" - "@jest/reporters": "npm:30.4.1" - "@jest/test-result": "npm:30.4.1" - "@jest/transform": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - exit-x: "npm:^0.2.2" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.11" - jest-changed-files: "npm:30.4.1" - jest-config: "npm:30.4.2" - jest-haste-map: "npm:30.4.1" - jest-message-util: "npm:30.4.1" - jest-regex-util: "npm:30.4.0" - jest-resolve: "npm:30.4.1" - jest-resolve-dependencies: "npm:30.4.2" - jest-runner: "npm:30.4.2" - jest-runtime: "npm:30.4.2" - jest-snapshot: "npm:30.4.1" - jest-util: "npm:30.4.1" - jest-validate: "npm:30.4.1" - jest-watcher: "npm:30.4.1" - pretty-format: "npm:30.4.1" - slash: "npm:^3.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10c0/4237ec79d5403b82ba89e3be6e4318d9f37c3a11281bd76cfbdd4ff08d8c89850555607c4d494dab3526e01a90db3539e549017883967dd392b5084f1be0d5b2 - languageName: node - linkType: hard - "@jest/diff-sequences@npm:30.0.1": version: 30.0.1 resolution: "@jest/diff-sequences@npm:30.0.1" @@ -4883,25 +4827,6 @@ __metadata: languageName: node linkType: hard -"@jest/diff-sequences@npm:30.4.0": - version: 30.4.0 - resolution: "@jest/diff-sequences@npm:30.4.0" - checksum: 10c0/b4358b1b885098b905cb777f58788ddd45f90c4ebc3ce2c04fb1d4c9516f35ac2d9daef8263cd21c537bd7a52ab320f03e4ba9521677959ae20e3d405356b420 - languageName: node - linkType: hard - -"@jest/environment@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/environment@npm:30.4.1" - dependencies: - "@jest/fake-timers": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - jest-mock: "npm:30.4.1" - checksum: 10c0/704987ff8650c91a8ed13796ce47e9c55da3c12a01902d9e384330cead18eb4d34ce665a8d9962dddf2736fac006f92efc1039b8da424adf8fdc16f8d81aff6c - languageName: node - linkType: hard - "@jest/environment@npm:^29.7.0": version: 29.7.0 resolution: "@jest/environment@npm:29.7.0" @@ -4914,15 +4839,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/expect-utils@npm:30.4.1" - dependencies: - "@jest/get-type": "npm:30.1.0" - checksum: 10c0/6dea9e11ebcc7be68fea5950ae5a1b7ff9fd1490101ee8af0aede336b9934ab24a28bcafe2f1171dac0f95982406386c609ca2659b9132e1a9d419e8d69b9cd4 - languageName: node - linkType: hard - "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -4932,16 +4848,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/expect@npm:30.4.1" - dependencies: - expect: "npm:30.4.1" - jest-snapshot: "npm:30.4.1" - checksum: 10c0/2133183e735982879408036237b115abc2e57fa52bb7324be0a1f2ab6941a57da93b2e6f498dc110b7d007dd20463013fbcc5b24377cf65e6a8518d3b2ff76bd - languageName: node - linkType: hard - "@jest/expect@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect@npm:29.7.0" @@ -4952,20 +4858,6 @@ __metadata: languageName: node linkType: hard -"@jest/fake-timers@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/fake-timers@npm:30.4.1" - dependencies: - "@jest/types": "npm:30.4.1" - "@sinonjs/fake-timers": "npm:^15.4.0" - "@types/node": "npm:*" - jest-message-util: "npm:30.4.1" - jest-mock: "npm:30.4.1" - jest-util: "npm:30.4.1" - checksum: 10c0/4a10e4eb64bb5ea2531cdcc79f3058731f5c14faf2a74f498fcb37f6690c3c0f9b12a9856736d26e34631eb38db12e12812da71de27b9d332df44dda9f460fbe - languageName: node - linkType: hard - "@jest/fake-timers@npm:^29.7.0": version: 29.7.0 resolution: "@jest/fake-timers@npm:29.7.0" @@ -4980,25 +4872,6 @@ __metadata: languageName: node linkType: hard -"@jest/get-type@npm:30.1.0": - version: 30.1.0 - resolution: "@jest/get-type@npm:30.1.0" - checksum: 10c0/3e65fd5015f551c51ec68fca31bbd25b466be0e8ee8075d9610fa1c686ea1e70a942a0effc7b10f4ea9a338c24337e1ad97ff69d3ebacc4681b7e3e80d1b24ac - languageName: node - linkType: hard - -"@jest/globals@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/globals@npm:30.4.1" - dependencies: - "@jest/environment": "npm:30.4.1" - "@jest/expect": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - jest-mock: "npm:30.4.1" - checksum: 10c0/7961eefdc9e69ba7754d11a1bae4bc2960f33e03d9c1d6c73f27895b8cf92a9118a234330f31dc8efe16e835fe70ef9cc6c26f60121f6b6e9fac71c8b1bcd709 - languageName: node - linkType: hard - "@jest/globals@npm:^29.7.0": version: 29.7.0 resolution: "@jest/globals@npm:29.7.0" @@ -5011,52 +4884,6 @@ __metadata: languageName: node linkType: hard -"@jest/pattern@npm:30.4.0": - version: 30.4.0 - resolution: "@jest/pattern@npm:30.4.0" - dependencies: - "@types/node": "npm:*" - jest-regex-util: "npm:30.4.0" - checksum: 10c0/05bc0799f84f3750bbbff0f9a546979efd0dbcee86c1be98b9e2811a68885809ec7b5cca39b8dda1497cb7cf17b7be936019fba8dfbcd9c53b181e03e67f4f82 - languageName: node - linkType: hard - -"@jest/reporters@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/reporters@npm:30.4.1" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:30.4.1" - "@jest/test-result": "npm:30.4.1" - "@jest/transform": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@jridgewell/trace-mapping": "npm:^0.3.25" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - collect-v8-coverage: "npm:^1.0.2" - exit-x: "npm:^0.2.2" - glob: "npm:^10.5.0" - graceful-fs: "npm:^4.2.11" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^5.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:30.4.1" - jest-util: "npm:30.4.1" - jest-worker: "npm:30.4.1" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.2" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10c0/cf5220462c6242fa564bbeb6d5988ebfd814e0351f3bddae07323b55c68c7ebd4aa4c23e717231ab4b2d63c4fc7fa4615b9dad8584be534bd44622981242dceb - languageName: node - linkType: hard - "@jest/reporters@npm:^29.7.0": version: 29.7.0 resolution: "@jest/reporters@npm:29.7.0" @@ -5094,15 +4921,6 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/schemas@npm:30.4.1" - dependencies: - "@sinclair/typebox": "npm:^0.34.0" - checksum: 10c0/96f388ebfc1974457fcbde2ad36c40a0b549cba3f624fe8d9d6e5903a152dc75e4043f4ac9ac7668622f2ecb0f9a4dcb9a38edf3bc0d52b82045b2bb2b69b72a - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -5112,29 +4930,6 @@ __metadata: languageName: node linkType: hard -"@jest/snapshot-utils@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/snapshot-utils@npm:30.4.1" - dependencies: - "@jest/types": "npm:30.4.1" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - natural-compare: "npm:^1.4.0" - checksum: 10c0/81da9079719eece02b89c45cb97162b5b7d794981652c8d8fe2846843ac81ce219ea4bc21bde7cf76c9032006435f82bd9aee8d6139d90b77078ddad4865af02 - languageName: node - linkType: hard - -"@jest/source-map@npm:30.0.1": - version: 30.0.1 - resolution: "@jest/source-map@npm:30.0.1" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.25" - callsites: "npm:^3.1.0" - graceful-fs: "npm:^4.2.11" - checksum: 10c0/e7bda2786fc9f483d9dd7566c58c4bd948830997be862dfe80a3ae5550ff3f84753abb52e705d02ebe9db9f34ba7ebec4c2db11882048cdeef7a66f6332b3897 - languageName: node - linkType: hard - "@jest/source-map@npm:^29.6.3": version: 29.6.3 resolution: "@jest/source-map@npm:29.6.3" @@ -5146,18 +4941,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/test-result@npm:30.4.1" - dependencies: - "@jest/console": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/istanbul-lib-coverage": "npm:^2.0.6" - collect-v8-coverage: "npm:^1.0.2" - checksum: 10c0/920fa3fe3cc8b5e11bfe36066d733030f1245865d7cac4862e3783a96f9c0a087fd8073c8cb56e4c87c6fcc97b46e6f828ecd3b10dd8e208f5e1b983fcc5cdb8 - languageName: node - linkType: hard - "@jest/test-result@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-result@npm:29.7.0" @@ -5170,18 +4953,6 @@ __metadata: languageName: node linkType: hard -"@jest/test-sequencer@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/test-sequencer@npm:30.4.1" - dependencies: - "@jest/test-result": "npm:30.4.1" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/531b19ffb2358b3b22a56b306359acf66db2073978dd6df8a9522b5b4034ad7540a9cb84bdfebbcb2872686d6d2ab8cabea04ad23ef9d4488cbafd03f7511501 - languageName: node - linkType: hard - "@jest/test-sequencer@npm:^29.7.0": version: 29.7.0 resolution: "@jest/test-sequencer@npm:29.7.0" @@ -5194,28 +4965,6 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/transform@npm:30.4.1" - dependencies: - "@babel/core": "npm:^7.27.4" - "@jest/types": "npm:30.4.1" - "@jridgewell/trace-mapping": "npm:^0.3.25" - babel-plugin-istanbul: "npm:^7.0.1" - chalk: "npm:^4.1.2" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.4.1" - jest-regex-util: "npm:30.4.0" - jest-util: "npm:30.4.1" - pirates: "npm:^4.0.7" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^5.0.1" - checksum: 10c0/194f463f179f6ab3ccd6f4f0f03a117e3c01a7ce098ebf562250aca4c900ed3a9ec08b694227788eabd7cb4e0597f1d0788077c7550ddc679f68a0ad21cc87e0 - languageName: node - linkType: hard - "@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" @@ -5239,21 +4988,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:30.4.1": - version: 30.4.1 - resolution: "@jest/types@npm:30.4.1" - dependencies: - "@jest/pattern": "npm:30.4.0" - "@jest/schemas": "npm:30.4.1" - "@types/istanbul-lib-coverage": "npm:^2.0.6" - "@types/istanbul-reports": "npm:^3.0.4" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.33" - chalk: "npm:^4.1.2" - checksum: 10c0/4c79f6dbdb1c7eaab5da255fc696c7cae744759d4020e42da8aa63b37fe55ce594be73075fe1ee5407dd59d7e47975be9f674bfc81e91bae2c89c62d27ba55a1 - languageName: node - linkType: hard - "@jest/types@npm:^29.6.3": version: 29.6.3 resolution: "@jest/types@npm:29.6.3" @@ -5312,7 +5046,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": version: 0.3.31 resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: @@ -8635,14 +8369,7 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.34.0": - version: 0.34.52 - resolution: "@sinclair/typebox@npm:0.34.52" - checksum: 10c0/03e9be17ffb536ddd6dc35b6131c88eb113b2ce6cbec4fa60b1d5219de99e59b2649fc40ad70a85db561104395faa3406608971dc7b0abef529b80fb001dc821 - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^3.0.0, @sinonjs/commons@npm:^3.0.1": +"@sinonjs/commons@npm:^3.0.0": version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" dependencies: @@ -8660,15 +8387,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^15.4.0": - version: 15.4.0 - resolution: "@sinonjs/fake-timers@npm:15.4.0" - dependencies: - "@sinonjs/commons": "npm:^3.0.1" - checksum: 10c0/de4522afe0699fa8d3ae9d1715cbaa4b47e518c707bb7988a9ec6c7c67557d9f6df451f6be0338598b984a86f65aab9fab38dd9ce75a3c0ffb801a9500d5b10d - languageName: node - linkType: hard - "@solid-primitives/event-listener@npm:^2.4.3, @solid-primitives/event-listener@npm:^2.4.5": version: 2.4.5 resolution: "@solid-primitives/event-listener@npm:2.4.5" @@ -9790,7 +9508,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 @@ -9806,7 +9524,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0, @types/istanbul-reports@npm:^3.0.4": +"@types/istanbul-reports@npm:^3.0.0": version: 3.0.4 resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: @@ -10081,7 +9799,7 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0, @types/stack-utils@npm:^2.0.3": +"@types/stack-utils@npm:^2.0.0": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c @@ -10182,7 +9900,7 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.33, @types/yargs@npm:^17.0.8": +"@types/yargs@npm:^17.0.8": version: 17.0.35 resolution: "@types/yargs@npm:17.0.35" dependencies: @@ -10436,171 +10154,6 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.3.0": - version: 1.3.3 - resolution: "@ungap/structured-clone@npm:1.3.3" - checksum: 10c0/b199e280ee06e9c447e0ccd38df60a65c2b2c13d3c77af50b1e6d77230aee1ea7da309d7b80c5a4850c8e22e4eee9e4b2813c6a33f8c360560d7f2e99a9f6e8f - languageName: node - linkType: hard - -"@unrs/resolver-binding-android-arm-eabi@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.12.2" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-android-arm64@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-android-arm64@npm:1.12.2" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-arm64@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.12.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-x64@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.12.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-freebsd-x64@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.12.2" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2" - conditions: os=linux & cpu=loong64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2" - conditions: os=linux & cpu=loong64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-musl@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.12.2" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-openharmony-arm64@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-openharmony-arm64@npm:1.12.2" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-wasm32-wasi@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.12.2" - dependencies: - "@emnapi/core": "npm:1.10.0" - "@emnapi/runtime": "npm:1.10.0" - "@napi-rs/wasm-runtime": "npm:^1.1.4" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2": - version: 1.12.2 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@vitejs/plugin-react@npm:^5.2.0": version: 5.2.0 resolution: "@vitejs/plugin-react@npm:5.2.0" @@ -11562,7 +11115,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": +"ansi-styles@npm:^5.0.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df @@ -11930,23 +11483,6 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:30.4.1": - version: 30.4.1 - resolution: "babel-jest@npm:30.4.1" - dependencies: - "@jest/transform": "npm:30.4.1" - "@types/babel__core": "npm:^7.20.5" - babel-plugin-istanbul: "npm:^7.0.1" - babel-preset-jest: "npm:30.4.0" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-0 - checksum: 10c0/339b449011f31dc9eb18d9c49f0bb84e8de284e1107e64159a2f4a432bbd532d6a729774a56b7fbe76f5ddd716a0b4b7ad737265feab23b4d0225489b79a6f72 - languageName: node - linkType: hard - "babel-jest@npm:^29.7.0": version: 29.7.0 resolution: "babel-jest@npm:29.7.0" @@ -11986,29 +11522,7 @@ __metadata: "@istanbuljs/schema": "npm:^0.1.2" istanbul-lib-instrument: "npm:^5.0.4" test-exclude: "npm:^6.0.0" - checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^7.0.1": - version: 7.0.1 - resolution: "babel-plugin-istanbul@npm:7.0.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-instrument: "npm:^6.0.2" - test-exclude: "npm:^6.0.0" - checksum: 10c0/92975e3df12503b168695463b451468da0c20e117807221652eb8e33a26c160f3b9d4c5c4e65495657420e871c6a54e5e31f539e2e1da37ef2261d7ddd4b1dfd - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:30.4.0": - version: 30.4.0 - resolution: "babel-plugin-jest-hoist@npm:30.4.0" - dependencies: - "@types/babel__core": "npm:^7.20.5" - checksum: 10c0/1738ed536bb5ff536b4d406b8db7dbbd76cf10f80bb20d902e6efdda79898f045b9a991124d7104d8c398d0bd995d511d57694952645fba0f6250595a45277b0 + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb languageName: node linkType: hard @@ -12092,7 +11606,7 @@ __metadata: languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0, babel-preset-current-node-syntax@npm:^1.2.0": +"babel-preset-current-node-syntax@npm:^1.0.0": version: 1.2.0 resolution: "babel-preset-current-node-syntax@npm:1.2.0" dependencies: @@ -12117,18 +11631,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:30.4.0": - version: 30.4.0 - resolution: "babel-preset-jest@npm:30.4.0" - dependencies: - babel-plugin-jest-hoist: "npm:30.4.0" - babel-preset-current-node-syntax: "npm:^1.2.0" - peerDependencies: - "@babel/core": ^7.11.0 || ^8.0.0-beta.1 - checksum: 10c0/ca2623aa4d8bf82b1fd01e5724a87cea7f80ff089341cf12415e9ce4b10f74838ecc6c8a48921f421f90bcd44f7929c0ad300146082e2f400253adb97ab5eb3a - languageName: node - linkType: hard - "babel-preset-jest@npm:^29.6.3": version: 29.6.3 resolution: "babel-preset-jest@npm:29.6.3" @@ -12697,7 +12199,7 @@ __metadata: languageName: node linkType: hard -"callsites@npm:^3.0.0, callsites@npm:^3.1.0": +"callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 @@ -12730,7 +12232,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": +"camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 @@ -12975,7 +12477,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.0.0, ci-info@npm:^4.2.0, ci-info@npm:^4.4.0": +"ci-info@npm:^4.0.0, ci-info@npm:^4.4.0": version: 4.4.0 resolution: "ci-info@npm:4.4.0" checksum: 10c0/44156201545b8dde01aa8a09ee2fe9fc7a73b1bef9adbd4606c9f61c8caeeb73fb7a575c88b0443f7b4edb5ee45debaa59ed54ba5f99698339393ca01349eb3a @@ -12996,13 +12498,6 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^2.1.0": - version: 2.2.0 - resolution: "cjs-module-lexer@npm:2.2.0" - checksum: 10c0/aec4ca58f87145fac221386790ecaae8b012f2e2359a45acb61d8c75ea4fa84f6ea869f17abc1a7e91a808eff0fed581209632f03540de16f72f0a28f5fd35ac - languageName: node - linkType: hard - "clean-stack@npm:^3.0.0, clean-stack@npm:^3.0.1": version: 3.0.1 resolution: "clean-stack@npm:3.0.1" @@ -13189,7 +12684,7 @@ __metadata: languageName: node linkType: hard -"collect-v8-coverage@npm:^1.0.0, collect-v8-coverage@npm:^1.0.2": +"collect-v8-coverage@npm:^1.0.0": version: 1.0.3 resolution: "collect-v8-coverage@npm:1.0.3" checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc @@ -13983,7 +13478,7 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0, dedent@npm:^1.6.0": +"dedent@npm:^1.0.0": version: 1.7.2 resolution: "dedent@npm:1.7.2" peerDependencies: @@ -14023,7 +13518,7 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0, deepmerge@npm:^4.3.1": +"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.0": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 @@ -14160,7 +13655,7 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0, detect-newline@npm:^3.1.0": +"detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d @@ -15329,7 +14824,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0, execa@npm:^5.1.1": +"execa@npm:^5.0.0": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -15346,13 +14841,6 @@ __metadata: languageName: node linkType: hard -"exit-x@npm:^0.2.2": - version: 0.2.2 - resolution: "exit-x@npm:0.2.2" - checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 - languageName: node - linkType: hard - "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -15374,20 +14862,6 @@ __metadata: languageName: node linkType: hard -"expect@npm:30.4.1": - version: 30.4.1 - resolution: "expect@npm:30.4.1" - dependencies: - "@jest/expect-utils": "npm:30.4.1" - "@jest/get-type": "npm:30.1.0" - jest-matcher-utils: "npm:30.4.1" - jest-message-util: "npm:30.4.1" - jest-mock: "npm:30.4.1" - jest-util: "npm:30.4.1" - checksum: 10c0/ad04fbdffac5a2bae186478938a60f737e3aac823db9a80c87f3f390f9f458bddcc454dc3a3997d715706747c6aff928923e6a71db3a221adb89a51cc1582e72 - languageName: node - linkType: hard - "expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -15616,7 +15090,7 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.0, fb-watchman@npm:^2.0.2": +"fb-watchman@npm:^2.0.0": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" dependencies: @@ -15976,7 +15450,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:^2.3.3, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -15995,7 +15469,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -16998,7 +16472,7 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0, is-generator-fn@npm:^2.1.0": +"is-generator-fn@npm:^2.0.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d @@ -17266,7 +16740,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": +"istanbul-lib-instrument@npm:^6.0.0": version: 6.0.3 resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: @@ -17301,17 +16775,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-source-maps@npm:^5.0.0": - version: 5.0.6 - resolution: "istanbul-lib-source-maps@npm:5.0.6" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.23" - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f - languageName: node - linkType: hard - "istanbul-reports@npm:^3.1.3, istanbul-reports@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-reports@npm:3.2.0" @@ -17348,17 +16811,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:30.4.1": - version: 30.4.1 - resolution: "jest-changed-files@npm:30.4.1" - dependencies: - execa: "npm:^5.1.1" - jest-util: "npm:30.4.1" - p-limit: "npm:^3.1.0" - checksum: 10c0/324bbec3920a7d9ceb1d11872b9f1befe73d152a7ef289243f663bf3b22afe124c2c656ec316e44393f30a83b74a1738b56307a066906fa49b800686fd4d0f04 - languageName: node - linkType: hard - "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -17370,34 +16822,6 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:30.4.2": - version: 30.4.2 - resolution: "jest-circus@npm:30.4.2" - dependencies: - "@jest/environment": "npm:30.4.1" - "@jest/expect": "npm:30.4.1" - "@jest/test-result": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - co: "npm:^4.6.0" - dedent: "npm:^1.6.0" - is-generator-fn: "npm:^2.1.0" - jest-each: "npm:30.4.1" - jest-matcher-utils: "npm:30.4.1" - jest-message-util: "npm:30.4.1" - jest-runtime: "npm:30.4.2" - jest-snapshot: "npm:30.4.1" - jest-util: "npm:30.4.1" - p-limit: "npm:^3.1.0" - pretty-format: "npm:30.4.1" - pure-rand: "npm:^7.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.6" - checksum: 10c0/5d99f1336eb249057063a007fabad4ced802501fbaad7ddeea8db9553fa54fbd44d26e71e8bf61a0979d42b3b93a3d920e6f00afa26cdbb70d1e7d0969515d10 - languageName: node - linkType: hard - "jest-circus@npm:^29.7.0": version: 29.7.0 resolution: "jest-circus@npm:29.7.0" @@ -17452,48 +16876,6 @@ __metadata: languageName: node linkType: hard -"jest-config@npm:30.4.2": - version: 30.4.2 - resolution: "jest-config@npm:30.4.2" - dependencies: - "@babel/core": "npm:^7.27.4" - "@jest/get-type": "npm:30.1.0" - "@jest/pattern": "npm:30.4.0" - "@jest/test-sequencer": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - babel-jest: "npm:30.4.1" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - deepmerge: "npm:^4.3.1" - glob: "npm:^10.5.0" - graceful-fs: "npm:^4.2.11" - jest-circus: "npm:30.4.2" - jest-docblock: "npm:30.4.0" - jest-environment-node: "npm:30.4.1" - jest-regex-util: "npm:30.4.0" - jest-resolve: "npm:30.4.1" - jest-runner: "npm:30.4.2" - jest-util: "npm:30.4.1" - jest-validate: "npm:30.4.1" - parse-json: "npm:^5.2.0" - pretty-format: "npm:30.4.1" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - esbuild-register: ">=3.4.0" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - esbuild-register: - optional: true - ts-node: - optional: true - checksum: 10c0/18300b1dc54a4bfb5d1db6c10aeb01b6c64736224e3f60d119da9504d49cbab5a76d789f38c44af7d168418463356db6843ad7e44f249c63ce7f409758eba0c6 - languageName: node - linkType: hard - "jest-config@npm:^29.7.0": version: 29.7.0 resolution: "jest-config@npm:29.7.0" @@ -17532,18 +16914,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:30.4.1": - version: 30.4.1 - resolution: "jest-diff@npm:30.4.1" - dependencies: - "@jest/diff-sequences": "npm:30.4.0" - "@jest/get-type": "npm:30.1.0" - chalk: "npm:^4.1.2" - pretty-format: "npm:30.4.1" - checksum: 10c0/787e11f0ea27e94815479d6c5415e4173da1e74bede34c1515b8515fc9d1fe053e2ad25a3c31f9998a7292c186a0e4d395ed82e0e149d57d7708ee6759b442e9 - languageName: node - linkType: hard - "jest-diff@npm:^27.5.1": version: 27.5.1 resolution: "jest-diff@npm:27.5.1" @@ -17568,15 +16938,6 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:30.4.0": - version: 30.4.0 - resolution: "jest-docblock@npm:30.4.0" - dependencies: - detect-newline: "npm:^3.1.0" - checksum: 10c0/1fe1c971207e1b905e4f23d98e508a03ae631337e9ffa347ff2f6df81a1d75ced7ed3e52a809fad75fb8a8cd55b6bda4483bc124e5e1d7529eeb4ef76b29e913 - languageName: node - linkType: hard - "jest-docblock@npm:^29.7.0": version: 29.7.0 resolution: "jest-docblock@npm:29.7.0" @@ -17586,19 +16947,6 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:30.4.1": - version: 30.4.1 - resolution: "jest-each@npm:30.4.1" - dependencies: - "@jest/get-type": "npm:30.1.0" - "@jest/types": "npm:30.4.1" - chalk: "npm:^4.1.2" - jest-util: "npm:30.4.1" - pretty-format: "npm:30.4.1" - checksum: 10c0/41bc1cec23901cb0c7d8f547a70574fffca8cc16a1660ed97645bf3b61f4e6151aaa58bb14ce55a3cd9f5a63a2cc782a39366caf3304a2159d1e3cc5ae79a9e4 - languageName: node - linkType: hard - "jest-each@npm:^29.7.0": version: 29.7.0 resolution: "jest-each@npm:29.7.0" @@ -17612,21 +16960,6 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:30.4.1": - version: 30.4.1 - resolution: "jest-environment-node@npm:30.4.1" - dependencies: - "@jest/environment": "npm:30.4.1" - "@jest/fake-timers": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - jest-mock: "npm:30.4.1" - jest-util: "npm:30.4.1" - jest-validate: "npm:30.4.1" - checksum: 10c0/d8d6bb22bfd280f077b5856558d9d7112c48fd3bae6eda9b76694f1c8e1be783a725686a137437d180c9d49e6b37386c8e342e0b8e5bfcb6526dee9c10cc31ec - languageName: node - linkType: hard - "jest-environment-node@npm:^29.7.0": version: 29.7.0 resolution: "jest-environment-node@npm:29.7.0" @@ -17655,28 +16988,6 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:30.4.1": - version: 30.4.1 - resolution: "jest-haste-map@npm:30.4.1" - dependencies: - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - anymatch: "npm:^3.1.3" - fb-watchman: "npm:^2.0.2" - fsevents: "npm:^2.3.3" - graceful-fs: "npm:^4.2.11" - jest-regex-util: "npm:30.4.0" - jest-util: "npm:30.4.1" - jest-worker: "npm:30.4.1" - picomatch: "npm:^4.0.3" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/1350c24952bbf31c86cb1ed4e2e5edd4766a93e2be8816c4648c05463d06cfae89f3c73732f9274fdb626fdfdfe6605ed6f259b6c21257df536a6379d4b9a5e7 - languageName: node - linkType: hard - "jest-haste-map@npm:^29.7.0": version: 29.7.0 resolution: "jest-haste-map@npm:29.7.0" @@ -17712,16 +17023,6 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:30.4.1": - version: 30.4.1 - resolution: "jest-leak-detector@npm:30.4.1" - dependencies: - "@jest/get-type": "npm:30.1.0" - pretty-format: "npm:30.4.1" - checksum: 10c0/57256ac08f12186e3ed1687126b8d75a12de9c4ffa959ff41322e9ba5f93e3ed8af91dc36bc4d59f77cef6d4008bcf5a3e646cdd950743898576aec8dbae6778 - languageName: node - linkType: hard - "jest-leak-detector@npm:^29.7.0": version: 29.7.0 resolution: "jest-leak-detector@npm:29.7.0" @@ -17732,18 +17033,6 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:30.4.1": - version: 30.4.1 - resolution: "jest-matcher-utils@npm:30.4.1" - dependencies: - "@jest/get-type": "npm:30.1.0" - chalk: "npm:^4.1.2" - jest-diff: "npm:30.4.1" - pretty-format: "npm:30.4.1" - checksum: 10c0/ddbb0c7075def27ba30160883c327cb3fd13f561f5789d00a1edca1b48b0651f8ea23a1c51bcfcb6413a68c47d658bcf47a34701b8a39ce135dd28d87a3117af - languageName: node - linkType: hard - "jest-matcher-utils@npm:^27.3.1": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" @@ -17768,24 +17057,6 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:30.4.1": - version: 30.4.1 - resolution: "jest-message-util@npm:30.4.1" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@jest/types": "npm:30.4.1" - "@types/stack-utils": "npm:^2.0.3" - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - jest-util: "npm:30.4.1" - picomatch: "npm:^4.0.3" - pretty-format: "npm:30.4.1" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.6" - checksum: 10c0/ae7427544e042bc1c14abf3c0dbe8b83d0dbec22a9a5efefaca5b8ccb6b9bf391abe732e6f2117ca995c6889bfe1be35c78cec75e5ea0a50e28cffe1ba6f9fdf - languageName: node - linkType: hard - "jest-message-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-message-util@npm:29.7.0" @@ -17803,17 +17074,6 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:30.4.1": - version: 30.4.1 - resolution: "jest-mock@npm:30.4.1" - dependencies: - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - jest-util: "npm:30.4.1" - checksum: 10c0/5185a41255285c1634c5d85dda037afaaadfc12793b3293c9e253a30bb67449f8df968447f830abb9cf7a52e63694e6734680130e8085ce119056280890bf6fc - languageName: node - linkType: hard - "jest-mock@npm:^29.7.0": version: 29.7.0 resolution: "jest-mock@npm:29.7.0" @@ -17825,7 +17085,7 @@ __metadata: languageName: node linkType: hard -"jest-pnp-resolver@npm:^1.2.2, jest-pnp-resolver@npm:^1.2.3": +"jest-pnp-resolver@npm:^1.2.2": version: 1.2.3 resolution: "jest-pnp-resolver@npm:1.2.3" peerDependencies: @@ -17837,13 +17097,6 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:30.4.0": - version: 30.4.0 - resolution: "jest-regex-util@npm:30.4.0" - checksum: 10c0/fe7426f67b54d38bed8e9d6e6a099d63d72f41f5bf65b922d9d03fedcb55c614b45657207632f6ee22d0a59d8d11327891f258d23f68a58912fcdb0f7db48435 - languageName: node - linkType: hard - "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -17851,16 +17104,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:30.4.2": - version: 30.4.2 - resolution: "jest-resolve-dependencies@npm:30.4.2" - dependencies: - jest-regex-util: "npm:30.4.0" - jest-snapshot: "npm:30.4.1" - checksum: 10c0/4101afabd2a4ef4e6c82bf82ea145286c1238373f7611938e8d47ddcf5aaa6e10af365436a934b7af194451e351774829cb021ac73f857b4873dcccc7aabb616 - languageName: node - linkType: hard - "jest-resolve-dependencies@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve-dependencies@npm:29.7.0" @@ -17871,22 +17114,6 @@ __metadata: languageName: node linkType: hard -"jest-resolve@npm:30.4.1": - version: 30.4.1 - resolution: "jest-resolve@npm:30.4.1" - dependencies: - chalk: "npm:^4.1.2" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.4.1" - jest-pnp-resolver: "npm:^1.2.3" - jest-util: "npm:30.4.1" - jest-validate: "npm:30.4.1" - slash: "npm:^3.0.0" - unrs-resolver: "npm:^1.7.11" - checksum: 10c0/0a99ef4f4fd7b3678d58a5e1cf8f0b5ec1997cdba21f5d66a8b26353d57a226f8e6a5fffc450c8836e90ab0e20d5e7935d0dea939d9a9b6a08781b9a7413184c - languageName: node - linkType: hard - "jest-resolve@npm:^29.7.0": version: 29.7.0 resolution: "jest-resolve@npm:29.7.0" @@ -17904,36 +17131,6 @@ __metadata: languageName: node linkType: hard -"jest-runner@npm:30.4.2": - version: 30.4.2 - resolution: "jest-runner@npm:30.4.2" - dependencies: - "@jest/console": "npm:30.4.1" - "@jest/environment": "npm:30.4.1" - "@jest/test-result": "npm:30.4.1" - "@jest/transform": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - emittery: "npm:^0.13.1" - exit-x: "npm:^0.2.2" - graceful-fs: "npm:^4.2.11" - jest-docblock: "npm:30.4.0" - jest-environment-node: "npm:30.4.1" - jest-haste-map: "npm:30.4.1" - jest-leak-detector: "npm:30.4.1" - jest-message-util: "npm:30.4.1" - jest-resolve: "npm:30.4.1" - jest-runtime: "npm:30.4.2" - jest-util: "npm:30.4.1" - jest-watcher: "npm:30.4.1" - jest-worker: "npm:30.4.1" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 10c0/339e630fb1a7db52e208ed9f12f722122733fe9a450d9bd83c0fccc10fbc5142a8808f624c41ab1e25833af02f9c3eca85561554b75a5b3ad75b4a226f72c5cf - languageName: node - linkType: hard - "jest-runner@npm:^29.7.0": version: 29.7.0 resolution: "jest-runner@npm:29.7.0" @@ -17963,36 +17160,6 @@ __metadata: languageName: node linkType: hard -"jest-runtime@npm:30.4.2": - version: 30.4.2 - resolution: "jest-runtime@npm:30.4.2" - dependencies: - "@jest/environment": "npm:30.4.1" - "@jest/fake-timers": "npm:30.4.1" - "@jest/globals": "npm:30.4.1" - "@jest/source-map": "npm:30.0.1" - "@jest/test-result": "npm:30.4.1" - "@jest/transform": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - cjs-module-lexer: "npm:^2.1.0" - collect-v8-coverage: "npm:^1.0.2" - glob: "npm:^10.5.0" - graceful-fs: "npm:^4.2.11" - jest-haste-map: "npm:30.4.1" - jest-message-util: "npm:30.4.1" - jest-mock: "npm:30.4.1" - jest-regex-util: "npm:30.4.0" - jest-resolve: "npm:30.4.1" - jest-snapshot: "npm:30.4.1" - jest-util: "npm:30.4.1" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 10c0/9fce55b0c78fbe47dc2c10a944e9513833fd43c14f292460ef5cdd91e375088bf35549336e66f69fc9d29bf4f410894e9a7eef0bf12a6f39d99174a5300c2c53 - languageName: node - linkType: hard - "jest-runtime@npm:^29.7.0": version: 29.7.0 resolution: "jest-runtime@npm:29.7.0" @@ -18023,35 +17190,6 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:30.4.1": - version: 30.4.1 - resolution: "jest-snapshot@npm:30.4.1" - dependencies: - "@babel/core": "npm:^7.27.4" - "@babel/generator": "npm:^7.27.5" - "@babel/plugin-syntax-jsx": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.27.1" - "@babel/types": "npm:^7.27.3" - "@jest/expect-utils": "npm:30.4.1" - "@jest/get-type": "npm:30.1.0" - "@jest/snapshot-utils": "npm:30.4.1" - "@jest/transform": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - babel-preset-current-node-syntax: "npm:^1.2.0" - chalk: "npm:^4.1.2" - expect: "npm:30.4.1" - graceful-fs: "npm:^4.2.11" - jest-diff: "npm:30.4.1" - jest-matcher-utils: "npm:30.4.1" - jest-message-util: "npm:30.4.1" - jest-util: "npm:30.4.1" - pretty-format: "npm:30.4.1" - semver: "npm:^7.7.2" - synckit: "npm:^0.11.8" - checksum: 10c0/cebd70277b6f0d2606f22815480146cf1e37295ed69a1d16e260a99a2ab48db167857e2fb9a938923d22ac13203c83a5e31d7f066b58d87c6d42db58c914ff13 - languageName: node - linkType: hard - "jest-snapshot@npm:^29.7.0": version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" @@ -18080,20 +17218,6 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:30.4.1": - version: 30.4.1 - resolution: "jest-util@npm:30.4.1" - dependencies: - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - chalk: "npm:^4.1.2" - ci-info: "npm:^4.2.0" - graceful-fs: "npm:^4.2.11" - picomatch: "npm:^4.0.3" - checksum: 10c0/3efe1f25e5a172d04c6af8612d82867ab603b7c1bd8cb89073ff834679b44eba178793cf3af162cf5e25be13aa736ebd23a7826683acc85bddc5873f305b1f6e - languageName: node - linkType: hard - "jest-util@npm:^29.7.0": version: 29.7.0 resolution: "jest-util@npm:29.7.0" @@ -18108,20 +17232,6 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:30.4.1": - version: 30.4.1 - resolution: "jest-validate@npm:30.4.1" - dependencies: - "@jest/get-type": "npm:30.1.0" - "@jest/types": "npm:30.4.1" - camelcase: "npm:^6.3.0" - chalk: "npm:^4.1.2" - leven: "npm:^3.1.0" - pretty-format: "npm:30.4.1" - checksum: 10c0/23e6677ee6d06476f368c8b6d442b4207e5fbe062e74c1da3eae9ed30a18605f4e8a14809fa9cc7f22a2d8446e8de91a512f59c278720db2ad61c77dc25ffefc - languageName: node - linkType: hard - "jest-validate@npm:^29.7.0": version: 29.7.0 resolution: "jest-validate@npm:29.7.0" @@ -18136,22 +17246,6 @@ __metadata: languageName: node linkType: hard -"jest-watcher@npm:30.4.1": - version: 30.4.1 - resolution: "jest-watcher@npm:30.4.1" - dependencies: - "@jest/test-result": "npm:30.4.1" - "@jest/types": "npm:30.4.1" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.3.2" - chalk: "npm:^4.1.2" - emittery: "npm:^0.13.1" - jest-util: "npm:30.4.1" - string-length: "npm:^4.0.2" - checksum: 10c0/a56e1714b7b0f9c620c5cee95a84a48b780093594cd188e365a24768f208714895a0deb784ee48e4eec7f1828bc00435ab3c39208d490c33be3786937e997c97 - languageName: node - linkType: hard - "jest-watcher@npm:^29.7.0": version: 29.7.0 resolution: "jest-watcher@npm:29.7.0" @@ -18168,19 +17262,6 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:30.4.1": - version: 30.4.1 - resolution: "jest-worker@npm:30.4.1" - dependencies: - "@types/node": "npm:*" - "@ungap/structured-clone": "npm:^1.3.0" - jest-util: "npm:30.4.1" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.1.1" - checksum: 10c0/3eb7ec7e928b82491e66ae6709e3a1eef3edad2bc351514a5d52037b997151989de6ce2912d6a5a3806ae3ae3bf6a1c36b1ad7bbc567d0790503fdb74576f140 - languageName: node - linkType: hard - "jest-worker@npm:^29.7.0": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" @@ -19969,15 +19050,6 @@ __metadata: languageName: node linkType: hard -"napi-postinstall@npm:^0.3.4": - version: 0.3.4 - resolution: "napi-postinstall@npm:0.3.4" - bin: - napi-postinstall: lib/cli.js - checksum: 10c0/b33d64150828bdade3a5d07368a8b30da22ee393f8dd8432f1b9e5486867be21c84ec443dd875dd3ef3c7401a079a7ab7e2aa9d3538a889abbcd96495d5104fe - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -22128,18 +21200,6 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:30.4.1": - version: 30.4.1 - resolution: "pretty-format@npm:30.4.1" - dependencies: - "@jest/schemas": "npm:30.4.1" - ansi-styles: "npm:^5.2.0" - react-is-18: "npm:react-is@^18.3.1" - react-is-19: "npm:react-is@^19.2.5" - checksum: 10c0/c7e6633740cd2f6d382f188c00c8b4b3f2bee3cda16db6753471c6bb4b94f76531358d3a7793062a0fb00d72ebfb934e8ae1d4f5ced6bb34c8e7f60996f90076 - languageName: node - linkType: hard - "pretty-format@npm:^27.5.1": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" @@ -22387,13 +21447,6 @@ __metadata: languageName: node linkType: hard -"pure-rand@npm:^7.0.0": - version: 7.0.1 - resolution: "pure-rand@npm:7.0.1" - checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e - languageName: node - linkType: hard - "qrcode-terminal@npm:^0.12.0": version: 0.12.0 resolution: "qrcode-terminal@npm:0.12.0" @@ -22548,20 +21601,6 @@ __metadata: languageName: node linkType: hard -"react-is-18@npm:react-is@^18.3.1, react-is@npm:^18.0.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - -"react-is-19@npm:react-is@^19.2.5, react-is@npm:^19.2.6": - version: 19.2.7 - resolution: "react-is@npm:19.2.7" - checksum: 10c0/419fe54d5bd7fdf5414a5bb7bd9a1e0e36f9fae28ffb4cb73290fbe342bde15d8584a90d1db62547f6aa03018dce517b178a041abb522136cd4b4b51b4e94c83 - languageName: node - linkType: hard - "react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" @@ -22576,6 +21615,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + "react-is@npm:^19.2.3": version: 19.2.4 resolution: "react-is@npm:19.2.4" @@ -22590,6 +21636,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^19.2.6": + version: 19.2.7 + resolution: "react-is@npm:19.2.7" + checksum: 10c0/419fe54d5bd7fdf5414a5bb7bd9a1e0e36f9fae28ffb4cb73290fbe342bde15d8584a90d1db62547f6aa03018dce517b178a041abb522136cd4b4b51b4e94c83 + languageName: node + linkType: hard + "react-refresh@npm:^0.18.0": version: 0.18.0 resolution: "react-refresh@npm:0.18.0" @@ -24052,7 +23105,7 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3, stack-utils@npm:^2.0.6": +"stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" dependencies: @@ -24143,7 +23196,7 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.1, string-length@npm:^4.0.2": +"string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" dependencies: @@ -24470,7 +23523,7 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.11.13, synckit@npm:^0.11.8": +"synckit@npm:^0.11.13": version: 0.11.13 resolution: "synckit@npm:0.11.13" dependencies: @@ -25460,82 +24513,6 @@ __metadata: languageName: node linkType: hard -"unrs-resolver@npm:^1.7.11": - version: 1.12.2 - resolution: "unrs-resolver@npm:1.12.2" - dependencies: - "@unrs/resolver-binding-android-arm-eabi": "npm:1.12.2" - "@unrs/resolver-binding-android-arm64": "npm:1.12.2" - "@unrs/resolver-binding-darwin-arm64": "npm:1.12.2" - "@unrs/resolver-binding-darwin-x64": "npm:1.12.2" - "@unrs/resolver-binding-freebsd-x64": "npm:1.12.2" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.12.2" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.12.2" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.12.2" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.12.2" - "@unrs/resolver-binding-linux-loong64-gnu": "npm:1.12.2" - "@unrs/resolver-binding-linux-loong64-musl": "npm:1.12.2" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.12.2" - "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.12.2" - "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.12.2" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.12.2" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.12.2" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.12.2" - "@unrs/resolver-binding-openharmony-arm64": "npm:1.12.2" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.12.2" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.12.2" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.12.2" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.12.2" - napi-postinstall: "npm:^0.3.4" - dependenciesMeta: - "@unrs/resolver-binding-android-arm-eabi": - optional: true - "@unrs/resolver-binding-android-arm64": - optional: true - "@unrs/resolver-binding-darwin-arm64": - optional: true - "@unrs/resolver-binding-darwin-x64": - optional: true - "@unrs/resolver-binding-freebsd-x64": - optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf": - optional: true - "@unrs/resolver-binding-linux-arm-musleabihf": - optional: true - "@unrs/resolver-binding-linux-arm64-gnu": - optional: true - "@unrs/resolver-binding-linux-arm64-musl": - optional: true - "@unrs/resolver-binding-linux-loong64-gnu": - optional: true - "@unrs/resolver-binding-linux-loong64-musl": - optional: true - "@unrs/resolver-binding-linux-ppc64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-musl": - optional: true - "@unrs/resolver-binding-linux-s390x-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-musl": - optional: true - "@unrs/resolver-binding-openharmony-arm64": - optional: true - "@unrs/resolver-binding-wasm32-wasi": - optional: true - "@unrs/resolver-binding-win32-arm64-msvc": - optional: true - "@unrs/resolver-binding-win32-ia32-msvc": - optional: true - "@unrs/resolver-binding-win32-x64-msvc": - optional: true - checksum: 10c0/ddc27f6d920eabdafeac0077ebff9fd799c895cea025751dc17b360bf9be7c93c471fafebf65f205eec476f90d7daa36aef889d47362b2dd4705d68852bcfea4 - languageName: node - linkType: hard - "unstorage@npm:^1.9.0": version: 1.17.5 resolution: "unstorage@npm:1.17.5" @@ -26319,16 +25296,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^5.0.1": - version: 5.0.1 - resolution: "write-file-atomic@npm:5.0.1" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^4.0.1" - checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d - languageName: node - linkType: hard - "write-file-atomic@npm:^7.0.0": version: 7.0.1 resolution: "write-file-atomic@npm:7.0.1" From badbb95b900dec8b1ac21a9e209dfcc22d8ad8eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 17 Jul 2026 18:30:34 +0200 Subject: [PATCH 23/28] test(example-test-token-v1-registry): add metadata test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/api/metadata/metadata.test.ts | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 examples/test-token-v1-registry/src/api/metadata/metadata.test.ts diff --git a/examples/test-token-v1-registry/src/api/metadata/metadata.test.ts b/examples/test-token-v1-registry/src/api/metadata/metadata.test.ts new file mode 100644 index 000000000..a628685cf --- /dev/null +++ b/examples/test-token-v1-registry/src/api/metadata/metadata.test.ts @@ -0,0 +1,72 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it, expect, vi, beforeEach } from 'vitest' +import { getRegistryInfo } from './getRegistryInfo' +import { getInstrument } from './getInstrument' +import { listInstruments } from './listInstruments' +import { Operations } from '../../openapi-ts/token-metadata-v1' +import { instruments, supportedApis } from './common' + +const emptyCtx = {} as Operations[ + | 'getRegistryInfo' + | 'listInstruments']['context'] + +vi.mock('../../common/admin', () => ({ + admin: { + party: 'admin', + }, +})) + +describe('Metadata', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it('should get registry info', async () => { + const result = await getRegistryInfo(emptyCtx) + + expect(result).toStrictEqual({ + payload: { + adminId: 'admin', + supportedApis, + }, + }) + }) + + it('should list instruments', async () => { + const result = await listInstruments(emptyCtx) + + expect(result).toStrictEqual({ + payload: { + instruments, + }, + }) + }) + + it('should return error when trying to get non-existing instrument', async () => { + const result = await getInstrument({ + request: { + params: { + instrumentId: 'id', + }, + }, + } as Operations['getInstrument']['context']) + + expect(result.status).toBe(404) + }) + + it('should get existing instrument', async () => { + const result = await getInstrument({ + request: { + params: { + instrumentId: instruments[0].id, + }, + }, + } as Operations['getInstrument']['context']) + + expect(result).toStrictEqual({ + payload: instruments[0], + }) + }) +}) From e09422df0ba43d61ab9d441e360f23c1cf8ab282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 17 Jul 2026 18:52:58 +0200 Subject: [PATCH 24/28] test(example-test-token-v1-registry): finish api tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../allocationInstruction.test.ts | 9 + .../getTransferFactory.ts | 26 +- .../transferInstruction.test.ts | 223 ++++++++++++++++++ 3 files changed, 245 insertions(+), 13 deletions(-) create mode 100644 examples/test-token-v1-registry/src/api/transfer-instruction/transferInstruction.test.ts diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts index fd3330130..d99b52c6f 100644 --- a/examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/allocationInstruction.test.ts @@ -12,6 +12,15 @@ vi.mock('../../common/sdk', () => { } }) +vi.mock('../../common/admin', () => ({ + admin: { + party: 'party', + keys: { + privateKey: 'privateKey', + }, + }, +})) + const { getAllocationFactory } = await import('./getAllocationFactory') const correctChoiceArguments = { diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts index 3611d690f..4ee5a9268 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts @@ -37,11 +37,11 @@ export const getTransferFactory: TransferInstructionAPIHandler< } const transferKind = - (parsedChoiceArguments.data.transferKind ?? - parsedChoiceArguments.data.sender === - parsedChoiceArguments.data.receiver) + parsedChoiceArguments.data.transferKind ?? + (parsedChoiceArguments.data.sender === + parsedChoiceArguments.data.receiver ? 'self' - : 'offer' + : 'offer') const fetchedFactory = ( await sdk.ledger.acsReader.readJsContracts({ @@ -71,20 +71,20 @@ export const getTransferFactory: TransferInstructionAPIHandler< partyId: admin.party, }) - const factoryContracts = await sdk.ledger.acsReader.readJsContracts({ - filterByParty: true, - parties: [admin.party], - offset: executionResult.completionOffset, - templateIds: [TestTokenV1.TokenRules.templateId], - }) - - const factoryContract = factoryContracts[0] + const factoryContract = ( + await sdk.ledger.acsReader.readJsContracts({ + filterByParty: true, + parties: [admin.party], + offset: executionResult.completionOffset, + templateIds: [TestTokenV1.TokenRules.templateId], + }) + )[0] if (!factoryContract) { return { status: 500, payload: { - error: `Error instantiating transfer factory (completionOffset=${executionResult.completionOffset}, contractsAtOffset=${factoryContracts.length}`, + error: `Error instantiating transfer factory (completionOffset=${executionResult.completionOffset}`, }, } } diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/transferInstruction.test.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/transferInstruction.test.ts new file mode 100644 index 000000000..69d402250 --- /dev/null +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/transferInstruction.test.ts @@ -0,0 +1,223 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it, expect, vi, beforeEach } from 'vitest' +import { Operations } from '../../openapi-ts/transfer-instruction-v1' +import { getTransferInstructionAcceptContext } from './getTransferInstructionAcceptContext' +import { getTransferInstructionRejectContext } from './getTransferInstructionRejectContext' +import { getTransferInstructionWithdrawContext } from './getTransferInstructionWithdrawContext' +import { emptyChoiceContext } from '../common' +import { mock } from '../../__test__/mocks' + +const emptyCtx = {} as Operations[ + | 'getTransferInstructionAcceptContext' + | 'getTransferInstructionRejectContext' + | 'getTransferInstructionWithdrawContext']['context'] + +vi.mock('../../common/sdk', () => { + return { + default: mock.sdk, + } +}) + +vi.mock('../../common/admin', () => ({ + admin: { + party: 'party', + keys: { + privateKey: 'privateKey', + }, + }, +})) + +const { getTransferFactory } = await import('./getTransferFactory') + +describe('Transfer Instruction', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it('should get accept choice context', async () => { + const result = await getTransferInstructionAcceptContext(emptyCtx) + + expect(result).toStrictEqual({ + payload: emptyChoiceContext, + }) + }) + + it('should get reject choice context', async () => { + const result = await getTransferInstructionRejectContext(emptyCtx) + + expect(result).toStrictEqual({ + payload: emptyChoiceContext, + }) + }) + + it('should get withdraw choice context', async () => { + const result = await getTransferInstructionWithdrawContext(emptyCtx) + + expect(result).toStrictEqual({ + payload: emptyChoiceContext, + }) + }) + + describe('transfer factory', () => { + const correctCtxChoiceArguments = { + request: { + body: { + choiceArguments: { + sender: 's', + receiver: 'r', + }, + }, + }, + } as Operations['getTransferFactory']['context'] + + const incorrectCtxChoiceArguments = { + request: { + body: { + choiceArguments: {}, + }, + }, + } as Operations['getTransferFactory']['context'] + + it('should fail if provided request body is invalid', async () => { + const result = await getTransferFactory(incorrectCtxChoiceArguments) + + expect(result.status).toBe(400) + }) + + it('should successfully return factory contract from acs reader', async () => { + mock.sdk.ledger.acsReader.readJsContracts.mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const result = await getTransferFactory(correctCtxChoiceArguments) + + expect( + mock.sdk.ledger.acsReader.readJsContracts + ).toHaveBeenCalledOnce() + expect(result).toStrictEqual({ + payload: { + factoryId: 'cid', + transferKind: 'offer', + choiceContext: emptyChoiceContext, + }, + }) + }) + + it('should return error in case contract creation fails', async () => { + mock.sdk.ledger.acsReader.readJsContracts.mockResolvedValue([]) + + const result = await getTransferFactory(correctCtxChoiceArguments) + + expect( + mock.sdk.ledger.acsReader.readJsContracts + ).toHaveBeenCalledTimes(2) + expect(mock.prepare).toHaveBeenCalledOnce() + expect(mock.sign).toHaveBeenCalledOnce() + expect(mock.execute).toHaveBeenCalledOnce() + + expect(result.status).toBe(500) + }) + + it('should successfully create factory contract', async () => { + mock.sdk.ledger.acsReader.readJsContracts + .mockResolvedValueOnce([]) + .mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const result = await getTransferFactory(correctCtxChoiceArguments) + + expect(result).toStrictEqual({ + payload: { + factoryId: 'cid', + transferKind: 'offer', + choiceContext: emptyChoiceContext, + }, + }) + }) + + it('should change transfer kind if sender and receiver is equal', async () => { + const ctxChoiceArguments = { ...correctCtxChoiceArguments } + ctxChoiceArguments.request.body.choiceArguments.receiver = 's' + mock.sdk.ledger.acsReader.readJsContracts.mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const acsCacheResult = await getTransferFactory(ctxChoiceArguments) + + expect(acsCacheResult).toStrictEqual({ + payload: { + factoryId: 'cid', + transferKind: 'self', + choiceContext: emptyChoiceContext, + }, + }) + + mock.sdk.ledger.acsReader.readJsContracts + .mockResolvedValueOnce([]) + .mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const result = await getTransferFactory(ctxChoiceArguments) + + expect(result).toStrictEqual({ + payload: { + factoryId: 'cid', + transferKind: 'self', + choiceContext: emptyChoiceContext, + }, + }) + }) + + it('should set transfer kind overwrite', async () => { + const ctxChoiceArguments = { ...correctCtxChoiceArguments } + ctxChoiceArguments.request.body.choiceArguments.transferKind = + 'direct' + + mock.sdk.ledger.acsReader.readJsContracts.mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const acsCacheResult = await getTransferFactory(ctxChoiceArguments) + + expect(acsCacheResult).toStrictEqual({ + payload: { + factoryId: 'cid', + transferKind: 'direct', + choiceContext: emptyChoiceContext, + }, + }) + + mock.sdk.ledger.acsReader.readJsContracts + .mockResolvedValueOnce([]) + .mockResolvedValueOnce([ + { + contractId: 'cid', + }, + ]) + + const result = await getTransferFactory(ctxChoiceArguments) + + expect(result).toStrictEqual({ + payload: { + factoryId: 'cid', + transferKind: 'direct', + choiceContext: emptyChoiceContext, + }, + }) + }) + }) +}) From d1d314135ab44125a19929f5495e36d00717eb22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 17 Jul 2026 19:00:36 +0200 Subject: [PATCH 25/28] test(example-test-token-v1-registry): add admin tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/__test__/mocks.ts | 7 ++++ .../src/common/admin.test.ts | 36 +++++++++++++++++++ .../src/common/admin.ts | 1 - 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 examples/test-token-v1-registry/src/common/admin.test.ts diff --git a/examples/test-token-v1-registry/src/__test__/mocks.ts b/examples/test-token-v1-registry/src/__test__/mocks.ts index 570181810..404c134d5 100644 --- a/examples/test-token-v1-registry/src/__test__/mocks.ts +++ b/examples/test-token-v1-registry/src/__test__/mocks.ts @@ -8,6 +8,7 @@ const execute = vi.fn().mockResolvedValue({ }) const sign = vi.fn().mockReturnValue({ execute }) const prepare = vi.fn().mockReturnValue({ sign }) +const create = vi.fn().mockReturnValue({ sign }) const sdk = { ledger: { @@ -27,6 +28,11 @@ const sdk = { rules: vi.fn(), }, }, + party: { + external: { + create, + }, + }, } export const mock = { @@ -34,4 +40,5 @@ export const mock = { prepare, sign, execute, + create, } diff --git a/examples/test-token-v1-registry/src/common/admin.test.ts b/examples/test-token-v1-registry/src/common/admin.test.ts new file mode 100644 index 000000000..adf7facee --- /dev/null +++ b/examples/test-token-v1-registry/src/common/admin.test.ts @@ -0,0 +1,36 @@ +// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it, vi, expect, afterEach } from 'vitest' +import { mock } from '../__test__/mocks' + +vi.mock('./sdk', () => ({ + default: mock.sdk, +})) + +const { initAdminParty, admin } = await import('./admin') + +describe('Admin', () => { + afterEach(() => { + vi.clearAllMocks() + }) + + it('should call for keys generation', () => { + expect(mock.sdk.keys.generate).toHaveBeenCalledOnce() + + expect(admin.keys).toStrictEqual(mock.sdk.keys.generate()) + }) + + it('should init admin party', async () => { + mock.execute.mockResolvedValueOnce({ + partyId: 'id', + }) + await initAdminParty() + + expect(mock.create).toHaveBeenCalledOnce() + expect(mock.sign).toHaveBeenCalledOnce() + expect(mock.execute).toHaveBeenCalledOnce() + + expect(admin.party).toBe('id') + }) +}) diff --git a/examples/test-token-v1-registry/src/common/admin.ts b/examples/test-token-v1-registry/src/common/admin.ts index fa220ccb0..85c258eca 100644 --- a/examples/test-token-v1-registry/src/common/admin.ts +++ b/examples/test-token-v1-registry/src/common/admin.ts @@ -11,7 +11,6 @@ export const admin = { export const initAdminParty = async () => { const createdParty = await sdk.party.external .create(admin.keys.publicKey, { - // isAdmin: true, partyHint: 'admin', }) .sign(admin.keys.privateKey) From 65a6409a08e3605534ed7a133aa8522c9073aad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 17 Jul 2026 19:12:13 +0200 Subject: [PATCH 26/28] docs(example-test-token-v1-registry): add api docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../src/api/allocation-instruction/getAllocationFactory.ts | 7 +++++++ .../src/api/allocation/getAllocationCancelContext.ts | 3 +++ .../src/api/allocation/getAllocationTransferContext.ts | 3 +++ .../src/api/allocation/getAllocationWithdrawContext.ts | 3 +++ .../src/api/metadata/getInstrument.ts | 6 ++++++ .../src/api/metadata/getRegistryInfo.ts | 3 +++ .../src/api/metadata/listInstruments.ts | 3 +++ .../src/api/transfer-instruction/getTransferFactory.ts | 7 +++++++ .../getTransferInstructionAcceptContext.ts | 3 +++ .../getTransferInstructionRejectContext.ts | 3 +++ .../getTransferInstructionWithdrawContext.ts | 3 +++ 11 files changed, 44 insertions(+) diff --git a/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts b/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts index efca1e649..a41bf3f06 100644 --- a/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts +++ b/examples/test-token-v1-registry/src/api/allocation-instruction/getAllocationFactory.ts @@ -14,6 +14,13 @@ export const GetTransferFactoryChoiceArguments = z.object({ receiver: z.string(), }) +/** + * Resolves or creates an allocation factory for initiating allocation workflows. + * + * @throws {400} When provided body request is invalid. + * @throws {500} when instantiating new allocation factory contract has failed. + * @returns Factory identifier with choice context on success. + */ export const getAllocationFactory: AllocationInstructionAPIHandler< 'getAllocationFactory' > = async (ctx) => { diff --git a/examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts b/examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts index 9cbcfb0a6..9d197d264 100644 --- a/examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts +++ b/examples/test-token-v1-registry/src/api/allocation/getAllocationCancelContext.ts @@ -4,6 +4,9 @@ import { emptyChoiceContext } from '../common' import { AllocationAPIHandler } from './common' +/** + * @returns Empty choice context payload for the allocation cancel operation. + */ export const getAllocationCancelContext: AllocationAPIHandler< 'getAllocationCancelContext' > = async () => { diff --git a/examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts b/examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts index 5269489bf..8f0699ea6 100644 --- a/examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts +++ b/examples/test-token-v1-registry/src/api/allocation/getAllocationTransferContext.ts @@ -4,6 +4,9 @@ import { emptyChoiceContext } from '../common' import { AllocationAPIHandler } from './common' +/** + * @returns Empty choice context payload for the allocation transfer operation. + */ export const getAllocationTransferContext: AllocationAPIHandler< 'getAllocationTransferContext' > = async () => { diff --git a/examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts b/examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts index 9fdcb7245..ff1d120c1 100644 --- a/examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts +++ b/examples/test-token-v1-registry/src/api/allocation/getAllocationWithdrawContext.ts @@ -4,6 +4,9 @@ import { emptyChoiceContext } from '../common' import { AllocationAPIHandler } from './common' +/** + * @returns Empty choice context payload for the allocation withdraw operation. + */ export const getAllocationWithdrawContext: AllocationAPIHandler< 'getAllocationWithdrawContext' > = async () => { diff --git a/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts index e9136f66b..09c2879f8 100644 --- a/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts +++ b/examples/test-token-v1-registry/src/api/metadata/getInstrument.ts @@ -3,6 +3,12 @@ import { instruments, MetadataAPIHandler } from './common' +/** + * Returns metadata for a single instrument identified by its instrument ID. + * + * @throws {494} When the instrument was not found. + * @returns Instrument metadata. + */ export const getInstrument: MetadataAPIHandler<'getInstrument'> = async ( ctx ) => { diff --git a/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts index 984b722cf..247d973a9 100644 --- a/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts +++ b/examples/test-token-v1-registry/src/api/metadata/getRegistryInfo.ts @@ -4,6 +4,9 @@ import { admin } from '../../common/admin' import { MetadataAPIHandler, supportedApis } from './common' +/** + * @returns API payload with registry info for token metadata clients. + */ export const getRegistryInfo: MetadataAPIHandler< 'getRegistryInfo' > = async () => { diff --git a/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts b/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts index f4781292d..0b6aad1e2 100644 --- a/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts +++ b/examples/test-token-v1-registry/src/api/metadata/listInstruments.ts @@ -3,6 +3,9 @@ import { instruments, MetadataAPIHandler } from './common' +/** + * @returns API payload containing the full in-memory list of instrument metadata. + */ export const listInstruments: MetadataAPIHandler< 'listInstruments' > = async () => { diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts index 4ee5a9268..0a3f66be0 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferFactory.ts @@ -17,6 +17,13 @@ export const GetTransferFactoryChoiceArguments = z.object({ ), }) +/** + * Resolves or creates a transfer factory for initiating transfer instruction workflows. + * + * @throws {400} When provided body request is invalid. + * @throws {500} when instantiating new allocation factory contract has failed. + * @returns Factory identifier, resolved transfer kind, and choice context on success. + */ export const getTransferFactory: TransferInstructionAPIHandler< 'getTransferFactory' > = async (ctx) => { diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts index 8407fee02..e3137e9f9 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionAcceptContext.ts @@ -4,6 +4,9 @@ import { emptyChoiceContext } from '../common' import { TransferInstructionAPIHandler } from './common' +/** + * @returns Empty choice context payload for the transfer accept operation. + */ export const getTransferInstructionAcceptContext: TransferInstructionAPIHandler< 'getTransferInstructionAcceptContext' > = async () => { diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts index 0ff4b8c2e..ffbdcf389 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionRejectContext.ts @@ -4,6 +4,9 @@ import { emptyChoiceContext } from '../common' import { TransferInstructionAPIHandler } from './common' +/** + * @returns Empty choice context payload for the transfer reject operation. + */ export const getTransferInstructionRejectContext: TransferInstructionAPIHandler< 'getTransferInstructionRejectContext' > = async () => { diff --git a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts index f9205fd8e..ffb645f95 100644 --- a/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts +++ b/examples/test-token-v1-registry/src/api/transfer-instruction/getTransferInstructionWithdrawContext.ts @@ -4,6 +4,9 @@ import { emptyChoiceContext } from '../common' import { TransferInstructionAPIHandler } from './common' +/** + * @returns Empty choice context payload for the transfer withdraw operation. + */ export const getTransferInstructionWithdrawContext: TransferInstructionAPIHandler< 'getTransferInstructionWithdrawContext' > = async () => { From a029128fbdf872ae42d8465cb15c6e4d3cc7da7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Fri, 17 Jul 2026 19:22:35 +0200 Subject: [PATCH 27/28] docs(example-test-token-v1-registry): add readme contents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- examples/test-token-v1-registry/README.md | 136 ++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/examples/test-token-v1-registry/README.md b/examples/test-token-v1-registry/README.md index ef4f25601..8fecf5833 100644 --- a/examples/test-token-v1-registry/README.md +++ b/examples/test-token-v1-registry/README.md @@ -1 +1,137 @@ # @canton-network/example-test-token-v1-registry + +Example backend registry implementation for CIP-0056 token flows on Canton. + +## Overall Description + +This project is a reference implementation of a token registry backend for the Test Token V1 standard. It exposes registry API endpoints for: + +- token metadata +- transfer instructions +- allocations +- allocation instructions + +Purpose: + +- provide a reusable second CIP-0056 test token backend (beyond Amulet) so application tests do not become Amulet-specific +- reduce duplication across teams by offering a shared, easy-to-deploy testing token instead of requiring each team to build a token from scratch +- modernize and harden the earlier prototype by aligning with current Wallet SDK usage and adding verification via automated tests +- provide practical coverage of registry-facing CIP-0056 workflows to complement on-ledger-only token examples + +## Getting Started + +### Prerequisites + +- Node.js 20+ +- Yarn 4.x +- dependencies installed at repository root +- local Canton/localnet setup if you want full end-to-end behavior + +### Installation + +From repository root: + +```bash +yarn install +``` + +Build only this example: + +```bash +yarn workspace @canton-network/example-test-token-v1-registry build +``` + +Run in development mode: + +```bash +yarn workspace @canton-network/example-test-token-v1-registry dev +``` + +The API listens on `http://localhost:3000`. + +## Project Structure + +### Local Structure Overview + +```text +examples/test-token-v1-registry/ + src/ + index.ts # app startup, admin init, dev vetting hook + router.ts # route prefix to API handler mapping + common/ + sdk.ts # Wallet SDK bootstrap/auth + admin.ts # admin party initialization + vetDaml.ts # dev-only DAR vetting helper + getOpenApiPath.ts # OpenAPI source path resolution + api/ + metadata/ # metadata endpoints + tests + transfer-instruction/ # transfer-instruction endpoints + tests + allocation/ # allocation endpoints + tests + allocation-instruction/ # allocation-instruction endpoints + tests + common.ts # shared API context typing helpers + openapi-ts/ # generated TypeScript types from OpenAPI + scripts/ + generateTypes.ts # regenerates openapi-ts bindings + __test__/ + mocks.ts # test mocks + vitest.config.ts # node+browser test projects and coverage + tsup.config.ts # build configuration + tsconfig.json +``` + +## Testing + +Run tests: + +```bash +yarn workspace @canton-network/example-test-token-v1-registry test +``` + +Run tests with coverage: + +```bash +yarn workspace @canton-network/example-test-token-v1-registry test:coverage +``` + +Notes: + +- tests are discovered under `src/**/*.test.ts` +- both node and browser projects are executed +- coverage thresholds are defined in `vitest.config.ts` + +## Development & Contribution Guide + +Development loop: + +1. Modify API handlers and domain logic in `src/api/**`. +2. If API specs change, regenerate types: + + ```bash + yarn workspace @canton-network/example-test-token-v1-registry generate:types + ``` + +3. Run tests and coverage. +4. Build before opening a PR. + +General contribution guidelines for the monorepo: [Contributing Guide](https://github.com/canton-network/wallet/blob/main/docs/CONTRIBUTING.md) + +## 6. License + +Apache-2.0 + +## 7. Additional Resources + +- [Wallet Repository](https://github.com/canton-network/wallet) +- [dApp Building Documentation](https://github.com/canton-network/wallet/tree/main/docs/dapp-building) +- [Wallet Integration Guide](https://github.com/canton-network/wallet/tree/main/docs/wallet-integration-guide) +- [CIP Repository (including CIP-0056 context)](https://github.com/canton-foundation/cips) + +## 8. Bug Reporting + +If you find a bug: + +1. Open an issue at: [canton-network/wallet issues](https://github.com/canton-network/wallet/issues) +1. Include reproduction steps, expected behavior, and actual behavior. +1. Attach logs and relevant request/response payloads when possible. + +If issue templates are available in the repository, prefer using the most specific template. From f1aab65636bd293d660a5bb3b281817f18fd82aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=85tkowski?= Date: Tue, 21 Jul 2026 10:15:02 +0200 Subject: [PATCH 28/28] chore: lint fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Piątkowski --- .../test-token-v1-registry/src/api/metadata/metadata.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/test-token-v1-registry/src/api/metadata/metadata.test.ts b/examples/test-token-v1-registry/src/api/metadata/metadata.test.ts index a628685cf..07f277af4 100644 --- a/examples/test-token-v1-registry/src/api/metadata/metadata.test.ts +++ b/examples/test-token-v1-registry/src/api/metadata/metadata.test.ts @@ -9,8 +9,7 @@ import { Operations } from '../../openapi-ts/token-metadata-v1' import { instruments, supportedApis } from './common' const emptyCtx = {} as Operations[ - | 'getRegistryInfo' - | 'listInstruments']['context'] + 'getRegistryInfo' | 'listInstruments']['context'] vi.mock('../../common/admin', () => ({ admin: {