From 474cc64f966ef5e3ca07cc425cae0399049f4e45 Mon Sep 17 00:00:00 2001 From: Keyu Wu Date: Tue, 9 Dec 2025 17:39:50 -0800 Subject: [PATCH] feat(smus): Upgrade sdk v2 to sdk v3 - SQLWorkbench --- package-lock.json | 1095 +++++++++ packages/core/package.json | 1 + .../scripts/build/generateServiceClient.ts | 4 - .../explorer/nodes/redshiftStrategy.ts | 2 +- .../shared/client/sqlWorkbenchClient.ts | 154 +- .../shared/client/sqlworkbench.json | 2102 ----------------- .../shared/client/sqlWorkbenchClient.test.ts | 80 +- src.gen/@amzn/sql-workbench-client/3.0.0.tgz | Bin 0 -> 89474 bytes 8 files changed, 1202 insertions(+), 2236 deletions(-) delete mode 100644 packages/core/src/sagemakerunifiedstudio/shared/client/sqlworkbench.json create mode 100644 src.gen/@amzn/sql-workbench-client/3.0.0.tgz diff --git a/package-lock.json b/package-lock.json index 0e5c8267d40..19d7e45ce8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1031,6 +1031,1100 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@amzn/sql-workbench-client": { + "name": "@amzn/sqlworkbench-client", + "version": "3.0.0", + "resolved": "file:src.gen/@amzn/sql-workbench-client/3.0.0.tgz", + "integrity": "sha512-k2sBdb9RhB9A7G1Mz+Jit0r+d8zxBSKxgjlPMavuWmafEIOZlARfM942VX3wtHfrZXfVzpY3cgt3Q5LlElm0YQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/credential-provider-node": "3.922.0", + "@aws-sdk/middleware-host-header": "3.922.0", + "@aws-sdk/middleware-logger": "3.922.0", + "@aws-sdk/middleware-recursion-detection": "3.922.0", + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/region-config-resolver": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@aws-sdk/util-user-agent-browser": "3.922.0", + "@aws-sdk/util-user-agent-node": "3.922.0", + "@smithy/config-resolver": "^4.4.2", + "@smithy/core": "^3.17.2", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/hash-node": "^4.2.4", + "@smithy/invalid-dependency": "^4.2.4", + "@smithy/middleware-content-length": "^4.2.4", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/middleware-retry": "^4.4.6", + "@smithy/middleware-serde": "^4.2.4", + "@smithy/middleware-stack": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.5", + "@smithy/util-defaults-mode-node": "^4.2.8", + "@smithy/util-endpoints": "^3.2.4", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-retry": "^4.2.4", + "@smithy/util-stream": "^4.5.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/client-sso": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.922.0.tgz", + "integrity": "sha512-jdHs7uy7cSpiMvrxhYmqHyJxgK7hyqw4plG8OQ4YTBpq0SbfAxdoOuOkwJ1IVUUQho4otR1xYYjiX/8e8J8qwQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/middleware-host-header": "3.922.0", + "@aws-sdk/middleware-logger": "3.922.0", + "@aws-sdk/middleware-recursion-detection": "3.922.0", + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/region-config-resolver": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@aws-sdk/util-user-agent-browser": "3.922.0", + "@aws-sdk/util-user-agent-node": "3.922.0", + "@smithy/config-resolver": "^4.4.1", + "@smithy/core": "^3.17.2", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/hash-node": "^4.2.4", + "@smithy/invalid-dependency": "^4.2.4", + "@smithy/middleware-content-length": "^4.2.4", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/middleware-retry": "^4.4.6", + "@smithy/middleware-serde": "^4.2.4", + "@smithy/middleware-stack": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.5", + "@smithy/util-defaults-mode-node": "^4.2.7", + "@smithy/util-endpoints": "^3.2.4", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-retry": "^4.2.4", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/core": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.922.0.tgz", + "integrity": "sha512-EvfP4cqJfpO3L2v5vkIlTkMesPtRwWlMfsaW6Tpfm7iYfBOuTi6jx60pMDMTyJNVfh6cGmXwh/kj1jQdR+w99Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@aws-sdk/xml-builder": "3.921.0", + "@smithy/core": "^3.17.2", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/signature-v4": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.922.0.tgz", + "integrity": "sha512-WikGQpKkROJSK3D3E7odPjZ8tU7WJp5/TgGdRuZw3izsHUeH48xMv6IznafpRTmvHcjAbDQj4U3CJZNAzOK/OQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.922.0.tgz", + "integrity": "sha512-i72DgHMK7ydAEqdzU0Duqh60Q8W59EZmRJ73y0Y5oFmNOqnYsAI+UXyOoCsubp+Dkr6+yOwAn1gPt1XGE9Aowg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/util-stream": "^4.5.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.922.0.tgz", + "integrity": "sha512-bVF+pI5UCLNkvbiZr/t2fgTtv84s8FCdOGAPxQiQcw5qOZywNuuCCY3wIIchmQr6GJr8YFkEp5LgDCac5EC5aQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/credential-provider-env": "3.922.0", + "@aws-sdk/credential-provider-http": "3.922.0", + "@aws-sdk/credential-provider-process": "3.922.0", + "@aws-sdk/credential-provider-sso": "3.922.0", + "@aws-sdk/credential-provider-web-identity": "3.922.0", + "@aws-sdk/nested-clients": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/credential-provider-imds": "^4.2.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.922.0.tgz", + "integrity": "sha512-agCwaD6mBihToHkjycL8ObIS2XOnWypWZZWhJSoWyHwFrhEKz1zGvgylK9Dc711oUfU+zU6J8e0JPKNJMNb3BQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.922.0", + "@aws-sdk/credential-provider-http": "3.922.0", + "@aws-sdk/credential-provider-ini": "3.922.0", + "@aws-sdk/credential-provider-process": "3.922.0", + "@aws-sdk/credential-provider-sso": "3.922.0", + "@aws-sdk/credential-provider-web-identity": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/credential-provider-imds": "^4.2.4", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.922.0.tgz", + "integrity": "sha512-1DZOYezT6okslpvMW7oA2q+y17CJd4fxjNFH0jtThfswdh9CtG62+wxenqO+NExttq0UMaKisrkZiVrYQBTShw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.922.0.tgz", + "integrity": "sha512-nbD3G3hShTYxLCkKMqLkLPtKwAAfxdY/k9jHtZmVBFXek2T6tQrqZHKxlAu+fd23Ga4/Aik7DLQQx1RA1a5ipg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.922.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/token-providers": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.922.0.tgz", + "integrity": "sha512-wjGIhgMHGGQfQTdFaJphNOKyAL8wZs6znJdHADPVURmgR+EWLyN/0fDO1u7wx8xaLMZpbHIFWBEvf9TritR/cQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/nested-clients": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.922.0.tgz", + "integrity": "sha512-HPquFgBnq/KqKRVkiuCt97PmWbKtxQ5iUNLEc6FIviqOoZTmaYG3EDsIbuFBz9C4RHJU4FKLmHL2bL3FEId6AA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/middleware-logger": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.922.0.tgz", + "integrity": "sha512-AkvYO6b80FBm5/kk2E636zNNcNgjztNNUxpqVx+huyGn9ZqGTzS4kLqW2hO6CBe5APzVtPCtiQsXL24nzuOlAg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.922.0.tgz", + "integrity": "sha512-TtSCEDonV/9R0VhVlCpxZbp/9sxQvTTRKzIf8LxW3uXpby6Wl8IxEciBJlxmSkoqxh542WRcko7NYODlvL/gDA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@aws/lambda-invoke-store": "^0.1.1", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.922.0.tgz", + "integrity": "sha512-N4Qx/9KP3oVQBJOrSghhz8iZFtUC2NNeSZt88hpPhbqAEAtuX8aD8OzVcpnAtrwWqy82Yd2YTxlkqMGkgqnBsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@smithy/core": "^3.17.2", + "@smithy/protocol-http": "^5.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/nested-clients": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.922.0.tgz", + "integrity": "sha512-uYvKCF1TGh/MuJ4TMqmUM0Csuao02HawcseG4LUDyxdUsd/EFuxalWq1Cx4fKZQ2K8F504efZBjctMAMNY+l7A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.922.0", + "@aws-sdk/middleware-host-header": "3.922.0", + "@aws-sdk/middleware-logger": "3.922.0", + "@aws-sdk/middleware-recursion-detection": "3.922.0", + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/region-config-resolver": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@aws-sdk/util-endpoints": "3.922.0", + "@aws-sdk/util-user-agent-browser": "3.922.0", + "@aws-sdk/util-user-agent-node": "3.922.0", + "@smithy/config-resolver": "^4.4.1", + "@smithy/core": "^3.17.2", + "@smithy/fetch-http-handler": "^5.3.5", + "@smithy/hash-node": "^4.2.4", + "@smithy/invalid-dependency": "^4.2.4", + "@smithy/middleware-content-length": "^4.2.4", + "@smithy/middleware-endpoint": "^4.3.6", + "@smithy/middleware-retry": "^4.4.6", + "@smithy/middleware-serde": "^4.2.4", + "@smithy/middleware-stack": "^4.2.4", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/node-http-handler": "^4.4.4", + "@smithy/protocol-http": "^5.3.4", + "@smithy/smithy-client": "^4.9.2", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.5", + "@smithy/util-defaults-mode-node": "^4.2.7", + "@smithy/util-endpoints": "^3.2.4", + "@smithy/util-middleware": "^4.2.4", + "@smithy/util-retry": "^4.2.4", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.922.0.tgz", + "integrity": "sha512-44Y/rNNwhngR2KHp6gkx//TOr56/hx6s4l+XLjOqH7EBCHL7XhnrT1y92L+DLiroVr1tCSmO8eHQwBv0Y2+mvw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/config-resolver": "^4.4.1", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/token-providers": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.922.0.tgz", + "integrity": "sha512-/inmPnjZE0ZBE16zaCowAvouSx05FJ7p6BQYuzlJ8vxEU0sS0Hf8fvhuiRnN9V9eDUPIBY+/5EjbMWygXL4wlQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.922.0", + "@aws-sdk/nested-clients": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/property-provider": "^4.2.4", + "@smithy/shared-ini-file-loader": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/types": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.922.0.tgz", + "integrity": "sha512-eLA6XjVobAUAMivvM7DBL79mnHyrm+32TkXNWZua5mnxF+6kQCfblKKJvxMZLGosO53/Ex46ogim8IY5Nbqv2w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/util-endpoints": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.922.0.tgz", + "integrity": "sha512-4ZdQCSuNMY8HMlR1YN4MRDdXuKd+uQTeKIr5/pIM+g3TjInZoj8imvXudjcrFGA63UF3t92YVTkBq88mg58RXQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "@smithy/url-parser": "^4.2.4", + "@smithy/util-endpoints": "^3.2.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.922.0.tgz", + "integrity": "sha512-qOJAERZ3Plj1st7M4Q5henl5FRpE30uLm6L9edZqZXGR6c7ry9jzexWamWVpQ4H4xVAVmiO9dIEBAfbq4mduOA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.922.0", + "@smithy/types": "^4.8.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.922.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.922.0.tgz", + "integrity": "sha512-NrPe/Rsr5kcGunkog0eBV+bY0inkRELsD2SacC4lQZvZiXf8VJ2Y7j+Yq1tB+h+FPLsdt3v9wItIvDf/laAm0Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.922.0", + "@aws-sdk/types": "3.922.0", + "@smithy/node-config-provider": "^4.3.4", + "@smithy/types": "^4.8.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws-sdk/xml-builder": { + "version": "3.921.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.921.0.tgz", + "integrity": "sha512-LVHg0jgjyicKKvpNIEMXIMr1EBViESxcPkqfOlT+X1FkmUMTNZEEVF18tOJg4m4hV5vxtkWcqtr4IEeWa1C41Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.8.1", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@aws/lambda-invoke-store": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", + "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/config-resolver": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/core": { + "version": "3.18.7", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.7.tgz", + "integrity": "sha512-axG9MvKhMWOhFbvf5y2DuyTxQueO0dkedY9QC3mAfndLosRI/9LJv8WaL0mw7ubNhsO4IuXX9/9dYGPFvHrqlw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.6", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/hash-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/invalid-dependency": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/middleware-content-length": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/middleware-endpoint": { + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.14.tgz", + "integrity": "sha512-v0q4uTKgBM8dsqGjqsabZQyH85nFaTnFcgpWU1uydKFsdyyMzfvOkNum9G7VK+dOP01vUnoZxIeRiJ6uD0kjIg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.7", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/middleware-retry": { + "version": "4.4.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.14.tgz", + "integrity": "sha512-Z2DG8Ej7FyWG1UA+7HceINtSLzswUgs2np3sZX0YBBxCt+CXG4QUxv88ZDS3+2/1ldW7LqtSY1UO/6VQ1pND8Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.10", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/middleware-serde": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", + "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/middleware-stack": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/property-provider": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/protocol-http": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/querystring-builder": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/querystring-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/service-error-classification": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/signature-v4": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/smithy-client": { + "version": "4.9.10", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.10.tgz", + "integrity": "sha512-Jaoz4Jw1QYHc1EFww/E6gVtNjhoDU+gwRKqXP6C3LKYqqH2UQhP8tMP3+t/ePrhaze7fhLE8vS2q6vVxBANFTQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.7", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/url-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.13.tgz", + "integrity": "sha512-hlVLdAGrVfyNei+pKIgqDTxfu/ZI2NSyqj4IDxKd5bIsIqwR/dSlkxlPaYxFiIaDVrBy0he8orsFy+Cz119XvA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.10", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.16.tgz", + "integrity": "sha512-F1t22IUiJLHrxW9W1CQ6B9PN+skZ9cqSuzB18Eh06HrJPbjsyZ7ZHecAKw80DQtyGTRcVfeukKaCRYebFwclbg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.10", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-endpoints": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-middleware": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-retry": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-stream": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@amzn/sql-workbench-client/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "license": "Apache-2.0", @@ -40246,6 +41340,7 @@ "@amzn/amazon-q-developer-streaming-client": "file:../../src.gen/@amzn/amazon-q-developer-streaming-client", "@amzn/codewhisperer-streaming": "file:../../src.gen/@amzn/codewhisperer-streaming", "@amzn/sagemaker-client": "file:../../src.gen/@amzn/sagemaker-client/1.0.0.tgz", + "@amzn/sql-workbench-client": "file:../../src.gen/@amzn/sql-workbench-client/3.0.0.tgz", "@aws-sdk/client-accessanalyzer": "^3.888.0", "@aws-sdk/client-api-gateway": "<3.731.0", "@aws-sdk/client-apprunner": "<3.731.0", diff --git a/packages/core/package.json b/packages/core/package.json index c8ede330efb..bec9cee6fff 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -581,6 +581,7 @@ "@amzn/amazon-q-developer-streaming-client": "file:../../src.gen/@amzn/amazon-q-developer-streaming-client", "@amzn/codewhisperer-streaming": "file:../../src.gen/@amzn/codewhisperer-streaming", "@amzn/sagemaker-client": "file:../../src.gen/@amzn/sagemaker-client/1.0.0.tgz", + "@amzn/sql-workbench-client": "file:../../src.gen/@amzn/sql-workbench-client/3.0.0.tgz", "@aws-sdk/client-accessanalyzer": "^3.888.0", "@aws-sdk/client-api-gateway": "<3.731.0", "@aws-sdk/client-apprunner": "<3.731.0", diff --git a/packages/core/scripts/build/generateServiceClient.ts b/packages/core/scripts/build/generateServiceClient.ts index ac46c307a0f..410a4a5d16c 100644 --- a/packages/core/scripts/build/generateServiceClient.ts +++ b/packages/core/scripts/build/generateServiceClient.ts @@ -245,10 +245,6 @@ void (async () => { serviceJsonPath: 'src/sagemakerunifiedstudio/shared/client/gluecatalogapi.json', serviceName: 'GlueCatalogApi', }, - { - serviceJsonPath: 'src/sagemakerunifiedstudio/shared/client/sqlworkbench.json', - serviceName: 'SQLWorkbench', - }, { serviceJsonPath: 'src/sagemakerunifiedstudio/shared/client/datazonecustomclient.json', serviceName: 'DataZoneCustomClient', diff --git a/packages/core/src/sagemakerunifiedstudio/explorer/nodes/redshiftStrategy.ts b/packages/core/src/sagemakerunifiedstudio/explorer/nodes/redshiftStrategy.ts index 00e1e74f19c..66a9e20e23f 100644 --- a/packages/core/src/sagemakerunifiedstudio/explorer/nodes/redshiftStrategy.ts +++ b/packages/core/src/sagemakerunifiedstudio/explorer/nodes/redshiftStrategy.ts @@ -458,7 +458,7 @@ function createSchemaNode(schemaName: string, connectionConfig: ConnectionConfig parentType: ResourceType.SCHEMA, }, { - parentId: schemaConnectionConfig.database, + parentId: schemaConnectionConfig.database || '', parentType: ResourceType.DATABASE, }, ], diff --git a/packages/core/src/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.ts b/packages/core/src/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.ts index 76527d1d622..d9d3d853b80 100644 --- a/packages/core/src/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.ts +++ b/packages/core/src/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.ts @@ -3,40 +3,28 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { Service } from 'aws-sdk' -import { ServiceConfigurationOptions } from 'aws-sdk/lib/service' -import globals from '../../../shared/extensionGlobals' import { getLogger } from '../../../shared/logger/logger' -import * as SQLWorkbench from './sqlworkbench' -import apiConfig = require('./sqlworkbench.json') +import { + SQLWorkbench, + GetResourcesCommand, + ExecuteQueryCommand, + GetResourcesRequest, + GetResourcesResponse, + ExecuteQueryRequest, + DatabaseConnectionConfiguration, + ParentResource, + DatabaseIntegrationConnectionAuthenticationTypes, +} from '@amzn/sql-workbench-client' import { v4 as uuidv4 } from 'uuid' import { getRedshiftTypeFromHost } from '../../explorer/nodes/utils' -import { DatabaseIntegrationConnectionAuthenticationTypes, RedshiftType } from '../../explorer/nodes/types' +import { RedshiftType } from '../../explorer/nodes/types' import { ConnectionCredentialsProvider } from '../../auth/providers/connectionCredentialsProvider' -import { adaptConnectionCredentialsProvider } from './credentialsAdapter' /** * Connection configuration for SQL Workbench + * This is an alias for the SDK's DatabaseConnectionConfiguration type */ -export interface ConnectionConfig { - id: string - type: string - databaseType: string - connectableResourceIdentifier: string - connectableResourceType: string - database: string - auth?: { - secretArn?: string - } -} - -/** - * Resource parent information - */ -export interface ParentResource { - parentId: string - parentType: string -} +export type ConnectionConfig = DatabaseConnectionConfiguration /** * Gets a SQL Workbench ARN @@ -89,7 +77,7 @@ export async function createRedshiftConnectionConfig( } // Determine auth type based on the provided parameters - let authType: string + let authType: DatabaseIntegrationConnectionAuthenticationTypes if (secretArn) { authType = DatabaseIntegrationConnectionAuthenticationTypes.SECRET @@ -118,11 +106,7 @@ export async function createRedshiftConnectionConfig( } // Add auth object for SECRET authentication type - if ( - (authType as DatabaseIntegrationConnectionAuthenticationTypes) === - DatabaseIntegrationConnectionAuthenticationTypes.SECRET && - secretArn - ) { + if (authType === DatabaseIntegrationConnectionAuthenticationTypes.SECRET && secretArn) { connectionConfig.auth = { secretArn } } @@ -177,7 +161,7 @@ export class SQLWorkbenchClient { /** * Gets resources from SQL Workbench * @param params Request parameters - * @returns Raw response from getResources API + * @returns Response containing resources and optional next token */ public async getResources(params: { connection: ConnectionConfig @@ -187,13 +171,13 @@ export class SQLWorkbenchClient { parents?: ParentResource[] pageToken?: string forceRefresh?: boolean - }): Promise { + }): Promise { try { this.logger.info(`SQLWorkbenchClient: Getting resources in region ${this.region}`) const sqlClient = await this.getSQLClient() - const requestParams = { + const requestParams: GetResourcesRequest = { connection: params.connection, type: params.resourceType, maxItems: params.maxItems || 100, @@ -203,13 +187,9 @@ export class SQLWorkbenchClient { accountSettings: {}, } - // Call the GetResources API - const response = await sqlClient.getResources(requestParams).promise() - - return { - resources: response.resources || [], - nextToken: response.nextToken, - } + // Call the GetResources API using SDK v3 Command pattern + const command = new GetResourcesCommand(requestParams) + return await sqlClient.send(command) } catch (err) { this.logger.error('SQLWorkbenchClient: Failed to get resources: %s', err as Error) throw err @@ -228,26 +208,27 @@ export class SQLWorkbenchClient { const sqlClient = await this.getSQLClient() - // Call the ExecuteQuery API - const response = await sqlClient - .executeQuery({ - connection: connectionConfig as any, - databaseType: 'REDSHIFT', - accountSettings: {}, - executionContext: [ - { - parentType: 'DATABASE', - parentId: connectionConfig.database || '', - }, - ], - query, - queryExecutionType: 'NO_SESSION', - queryResponseDeliveryType: 'ASYNC', - maxItems: 100, - ignoreHistory: true, - tabId: 'data_explorer', - }) - .promise() + const requestParams: ExecuteQueryRequest = { + connection: connectionConfig, + databaseType: 'REDSHIFT', + accountSettings: {}, + executionContext: [ + { + parentType: 'DATABASE', + parentId: connectionConfig.database || '', + }, + ], + query, + queryExecutionType: 'NO_SESSION', + queryResponseDeliveryType: 'ASYNC', + maxItems: 100, + ignoreHistory: true, + tabId: 'data_explorer', + } + + // Call the ExecuteQuery API using SDK v3 Command pattern + const command = new ExecuteQueryCommand(requestParams) + const response = await sqlClient.send(command) // Log the response this.logger.info( @@ -261,9 +242,6 @@ export class SQLWorkbenchClient { } } - /** - * Gets the SQL client, initializing it if necessary - */ /** * Gets the SQL Workbench endpoint URL for the given region * @param region AWS region @@ -273,6 +251,9 @@ export class SQLWorkbenchClient { return `https://api-v2.sqlworkbench.${region}.amazonaws.com` } + /** + * Gets the SQL client, initializing it if necessary + */ private async getSQLClient(): Promise { if (!this.sqlClient) { try { @@ -281,30 +262,27 @@ export class SQLWorkbenchClient { this.logger.info(`Using SQL Workbench endpoint: ${endpoint}`) if (this.connectionCredentialsProvider) { - // Create client with provided credentials - this.sqlClient = (await globals.sdkClientBuilder.createAwsService( - Service, - { - apiConfig: apiConfig, - region: this.region, - endpoint: endpoint, - credentialProvider: adaptConnectionCredentialsProvider(this.connectionCredentialsProvider), - } as ServiceConfigurationOptions, - undefined, - false - )) as SQLWorkbench + // Create client with credential provider function for auto-refresh + const awsCredentialProvider = async () => { + const credentials = await this.connectionCredentialsProvider!.getCredentials() + return { + accessKeyId: credentials.accessKeyId, + secretAccessKey: credentials.secretAccessKey, + sessionToken: credentials.sessionToken, + expiration: credentials.expiration, + } + } + this.sqlClient = new SQLWorkbench({ + region: this.region, + endpoint: endpoint, + credentials: awsCredentialProvider, + }) } else { - // Use the SDK client builder for default credentials - this.sqlClient = (await globals.sdkClientBuilder.createAwsService( - Service, - { - apiConfig: apiConfig, - region: this.region, - endpoint: endpoint, - } as ServiceConfigurationOptions, - undefined, - false - )) as SQLWorkbench + // Use default credentials + this.sqlClient = new SQLWorkbench({ + region: this.region, + endpoint: endpoint, + }) } this.logger.debug('SQLWorkbenchClient: Successfully created SQL client') diff --git a/packages/core/src/sagemakerunifiedstudio/shared/client/sqlworkbench.json b/packages/core/src/sagemakerunifiedstudio/shared/client/sqlworkbench.json deleted file mode 100644 index e403ec34a88..00000000000 --- a/packages/core/src/sagemakerunifiedstudio/shared/client/sqlworkbench.json +++ /dev/null @@ -1,2102 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2024-02-12", - "auth": ["aws.auth#sigv4"], - "endpointPrefix": "sqlworkbench", - "protocol": "rest-json", - "protocols": ["rest-json"], - "serviceFullName": "AmazonSQLWorkbench", - "serviceId": "SQLWorkbench", - "signatureVersion": "v4", - "signingName": "sqlworkbench", - "uid": "sqlworkbench-2024-02-12" - }, - "operations": { - "CancelQueries": { - "name": "CancelQueries", - "http": { - "method": "POST", - "requestUri": "/database/cancelQueries", - "responseCode": 200 - }, - "input": { "shape": "CancelQueriesRequest" }, - "output": { "shape": "CancelQueriesResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "CreateConnection": { - "name": "CreateConnection", - "http": { - "method": "PUT", - "requestUri": "/connections", - "responseCode": 200 - }, - "input": { "shape": "CreateConnectionRequest" }, - "output": { "shape": "CreateConnectionResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "DeleteConnection": { - "name": "DeleteConnection", - "http": { - "method": "DELETE", - "requestUri": "/connections/{connectionId}", - "responseCode": 200 - }, - "input": { "shape": "DeleteConnectionRequest" }, - "output": { "shape": "DeleteConnectionResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "ExecuteQuery": { - "name": "ExecuteQuery", - "http": { - "method": "POST", - "requestUri": "/database/executeQuery", - "responseCode": 200 - }, - "input": { "shape": "ExecuteQueryRequest" }, - "output": { "shape": "ExecuteQueryResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "ExportQueryResults": { - "name": "ExportQueryResults", - "http": { - "method": "POST", - "requestUri": "/database/exportResults", - "responseCode": 200 - }, - "input": { "shape": "ExportQueryResultsRequest" }, - "output": { "shape": "ExportQueryResultsResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "GetConnectableResources": { - "name": "GetConnectableResources", - "http": { - "method": "POST", - "requestUri": "/database/getConnectableResources", - "responseCode": 200 - }, - "input": { "shape": "GetConnectableResourcesRequest" }, - "output": { "shape": "GetConnectableResourcesResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "GetConnection": { - "name": "GetConnection", - "http": { - "method": "GET", - "requestUri": "/connections/{connectionId}", - "responseCode": 200 - }, - "input": { "shape": "GetConnectionRequest" }, - "output": { "shape": "GetConnectionResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "GetDatabaseConfigurations": { - "name": "GetDatabaseConfigurations", - "http": { - "method": "POST", - "requestUri": "/database/configurations", - "responseCode": 200 - }, - "input": { "shape": "GetDatabaseConfigurationsRequest" }, - "output": { "shape": "GetDatabaseConfigurationsResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "GetQueryExecutionHistory": { - "name": "GetQueryExecutionHistory", - "http": { - "method": "POST", - "requestUri": "/queryExecutionHistory/details", - "responseCode": 200 - }, - "input": { "shape": "GetQueryExecutionHistoryRequest" }, - "output": { "shape": "GetQueryExecutionHistoryResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "GetQueryResult": { - "name": "GetQueryResult", - "http": { - "method": "POST", - "requestUri": "/database/getQueryResults", - "responseCode": 200 - }, - "input": { "shape": "GetQueryResultRequest" }, - "output": { "shape": "GetQueryResultResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "GetResources": { - "name": "GetResources", - "http": { - "method": "POST", - "requestUri": "/database/getResources", - "responseCode": 200 - }, - "input": { "shape": "GetResourcesRequest" }, - "output": { "shape": "GetResourcesResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "GetTabStates": { - "name": "GetTabStates", - "http": { - "method": "POST", - "requestUri": "/tab/state", - "responseCode": 200 - }, - "input": { "shape": "GetTabStatesRequest" }, - "output": { "shape": "GetTabStatesResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "ListQueryExecutionHistory": { - "name": "ListQueryExecutionHistory", - "http": { - "method": "POST", - "requestUri": "/queryExecutionHistory/list", - "responseCode": 200 - }, - "input": { "shape": "ListQueryExecutionHistoryRequest" }, - "output": { "shape": "ListQueryExecutionHistoryResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "ListTagsForResource": { - "name": "ListTagsForResource", - "http": { - "method": "GET", - "requestUri": "/tags/{resourceArn}", - "responseCode": 200 - }, - "input": { "shape": "ListTagsForResourceRequest" }, - "output": { "shape": "ListTagsForResourceResponse" }, - "errors": [ - { "shape": "BadRequestError" }, - { "shape": "ThrottlingException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "PollQueryExecutionEvents": { - "name": "PollQueryExecutionEvents", - "http": { - "method": "POST", - "requestUri": "/database/pollQueryExecutionEvents", - "responseCode": 200 - }, - "input": { "shape": "PollQueryExecutionEventsRequest" }, - "output": { "shape": "PollQueryExecutionEventsResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "BadRequestError" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "TagResource": { - "name": "TagResource", - "http": { - "method": "POST", - "requestUri": "/tags/{resourceArn}", - "responseCode": 204 - }, - "input": { "shape": "TagResourceRequest" }, - "output": { "shape": "TagResourceResponse" }, - "errors": [ - { "shape": "BadRequestError" }, - { "shape": "ThrottlingException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "UntagResource": { - "name": "UntagResource", - "http": { - "method": "DELETE", - "requestUri": "/tags/{resourceArn}", - "responseCode": 204 - }, - "input": { "shape": "UntagResourceRequest" }, - "output": { "shape": "UntagResourceResponse" }, - "errors": [ - { "shape": "BadRequestError" }, - { "shape": "ThrottlingException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ], - "idempotent": true - }, - "UpdateConnection": { - "name": "UpdateConnection", - "http": { - "method": "POST", - "requestUri": "/connections", - "responseCode": 200 - }, - "input": { "shape": "UpdateConnectionRequest" }, - "output": { "shape": "UpdateConnectionResponse" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "ConflictException" }, - { "shape": "InternalServerError" }, - { "shape": "ValidationException" } - ] - }, - "VerifyResourcesExistForTagris": { - "name": "VerifyResourcesExistForTagris", - "http": { - "method": "POST", - "requestUri": "/verifyResourcesExistForTagris", - "responseCode": 200 - }, - "input": { "shape": "TagrisVerifyResourcesExistInput" }, - "output": { "shape": "TagrisVerifyResourcesExistOutput" }, - "errors": [ - { "shape": "ThrottlingException" }, - { "shape": "InternalServerError" }, - { "shape": "TagrisInvalidParameterException" }, - { "shape": "TagrisAccessDeniedException" }, - { "shape": "TagrisInvalidArnException" }, - { "shape": "ResourceNotFoundException" }, - { "shape": "TagrisInternalServiceException" }, - { "shape": "ServiceQuotaExceededException" }, - { "shape": "AccessDeniedException" }, - { "shape": "TagrisPartialResourcesExistResultsException" }, - { "shape": "TagrisThrottledException" }, - { "shape": "ConflictException" }, - { "shape": "ValidationException" } - ] - } - }, - "shapes": { - "AccessDeniedException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 403, - "senderFault": true - }, - "exception": true - }, - "AckIds": { - "type": "list", - "member": { "shape": "AckIdsMemberString" } - }, - "AckIdsMemberString": { - "type": "string", - "max": 100, - "min": 0 - }, - "Arn": { - "type": "string", - "max": 1011, - "min": 20 - }, - "AvailableConnectionConfigurationOptions": { - "type": "list", - "member": { "shape": "AvailableConnectionConfigurationOptionsMemberString" } - }, - "AvailableConnectionConfigurationOptionsMemberString": { - "type": "string", - "max": 50, - "min": 0 - }, - "BadRequestError": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 400, - "senderFault": true - }, - "exception": true - }, - "Boolean": { - "type": "boolean", - "box": true - }, - "CancelQueriesRequest": { - "type": "structure", - "required": ["queryExecutionIds", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "queryExecutionIds": { "shape": "CancelQueriesRequestQueryExecutionIdsList" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - } - } - }, - "CancelQueriesRequestQueryExecutionIdsList": { - "type": "list", - "member": { "shape": "CancelQueriesRequestQueryExecutionIdsListMemberString" }, - "max": 100, - "min": 1 - }, - "CancelQueriesRequestQueryExecutionIdsListMemberString": { - "type": "string", - "max": 100, - "min": 1 - }, - "CancelQueriesResponse": { - "type": "structure", - "required": ["cancelQueryResponses"], - "members": { - "cancelQueryResponses": { "shape": "CancelQueryResponses" } - } - }, - "CancelQueryResponse": { - "type": "structure", - "required": ["queryExecutionId"], - "members": { - "queryExecutionId": { "shape": "CancelQueryResponseQueryExecutionIdString" }, - "queryCancellationStatus": { "shape": "QueryCancellationStatus" } - } - }, - "CancelQueryResponseQueryExecutionIdString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CancelQueryResponses": { - "type": "list", - "member": { "shape": "CancelQueryResponse" } - }, - "ChildObjectTypes": { - "type": "list", - "member": { "shape": "ChildObjectTypesMemberString" } - }, - "ChildObjectTypesMemberString": { - "type": "string", - "max": 50, - "min": 0 - }, - "Columns": { - "type": "list", - "member": { "shape": "QueryResultCellValue" } - }, - "ConflictException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 409, - "senderFault": true - }, - "exception": true - }, - "ConnectableResource": { - "type": "structure", - "required": ["displayName", "identifier", "childObjectTypes", "availableConnectionConfigurationOptions"], - "members": { - "displayName": { "shape": "ResourceDisplayName" }, - "identifier": { "shape": "ResourceIdentifier" }, - "type": { "shape": "ConnectableResourceTypeString" }, - "unavailable": { "shape": "Boolean" }, - "tooltipTranslationKey": { "shape": "ConnectableResourceTooltipTranslationKeyString" }, - "childObjectTypes": { "shape": "ChildObjectTypes" }, - "availableConnectionConfigurationOptions": { "shape": "AvailableConnectionConfigurationOptions" } - } - }, - "ConnectableResourceTooltipTranslationKeyString": { - "type": "string", - "max": 50, - "min": 0 - }, - "ConnectableResourceTypeString": { - "type": "string", - "max": 50, - "min": 0 - }, - "ConnectableResourceTypes": { - "type": "list", - "member": { "shape": "ConnectableResourceTypesMemberString" } - }, - "ConnectableResourceTypesMemberString": { - "type": "string", - "max": 50, - "min": 0 - }, - "ConnectableResources": { - "type": "list", - "member": { "shape": "ConnectableResource" } - }, - "Connection": { - "type": "structure", - "members": { - "id": { - "shape": "String", - "documentation": "

Id of the connection

" - }, - "name": { - "shape": "ConnectionName", - "documentation": "

Name of the connection

" - }, - "authenticationType": { - "shape": "ConnectionAuthenticationTypes", - "documentation": "

Number representing the type of authentication to use (2 = IAM, 3 = Username and Password). Today we only support the types 2 and 3

" - }, - "secretArn": { - "shape": "String", - "documentation": "

Secret that is linked to this connection

" - }, - "databaseName": { - "shape": "DatabaseName", - "documentation": "

Name of the database where the query is run

" - }, - "clusterId": { - "shape": "String", - "documentation": "

Id of the cluster of the connection

" - }, - "dbUser": { - "shape": "DbUser", - "documentation": "

User of the database

" - }, - "isServerless": { "shape": "Boolean" }, - "isProd": { "shape": "String" }, - "isEnabled": { "shape": "String" }, - "userSettings": { "shape": "UserSettings" }, - "recordDate": { "shape": "String" }, - "updatedDate": { "shape": "String" }, - "tags": { "shape": "Tags" }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceType": { "shape": "String" }, - "connectableResourceIdentifier": { "shape": "ResourceIdentifier" } - } - }, - "ConnectionAuthenticationTypes": { - "type": "string", - "enum": ["2", "3", "4", "5", "6", "7", "8"], - "sensitive": true - }, - "ConnectionName": { - "type": "string", - "sensitive": true - }, - "ConnectionProperties": { - "type": "map", - "key": { "shape": "ConnectionPropertyKey" }, - "value": { "shape": "ConnectionPropertyValue" }, - "max": 50, - "min": 1 - }, - "ConnectionPropertyKey": { - "type": "string", - "max": 1000, - "min": 1 - }, - "ConnectionPropertyValue": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequest": { - "type": "structure", - "required": ["name", "databaseName", "authenticationType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "name": { - "shape": "CreateConnectionRequestNameString", - "documentation": "

Name of the connection

" - }, - "databaseName": { - "shape": "CreateConnectionRequestDatabaseNameString", - "documentation": "

Name of the database used for this connection

" - }, - "authenticationType": { - "shape": "CreateConnectionRequestAuthenticationTypeEnum", - "documentation": "

Number representing the type of authentication to use (2 = IAM, 3 = Username and Password, 4 = Federated connection)

" - }, - "isProd": { "shape": "CreateConnectionRequestIsProdString" }, - "userSettings": { "shape": "UserSettings" }, - "secretArn": { - "shape": "CreateConnectionRequestSecretArnString", - "documentation": "

secretArn for redshift cluster

" - }, - "clusterId": { - "shape": "CreateConnectionRequestClusterIdString", - "documentation": "

Id of the cluster used for this connection

" - }, - "isServerless": { - "shape": "Boolean", - "documentation": "

Is serverless connection

" - }, - "dbUser": { - "shape": "DbUser", - "documentation": "

User of the database used for this connection

" - }, - "isStoreNewSecret": { "shape": "CreateConnectionRequestIsStoreNewSecretString" }, - "username": { - "shape": "DbUser", - "documentation": "

Username used in the Username_Password connection type

" - }, - "password": { - "shape": "CreateConnectionRequestPasswordString", - "documentation": "

Password of the user used for this connection

" - }, - "tags": { "shape": "Tags" }, - "host": { - "shape": "CreateConnectionRequestHostString", - "documentation": "

Host address used for creating secret for Username_Password connection type

" - }, - "secretName": { "shape": "CreateConnectionRequestSecretNameString" }, - "description": { "shape": "CreateConnectionRequestDescriptionString" }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceIdentifier": { - "shape": "CreateConnectionRequestConnectableResourceIdentifierString", - "documentation": "

Id of the connectable resource used for this connection

" - }, - "connectableResourceType": { - "shape": "CreateConnectionRequestConnectableResourceTypeString", - "documentation": "

Type of the connectable resource used for this connection

" - } - } - }, - "CreateConnectionRequestAuthenticationTypeEnum": { - "type": "string", - "enum": ["2", "3", "4", "5", "6", "7", "8"], - "max": 1, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestClusterIdString": { - "type": "string", - "max": 63, - "min": 1 - }, - "CreateConnectionRequestConnectableResourceIdentifierString": { - "type": "string", - "max": 63, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestConnectableResourceTypeString": { - "type": "string", - "max": 63, - "min": 1 - }, - "CreateConnectionRequestDatabaseNameString": { - "type": "string", - "max": 64, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestDescriptionString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestHostString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestIsProdString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestIsStoreNewSecretString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestNameString": { - "type": "string", - "max": 512, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestPasswordString": { - "type": "string", - "max": 64, - "min": 8, - "sensitive": true - }, - "CreateConnectionRequestSecretArnString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "CreateConnectionRequestSecretNameString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionResponse": { - "type": "structure", - "members": { - "data": { "shape": "Connection" } - } - }, - "DatabaseAuthenticationMethod": { - "type": "string", - "enum": ["USERNAME_PASSWORD", "TEMPORARY_CREDENTIALS_WITH_IAM"] - }, - "DatabaseAuthenticationMethods": { - "type": "list", - "member": { "shape": "DatabaseAuthenticationMethod" } - }, - "DatabaseAuthenticationOption": { - "type": "structure", - "required": ["connectableResourceType", "authenticationMethods"], - "members": { - "connectableResourceType": { "shape": "String" }, - "authenticationMethods": { "shape": "DatabaseAuthenticationMethods" } - } - }, - "DatabaseAuthenticationOptions": { - "type": "list", - "member": { "shape": "DatabaseAuthenticationOption" } - }, - "DatabaseConfiguration": { - "type": "structure", - "required": [ - "databaseType", - "authenticationOptions", - "connectableResourceTypes", - "sessionSupported", - "eventAcknowledgementSupported", - "appendingLimitToQuerySupported", - "queryStatsSupported" - ], - "members": { - "databaseType": { "shape": "DatabaseType" }, - "authenticationOptions": { "shape": "DatabaseAuthenticationOptions" }, - "connectableResourceTypes": { "shape": "ConnectableResourceTypes" }, - "sessionSupported": { "shape": "Boolean" }, - "eventAcknowledgementSupported": { "shape": "Boolean" }, - "appendingLimitToQuerySupported": { "shape": "Boolean" }, - "queryStatsSupported": { "shape": "Boolean" } - } - }, - "DatabaseConfigurations": { - "type": "list", - "member": { "shape": "DatabaseConfiguration" } - }, - "DatabaseConnectionAccountSettings": { - "type": "structure", - "members": { - "masterKeyArn": { "shape": "KmsKeyArn" } - } - }, - "DatabaseConnectionConfiguration": { - "type": "structure", - "required": ["id", "type", "databaseType", "connectableResourceIdentifier", "connectableResourceType"], - "members": { - "id": { "shape": "DatabaseConnectionConfigurationIdString" }, - "type": { "shape": "DatabaseIntegrationConnectionAuthenticationTypes" }, - "auth": { "shape": "DatabaseConnectionConfigurationAuth" }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceIdentifier": { "shape": "ResourceIdentifier" }, - "connectableResourceType": { "shape": "DatabaseConnectionConfigurationConnectableResourceTypeString" }, - "database": { "shape": "DatabaseName" } - } - }, - "DatabaseConnectionConfigurationAuth": { - "type": "structure", - "members": { - "secretArn": { "shape": "SecretKeyArn" }, - "username": { "shape": "DatabaseConnectionConfigurationAuthUsernameString" }, - "password": { "shape": "DatabaseConnectionConfigurationAuthPasswordString" } - } - }, - "DatabaseConnectionConfigurationAuthPasswordString": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "DatabaseConnectionConfigurationAuthUsernameString": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "DatabaseConnectionConfigurationConnectableResourceTypeString": { - "type": "string", - "max": 50, - "min": 0 - }, - "DatabaseConnectionConfigurationIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "DatabaseIntegrationConnectionAuthenticationTypes": { - "type": "string", - "enum": ["4", "5", "6", "8"], - "sensitive": true - }, - "DatabaseName": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "DatabaseType": { - "type": "string", - "enum": ["REDSHIFT", "ATHENA"] - }, - "DbUser": { - "type": "string", - "max": 127, - "min": 1, - "pattern": "[a-zA-Z0-9_][a-zA-Z_0-9+.@$-]*", - "sensitive": true - }, - "DeleteConnectionRequest": { - "type": "structure", - "required": ["connectionId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { - "shape": "DeleteConnectionRequestConnectionIdString", - "documentation": "

Id of connection to delete

", - "location": "uri", - "locationName": "connectionId" - } - } - }, - "DeleteConnectionRequestConnectionIdString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "DeleteConnectionResponse": { - "type": "structure", - "members": {} - }, - "ErrorCode": { - "type": "string", - "enum": ["QUERY_EXECUTION_NOT_FOUND", "QUERY_EXECUTION_ACCESS_DENIED"] - }, - "ExecuteQueryRequest": { - "type": "structure", - "required": ["query", "queryExecutionType", "queryResponseDeliveryType", "maxItems"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { "shape": "ExecuteQueryRequestConnectionIdString" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "connection": { "shape": "DatabaseConnectionConfiguration" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "tabId": { "shape": "ExecuteQueryRequestTabIdString" }, - "executionContext": { "shape": "ExecuteQueryRequestExecutionContextList" }, - "query": { "shape": "ExecuteQueryRequestQueryString" }, - "queryExecutionType": { "shape": "QueryExecutionType" }, - "sessionId": { "shape": "ExecuteQueryRequestSessionIdString" }, - "queryResponseDeliveryType": { "shape": "QueryResponseDeliveryType" }, - "maxItems": { "shape": "ExecuteQueryRequestMaxItemsInteger" }, - "limitQueryResults": { "shape": "ExecuteQueryRequestLimitQueryResultsInteger" }, - "isExplain": { "shape": "Boolean" }, - "ignoreHistory": { "shape": "Boolean" }, - "timeoutMillis": { "shape": "ExecuteQueryRequestTimeoutMillisInteger" } - } - }, - "ExecuteQueryRequestConnectionIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "ExecuteQueryRequestExecutionContextList": { - "type": "list", - "member": { "shape": "ParentResource" }, - "max": 100, - "min": 0 - }, - "ExecuteQueryRequestLimitQueryResultsInteger": { - "type": "integer", - "box": true, - "max": 1000, - "min": 0 - }, - "ExecuteQueryRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 100, - "min": 20 - }, - "ExecuteQueryRequestQueryString": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "ExecuteQueryRequestSessionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ExecuteQueryRequestTabIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "ExecuteQueryRequestTimeoutMillisInteger": { - "type": "integer", - "box": true, - "max": 120000, - "min": 0 - }, - "ExecuteQueryResponse": { - "type": "structure", - "required": ["queryExecutions"], - "members": { - "sessionId": { "shape": "ExecuteQueryResponseSessionIdString" }, - "queryExecutions": { "shape": "QueryExecutions" }, - "statusCode": { - "shape": "statusCode", - "location": "statusCode" - } - } - }, - "ExecuteQueryResponseSessionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ExportQueryResultsRequest": { - "type": "structure", - "required": ["queryExecutionId", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "queryExecutionId": { "shape": "ExportQueryResultsRequestQueryExecutionIdString" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "fileType": { "shape": "FileType" } - } - }, - "ExportQueryResultsRequestQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "ExportQueryResultsResponse": { - "type": "structure", - "required": ["queryResult", "contentType", "fileName"], - "members": { - "queryResult": { "shape": "StreamingBlob" }, - "contentType": { - "shape": "String", - "location": "header", - "locationName": "Content-Type" - }, - "fileName": { - "shape": "String", - "location": "header", - "locationName": "Content-Disposition" - } - }, - "payload": "queryResult" - }, - "FileType": { - "type": "string", - "enum": ["JSON", "CSV"] - }, - "FullQueryText": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "GetConnectableResourcesRequest": { - "type": "structure", - "required": ["type", "maxItems", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "type": { "shape": "GetConnectableResourcesRequestTypeString" }, - "maxItems": { "shape": "GetConnectableResourcesRequestMaxItemsInteger" }, - "pageToken": { "shape": "PageToken" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - } - } - }, - "GetConnectableResourcesRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 50, - "min": 20 - }, - "GetConnectableResourcesRequestTypeString": { - "type": "string", - "max": 150, - "min": 0 - }, - "GetConnectableResourcesResponse": { - "type": "structure", - "required": ["connectableResources"], - "members": { - "connectableResources": { "shape": "ConnectableResources" }, - "nextToken": { "shape": "String" } - } - }, - "GetConnectionRequest": { - "type": "structure", - "required": ["connectionId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { - "shape": "GetConnectionRequestConnectionIdString", - "documentation": "

Id of connection to delete

", - "location": "uri", - "locationName": "connectionId" - } - } - }, - "GetConnectionRequestConnectionIdString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "GetConnectionResponse": { - "type": "structure", - "members": { - "data": { "shape": "Connection" } - } - }, - "GetDatabaseConfigurationsRequest": { - "type": "structure", - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" } - } - }, - "GetDatabaseConfigurationsResponse": { - "type": "structure", - "members": { - "configurations": { "shape": "DatabaseConfigurations" } - } - }, - "GetQueryExecutionHistoryRequest": { - "type": "structure", - "required": ["queryExecutionId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "queryExecutionId": { "shape": "GetQueryExecutionHistoryRequestQueryExecutionIdString" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" } - } - }, - "GetQueryExecutionHistoryRequestQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "GetQueryExecutionHistoryResponse": { - "type": "structure", - "members": { - "id": { "shape": "String" }, - "querySourceId": { "shape": "String" }, - "queryStartTime": { "shape": "Long" }, - "queryEndTime": { "shape": "Long" }, - "status": { "shape": "QueryExecutionStatus" }, - "queryText": { "shape": "FullQueryText" }, - "serializedMetadata": { "shape": "SerializedMetadata" }, - "serializedQueryStats": { "shape": "SerializedQueryStats" }, - "databaseType": { "shape": "DatabaseType" } - } - }, - "GetQueryResultRequest": { - "type": "structure", - "required": ["queryExecutionId", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "queryExecutionId": { "shape": "GetQueryResultRequestQueryExecutionIdString" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "pageToken": { "shape": "PageToken" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "pageSize": { "shape": "GetQueryResultRequestPageSizeInteger" } - } - }, - "GetQueryResultRequestPageSizeInteger": { - "type": "integer", - "box": true, - "min": 0 - }, - "GetQueryResultRequestQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "GetQueryResultResponse": { - "type": "structure", - "members": { - "queryResult": { "shape": "QueryResult" }, - "nextToken": { "shape": "String" }, - "previousToken": { "shape": "String" } - } - }, - "GetResourcesRequest": { - "type": "structure", - "required": ["parents", "type", "maxItems"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { "shape": "GetResourcesRequestConnectionIdString" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "connection": { "shape": "DatabaseConnectionConfiguration" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "parents": { "shape": "ParentResources" }, - "type": { "shape": "GetResourcesRequestTypeString" }, - "maxItems": { "shape": "GetResourcesRequestMaxItemsInteger" }, - "pageToken": { "shape": "PageToken" }, - "forceRefresh": { "shape": "Boolean" }, - "forceRefreshRecursive": { "shape": "Boolean" } - } - }, - "GetResourcesRequestConnectionIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "GetResourcesRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 100, - "min": 20 - }, - "GetResourcesRequestTypeString": { - "type": "string", - "max": 150, - "min": 0 - }, - "GetResourcesResponse": { - "type": "structure", - "members": { - "resources": { "shape": "Resources" }, - "nextToken": { "shape": "String" }, - "statusCode": { - "shape": "statusCode", - "location": "statusCode" - }, - "connectionProperties": { "shape": "ConnectionProperties" } - } - }, - "GetTabStatesRequest": { - "type": "structure", - "required": ["tabId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "tabId": { "shape": "String" } - } - }, - "GetTabStatesResponse": { - "type": "structure", - "required": ["queryExecutionStates"], - "members": { - "queryExecutionStates": { "shape": "QueryExecutionStates" }, - "sessionId": { "shape": "String" } - } - }, - "Integer": { - "type": "integer", - "box": true - }, - "InternalServerError": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { "httpStatusCode": 500 }, - "exception": true, - "fault": true - }, - "KmsKeyArn": { - "type": "string", - "max": 1000, - "min": 0, - "pattern": "arn:.*" - }, - "ListQueryExecutionHistoryRequest": { - "type": "structure", - "required": ["maxItems"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "maxItems": { "shape": "ListQueryExecutionHistoryRequestMaxItemsInteger" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "pageToken": { "shape": "ListQueryExecutionHistoryRequestPageTokenString" }, - "querySourceId": { "shape": "ListQueryExecutionHistoryRequestQuerySourceIdString" }, - "databaseType": { "shape": "DatabaseType" }, - "status": { "shape": "QueryExecutionStatus" }, - "startTime": { "shape": "QueryHistoryTimestamp" }, - "endTime": { "shape": "QueryHistoryTimestamp" }, - "containsText": { "shape": "ListQueryExecutionHistoryRequestContainsTextString" } - } - }, - "ListQueryExecutionHistoryRequestContainsTextString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ListQueryExecutionHistoryRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 100, - "min": 1 - }, - "ListQueryExecutionHistoryRequestPageTokenString": { - "type": "string", - "max": 10000, - "min": 0 - }, - "ListQueryExecutionHistoryRequestQuerySourceIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ListQueryExecutionHistoryResponse": { - "type": "structure", - "required": ["items"], - "members": { - "items": { "shape": "QueryExecutionHistoryPreviews" }, - "nextToken": { "shape": "ListQueryExecutionHistoryResponseNextTokenString" } - } - }, - "ListQueryExecutionHistoryResponseNextTokenString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "ListTagsForResourceRequest": { - "type": "structure", - "required": ["resourceArn"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "resourceArn": { - "shape": "Arn", - "location": "uri", - "locationName": "resourceArn" - } - } - }, - "ListTagsForResourceResponse": { - "type": "structure", - "required": ["tags"], - "members": { - "tags": { "shape": "Tags" } - } - }, - "Long": { - "type": "long", - "box": true - }, - "PageToken": { - "type": "string", - "max": 1000, - "min": 0 - }, - "ParentResource": { - "type": "structure", - "required": ["parentId", "parentType"], - "members": { - "parentId": { "shape": "ParentResourceParentIdString" }, - "parentType": { "shape": "ParentResourceParentTypeString" } - } - }, - "ParentResourceParentIdString": { - "type": "string", - "max": 1000, - "min": 1, - "sensitive": true - }, - "ParentResourceParentTypeString": { - "type": "string", - "max": 100, - "min": 1 - }, - "ParentResources": { - "type": "list", - "member": { "shape": "ParentResource" } - }, - "PollQueryExecutionEventsRequest": { - "type": "structure", - "required": ["queryExecutionIds", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "queryExecutionIds": { "shape": "PollQueryExecutionEventsRequestQueryExecutionIdsList" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "ackIds": { "shape": "AckIds" } - } - }, - "PollQueryExecutionEventsRequestQueryExecutionIdsList": { - "type": "list", - "member": { "shape": "PollQueryExecutionEventsRequestQueryExecutionIdsListMemberString" }, - "max": 100, - "min": 1 - }, - "PollQueryExecutionEventsRequestQueryExecutionIdsListMemberString": { - "type": "string", - "max": 100, - "min": 1 - }, - "PollQueryExecutionEventsResponse": { - "type": "structure", - "members": { - "events": { "shape": "QueryExecutionEvents" } - } - }, - "QueryCancellationStatus": { - "type": "string", - "enum": ["CANCELLED", "DOES_NOT_EXISTS", "ALREADY_FINISHED", "CANCELLATION_FAILED"] - }, - "QueryExecution": { - "type": "structure", - "required": ["queryExecutionId"], - "members": { - "queryExecutionStatus": { "shape": "QueryExecutionStatus" }, - "queryExecutionId": { "shape": "QueryExecutionQueryExecutionIdString" }, - "queryResult": { "shape": "QueryResult" }, - "queryText": { "shape": "QueryText" } - } - }, - "QueryExecutionEvent": { - "type": "structure", - "required": ["queryExecutionEventType", "queryExecutionId"], - "members": { - "queryExecutionEventType": { "shape": "QueryExecutionEventType" }, - "queryExecutionId": { "shape": "QueryExecutionEventQueryExecutionIdString" }, - "queryExecutionStatus": { "shape": "QueryExecutionStatus" }, - "queryResult": { "shape": "QueryResult" }, - "nextToken": { "shape": "String" }, - "ackId": { "shape": "String" } - } - }, - "QueryExecutionEventQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "QueryExecutionEventType": { - "type": "string", - "enum": ["QUERY_EXECUTION_STATUS", "QUERY_EXECUTION_RESULT"] - }, - "QueryExecutionEvents": { - "type": "list", - "member": { "shape": "QueryExecutionEvent" } - }, - "QueryExecutionHistoryPreview": { - "type": "structure", - "members": { - "id": { "shape": "String" }, - "querySourceId": { "shape": "String" }, - "queryStartTime": { "shape": "Long" }, - "queryEndTime": { "shape": "Long" }, - "status": { "shape": "QueryExecutionStatus" }, - "queryTextPreview": { "shape": "QueryTextPreview" }, - "serializedMetadata": { "shape": "SerializedMetadata" }, - "databaseType": { "shape": "DatabaseType" } - } - }, - "QueryExecutionHistoryPreviews": { - "type": "list", - "member": { "shape": "QueryExecutionHistoryPreview" } - }, - "QueryExecutionQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "QueryExecutionState": { - "type": "structure", - "required": ["queryExecutionId", "status", "databaseType"], - "members": { - "queryExecutionId": { "shape": "String" }, - "status": { "shape": "String" }, - "databaseType": { "shape": "DatabaseType" } - } - }, - "QueryExecutionStates": { - "type": "list", - "member": { "shape": "QueryExecutionState" } - }, - "QueryExecutionStatus": { - "type": "string", - "enum": ["SCHEDULED", "RUNNING", "FAILED", "CANCELLED", "FINISHED"] - }, - "QueryExecutionType": { - "type": "string", - "enum": ["PERSIST_SESSION", "NO_SESSION"] - }, - "QueryExecutionWarning": { - "type": "structure", - "members": { - "message": { "shape": "QueryExecutionWarningMessage" }, - "level": { "shape": "QueryExecutionWarningLevel" } - } - }, - "QueryExecutionWarningLevel": { - "type": "string", - "enum": ["INFO", "WARNING"] - }, - "QueryExecutionWarningMessage": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "QueryExecutionWarnings": { - "type": "list", - "member": { "shape": "QueryExecutionWarning" } - }, - "QueryExecutions": { - "type": "list", - "member": { "shape": "QueryExecution" } - }, - "QueryHistoryTimestamp": { - "type": "long", - "box": true - }, - "QueryResponseDeliveryType": { - "type": "string", - "enum": ["SYNC", "ASYNC"] - }, - "QueryResult": { - "type": "structure", - "members": { - "queryExecutionStatus": { "shape": "QueryExecutionStatus" }, - "headers": { "shape": "QueryResultHeaders" }, - "rows": { "shape": "Rows" }, - "affectedRows": { "shape": "Integer" }, - "totalRowCount": { "shape": "Integer" }, - "elapsedTime": { "shape": "Long" }, - "errorMessage": { "shape": "QueryResultErrorMessage" }, - "errorPosition": { "shape": "Integer" }, - "queryResultWarningCode": { "shape": "QueryResultQueryResultWarningCodeString" }, - "warnings": { "shape": "QueryExecutionWarnings" }, - "queryExecutionId": { "shape": "String" }, - "sessionId": { "shape": "String" }, - "queryText": { "shape": "QueryText" }, - "statementType": { "shape": "StatementType" }, - "serializedMetadata": { "shape": "SerializedMetadata" }, - "connectionProperties": { "shape": "ConnectionProperties" } - } - }, - "QueryResultCellType": { - "type": "string", - "enum": ["STRING", "BOOLEAN", "INTEGER", "BIG_INTEGER", "FLOAT", "BIG_DECIMAL", "DATE", "TIME", "DATETIME"] - }, - "QueryResultCellValue": { - "type": "string", - "sensitive": true - }, - "QueryResultErrorMessage": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "QueryResultHeader": { - "type": "structure", - "required": ["displayName", "type"], - "members": { - "displayName": { "shape": "QueryResultHeaderDisplayName" }, - "type": { "shape": "QueryResultCellType" } - } - }, - "QueryResultHeaderDisplayName": { - "type": "string", - "sensitive": true - }, - "QueryResultHeaders": { - "type": "list", - "member": { "shape": "QueryResultHeader" } - }, - "QueryResultQueryResultWarningCodeString": { - "type": "string", - "max": 100, - "min": 0 - }, - "QueryText": { - "type": "string", - "sensitive": true - }, - "QueryTextPreview": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "Resource": { - "type": "structure", - "required": ["displayName", "identifier", "childObjectTypes"], - "members": { - "displayName": { "shape": "ResourceDisplayName" }, - "identifier": { "shape": "ResourceIdentifier" }, - "type": { "shape": "ResourceTypeString" }, - "unavailable": { "shape": "Boolean" }, - "tooltipTranslationKey": { "shape": "ResourceTooltipTranslationKeyString" }, - "childObjectTypes": { "shape": "ChildObjectTypes" }, - "allowedActions": { "shape": "ResourceActions" }, - "resourceMetadata": { "shape": "ResourceMetadataItems" } - } - }, - "ResourceAction": { - "type": "string", - "enum": ["Drop", "Truncate", "GenerateDefinition", "GenerateSelectQuery"] - }, - "ResourceActions": { - "type": "list", - "member": { "shape": "ResourceAction" } - }, - "ResourceDisplayName": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "ResourceIdentifier": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "ResourceMetadata": { - "type": "structure", - "members": { - "key": { "shape": "String" }, - "value": { "shape": "String" } - } - }, - "ResourceMetadataItems": { - "type": "list", - "member": { "shape": "ResourceMetadata" } - }, - "ResourceNotFoundException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 404, - "senderFault": true - }, - "exception": true - }, - "ResourceTooltipTranslationKeyString": { - "type": "string", - "max": 50, - "min": 0 - }, - "ResourceTypeString": { - "type": "string", - "max": 50, - "min": 0 - }, - "Resources": { - "type": "list", - "member": { "shape": "Resource" } - }, - "Row": { - "type": "structure", - "members": { - "row": { "shape": "Columns" } - } - }, - "Rows": { - "type": "list", - "member": { "shape": "Row" } - }, - "SecretKeyArn": { - "type": "string", - "max": 1000, - "min": 0, - "pattern": "arn:.*" - }, - "SerializedMetadata": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "SerializedQueryStats": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "ServiceQuotaExceededException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 402, - "senderFault": true - }, - "exception": true - }, - "SqlworkbenchSource": { - "type": "string", - "enum": ["SUS", "RQEV2"] - }, - "StatementType": { - "type": "string", - "enum": ["DQL", "DML", "DDL", "DCL", "Utility"] - }, - "StreamingBlob": { - "type": "blob", - "streaming": true - }, - "String": { "type": "string" }, - "TagKey": { - "type": "string", - "max": 128, - "min": 1, - "pattern": "([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)" - }, - "TagKeyList": { - "type": "list", - "member": { "shape": "TagKey" }, - "max": 6500, - "min": 1 - }, - "TagResourceRequest": { - "type": "structure", - "required": ["resourceArn", "tags"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "resourceArn": { - "shape": "Arn", - "location": "uri", - "locationName": "resourceArn" - }, - "tags": { "shape": "Tags" } - } - }, - "TagResourceResponse": { - "type": "structure", - "members": {} - }, - "TagValue": { - "type": "string", - "max": 256, - "min": 0, - "pattern": "([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)" - }, - "TagrisAccessDeniedException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true - }, - "TagrisAccountId": { - "type": "string", - "max": 12, - "min": 12 - }, - "TagrisAmazonResourceName": { - "type": "string", - "max": 1011, - "min": 1 - }, - "TagrisExceptionMessage": { - "type": "string", - "max": 2048, - "min": 0 - }, - "TagrisInternalId": { - "type": "string", - "max": 64, - "min": 0 - }, - "TagrisInternalServiceException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true, - "fault": true - }, - "TagrisInvalidArnException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" }, - "sweepListItem": { "shape": "TagrisSweepListItem" } - }, - "exception": true - }, - "TagrisInvalidParameterException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true - }, - "TagrisPartialResourcesExistResultsException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" }, - "resourceExistenceInformation": { "shape": "TagrisSweepListResult" } - }, - "exception": true - }, - "TagrisStatus": { - "type": "string", - "enum": ["ACTIVE", "NOT_ACTIVE"] - }, - "TagrisSweepList": { - "type": "list", - "member": { "shape": "TagrisSweepListItem" } - }, - "TagrisSweepListItem": { - "type": "structure", - "members": { - "TagrisAccountId": { "shape": "TagrisAccountId" }, - "TagrisAmazonResourceName": { "shape": "TagrisAmazonResourceName" }, - "TagrisInternalId": { "shape": "TagrisInternalId" }, - "TagrisVersion": { "shape": "TagrisVersion" } - } - }, - "TagrisSweepListResult": { - "type": "map", - "key": { "shape": "TagrisAmazonResourceName" }, - "value": { "shape": "TagrisStatus" } - }, - "TagrisThrottledException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true - }, - "TagrisVerifyResourcesExistInput": { - "type": "structure", - "required": ["TagrisSweepList"], - "members": { - "TagrisSweepList": { "shape": "TagrisSweepList" } - } - }, - "TagrisVerifyResourcesExistOutput": { - "type": "structure", - "required": ["TagrisSweepListResult"], - "members": { - "TagrisSweepListResult": { "shape": "TagrisSweepListResult" } - } - }, - "TagrisVersion": { "type": "long" }, - "Tags": { - "type": "map", - "key": { "shape": "TagKey" }, - "value": { "shape": "TagValue" }, - "max": 50, - "min": 1 - }, - "ThrottlingException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 429, - "senderFault": true - }, - "exception": true - }, - "UntagResourceRequest": { - "type": "structure", - "required": ["resourceArn", "tagKeys"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "resourceArn": { - "shape": "Arn", - "location": "uri", - "locationName": "resourceArn" - }, - "tagKeys": { - "shape": "TagKeyList", - "location": "querystring", - "locationName": "tagKeys" - } - } - }, - "UntagResourceResponse": { - "type": "structure", - "members": {} - }, - "UpdateConnectionRequest": { - "type": "structure", - "required": ["id", "authenticationType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "id": { - "shape": "UpdateConnectionRequestIdString", - "documentation": "

Id of the connection to update

" - }, - "name": { - "shape": "UpdateConnectionRequestNameString", - "documentation": "

Name of the connection

" - }, - "databaseName": { - "shape": "UpdateConnectionRequestDatabaseNameString", - "documentation": "

Name of the database used for this connection

" - }, - "authenticationType": { - "shape": "UpdateConnectionRequestAuthenticationTypeEnum", - "documentation": "

Number representing the type of authentication to use (2 = IAM, 3 = Username and Password, 4 = Federated connection)

" - }, - "secretArn": { - "shape": "UpdateConnectionRequestSecretArnString", - "documentation": "

secretArn for redshift cluster

" - }, - "clusterId": { - "shape": "UpdateConnectionRequestClusterIdString", - "documentation": "

Id of the cluster used for this connection

" - }, - "isServerless": { - "shape": "Boolean", - "documentation": "

Is serverless connection

" - }, - "dbUser": { - "shape": "DbUser", - "documentation": "

User of the database used for this connection

" - }, - "username": { - "shape": "DbUser", - "documentation": "

Username used in the Username_Password connection type

" - }, - "password": { - "shape": "UpdateConnectionRequestPasswordString", - "documentation": "

Password of the user used for this connection

" - }, - "host": { - "shape": "String", - "documentation": "

Host address used for creating secret for Username_Password connection type

" - }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceIdentifier": { - "shape": "UpdateConnectionRequestConnectableResourceIdentifierString", - "documentation": "

Id of the connectable resource used for this connection

" - }, - "connectableResourceType": { - "shape": "UpdateConnectionRequestConnectableResourceTypeString", - "documentation": "

Type of the connectable resource used for this connection

" - } - } - }, - "UpdateConnectionRequestAuthenticationTypeEnum": { - "type": "string", - "enum": ["2", "3", "4", "5", "6", "7", "8"], - "max": 1, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestClusterIdString": { - "type": "string", - "max": 63, - "min": 1 - }, - "UpdateConnectionRequestConnectableResourceIdentifierString": { - "type": "string", - "max": 63, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestConnectableResourceTypeString": { - "type": "string", - "max": 63, - "min": 1 - }, - "UpdateConnectionRequestDatabaseNameString": { - "type": "string", - "max": 64, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "UpdateConnectionRequestNameString": { - "type": "string", - "max": 512, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestPasswordString": { - "type": "string", - "max": 64, - "min": 8, - "sensitive": true - }, - "UpdateConnectionRequestSecretArnString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "UpdateConnectionResponse": { - "type": "structure", - "members": { - "data": { "shape": "Connection" } - } - }, - "UserSettings": { - "type": "string", - "sensitive": true - }, - "ValidationException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 400, - "senderFault": true - }, - "exception": true - }, - "statusCode": { - "type": "integer", - "box": true, - "max": 500, - "min": 100 - } - } -} diff --git a/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts b/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts index e4b1dc50a85..7533b15ded1 100644 --- a/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts +++ b/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts @@ -11,36 +11,23 @@ import { createRedshiftConnectionConfig, } from '../../../../sagemakerunifiedstudio/shared/client/sqlWorkbenchClient' import { STSClient } from '@aws-sdk/client-sts' -import globals from '../../../../shared/extensionGlobals' import { ConnectionCredentialsProvider } from '../../../../sagemakerunifiedstudio/auth/providers/connectionCredentialsProvider' +import { + DatabaseIntegrationConnectionAuthenticationTypes, + SQLWorkbench, + GetResourcesCommand, + ExecuteQueryCommand, +} from '@amzn/sql-workbench-client' describe('SQLWorkbenchClient', function () { let sandbox: sinon.SinonSandbox - let mockSqlClient: any - let mockSdkClientBuilder: any + let sendStub: sinon.SinonStub beforeEach(function () { sandbox = sinon.createSandbox() - mockSqlClient = { - getResources: sandbox.stub().returns({ - promise: sandbox.stub().resolves({ - resources: [{ name: 'test-resource' }], - nextToken: 'next-token', - }), - }), - executeQuery: sandbox.stub().returns({ - promise: sandbox.stub().resolves({ - queryExecutions: [{ queryExecutionId: 'test-execution-id' }], - }), - }), - } - - mockSdkClientBuilder = { - createAwsService: sandbox.stub().resolves(mockSqlClient), - } - - sandbox.stub(globals, 'sdkClientBuilder').value(mockSdkClientBuilder) + // Mock SDK v3 send method + sendStub = sandbox.stub(SQLWorkbench.prototype, 'send') }) afterEach(function () { @@ -83,11 +70,17 @@ describe('SQLWorkbenchClient', function () { describe('getResources', function () { it('should get resources with connection', async function () { + // Mock the send method to return expected response + sendStub.resolves({ + resources: [{ displayName: 'test-resource' }], + nextToken: 'next-token', + }) + const client = SQLWorkbenchClient.getInstance('us-east-1') const connectionConfig = { - id: 'test-id', - type: 'test-type', - databaseType: 'REDSHIFT', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: 'test-identifier', connectableResourceType: 'CLUSTER', database: 'test-db', @@ -99,15 +92,15 @@ describe('SQLWorkbenchClient', function () { maxItems: 50, }) - assert.deepStrictEqual(result.resources, [{ name: 'test-resource' }]) + assert.deepStrictEqual(result.resources, [{ displayName: 'test-resource' }]) assert.strictEqual(result.nextToken, 'next-token') + assert.ok(sendStub.calledOnce) + assert.ok(sendStub.firstCall.args[0] instanceof GetResourcesCommand) }) it('should handle API errors', async function () { const error = new Error('API Error') - mockSqlClient.getResources.returns({ - promise: sandbox.stub().rejects(error), - }) + sendStub.rejects(error) const client = SQLWorkbenchClient.getInstance('us-east-1') @@ -115,9 +108,9 @@ describe('SQLWorkbenchClient', function () { async () => await client.getResources({ connection: { - id: '', - type: '', - databaseType: '', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: '', connectableResourceType: '', database: '', @@ -131,11 +124,16 @@ describe('SQLWorkbenchClient', function () { describe('executeQuery', function () { it('should execute query successfully', async function () { + // Mock the send method to return expected response + sendStub.resolves({ + queryExecutions: [{ queryExecutionId: 'test-execution-id' }], + }) + const client = SQLWorkbenchClient.getInstance('us-east-1') const connectionConfig = { - id: 'test-id', - type: 'test-type', - databaseType: 'REDSHIFT', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: 'test-identifier', connectableResourceType: 'CLUSTER', database: 'test-db', @@ -144,19 +142,19 @@ describe('SQLWorkbenchClient', function () { const result = await client.executeQuery(connectionConfig, 'SELECT 1') assert.strictEqual(result, 'test-execution-id') + assert.ok(sendStub.calledOnce) + assert.ok(sendStub.firstCall.args[0] instanceof ExecuteQueryCommand) }) it('should handle query execution errors', async function () { const error = new Error('Query Error') - mockSqlClient.executeQuery.returns({ - promise: sandbox.stub().rejects(error), - }) + sendStub.rejects(error) const client = SQLWorkbenchClient.getInstance('us-east-1') const connectionConfig = { - id: 'test-id', - type: 'test-type', - databaseType: 'REDSHIFT', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: 'test-identifier', connectableResourceType: 'CLUSTER', database: 'test-db', diff --git a/src.gen/@amzn/sql-workbench-client/3.0.0.tgz b/src.gen/@amzn/sql-workbench-client/3.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..eab84f8a353168dad10c3eaf8d52e4673fb425fc GIT binary patch literal 89474 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�{>l7Z*N= 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 ay`Qi|Yk%yI{jonw`160J)~22Sq7eY#DnOtB literal 0 HcmV?d00001