diff --git a/NOTICE b/NOTICE index 6a5826e4905..3757f4843e8 100644 --- a/NOTICE +++ b/NOTICE @@ -7,9 +7,9 @@ The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means. -Date generated: 2026-1-9 +Date generated: 2026-1-12 -Revision ID: 15b307c4341a98e3cb462eda4bab231d45ca3f50 +Revision ID: fdcfe739a4314b887ac7ece4172abc11aa387bba ================================================================================ ================================================================================ @@ -35160,4 +35160,4 @@ POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -Report Generated by FOSSA on 2026-1-9 +Report Generated by FOSSA on 2026-1-12 diff --git a/common/changes/@gooddata/sdk-ui-all/IMJ-SDK-UI-EXT-STR_2026-01-09-08-41.json b/common/changes/@gooddata/sdk-ui-all/IMJ-SDK-UI-EXT-STR_2026-01-09-08-41.json new file mode 100644 index 00000000000..cd449f478ee --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/IMJ-SDK-UI-EXT-STR_2026-01-09-08-41.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "- sdk-ui-ext: Introduce TypeScript strict mode.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1081-accessibility-2_2026-01-09-14-51.json b/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1081-accessibility-2_2026-01-09-14-51.json new file mode 100644 index 00000000000..dd77de759a5 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1081-accessibility-2_2026-01-09-14-51.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-kit: Fix `UiAsyncTable` tab stop when there are no sortable columns in the header.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/SHA_master_2026-01-12-06-54.json b/common/changes/@gooddata/sdk-ui-all/SHA_master_2026-01-12-06-54.json new file mode 100644 index 00000000000..93c74c3e4d8 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/SHA_master_2026-01-12-06-54.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "Improved error state in Key Driver Analysis dialog with trace id and details", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-07-01.json b/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-07-01.json new file mode 100644 index 00000000000..bd69e7bbb8e --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-07-01.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "KDA respects tiering (includeObjectsWithTags, excludeObjectsWithTags)", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-11-58.json b/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-11-58.json new file mode 100644 index 00000000000..2b7476d0719 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-11-58.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-gen-ai: Memoize drillable items to avoid unnecessary re-renders", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-13-23.json b/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-13-23.json new file mode 100644 index 00000000000..a8acd26d369 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/SHA_master_GDAI-1094_2026-01-12-13-23.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-gen-ai: Align chatbot error messaging design with other apps", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/fiscal-granularity-patterns_2026-01-11-17-55.json b/common/changes/@gooddata/sdk-ui-all/fiscal-granularity-patterns_2026-01-11-17-55.json new file mode 100644 index 00000000000..b2b8091c72b --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/fiscal-granularity-patterns_2026-01-11-17-55.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-backend-tiger: Add support for fiscal granularity patterns", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/jsc-f_1_2026-01-12-11-56.json b/common/changes/@gooddata/sdk-ui-all/jsc-f_1_2026-01-12-11-56.json new file mode 100644 index 00000000000..9fbf0a31808 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/jsc-f_1_2026-01-12-11-56.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-dashboard: Fix insight properties sync in drill dialog.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/nen-lx-1975_2026-01-12-10-31.json b/common/changes/@gooddata/sdk-ui-all/nen-lx-1975_2026-01-12-10-31.json new file mode 100644 index 00000000000..6e605c49111 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/nen-lx-1975_2026-01-12-10-31.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-dashboard: Allow to hide 'Add Tab' button in dashboard edit mode ", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/smac-gdai-1178_2026-01-12-12-34.json b/common/changes/@gooddata/sdk-ui-all/smac-gdai-1178_2026-01-12-12-34.json new file mode 100644 index 00000000000..2dc0a011eb1 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/smac-gdai-1178_2026-01-12-12-34.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-gen-ai: Updating the logic for reasoning completion.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 2bde0f7a851..f8228ceaefb 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -83,11 +83,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^4.6.0 version: 4.7.0(vite@6.3.6) @@ -231,11 +231,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -352,11 +352,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -473,11 +473,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -594,11 +594,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -715,11 +715,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -836,11 +836,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -957,11 +957,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1078,11 +1078,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1208,11 +1208,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1329,11 +1329,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1450,11 +1450,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1571,11 +1571,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1692,11 +1692,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1813,11 +1813,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react-swc': specifier: ^3.11.0 version: 3.11.0(vite@6.3.6) @@ -1910,11 +1910,11 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) commander: specifier: ^8.1.0 version: 8.3.0 @@ -2028,11 +2028,11 @@ importers: specifier: ^3.0.1 version: 3.0.5 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -2122,11 +2122,11 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -2201,11 +2201,11 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -2331,11 +2331,11 @@ importers: specifier: ^3.0.1 version: 3.0.5 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -2413,11 +2413,11 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -2507,11 +2507,11 @@ importers: specifier: ^3.2.0 version: 3.3.1 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -2652,11 +2652,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -2782,11 +2782,11 @@ importers: specifier: ^7.52.8 version: 7.52.13(@types/node@22.18.5) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -2900,11 +2900,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -3117,11 +3117,11 @@ importers: specifier: ^2.0.12 version: 2.0.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -3379,11 +3379,11 @@ importers: specifier: 7.1.34 version: 7.1.34 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -3653,11 +3653,11 @@ importers: specifier: ^2.0.12 version: 2.0.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -3855,11 +3855,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -4093,11 +4093,11 @@ importers: specifier: 7.1.34 version: 7.1.34 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -4283,11 +4283,11 @@ importers: specifier: ^2.0.12 version: 2.0.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -4563,11 +4563,11 @@ importers: specifier: ^1.4.2 version: 1.4.6 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -4681,7 +4681,7 @@ importers: version: 7.1.11(react@19.1.1)(typescript@5.9.3) semver: specifier: ^7.3.5 - version: 7.7.2 + version: 7.7.3 ts-invariant: specifier: ^0.7.5 version: 0.7.5 @@ -4717,11 +4717,11 @@ importers: specifier: ^7.3.9 version: 7.7.1 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -4877,11 +4877,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -5034,11 +5034,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -5238,11 +5238,11 @@ importers: specifier: ^3.0.1 version: 3.0.5 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -5478,11 +5478,11 @@ importers: specifier: ^5.1.5 version: 5.3.3 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^4.6.0 version: 4.7.0(vite@6.3.6) @@ -5689,11 +5689,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -5840,11 +5840,11 @@ importers: specifier: ^2.0.12 version: 2.0.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -6006,11 +6006,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -6115,11 +6115,11 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -6188,11 +6188,11 @@ importers: specifier: ^4.17.12 version: 4.17.12 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -6276,11 +6276,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -6439,11 +6439,11 @@ importers: specifier: ^6.1.0 version: 6.1.13 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -6517,11 +6517,11 @@ importers: specifier: ^2.4.4 version: 2.4.4 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) blessed: specifier: ^0.1.81 version: 0.1.81 @@ -6662,11 +6662,11 @@ importers: specifier: ~1.18.2 version: 1.18.4 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -6795,11 +6795,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) babel-loader: specifier: ^8.0.5 version: 8.4.1(@babel/core@7.28.4)(webpack@5.93.0) @@ -6915,11 +6915,11 @@ importers: specifier: ^22.13.0 version: 22.18.5 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) '@vitest/eslint-plugin': specifier: 1.3.5 version: 1.3.5(eslint@8.57.1)(typescript@5.9.3)(vitest@4.0.8) @@ -7039,11 +7039,11 @@ importers: specifier: ^22.13.0 version: 22.18.5 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -7151,11 +7151,11 @@ importers: specifier: ~1.18.2 version: 1.18.4 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -7293,11 +7293,11 @@ importers: specifier: ^6.1.0 version: 6.1.13 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -7414,11 +7414,11 @@ importers: specifier: 19.1.7 version: 19.1.7(@types/react@19.1.11) '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) case-sensitive-paths-webpack-plugin: specifier: ^2.4.0 version: 2.4.0 @@ -7532,11 +7532,11 @@ importers: specifier: ^22.13.0 version: 22.18.5 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -7608,11 +7608,11 @@ importers: specifier: ^22.13.0 version: 22.18.5 '@typescript-eslint/eslint-plugin': - specifier: 8.46.0 - version: 8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.46.0 - version: 8.46.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 8.52.0 + version: 8.52.0(eslint@8.57.1)(typescript@5.9.3) dependency-cruiser: specifier: ^14.1.2 version: 14.1.2 @@ -9550,8 +9550,8 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.9.0(eslint@8.57.1): - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + /@eslint-community/eslint-utils@4.9.1(eslint@8.57.1): + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -9560,8 +9560,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.12.1: - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + /@eslint-community/regexpp@4.12.2: + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -11804,41 +11804,40 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0)(eslint@8.57.1)(typescript@5.9.3): - resolution: {integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==} + /@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0)(eslint@8.57.1)(typescript@5.9.3): + resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.0 + '@typescript-eslint/parser': ^8.52.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/type-utils': 8.46.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.0 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.52.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/type-utils': 8.52.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.52.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.52.0 eslint: 8.57.1 - graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@8.46.0(eslint@8.57.1)(typescript@5.9.3): - resolution: {integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==} + /@typescript-eslint/parser@8.52.0(eslint@8.57.1)(typescript@5.9.3): + resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.52.0 debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 typescript: 5.9.3 @@ -11846,30 +11845,30 @@ packages: - supports-color dev: true - /@typescript-eslint/project-service@8.46.0(typescript@5.9.3): - resolution: {integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==} + /@typescript-eslint/project-service@8.52.0(typescript@5.9.3): + resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) - '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@8.46.0: - resolution: {integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==} + /@typescript-eslint/scope-manager@8.52.0: + resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 dev: true - /@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3): - resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==} + /@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3): + resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -11877,72 +11876,71 @@ packages: typescript: 5.9.3 dev: true - /@typescript-eslint/type-utils@8.46.0(eslint@8.57.1)(typescript@5.9.3): - resolution: {integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==} + /@typescript-eslint/type-utils@8.52.0(eslint@8.57.1)(typescript@5.9.3): + resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.52.0(eslint@8.57.1)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@8.46.0: - resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} + /@typescript-eslint/types@8.52.0: + resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3): - resolution: {integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==} + /@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3): + resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' dependencies: - '@typescript-eslint/project-service': 8.46.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 debug: 4.4.3(supports-color@8.1.1) - fast-glob: 3.3.3 - is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@8.46.0(eslint@8.57.1)(typescript@5.9.3): - resolution: {integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==} + /@typescript-eslint/utils@8.52.0(eslint@8.57.1)(typescript@5.9.3): + resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) eslint: 8.57.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys@8.46.0: - resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==} + /@typescript-eslint/visitor-keys@8.52.0: + resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/types': 8.52.0 eslint-visitor-keys: 4.2.1 dev: true @@ -12144,8 +12142,8 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/utils': 8.46.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/utils': 8.52.0(eslint@8.57.1)(typescript@5.9.3) eslint: 8.57.1 typescript: 5.9.3 vitest: 4.0.8(@types/node@22.18.5)(happy-dom@18.0.1) @@ -13720,7 +13718,7 @@ packages: resolution: {integrity: sha512-AVITY/tGNdoBGAkaYqNsDGFzf5THvvjGBW7u0djTqC8xAqyj7WTLOD/bTGnhUfSn1X8E3qA9GyZjvIY+WnqzRA==} hasBin: true dependencies: - semver: 7.7.2 + semver: 7.7.3 storybook: 10.0.6(@testing-library/dom@10.4.0)(prettier@3.6.2)(react-dom@19.1.1)(react@19.1.1)(vite@6.3.6) transitivePeerDependencies: - '@testing-library/dom' @@ -13785,7 +13783,7 @@ packages: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 webpack: 5.93.0(webpack-cli@6.0.1) dev: true @@ -13858,7 +13856,7 @@ packages: debug: 4.4.3(supports-color@8.1.1) lodash: 4.17.21 mocha: 11.1.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color dev: true @@ -13926,7 +13924,7 @@ packages: process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.7.2 + semver: 7.7.3 supports-color: 8.1.1 tmp: 0.2.5 tree-kill: 1.2.2 @@ -14151,7 +14149,7 @@ packages: prompts: 2.4.2 rechoir: 0.8.0 safe-regex: 2.1.1 - semver: 7.7.2 + semver: 7.7.3 semver-try-require: 6.2.3 teamcity-service-messages: 0.1.14 tsconfig-paths-webpack-plugin: 4.1.0 @@ -14970,8 +14968,8 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 comment-parser: 1.4.1 eslint: 8.57.1 grapheme-splitter: 1.0.4 @@ -14996,7 +14994,7 @@ packages: eslint: '>=8' storybook: ^10.0.6 dependencies: - '@typescript-eslint/utils': 8.46.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.52.0(eslint@8.57.1)(typescript@5.9.3) eslint: 8.57.1 storybook: 10.0.6(@testing-library/dom@10.4.0)(prettier@3.6.2)(react-dom@19.1.1)(react@19.1.1)(vite@6.3.6) transitivePeerDependencies: @@ -15046,8 +15044,8 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -16094,7 +16092,7 @@ packages: kleur: 4.1.5 minimist: 1.2.8 prompts: 2.4.2 - semver: 7.7.2 + semver: 7.7.3 vitest: 4.0.8(@types/node@22.18.5)(happy-dom@18.0.1) dev: false @@ -16500,7 +16498,7 @@ packages: /is-bun-module@2.0.0: resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} dependencies: - semver: 7.7.2 + semver: 7.7.3 dev: true /is-callable@1.2.7: @@ -18106,7 +18104,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.16.1 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 dev: true @@ -19431,7 +19429,7 @@ packages: resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 dev: true /reflect-metadata@0.2.2: @@ -19465,7 +19463,7 @@ packages: resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 refa: 0.11.0 dev: true @@ -19819,7 +19817,7 @@ packages: loader-utils: 2.0.4 neo-async: 2.6.2 schema-utils: 3.3.0 - semver: 7.7.2 + semver: 7.7.3 webpack: 5.93.0(webpack-cli@6.0.1) dev: true @@ -19868,7 +19866,7 @@ packages: /scslre@0.2.0: resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 refa: 0.11.0 regexp-ast-analysis: 0.6.0 dev: true @@ -19888,7 +19886,7 @@ packages: engines: {node: ^14||^16||>=18} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: - semver: 7.7.2 + semver: 7.7.3 dev: true /semver@5.7.2: @@ -19907,8 +19905,8 @@ packages: lru-cache: 6.0.0 dev: true - /semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + /semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true @@ -20325,7 +20323,7 @@ packages: esbuild: 0.25.9 prettier: 3.6.2 recast: 0.23.11 - semver: 7.7.2 + semver: 7.7.3 ws: 8.18.3 transitivePeerDependencies: - '@testing-library/dom' @@ -21016,8 +21014,8 @@ packages: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false - /ts-api-utils@2.1.0(typescript@5.9.3): - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + /ts-api-utils@2.4.0(typescript@5.9.3): + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -21050,7 +21048,7 @@ packages: enhanced-resolve: 4.5.0 loader-utils: 2.0.4 micromatch: 4.0.8 - semver: 7.7.2 + semver: 7.7.3 typescript: 5.9.3 webpack: 5.93.0(webpack-cli@6.0.1) dev: true diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 0b02875a5e7..3b122e5c11c 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -12,14 +12,14 @@ { "definitionName": "lockStepVersion", "policyName": "sdk", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" }, { "definitionName": "lockStepVersion", "policyName": "sdk-examples", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" } diff --git a/examples/playground/package.json b/examples/playground/package.json index 2d21cca7fc6..fbe6fdf2793 100644 --- a/examples/playground/package.json +++ b/examples/playground/package.json @@ -54,8 +54,8 @@ "@types/lodash-es": "^4.17.12", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react": "^4.6.0", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/examples/sdk-interactive-examples/examples-template/package.json b/examples/sdk-interactive-examples/examples-template/package.json index 8b795ae5321..12b557f6693 100644 --- a/examples/sdk-interactive-examples/examples-template/package.json +++ b/examples/sdk-interactive-examples/examples-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples-template", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "GoodData interactive example template", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json index dd822f278a9..8865fa98c5c 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-attributefilter", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example demonstrates how to use the AttributeFilter component to filter data in a visualization.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json index f7729398f02..95aa5d245d0 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-chartconfig", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This interactive example demonstrates how to manipulate the chart config.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/package.json b/examples/sdk-interactive-examples/examples/example-columnchart/package.json index 47125eb5281..49b826806b6 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/package.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-columnchart", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example demonstrates the usage of the ColumnChart component with the viewBy and stackBy properties.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-combochart/package.json b/examples/sdk-interactive-examples/examples/example-combochart/package.json index a8f25885085..48e4b0163bb 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/package.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-combochart", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "Example demonstrates ComboChart secondaryMeasures definition. ", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/package.json b/examples/sdk-interactive-examples/examples/example-dashboard/package.json index d92a7654ee1..5d267cbbbc0 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/package.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dashboard", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example shows how to use the Dashboard component.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/package.json b/examples/sdk-interactive-examples/examples/example-datefilter/package.json index 86ac942a079..fb10525f89d 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-datefilter", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "Example demonstrates usage of Date Filter component.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json index 4c153b12214..cea4780d716 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dependentfilters", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example demonstrates how to use multiple attribute filters linked together to filter data in a visualization.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-execute/package.json b/examples/sdk-interactive-examples/examples/example-execute/package.json index f691933ac7f..684dfdf85de 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/package.json +++ b/examples/sdk-interactive-examples/examples/example-execute/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-execute", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example demonstrates using Execute component and build custom visualization.", "license": "LicenseRef-LICENSE", @@ -48,8 +48,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-granularity/package.json b/examples/sdk-interactive-examples/examples/example-granularity/package.json index 185072e9a3f..cecac65eb39 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/package.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-granularity", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example exmplains DateFilter granularity ", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-headline/package.json b/examples/sdk-interactive-examples/examples/example-headline/package.json index 9dfee0f8d17..98359d52a43 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/package.json +++ b/examples/sdk-interactive-examples/examples/example-headline/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-headline", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example shows how to use the Headline component.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/package.json b/examples/sdk-interactive-examples/examples/example-pivottable/package.json index 87020745ed3..94984b3a281 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/package.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-pivottable", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "Basic PivotTable manipulation.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json index 0c094314e6e..c915a44dafb 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-relativedatefilter", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "Example demonstrates how to set relative DateFilter for visualization.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/examples/example-repeater/package.json b/examples/sdk-interactive-examples/examples/example-repeater/package.json index 7083fb5af55..b2784eec597 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/package.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-repeater", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "This example demonstrates how to use Repeater component.", "license": "LicenseRef-LICENSE", @@ -45,8 +45,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react-swc": "^3.11.0", "eslint": "^8.57.1", "eslint-plugin-eslint-comments": "3.2.0", diff --git a/examples/sdk-interactive-examples/package.json b/examples/sdk-interactive-examples/package.json index 13aabb3260b..3556b4fc43c 100644 --- a/examples/sdk-interactive-examples/package.json +++ b/examples/sdk-interactive-examples/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "private": false, "description": "GoodData React interactive examples", "license": "LicenseRef-LICENSE", diff --git a/libs/api-client-tiger/README-DEV.md b/libs/api-client-tiger/README-DEV.md index 4b02dc85e02..07e1a7db9e6 100644 --- a/libs/api-client-tiger/README-DEV.md +++ b/libs/api-client-tiger/README-DEV.md @@ -47,8 +47,8 @@ The package exports API endpoints via individual entry points in `package.json` ```typescript // ✅ Tree-shakeable - only imports execution API -import { ExecutionAPI_ComputeReport } from "@gooddata/api-client-tiger/execution"; -import { tigerExecutionClientFactory } from "@gooddata/api-client-tiger/execution"; +import { ExecutionAPI_ComputeReport } from "@gooddata/api-client-tiger/endpoints/execution"; +import { tigerExecutionClientFactory } from "@gooddata/api-client-tiger/endpoints/execution"; ``` **Obsolete usage** - Main package exports are kept for backward compatibility only: diff --git a/libs/api-client-tiger/api/api-client-tiger.api.md b/libs/api-client-tiger/api/api-client-tiger.api.md index 310f91987f4..d6f26ed3c86 100644 --- a/libs/api-client-tiger/api/api-client-tiger.api.md +++ b/libs/api-client-tiger/api/api-client-tiger.api.md @@ -37,9 +37,59 @@ export interface AacAnalyticsModel { visualizations?: unknown[]; } +// @public +export class AACAnalyticsModelApi extends MetadataBaseApi implements AACAnalyticsModelApiInterface { + // Warning: (ae-forgotten-export) The symbol "AacAnalyticsModel_2" needs to be exported by the entry point index.d.ts + getAnalyticsModelAac(requestParameters: AACAnalyticsModelApiGetAnalyticsModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; + setAnalyticsModelAac(requestParameters: AACAnalyticsModelApiSetAnalyticsModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; +} + +// @public +export function AACAnalyticsModelApi_GetAnalyticsModelAac(axios: AxiosInstance, basePath: string, requestParameters: AACAnalyticsModelApiGetAnalyticsModelAacRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function AACAnalyticsModelApi_SetAnalyticsModelAac(axios: AxiosInstance, basePath: string, requestParameters: AACAnalyticsModelApiSetAnalyticsModelAacRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function AACAnalyticsModelApiAxiosParamCreator_GetAnalyticsModelAac(workspaceId: string, exclude?: Array<"ACTIVITY_INFO">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function AACAnalyticsModelApiAxiosParamCreator_SetAnalyticsModelAac(workspaceId: string, aacAnalyticsModel: AacAnalyticsModel_2, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export interface AACAnalyticsModelApiGetAnalyticsModelAacRequest { + readonly exclude?: Array<"ACTIVITY_INFO">; + readonly workspaceId: string; +} + +// @public +export interface AACAnalyticsModelApiInterface { + getAnalyticsModelAac(requestParameters: AACAnalyticsModelApiGetAnalyticsModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; + setAnalyticsModelAac(requestParameters: AACAnalyticsModelApiSetAnalyticsModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; +} + +// @public +export interface AACAnalyticsModelApiSetAnalyticsModelAacRequest { + readonly aacAnalyticsModel: AacAnalyticsModel_2; + readonly workspaceId: string; +} + // @public (undocumented) export type AacAnalyticsModelExclude = "ACTIVITY_INFO"; +// @public +export class AacApi extends MetadataBaseApi implements AacApiInterface { + // Warning: (ae-forgotten-export) The symbol "AacApiGetAnalyticsModelAacRequest_2" needs to be exported by the entry point index.d.ts + getAnalyticsModelAac(requestParameters: AacApiGetAnalyticsModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; + // Warning: (ae-forgotten-export) The symbol "AacApiGetLogicalModelAacRequest_2" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "AacLogicalModel_2" needs to be exported by the entry point index.d.ts + getLogicalModelAac(requestParameters: AacApiGetLogicalModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; + // Warning: (ae-forgotten-export) The symbol "AacApiSetAnalyticsModelAacRequest_2" needs to be exported by the entry point index.d.ts + setAnalyticsModelAac(requestParameters: AacApiSetAnalyticsModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; + // Warning: (ae-forgotten-export) The symbol "AacApiSetLogicalModelAacRequest_2" needs to be exported by the entry point index.d.ts + setLogicalModelAac(requestParameters: AacApiSetLogicalModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; +} + // @public (undocumented) export function AacApi_GetAnalyticsModelAac(axios: AxiosInstance, basePath: string, requestParameters: AacApiGetAnalyticsModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -52,6 +102,18 @@ export function AacApi_SetAnalyticsModelAac(axios: AxiosInstance, basePath: stri // @public (undocumented) export function AacApi_SetLogicalModelAac(axios: AxiosInstance, basePath: string, requestParameters: AacApiSetLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; +// @public +export function AacApiAxiosParamCreator_GetAnalyticsModelAac(workspaceId: string, exclude?: Array<"ACTIVITY_INFO">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function AacApiAxiosParamCreator_GetLogicalModelAac(workspaceId: string, includeParents?: boolean, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function AacApiAxiosParamCreator_SetAnalyticsModelAac(workspaceId: string, aacAnalyticsModel: AacAnalyticsModel_2, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function AacApiAxiosParamCreator_SetLogicalModelAac(workspaceId: string, aacLogicalModel: AacLogicalModel_2, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public (undocumented) export interface AacApiGetAnalyticsModelAacRequest { // (undocumented) @@ -68,6 +130,14 @@ export interface AacApiGetLogicalModelAacRequest { readonly workspaceId: string; } +// @public +export interface AacApiInterface { + getAnalyticsModelAac(requestParameters: AacApiGetAnalyticsModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; + getLogicalModelAac(requestParameters: AacApiGetLogicalModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; + setAnalyticsModelAac(requestParameters: AacApiSetAnalyticsModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; + setLogicalModelAac(requestParameters: AacApiSetLogicalModelAacRequest_2, options?: AxiosRequestConfig): AxiosPromise; +} + // @public (undocumented) export interface AacApiSetAnalyticsModelAacRequest { // (undocumented) @@ -84,6 +154,230 @@ export interface AacApiSetLogicalModelAacRequest { readonly workspaceId: string; } +// @public +export interface AacAttributeHierarchy { + attributes: Array; + description?: string; + id: string; + tags?: Array; + title?: string; + type: string; +} + +// @public +export interface AacBucketItem { + // (undocumented) + additionalProperties?: { + [key: string]: object; + }; + alias?: string; + compute_ratio?: boolean; + display_as?: string; + format?: string; + local_id?: string; + maql?: string; + show_all_values?: boolean; + title?: string; + using?: string; +} + +// @public +export interface AacDashboard { + active_tab_id?: string; + cross_filtering?: boolean; + description?: string; + enable_section_headers?: boolean; + filter_views?: boolean; + filters?: { + [key: string]: AacDashboardFilter; + }; + id: string; + // (undocumented) + permissions?: AacDashboardPermissions; + plugins?: Array; + sections?: Array; + tabs?: Array; + tags?: Array; + title?: string; + type: string; + user_filters_reset?: boolean; + user_filters_save?: boolean; +} + +// @public +export interface AacDashboardFilter { + date?: string; + display_as?: string; + from?: object | null; + granularity?: string; + metric_filters?: Array; + mode?: string; + multiselect?: boolean; + parents?: Array; + // (undocumented) + state?: AacFilterState; + title?: string; + to?: object | null; + type: string; + using?: string; +} + +// @public +export interface AacDashboardPermissions { + // (undocumented) + edit?: AacPermission; + // (undocumented) + share?: AacPermission; + // (undocumented) + view?: AacPermission; +} + +// @public +export interface AacDashboardPluginLink { + id: string; + parameters?: object | null; +} + +// @public +export interface AacDataset { + data_source?: string; + description?: string; + fields?: { + [key: string]: AacField; + }; + id: string; + precedence?: number; + primary_key?: Array; + references?: Array; + sql?: string; + table_path?: string; + tags?: Array; + title?: string; + type: string; + workspace_data_filters?: Array; +} + +// @public +export interface AacDateDataset { + description?: string; + granularities?: Array; + id: string; + tags?: Array; + title?: string; + title_base?: string; + title_pattern?: string; + type: string; +} + +// @public +export interface AacField { + aggregated_as?: string; + assigned_to?: string; + data_type?: AacFieldDataTypeEnum; + default_view?: string; + description?: string; + is_hidden?: boolean; + labels?: { + [key: string]: AacLabel; + }; + locale?: string; + show_in_ai_results?: boolean; + sort_column?: string; + sort_direction?: AacFieldSortDirectionEnum; + source_column?: string; + tags?: Array; + title?: string; + type: string; +} + +// @public (undocumented) +export type AacFieldDataTypeEnum = "INT" | "STRING" | "DATE" | "NUMERIC" | "TIMESTAMP" | "TIMESTAMP_TZ" | "BOOLEAN"; + +// @public (undocumented) +export type AacFieldSortDirectionEnum = "ASC" | "DESC"; + +// @public +export interface AacFilterState { + exclude?: Array; + include?: Array; +} + +// @public +export interface AacGeoAreaConfig { + // (undocumented) + collection: AacGeoCollectionIdentifier; +} + +// @public +export interface AacGeoCollectionIdentifier { + id: string; + kind?: AacGeoCollectionIdentifierKindEnum; +} + +// @public (undocumented) +export type AacGeoCollectionIdentifierKindEnum = "STATIC" | "CUSTOM"; + +// @public +export interface AacLabel { + data_type?: AacLabelDataTypeEnum; + description?: string; + // (undocumented) + geo_area_config?: AacGeoAreaConfig; + is_hidden?: boolean; + locale?: string; + show_in_ai_results?: boolean; + source_column?: string; + tags?: Array; + title?: string; + translations?: Array; + value_type?: string; +} + +// @public (undocumented) +export type AacLabelDataTypeEnum = "INT" | "STRING" | "DATE" | "NUMERIC" | "TIMESTAMP" | "TIMESTAMP_TZ" | "BOOLEAN"; + +// @public +export interface AacLabelTranslation { + locale: string; + source_column: string; +} + +// @public +export class AACLogicalDataModelApi extends MetadataBaseApi implements AACLogicalDataModelApiInterface { + getLogicalModelAac(requestParameters: AACLogicalDataModelApiGetLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; + setLogicalModelAac(requestParameters: AACLogicalDataModelApiSetLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; +} + +// @public +export function AACLogicalDataModelApi_GetLogicalModelAac(axios: AxiosInstance, basePath: string, requestParameters: AACLogicalDataModelApiGetLogicalModelAacRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function AACLogicalDataModelApi_SetLogicalModelAac(axios: AxiosInstance, basePath: string, requestParameters: AACLogicalDataModelApiSetLogicalModelAacRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function AACLogicalDataModelApiAxiosParamCreator_GetLogicalModelAac(workspaceId: string, includeParents?: boolean, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function AACLogicalDataModelApiAxiosParamCreator_SetLogicalModelAac(workspaceId: string, aacLogicalModel: AacLogicalModel_2, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export interface AACLogicalDataModelApiGetLogicalModelAacRequest { + readonly includeParents?: boolean; + readonly workspaceId: string; +} + +// @public +export interface AACLogicalDataModelApiInterface { + getLogicalModelAac(requestParameters: AACLogicalDataModelApiGetLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; + setLogicalModelAac(requestParameters: AACLogicalDataModelApiSetLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; +} + +// @public +export interface AACLogicalDataModelApiSetLogicalModelAacRequest { + readonly aacLogicalModel: AacLogicalModel_2; + readonly workspaceId: string; +} + // @public export interface AacLogicalModel { // (undocumented) @@ -94,6 +388,194 @@ export interface AacLogicalModel { date_datasets?: unknown[]; } +// @public +export interface AacMetric { + description?: string; + format?: string; + id: string; + is_hidden?: boolean; + maql: string; + show_in_ai_results?: boolean; + tags?: Array; + title?: string; + type: string; +} + +// @public +export interface AacPermission { + all?: boolean; + user_groups?: Array; + users?: Array; +} + +// @public +export interface AacPlugin { + description?: string; + id: string; + tags?: Array; + title?: string; + type: string; + url: string; +} + +// @public +export interface AacQuery { + attributes?: Array; + filters?: { + [key: string]: AacQueryFilter; + }; + metrics?: Array; +} + +// @public +export interface AacQueryAttribute { + // (undocumented) + additionalProperties?: { + [key: string]: object; + }; + display_as?: string; + local_id?: string; + show_all_values?: boolean; + using?: string; +} + +// @public +export interface AacQueryFilter { + // (undocumented) + additionalProperties?: { + [key: string]: object; + }; + condition?: string; + from?: object | null; + granularity?: string; + // (undocumented) + state?: AacFilterState; + to?: object | null; + type: string; + using?: string; + value?: number; +} + +// @public +export interface AacQueryMetric { + // (undocumented) + additionalProperties?: { + [key: string]: object; + }; + compute_ratio?: boolean; + format?: string; + local_id?: string; + maql?: string; + title?: string; + using?: string; +} + +// @public +export interface AacReference { + dataset: string; + multi_directional?: boolean; + sources: Array; +} + +// @public +export interface AacReferenceSource { + data_type?: AacReferenceSourceDataTypeEnum; + source_column: string; + target?: string; +} + +// @public (undocumented) +export type AacReferenceSourceDataTypeEnum = "INT" | "STRING" | "DATE" | "NUMERIC" | "TIMESTAMP" | "TIMESTAMP_TZ" | "BOOLEAN"; + +// @public +export interface AacSection { + description?: string; + header?: boolean; + title?: string; + widgets?: Array; +} + +// @public +export interface AacTab { + filters?: { + [key: string]: AacDashboardFilter; + }; + id: string; + sections?: Array; + title: string; +} + +// @public +export interface AacVisualization { + // (undocumented) + additionalProperties?: { + [key: string]: object; + }; + attribute?: Array; + color?: Array; + columns?: Array; + config?: object | null; + description?: string; + id: string; + is_hidden?: boolean; + location?: Array; + metrics?: Array; + primary_measures?: Array; + // (undocumented) + query?: AacQuery; + rows?: Array; + secondary_measures?: Array; + segment_by?: Array; + show_in_ai_results?: boolean; + size?: Array; + stack?: Array; + tags?: Array; + title?: string; + trend?: Array; + type: AacVisualizationTypeEnum; + view_by?: Array; +} + +// @public (undocumented) +export type AacVisualizationTypeEnum = "table" | "bar_chart" | "column_chart" | "line_chart" | "area_chart" | "scatter_chart" | "bubble_chart" | "pie_chart" | "donut_chart" | "treemap_chart" | "pyramid_chart" | "funnel_chart" | "heatmap_chart" | "bullet_chart" | "waterfall_chart" | "dependency_wheel_chart" | "sankey_chart" | "headline_chart" | "combo_chart" | "geo_chart" | "geo_area_chart" | "repeater_chart"; + +// @public +export interface AacWidget { + // (undocumented) + additionalProperties?: { + [key: string]: object; + }; + content?: string; + date?: string; + description?: string; + drill_down?: object | null; + ignore_dashboard_filters?: Array; + metric?: string; + sections?: Array; + // (undocumented) + size?: AacWidgetSize; + title?: string; + type?: string; + visualization?: string; +} + +// @public +export interface AacWidgetSize { + height?: number; + height_as_ratio?: boolean; + width?: number; +} + +// @public +export interface AacWorkspaceDataFilter { + data_type: AacWorkspaceDataFilterDataTypeEnum; + filter_id: string; + source_column: string; +} + +// @public (undocumented) +export type AacWorkspaceDataFilterDataTypeEnum = "INT" | "STRING" | "DATE" | "NUMERIC" | "TIMESTAMP" | "TIMESTAMP_TZ" | "BOOLEAN"; + // @public export interface AbsoluteDateFilter { // (undocumented) @@ -114,8 +596,10 @@ export interface AbsoluteDateFilterAbsoluteDateFilter { to: string; } +// Warning: (ae-forgotten-export) The symbol "CompoundMeasureValueFilter_2" needs to be exported by the entry point index.d.ts +// // @public -export type AbstractMeasureValueFilter = AfmComparisonMeasureValueFilter | AfmRangeMeasureValueFilter | AfmRankingFilter; +export type AbstractMeasureValueFilter = AfmComparisonMeasureValueFilter | CompoundMeasureValueFilter_2 | AfmRangeMeasureValueFilter | AfmRankingFilter; // @public export class ActionsApi extends MetadataBaseApi implements ActionsApiInterface { @@ -127,6 +611,7 @@ export class ActionsApi extends MetadataBaseApi implements ActionsApiInterface { deleteOrganizationAutomations(requestParameters: ActionsApiDeleteOrganizationAutomationsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteWorkspaceAutomations(requestParameters: ActionsApiDeleteWorkspaceAutomationsRequest, options?: AxiosRequestConfig): AxiosPromise; generateLogicalModel(requestParameters: ActionsApiGenerateLogicalModelRequest, options?: AxiosRequestConfig): AxiosPromise; + generateLogicalModelAac(requestParameters: ActionsApiGenerateLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; getDependentEntitiesGraph(requestParameters: ActionsApiGetDependentEntitiesGraphRequest, options?: AxiosRequestConfig): AxiosPromise; getDependentEntitiesGraphFromEntryPoints(requestParameters: ActionsApiGetDependentEntitiesGraphFromEntryPointsRequest, options?: AxiosRequestConfig): AxiosPromise; getTranslationTags(requestParameters: ActionsApiGetTranslationTagsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -190,6 +675,9 @@ export function ActionsApi_DeleteWorkspaceAutomations(axios: AxiosInstance, base // @public export function ActionsApi_GenerateLogicalModel(axios: AxiosInstance, basePath: string, requestParameters: ActionsApiGenerateLogicalModelRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public +export function ActionsApi_GenerateLogicalModelAac(axios: AxiosInstance, basePath: string, requestParameters: ActionsApiGenerateLogicalModelAacRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function ActionsApi_GetDependentEntitiesGraph(axios: AxiosInstance, basePath: string, requestParameters: ActionsApiGetDependentEntitiesGraphRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -375,6 +863,9 @@ export function ActionsApiAxiosParamCreator_DeleteWorkspaceAutomations(workspace // @public export function ActionsApiAxiosParamCreator_GenerateLogicalModel(dataSourceId: string, generateLdmRequest: GenerateLdmRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public +export function ActionsApiAxiosParamCreator_GenerateLogicalModelAac(dataSourceId: string, generateLdmRequest: GenerateLdmRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function ActionsApiAxiosParamCreator_GetDependentEntitiesGraph(workspaceId: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -595,6 +1086,12 @@ export interface ActionsApiForecastResultRequest { readonly workspaceId: string; } +// @public +export interface ActionsApiGenerateLogicalModelAacRequest { + readonly dataSourceId: string; + readonly generateLdmRequest: GenerateLdmRequest; +} + // @public export interface ActionsApiGenerateLogicalModelRequest { readonly dataSourceId: string; @@ -648,6 +1145,7 @@ export interface ActionsApiInterface { deleteOrganizationAutomations(requestParameters: ActionsApiDeleteOrganizationAutomationsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteWorkspaceAutomations(requestParameters: ActionsApiDeleteWorkspaceAutomationsRequest, options?: AxiosRequestConfig): AxiosPromise; generateLogicalModel(requestParameters: ActionsApiGenerateLogicalModelRequest, options?: AxiosRequestConfig): AxiosPromise; + generateLogicalModelAac(requestParameters: ActionsApiGenerateLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; getDependentEntitiesGraph(requestParameters: ActionsApiGetDependentEntitiesGraphRequest, options?: AxiosRequestConfig): AxiosPromise; getDependentEntitiesGraphFromEntryPoints(requestParameters: ActionsApiGetDependentEntitiesGraphFromEntryPointsRequest, options?: AxiosRequestConfig): AxiosPromise; getTranslationTags(requestParameters: ActionsApiGetTranslationTagsRequest, options?: AxiosRequestConfig): AxiosPromise>; @@ -1413,8 +1911,10 @@ export interface AfmChangeAnalysisRequest { auxMeasures?: Array; // (undocumented) dateAttribute: AfmAttributeItem; + excludeTags?: Array; // Warning: (ae-forgotten-export) The symbol "OutlierDetectionRequestFiltersInner" needs to be exported by the entry point index.d.ts filters?: Array; + includeTags?: Array; // (undocumented) measure: AfmMeasureItem; referencePeriod: string; @@ -1472,7 +1972,7 @@ export interface AfmExecutionSettings { } // @public -export type AfmFilterDefinition = AfmAbsoluteDateFilter | AfmComparisonMeasureValueFilter | AfmInlineFilterDefinition | AfmNegativeAttributeFilter | AfmPositiveAttributeFilter | AfmRangeMeasureValueFilter | AfmRankingFilter | AfmRelativeDateFilter; +export type AfmFilterDefinition = AfmAbsoluteDateFilter | AfmComparisonMeasureValueFilter | CompoundMeasureValueFilter_2 | AfmInlineFilterDefinition | AfmNegativeAttributeFilter | AfmPositiveAttributeFilter | AfmRangeMeasureValueFilter | AfmRankingFilter | AfmRelativeDateFilter; // @public export type AfmFilterDefinitionForSimpleMeasure = AfmAttributeFilter | AfmDateFilter; @@ -2807,8 +3307,10 @@ export interface AutomationAbsoluteDateFilterAbsoluteDateFilter { to: string; } +// Warning: (ae-forgotten-export) The symbol "AutomationCompoundMeasureValueFilter" needs to be exported by the entry point index.d.ts +// // @public -export type AutomationAbstractMeasureValueFilter = AutomationComparisonMeasureValueFilter | AutomationRangeMeasureValueFilter | AutomationRankingFilter; +export type AutomationAbstractMeasureValueFilter = AutomationComparisonMeasureValueFilter | AutomationCompoundMeasureValueFilter | AutomationRangeMeasureValueFilter | AutomationRankingFilter; // @public (undocumented) export interface AutomationAdHocAutomation { @@ -3478,7 +3980,7 @@ export interface AutomationExternalRecipient { } // @public -export type AutomationFilterDefinition = AutomationAbsoluteDateFilter | AutomationComparisonMeasureValueFilter | AutomationInlineFilterDefinition | AutomationNegativeAttributeFilter | AutomationPositiveAttributeFilter | AutomationRangeMeasureValueFilter | AutomationRankingFilter | AutomationRelativeDateFilter; +export type AutomationFilterDefinition = AutomationAbsoluteDateFilter | AutomationComparisonMeasureValueFilter | AutomationCompoundMeasureValueFilter | AutomationInlineFilterDefinition | AutomationNegativeAttributeFilter | AutomationPositiveAttributeFilter | AutomationRangeMeasureValueFilter | AutomationRankingFilter | AutomationRelativeDateFilter; // @public export type AutomationFilterDefinitionForSimpleMeasure = AutomationAttributeFilter | AutomationDateFilter; @@ -3573,7 +4075,7 @@ export interface AutomationMeasureItem { export type AutomationMeasureItemDefinition = AutomationArithmeticMeasureDefinition | AutomationInlineMeasureDefinition | AutomationPopDatasetMeasureDefinition | AutomationPopDateMeasureDefinition | AutomationPopMeasureDefinition | AutomationSimpleMeasureDefinition; // @public -export type AutomationMeasureValueFilter = AutomationComparisonMeasureValueFilter | AutomationRangeMeasureValueFilter; +export type AutomationMeasureValueFilter = AutomationComparisonMeasureValueFilter | AutomationCompoundMeasureValueFilter | AutomationRangeMeasureValueFilter; // @public export interface AutomationMetadata { @@ -4774,6 +5276,23 @@ export interface Comparison { right: AlertConditionOperand; } +// @public +export interface ComparisonCondition { + // (undocumented) + comparison: ComparisonConditionComparison; +} + +// @public (undocumented) +export interface ComparisonConditionComparison { + // (undocumented) + operator: ComparisonConditionComparisonOperatorEnum; + // (undocumented) + value: number; +} + +// @public (undocumented) +export type ComparisonConditionComparisonOperatorEnum = "GREATER_THAN" | "GREATER_THAN_OR_EQUAL_TO" | "LESS_THAN" | "LESS_THAN_OR_EQUAL_TO" | "EQUAL_TO" | "NOT_EQUAL_TO"; + // @public export interface ComparisonMeasureValueFilter { // (undocumented) @@ -4808,6 +5327,25 @@ export interface ComparisonWrapper { comparison: Comparison; } +// @public +export interface CompoundMeasureValueFilter { + // (undocumented) + compoundMeasureValueFilter: CompoundMeasureValueFilterCompoundMeasureValueFilter; +} + +// @public (undocumented) +export interface CompoundMeasureValueFilterCompoundMeasureValueFilter { + // (undocumented) + applyOnResult?: boolean; + conditions: Array; + dimensionality?: Array; + // (undocumented) + localIdentifier?: string; + // (undocumented) + measure: AfmIdentifier; + treatNullValuesAs?: number; +} + // @public (undocumented) export class Configuration { constructor(param?: ConfigurationParameters); @@ -4833,135 +5371,23 @@ export interface ConfigurationParameters { // (undocumented) basePath?: string; // (undocumented) - formDataCtor?: new () => any; - // (undocumented) - password?: string; - // (undocumented) - serverIndex?: number; - // (undocumented) - username?: string; -} - -// @public -export interface ContentSlideTemplate { - // (undocumented) - descriptionField?: string | null; - // (undocumented) - footer?: RunningSection | null; - // (undocumented) - header?: RunningSection | null; -} - -// @public -export class ContextFiltersApi extends MetadataBaseApi implements ContextFiltersApiInterface { - createEntityFilterContexts(requestParameters: ContextFiltersApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - deleteEntityFilterContexts(requestParameters: ContextFiltersApiDeleteEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - getAllEntitiesFilterContexts(requestParameters: ContextFiltersApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - getEntityFilterContexts(requestParameters: ContextFiltersApiGetEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - patchEntityFilterContexts(requestParameters: ContextFiltersApiPatchEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - updateEntityFilterContexts(requestParameters: ContextFiltersApiUpdateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; -} - -// @public -export function ContextFiltersApi_CreateEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: ContextFiltersApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; - -// @public -export function ContextFiltersApi_DeleteEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: ContextFiltersApiDeleteEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; - -// @public -export function ContextFiltersApi_GetAllEntitiesFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: ContextFiltersApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; - -// @public -export function ContextFiltersApi_GetEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: ContextFiltersApiGetEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; - -// @public -export function ContextFiltersApi_PatchEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: ContextFiltersApiPatchEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; - -// @public -export function ContextFiltersApi_UpdateEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: ContextFiltersApiUpdateEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; - -// @public -export function ContextFiltersApiAxiosParamCreator_CreateEntityFilterContexts(workspaceId: string, jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; - -// @public -export function ContextFiltersApiAxiosParamCreator_DeleteEntityFilterContexts(workspaceId: string, objectId: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; - -// @public -export function ContextFiltersApiAxiosParamCreator_GetAllEntitiesFilterContexts(workspaceId: string, origin?: "ALL" | "PARENTS" | "NATIVE", filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, page?: number, size?: number, sort?: Array, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; - -// @public -export function ContextFiltersApiAxiosParamCreator_GetEntityFilterContexts(workspaceId: string, objectId: string, filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; - -// @public -export function ContextFiltersApiAxiosParamCreator_PatchEntityFilterContexts(workspaceId: string, objectId: string, jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument, filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; - -// @public -export function ContextFiltersApiAxiosParamCreator_UpdateEntityFilterContexts(workspaceId: string, objectId: string, jsonApiFilterContextInDocument: JsonApiFilterContextInDocument, filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; - -// @public -export interface ContextFiltersApiCreateEntityFilterContextsRequest { - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - readonly jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument; - readonly metaInclude?: Array<"origin" | "all" | "ALL">; - readonly workspaceId: string; -} - -// @public -export interface ContextFiltersApiDeleteEntityFilterContextsRequest { - readonly filter?: string; - readonly objectId: string; - readonly workspaceId: string; -} - -// @public -export interface ContextFiltersApiGetAllEntitiesFilterContextsRequest { - readonly filter?: string; - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - readonly metaInclude?: Array<"origin" | "page" | "all" | "ALL">; - readonly origin?: "ALL" | "PARENTS" | "NATIVE"; - readonly page?: number; - readonly size?: number; - readonly sort?: Array; - readonly workspaceId: string; - readonly xGDCVALIDATERELATIONS?: boolean; -} - -// @public -export interface ContextFiltersApiGetEntityFilterContextsRequest { - readonly filter?: string; - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - readonly metaInclude?: Array<"origin" | "all" | "ALL">; - readonly objectId: string; - readonly workspaceId: string; - readonly xGDCVALIDATERELATIONS?: boolean; -} - -// @public -export interface ContextFiltersApiInterface { - createEntityFilterContexts(requestParameters: ContextFiltersApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - deleteEntityFilterContexts(requestParameters: ContextFiltersApiDeleteEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - getAllEntitiesFilterContexts(requestParameters: ContextFiltersApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - getEntityFilterContexts(requestParameters: ContextFiltersApiGetEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - patchEntityFilterContexts(requestParameters: ContextFiltersApiPatchEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; - updateEntityFilterContexts(requestParameters: ContextFiltersApiUpdateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; -} - -// @public -export interface ContextFiltersApiPatchEntityFilterContextsRequest { - readonly filter?: string; - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - readonly jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument; - readonly objectId: string; - readonly workspaceId: string; + formDataCtor?: new () => any; + // (undocumented) + password?: string; + // (undocumented) + serverIndex?: number; + // (undocumented) + username?: string; } // @public -export interface ContextFiltersApiUpdateEntityFilterContextsRequest { - readonly filter?: string; - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - readonly jsonApiFilterContextInDocument: JsonApiFilterContextInDocument; - readonly objectId: string; - readonly workspaceId: string; +export interface ContentSlideTemplate { + // (undocumented) + descriptionField?: string | null; + // (undocumented) + footer?: RunningSection | null; + // (undocumented) + header?: RunningSection | null; } // @public @@ -7283,6 +7709,8 @@ export class EntitiesApi extends MetadataBaseApi implements EntitiesApiInterface createEntityColorPalettes(requestParameters: EntitiesApiCreateEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityCspDirectives(requestParameters: EntitiesApiCreateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityCustomApplicationSettings(requestParameters: EntitiesApiCreateEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + createEntityCustomGeoCollections(requestParameters: EntitiesApiCreateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityDashboardPlugins(requestParameters: EntitiesApiCreateEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityDataSources(requestParameters: EntitiesApiCreateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityExportDefinitions(requestParameters: EntitiesApiCreateEntityExportDefinitionsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -7316,6 +7744,8 @@ export class EntitiesApi extends MetadataBaseApi implements EntitiesApiInterface deleteEntityColorPalettes(requestParameters: EntitiesApiDeleteEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityCspDirectives(requestParameters: EntitiesApiDeleteEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityCustomApplicationSettings(requestParameters: EntitiesApiDeleteEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + deleteEntityCustomGeoCollections(requestParameters: EntitiesApiDeleteEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityDashboardPlugins(requestParameters: EntitiesApiDeleteEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityDataSources(requestParameters: EntitiesApiDeleteEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityExportDefinitions(requestParameters: EntitiesApiDeleteEntityExportDefinitionsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -7354,6 +7784,8 @@ export class EntitiesApi extends MetadataBaseApi implements EntitiesApiInterface getAllEntitiesColorPalettes(requestParameters?: EntitiesApiGetAllEntitiesColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesCspDirectives(requestParameters?: EntitiesApiGetAllEntitiesCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesCustomApplicationSettings(requestParameters: EntitiesApiGetAllEntitiesCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getAllEntitiesCustomGeoCollections(requestParameters?: EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDashboardPlugins(requestParameters: EntitiesApiGetAllEntitiesDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDatasets(requestParameters: EntitiesApiGetAllEntitiesDatasetsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDataSourceIdentifiers(requestParameters?: EntitiesApiGetAllEntitiesDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -7403,6 +7835,8 @@ export class EntitiesApi extends MetadataBaseApi implements EntitiesApiInterface getEntityCookieSecurityConfigurations(requestParameters: EntitiesApiGetEntityCookieSecurityConfigurationsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityCspDirectives(requestParameters: EntitiesApiGetEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityCustomApplicationSettings(requestParameters: EntitiesApiGetEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getEntityCustomGeoCollections(requestParameters: EntitiesApiGetEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDashboardPlugins(requestParameters: EntitiesApiGetEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDatasets(requestParameters: EntitiesApiGetEntityDatasetsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDataSourceIdentifiers(requestParameters: EntitiesApiGetEntityDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -7447,6 +7881,8 @@ export class EntitiesApi extends MetadataBaseApi implements EntitiesApiInterface patchEntityCookieSecurityConfigurations(requestParameters: EntitiesApiPatchEntityCookieSecurityConfigurationsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityCspDirectives(requestParameters: EntitiesApiPatchEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityCustomApplicationSettings(requestParameters: EntitiesApiPatchEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + patchEntityCustomGeoCollections(requestParameters: EntitiesApiPatchEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDashboardPlugins(requestParameters: EntitiesApiPatchEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDatasets(requestParameters: EntitiesApiPatchEntityDatasetsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDataSources(requestParameters: EntitiesApiPatchEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -7507,6 +7943,8 @@ export class EntitiesApi extends MetadataBaseApi implements EntitiesApiInterface updateEntityCookieSecurityConfigurations(requestParameters: EntitiesApiUpdateEntityCookieSecurityConfigurationsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityCspDirectives(requestParameters: EntitiesApiUpdateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityCustomApplicationSettings(requestParameters: EntitiesApiUpdateEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + updateEntityCustomGeoCollections(requestParameters: EntitiesApiUpdateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityDashboardPlugins(requestParameters: EntitiesApiUpdateEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityDataSources(requestParameters: EntitiesApiUpdateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityExportDefinitions(requestParameters: EntitiesApiUpdateEntityExportDefinitionsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -7557,6 +7995,9 @@ export function EntitiesApi_CreateEntityCspDirectives(axios: AxiosInstance, base // @public export function EntitiesApi_CreateEntityCustomApplicationSettings(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiCreateEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function EntitiesApi_CreateEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiCreateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function EntitiesApi_CreateEntityDashboardPlugins(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiCreateEntityDashboardPluginsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -7650,6 +8091,9 @@ export function EntitiesApi_DeleteEntityCspDirectives(axios: AxiosInstance, base // @public export function EntitiesApi_DeleteEntityCustomApplicationSettings(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiDeleteEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function EntitiesApi_DeleteEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiDeleteEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function EntitiesApi_DeleteEntityDashboardPlugins(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiDeleteEntityDashboardPluginsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -7752,6 +8196,9 @@ export function EntitiesApi_GetAllEntitiesCspDirectives(axios: AxiosInstance, ba // @public export function EntitiesApi_GetAllEntitiesCustomApplicationSettings(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiGetAllEntitiesCustomApplicationSettingsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function EntitiesApi_GetAllEntitiesCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function EntitiesApi_GetAllEntitiesDashboardPlugins(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiGetAllEntitiesDashboardPluginsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -7883,6 +8330,9 @@ export function EntitiesApi_GetEntityCspDirectives(axios: AxiosInstance, basePat // @public export function EntitiesApi_GetEntityCustomApplicationSettings(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiGetEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function EntitiesApi_GetEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiGetEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function EntitiesApi_GetEntityDashboardPlugins(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiGetEntityDashboardPluginsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -8006,6 +8456,9 @@ export function EntitiesApi_PatchEntityCspDirectives(axios: AxiosInstance, baseP // @public export function EntitiesApi_PatchEntityCustomApplicationSettings(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiPatchEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function EntitiesApi_PatchEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiPatchEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function EntitiesApi_PatchEntityDashboardPlugins(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiPatchEntityDashboardPluginsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -8174,6 +8627,9 @@ export function EntitiesApi_UpdateEntityCspDirectives(axios: AxiosInstance, base // @public export function EntitiesApi_UpdateEntityCustomApplicationSettings(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiUpdateEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function EntitiesApi_UpdateEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiUpdateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function EntitiesApi_UpdateEntityDashboardPlugins(axios: AxiosInstance, basePath: string, requestParameters: EntitiesApiUpdateEntityDashboardPluginsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -8270,6 +8726,9 @@ export function EntitiesApiAxiosParamCreator_CreateEntityCspDirectives(jsonApiCs // @public export function EntitiesApiAxiosParamCreator_CreateEntityCustomApplicationSettings(workspaceId: string, jsonApiCustomApplicationSettingPostOptionalIdDocument: JsonApiCustomApplicationSettingPostOptionalIdDocument, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function EntitiesApiAxiosParamCreator_CreateEntityCustomGeoCollections(jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function EntitiesApiAxiosParamCreator_CreateEntityDashboardPlugins(workspaceId: string, jsonApiDashboardPluginPostOptionalIdDocument: JsonApiDashboardPluginPostOptionalIdDocument, include?: Array<"userIdentifiers" | "createdBy" | "modifiedBy" | "ALL">, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -8363,6 +8822,9 @@ export function EntitiesApiAxiosParamCreator_DeleteEntityCspDirectives(id: strin // @public export function EntitiesApiAxiosParamCreator_DeleteEntityCustomApplicationSettings(workspaceId: string, objectId: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function EntitiesApiAxiosParamCreator_DeleteEntityCustomGeoCollections(id: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function EntitiesApiAxiosParamCreator_DeleteEntityDashboardPlugins(workspaceId: string, objectId: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -8465,6 +8927,9 @@ export function EntitiesApiAxiosParamCreator_GetAllEntitiesCspDirectives(filter? // @public export function EntitiesApiAxiosParamCreator_GetAllEntitiesCustomApplicationSettings(workspaceId: string, origin?: "ALL" | "PARENTS" | "NATIVE", filter?: string, page?: number, size?: number, sort?: Array, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function EntitiesApiAxiosParamCreator_GetAllEntitiesCustomGeoCollections(filter?: string, page?: number, size?: number, sort?: Array, metaInclude?: Array<"page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function EntitiesApiAxiosParamCreator_GetAllEntitiesDashboardPlugins(workspaceId: string, origin?: "ALL" | "PARENTS" | "NATIVE", filter?: string, include?: Array<"userIdentifiers" | "createdBy" | "modifiedBy" | "ALL">, page?: number, size?: number, sort?: Array, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -8594,6 +9059,9 @@ export function EntitiesApiAxiosParamCreator_GetEntityCspDirectives(id: string, // @public export function EntitiesApiAxiosParamCreator_GetEntityCustomApplicationSettings(workspaceId: string, objectId: string, filter?: string, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function EntitiesApiAxiosParamCreator_GetEntityCustomGeoCollections(id: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function EntitiesApiAxiosParamCreator_GetEntityDashboardPlugins(workspaceId: string, objectId: string, filter?: string, include?: Array<"userIdentifiers" | "createdBy" | "modifiedBy" | "ALL">, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -8717,6 +9185,9 @@ export function EntitiesApiAxiosParamCreator_PatchEntityCspDirectives(id: string // @public export function EntitiesApiAxiosParamCreator_PatchEntityCustomApplicationSettings(workspaceId: string, objectId: string, jsonApiCustomApplicationSettingPatchDocument: JsonApiCustomApplicationSettingPatchDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function EntitiesApiAxiosParamCreator_PatchEntityCustomGeoCollections(id: string, jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function EntitiesApiAxiosParamCreator_PatchEntityDashboardPlugins(workspaceId: string, objectId: string, jsonApiDashboardPluginPatchDocument: JsonApiDashboardPluginPatchDocument, filter?: string, include?: Array<"userIdentifiers" | "createdBy" | "modifiedBy" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -8885,6 +9356,9 @@ export function EntitiesApiAxiosParamCreator_UpdateEntityCspDirectives(id: strin // @public export function EntitiesApiAxiosParamCreator_UpdateEntityCustomApplicationSettings(workspaceId: string, objectId: string, jsonApiCustomApplicationSettingInDocument: JsonApiCustomApplicationSettingInDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function EntitiesApiAxiosParamCreator_UpdateEntityCustomGeoCollections(id: string, jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function EntitiesApiAxiosParamCreator_UpdateEntityDashboardPlugins(workspaceId: string, objectId: string, jsonApiDashboardPluginInDocument: JsonApiDashboardPluginInDocument, filter?: string, include?: Array<"userIdentifiers" | "createdBy" | "modifiedBy" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -9007,6 +9481,11 @@ export interface EntitiesApiCreateEntityCustomApplicationSettingsRequest { readonly workspaceId: string; } +// @public +export interface EntitiesApiCreateEntityCustomGeoCollectionsRequest { + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; +} + // @public export interface EntitiesApiCreateEntityDashboardPluginsRequest { readonly include?: Array<"userIdentifiers" | "createdBy" | "modifiedBy" | "ALL">; @@ -9214,6 +9693,12 @@ export interface EntitiesApiDeleteEntityCustomApplicationSettingsRequest { readonly workspaceId: string; } +// @public +export interface EntitiesApiDeleteEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; +} + // @public export interface EntitiesApiDeleteEntityDashboardPluginsRequest { readonly filter?: string; @@ -9486,6 +9971,15 @@ export interface EntitiesApiGetAllEntitiesCustomApplicationSettingsRequest { readonly xGDCVALIDATERELATIONS?: boolean; } +// @public +export interface EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest { + readonly filter?: string; + readonly metaInclude?: Array<"page" | "all" | "ALL">; + readonly page?: number; + readonly size?: number; + readonly sort?: Array; +} + // @public export interface EntitiesApiGetAllEntitiesDashboardPluginsRequest { readonly filter?: string; @@ -9912,6 +10406,12 @@ export interface EntitiesApiGetEntityCustomApplicationSettingsRequest { readonly xGDCVALIDATERELATIONS?: boolean; } +// @public +export interface EntitiesApiGetEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; +} + // @public export interface EntitiesApiGetEntityDashboardPluginsRequest { readonly filter?: string; @@ -10185,6 +10685,8 @@ export interface EntitiesApiInterface { createEntityColorPalettes(requestParameters: EntitiesApiCreateEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityCspDirectives(requestParameters: EntitiesApiCreateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityCustomApplicationSettings(requestParameters: EntitiesApiCreateEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + createEntityCustomGeoCollections(requestParameters: EntitiesApiCreateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityDashboardPlugins(requestParameters: EntitiesApiCreateEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityDataSources(requestParameters: EntitiesApiCreateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityExportDefinitions(requestParameters: EntitiesApiCreateEntityExportDefinitionsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -10218,6 +10720,8 @@ export interface EntitiesApiInterface { deleteEntityColorPalettes(requestParameters: EntitiesApiDeleteEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityCspDirectives(requestParameters: EntitiesApiDeleteEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityCustomApplicationSettings(requestParameters: EntitiesApiDeleteEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + deleteEntityCustomGeoCollections(requestParameters: EntitiesApiDeleteEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityDashboardPlugins(requestParameters: EntitiesApiDeleteEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityDataSources(requestParameters: EntitiesApiDeleteEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityExportDefinitions(requestParameters: EntitiesApiDeleteEntityExportDefinitionsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -10256,6 +10760,8 @@ export interface EntitiesApiInterface { getAllEntitiesColorPalettes(requestParameters: EntitiesApiGetAllEntitiesColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesCspDirectives(requestParameters: EntitiesApiGetAllEntitiesCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesCustomApplicationSettings(requestParameters: EntitiesApiGetAllEntitiesCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getAllEntitiesCustomGeoCollections(requestParameters: EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDashboardPlugins(requestParameters: EntitiesApiGetAllEntitiesDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDatasets(requestParameters: EntitiesApiGetAllEntitiesDatasetsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDataSourceIdentifiers(requestParameters: EntitiesApiGetAllEntitiesDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -10305,6 +10811,8 @@ export interface EntitiesApiInterface { getEntityCookieSecurityConfigurations(requestParameters: EntitiesApiGetEntityCookieSecurityConfigurationsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityCspDirectives(requestParameters: EntitiesApiGetEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityCustomApplicationSettings(requestParameters: EntitiesApiGetEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getEntityCustomGeoCollections(requestParameters: EntitiesApiGetEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDashboardPlugins(requestParameters: EntitiesApiGetEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDatasets(requestParameters: EntitiesApiGetEntityDatasetsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDataSourceIdentifiers(requestParameters: EntitiesApiGetEntityDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -10349,6 +10857,8 @@ export interface EntitiesApiInterface { patchEntityCookieSecurityConfigurations(requestParameters: EntitiesApiPatchEntityCookieSecurityConfigurationsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityCspDirectives(requestParameters: EntitiesApiPatchEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityCustomApplicationSettings(requestParameters: EntitiesApiPatchEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + patchEntityCustomGeoCollections(requestParameters: EntitiesApiPatchEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDashboardPlugins(requestParameters: EntitiesApiPatchEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDatasets(requestParameters: EntitiesApiPatchEntityDatasetsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDataSources(requestParameters: EntitiesApiPatchEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -10409,6 +10919,8 @@ export interface EntitiesApiInterface { updateEntityCookieSecurityConfigurations(requestParameters: EntitiesApiUpdateEntityCookieSecurityConfigurationsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityCspDirectives(requestParameters: EntitiesApiUpdateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityCustomApplicationSettings(requestParameters: EntitiesApiUpdateEntityCustomApplicationSettingsRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + updateEntityCustomGeoCollections(requestParameters: EntitiesApiUpdateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityDashboardPlugins(requestParameters: EntitiesApiUpdateEntityDashboardPluginsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityDataSources(requestParameters: EntitiesApiUpdateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityExportDefinitions(requestParameters: EntitiesApiUpdateEntityExportDefinitionsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -10503,6 +11015,13 @@ export interface EntitiesApiPatchEntityCustomApplicationSettingsRequest { readonly workspaceId: string; } +// @public +export interface EntitiesApiPatchEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; + readonly jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument; +} + // @public export interface EntitiesApiPatchEntityDashboardPluginsRequest { readonly filter?: string; @@ -10957,6 +11476,13 @@ export interface EntitiesApiUpdateEntityCustomApplicationSettingsRequest { readonly workspaceId: string; } +// @public +export interface EntitiesApiUpdateEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; +} + // @public export interface EntitiesApiUpdateEntityDashboardPluginsRequest { readonly filter?: string; @@ -11345,7 +11871,7 @@ export interface ExportAbsoluteDateFilterAbsoluteDateFilter { } // @public -export type ExportAbstractMeasureValueFilter = ExportComparisonMeasureValueFilter | ExportRangeMeasureValueFilter | ExportRankingFilter; +export type ExportAbstractMeasureValueFilter = ExportComparisonMeasureValueFilter | ExportCompoundMeasureValueFilter | ExportRangeMeasureValueFilter | ExportRankingFilter; // @public export interface ExportAFM { @@ -11530,6 +12056,23 @@ export interface ExportBoundedFilter { // @public (undocumented) export type ExportBoundedFilterGranularityEnum = "MINUTE" | "HOUR" | "DAY" | "WEEK" | "MONTH" | "QUARTER" | "YEAR" | "MINUTE_OF_HOUR" | "HOUR_OF_DAY" | "DAY_OF_WEEK" | "DAY_OF_MONTH" | "DAY_OF_QUARTER" | "DAY_OF_YEAR" | "WEEK_OF_YEAR" | "MONTH_OF_YEAR" | "QUARTER_OF_YEAR" | "FISCAL_MONTH" | "FISCAL_QUARTER" | "FISCAL_YEAR"; +// @public +export interface ExportComparisonCondition { + // (undocumented) + comparison: ExportComparisonConditionComparison; +} + +// @public (undocumented) +export interface ExportComparisonConditionComparison { + // (undocumented) + operator: ExportComparisonConditionComparisonOperatorEnum; + // (undocumented) + value: number; +} + +// @public (undocumented) +export type ExportComparisonConditionComparisonOperatorEnum = "GREATER_THAN" | "GREATER_THAN_OR_EQUAL_TO" | "LESS_THAN" | "LESS_THAN_OR_EQUAL_TO" | "EQUAL_TO" | "NOT_EQUAL_TO"; + // @public export interface ExportComparisonMeasureValueFilter { // (undocumented) @@ -11555,6 +12098,25 @@ export interface ExportComparisonMeasureValueFilterComparisonMeasureValueFilter // @public (undocumented) export type ExportComparisonMeasureValueFilterComparisonMeasureValueFilterOperatorEnum = "GREATER_THAN" | "GREATER_THAN_OR_EQUAL_TO" | "LESS_THAN" | "LESS_THAN_OR_EQUAL_TO" | "EQUAL_TO" | "NOT_EQUAL_TO"; +// @public +export interface ExportCompoundMeasureValueFilter { + // (undocumented) + compoundMeasureValueFilter: ExportCompoundMeasureValueFilterCompoundMeasureValueFilter; +} + +// @public (undocumented) +export interface ExportCompoundMeasureValueFilterCompoundMeasureValueFilter { + // (undocumented) + applyOnResult?: boolean; + conditions: Array; + dimensionality?: Array; + // (undocumented) + localIdentifier?: string; + // (undocumented) + measure: ExportAfmIdentifier; + treatNullValuesAs?: number; +} + // @public (undocumented) export class ExportConfiguration { constructor(param?: ExportConfigurationParameters); @@ -11843,7 +12405,7 @@ export interface ExportExportResponse { } // @public -export type ExportFilterDefinition = ExportAbsoluteDateFilter | ExportComparisonMeasureValueFilter | ExportInlineFilterDefinition | ExportNegativeAttributeFilter | ExportPositiveAttributeFilter | ExportRangeMeasureValueFilter | ExportRankingFilter | ExportRelativeDateFilter; +export type ExportFilterDefinition = ExportAbsoluteDateFilter | ExportComparisonMeasureValueFilter | ExportCompoundMeasureValueFilter | ExportInlineFilterDefinition | ExportNegativeAttributeFilter | ExportPositiveAttributeFilter | ExportRangeMeasureValueFilter | ExportRankingFilter | ExportRelativeDateFilter; // @public export type ExportFilterDefinitionForSimpleMeasure = ExportAttributeFilter | ExportDateFilter; @@ -11934,7 +12496,10 @@ export interface ExportMeasureItem { } // @public -export type ExportMeasureValueFilter = ExportComparisonMeasureValueFilter | ExportRangeMeasureValueFilter; +export type ExportMeasureValueCondition = ExportComparisonCondition | ExportRangeCondition; + +// @public +export type ExportMeasureValueFilter = ExportComparisonMeasureValueFilter | ExportCompoundMeasureValueFilter | ExportRangeMeasureValueFilter; // @public export interface ExportNegativeAttributeFilter { @@ -12033,6 +12598,25 @@ export interface ExportPositiveAttributeFilterPositiveAttributeFilter { localIdentifier?: string; } +// @public +export interface ExportRangeCondition { + // (undocumented) + range: ExportRangeConditionRange; +} + +// @public (undocumented) +export interface ExportRangeConditionRange { + // (undocumented) + from: number; + // (undocumented) + operator: ExportRangeConditionRangeOperatorEnum; + // (undocumented) + to: number; +} + +// @public (undocumented) +export type ExportRangeConditionRangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; + // @public export interface ExportRangeMeasureValueFilter { // (undocumented) @@ -12432,7 +13016,119 @@ export interface FilterBy { export type FilterByLabelTypeEnum = "PRIMARY" | "REQUESTED"; // @public -export type FilterDefinition = AbsoluteDateFilter | ComparisonMeasureValueFilter | InlineFilterDefinition | NegativeAttributeFilter | PositiveAttributeFilter | RangeMeasureValueFilter | RankingFilter | RelativeDateFilter; +export class FilterContextApi extends MetadataBaseApi implements FilterContextApiInterface { + createEntityFilterContexts(requestParameters: FilterContextApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + deleteEntityFilterContexts(requestParameters: FilterContextApiDeleteEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + getAllEntitiesFilterContexts(requestParameters: FilterContextApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + getEntityFilterContexts(requestParameters: FilterContextApiGetEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + patchEntityFilterContexts(requestParameters: FilterContextApiPatchEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + updateEntityFilterContexts(requestParameters: FilterContextApiUpdateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; +} + +// @public +export function FilterContextApi_CreateEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: FilterContextApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function FilterContextApi_DeleteEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: FilterContextApiDeleteEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function FilterContextApi_GetAllEntitiesFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: FilterContextApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function FilterContextApi_GetEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: FilterContextApiGetEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function FilterContextApi_PatchEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: FilterContextApiPatchEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function FilterContextApi_UpdateEntityFilterContexts(axios: AxiosInstance, basePath: string, requestParameters: FilterContextApiUpdateEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + +// @public +export function FilterContextApiAxiosParamCreator_CreateEntityFilterContexts(workspaceId: string, jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function FilterContextApiAxiosParamCreator_DeleteEntityFilterContexts(workspaceId: string, objectId: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function FilterContextApiAxiosParamCreator_GetAllEntitiesFilterContexts(workspaceId: string, origin?: "ALL" | "PARENTS" | "NATIVE", filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, page?: number, size?: number, sort?: Array, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function FilterContextApiAxiosParamCreator_GetEntityFilterContexts(workspaceId: string, objectId: string, filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, xGDCVALIDATERELATIONS?: boolean, metaInclude?: Array<"origin" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function FilterContextApiAxiosParamCreator_PatchEntityFilterContexts(workspaceId: string, objectId: string, jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument, filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export function FilterContextApiAxiosParamCreator_UpdateEntityFilterContexts(workspaceId: string, objectId: string, jsonApiFilterContextInDocument: JsonApiFilterContextInDocument, filter?: string, include?: Array<"attributes" | "datasets" | "labels" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export interface FilterContextApiCreateEntityFilterContextsRequest { + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; + readonly jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument; + readonly metaInclude?: Array<"origin" | "all" | "ALL">; + readonly workspaceId: string; +} + +// @public +export interface FilterContextApiDeleteEntityFilterContextsRequest { + readonly filter?: string; + readonly objectId: string; + readonly workspaceId: string; +} + +// @public +export interface FilterContextApiGetAllEntitiesFilterContextsRequest { + readonly filter?: string; + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; + readonly metaInclude?: Array<"origin" | "page" | "all" | "ALL">; + readonly origin?: "ALL" | "PARENTS" | "NATIVE"; + readonly page?: number; + readonly size?: number; + readonly sort?: Array; + readonly workspaceId: string; + readonly xGDCVALIDATERELATIONS?: boolean; +} + +// @public +export interface FilterContextApiGetEntityFilterContextsRequest { + readonly filter?: string; + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; + readonly metaInclude?: Array<"origin" | "all" | "ALL">; + readonly objectId: string; + readonly workspaceId: string; + readonly xGDCVALIDATERELATIONS?: boolean; +} + +// @public +export interface FilterContextApiInterface { + createEntityFilterContexts(requestParameters: FilterContextApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + deleteEntityFilterContexts(requestParameters: FilterContextApiDeleteEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + getAllEntitiesFilterContexts(requestParameters: FilterContextApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + getEntityFilterContexts(requestParameters: FilterContextApiGetEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + patchEntityFilterContexts(requestParameters: FilterContextApiPatchEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; + updateEntityFilterContexts(requestParameters: FilterContextApiUpdateEntityFilterContextsRequest, options?: AxiosRequestConfig): AxiosPromise; +} + +// @public +export interface FilterContextApiPatchEntityFilterContextsRequest { + readonly filter?: string; + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; + readonly jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument; + readonly objectId: string; + readonly workspaceId: string; +} + +// @public +export interface FilterContextApiUpdateEntityFilterContextsRequest { + readonly filter?: string; + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; + readonly jsonApiFilterContextInDocument: JsonApiFilterContextInDocument; + readonly objectId: string; + readonly workspaceId: string; +} + +// @public +export type FilterDefinition = AbsoluteDateFilter | ComparisonMeasureValueFilter | CompoundMeasureValueFilter | InlineFilterDefinition | NegativeAttributeFilter | PositiveAttributeFilter | RangeMeasureValueFilter | RankingFilter | RelativeDateFilter; // @public export type FilterDefinitionForSimpleMeasure = AttributeFilter | DateFilter; @@ -12662,14 +13358,27 @@ export interface GenerateLdmRequest { // @public export class GenerateLogicalDataModelApi extends MetadataBaseApi implements GenerateLogicalDataModelApiInterface { generateLogicalModel(requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelRequest, options?: AxiosRequestConfig): AxiosPromise; + generateLogicalModelAac(requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; } // @public export function GenerateLogicalDataModelApi_GenerateLogicalModel(axios: AxiosInstance, basePath: string, requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public +export function GenerateLogicalDataModelApi_GenerateLogicalModelAac(axios: AxiosInstance, basePath: string, requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelAacRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function GenerateLogicalDataModelApiAxiosParamCreator_GenerateLogicalModel(dataSourceId: string, generateLdmRequest: GenerateLdmRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public +export function GenerateLogicalDataModelApiAxiosParamCreator_GenerateLogicalModelAac(dataSourceId: string, generateLdmRequest: GenerateLdmRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + +// @public +export interface GenerateLogicalDataModelApiGenerateLogicalModelAacRequest { + readonly dataSourceId: string; + readonly generateLdmRequest: GenerateLdmRequest; +} + // @public export interface GenerateLogicalDataModelApiGenerateLogicalModelRequest { readonly dataSourceId: string; @@ -12679,19 +13388,24 @@ export interface GenerateLogicalDataModelApiGenerateLogicalModelRequest { // @public export interface GenerateLogicalDataModelApiInterface { generateLogicalModel(requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelRequest, options?: AxiosRequestConfig): AxiosPromise; + generateLogicalModelAac(requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelAacRequest, options?: AxiosRequestConfig): AxiosPromise; } // @public export interface GeoAreaConfig { // (undocumented) - collection: GeoCollection; + collection: GeoCollectionIdentifier; } // @public (undocumented) -export interface GeoCollection { +export interface GeoCollectionIdentifier { id: string; + kind?: GeoCollectionIdentifierKindEnum; } +// @public (undocumented) +export type GeoCollectionIdentifierKindEnum = "STATIC" | "CUSTOM"; + // @public export interface GrainIdentifier { id: string; @@ -13528,7 +14242,7 @@ export interface JsonApiAggregatedFactOut { attributes: JsonApiAggregatedFactOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiAggregatedFactOutRelationships; type: JsonApiAggregatedFactOutTypeEnum; @@ -13576,13 +14290,13 @@ export interface JsonApiAggregatedFactOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiAggregatedFactOutRelationships { // (undocumented) - dataset?: JsonApiAttributeOutRelationshipsDataset; + dataset?: JsonApiFactOutRelationshipsDataset; // (undocumented) sourceFact?: JsonApiAggregatedFactOutRelationshipsSourceFact; } @@ -13604,7 +14318,7 @@ export interface JsonApiAggregatedFactOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiAggregatedFactOutRelationships; type: JsonApiAggregatedFactOutWithLinksTypeEnum; @@ -13690,7 +14404,7 @@ export interface JsonApiAnalyticalDashboardOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -13698,7 +14412,7 @@ export interface JsonApiAnalyticalDashboardOutMeta { // (undocumented) accessInfo?: JsonApiAnalyticalDashboardOutMetaAccessInfo; // (undocumented) - origin?: JsonApiVisualizationObjectOutMetaOrigin; + origin?: JsonApiDatasetOutMetaOrigin; permissions?: Array; } @@ -13719,7 +14433,7 @@ export interface JsonApiAnalyticalDashboardOutRelationships { // (undocumented) dashboardPlugins?: JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins; // (undocumented) - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; + datasets?: JsonApiDatasetOutRelationshipsReferences; // (undocumented) filterContexts?: JsonApiAnalyticalDashboardOutRelationshipsFilterContexts; // (undocumented) @@ -13862,13 +14576,7 @@ export interface JsonApiApiTokenOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; -} - -// @public (undocumented) -export interface JsonApiApiTokenOutListMeta { - // (undocumented) - page?: PageMetadata; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -13890,11 +14598,24 @@ export type JsonApiApiTokenOutWithLinksTypeEnum = "apiToken"; // @public export interface JsonApiAttributeHierarchyIn { // (undocumented) - attributes?: JsonApiAttributeHierarchyPatchAttributes; + attributes?: JsonApiAttributeHierarchyInAttributes; id: string; type: JsonApiAttributeHierarchyInTypeEnum; } +// @public (undocumented) +export interface JsonApiAttributeHierarchyInAttributes { + // (undocumented) + areRelationsValid?: boolean; + content?: object; + // (undocumented) + description?: string; + // (undocumented) + tags?: Array; + // (undocumented) + title?: string; +} + // @public (undocumented) export interface JsonApiAttributeHierarchyInDocument { // (undocumented) @@ -13921,7 +14642,7 @@ export interface JsonApiAttributeHierarchyOut { attributes?: JsonApiAttributeHierarchyOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiAttributeHierarchyOutRelationships; type: JsonApiAttributeHierarchyOutTypeEnum; @@ -13964,13 +14685,13 @@ export interface JsonApiAttributeHierarchyOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiAttributeHierarchyOutRelationships { // (undocumented) - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + attributes?: JsonApiDatasetOutRelationshipsAttributes; // (undocumented) createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; // (undocumented) @@ -13988,34 +14709,21 @@ export interface JsonApiAttributeHierarchyOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiAttributeHierarchyOutRelationships; type: JsonApiAttributeHierarchyOutWithLinksTypeEnum; } - -// @public (undocumented) -export type JsonApiAttributeHierarchyOutWithLinksTypeEnum = "attributeHierarchy"; - -// @public -export interface JsonApiAttributeHierarchyPatch { - // (undocumented) - attributes?: JsonApiAttributeHierarchyPatchAttributes; - id: string; - type: JsonApiAttributeHierarchyPatchTypeEnum; -} - -// @public (undocumented) -export interface JsonApiAttributeHierarchyPatchAttributes { - // (undocumented) - areRelationsValid?: boolean; - content?: object; - // (undocumented) - description?: string; - // (undocumented) - tags?: Array; + +// @public (undocumented) +export type JsonApiAttributeHierarchyOutWithLinksTypeEnum = "attributeHierarchy"; + +// @public +export interface JsonApiAttributeHierarchyPatch { // (undocumented) - title?: string; + attributes?: JsonApiAttributeHierarchyInAttributes; + id: string; + type: JsonApiAttributeHierarchyPatchTypeEnum; } // @public (undocumented) @@ -14044,7 +14752,7 @@ export interface JsonApiAttributeOut { attributes?: JsonApiAttributeOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiAttributeOutRelationships; type: JsonApiAttributeOutTypeEnum; @@ -14105,7 +14813,7 @@ export interface JsonApiAttributeOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -14113,7 +14821,7 @@ export interface JsonApiAttributeOutRelationships { // (undocumented) attributeHierarchies?: JsonApiAttributeOutRelationshipsAttributeHierarchies; // (undocumented) - dataset?: JsonApiAttributeOutRelationshipsDataset; + dataset?: JsonApiFactOutRelationshipsDataset; // (undocumented) defaultView?: JsonApiAttributeOutRelationshipsDefaultView; // (undocumented) @@ -14125,12 +14833,6 @@ export interface JsonApiAttributeOutRelationshipsAttributeHierarchies { data: Array; } -// @public (undocumented) -export interface JsonApiAttributeOutRelationshipsDataset { - // (undocumented) - data: JsonApiDatasetLinkage | null; -} - // @public (undocumented) export interface JsonApiAttributeOutRelationshipsDefaultView { // (undocumented) @@ -14148,7 +14850,7 @@ export interface JsonApiAttributeOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiAttributeOutRelationships; type: JsonApiAttributeOutWithLinksTypeEnum; @@ -14195,233 +14897,169 @@ export type JsonApiAttributePatchTypeEnum = "attribute"; // @public export interface JsonApiAutomationIn { // (undocumented) - attributes?: JsonApiAutomationPatchAttributes; + attributes?: JsonApiAutomationInAttributes; id: string; // (undocumented) - relationships?: JsonApiAutomationPatchRelationships; + relationships?: JsonApiAutomationInRelationships; type: JsonApiAutomationInTypeEnum; } // @public (undocumented) -export interface JsonApiAutomationInDocument { - // (undocumented) - data: JsonApiAutomationIn; -} - -// @public (undocumented) -export type JsonApiAutomationInTypeEnum = "automation"; - -// @public -export interface JsonApiAutomationLinkage { - // (undocumented) - id: string; - // (undocumented) - type: JsonApiAutomationLinkageTypeEnum; -} - -// @public (undocumented) -export type JsonApiAutomationLinkageTypeEnum = "automation"; - -// @public -export interface JsonApiAutomationOut { - // (undocumented) - attributes?: JsonApiAutomationOutAttributes; - id: string; - // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; - // (undocumented) - relationships?: JsonApiAutomationOutRelationships; - type: JsonApiAutomationOutTypeEnum; -} - -// @public (undocumented) -export interface JsonApiAutomationOutAttributes { +export interface JsonApiAutomationInAttributes { // (undocumented) - alert?: JsonApiAutomationPatchAttributesAlert; + alert?: JsonApiAutomationOutAttributesAlert; // (undocumented) areRelationsValid?: boolean; // (undocumented) - createdAt?: string; - // (undocumented) - dashboardTabularExports?: Array; + dashboardTabularExports?: Array; // (undocumented) description?: string; details?: object; - evaluationMode?: JsonApiAutomationOutAttributesEvaluationModeEnum; - externalRecipients?: Array; - // (undocumented) - imageExports?: Array; + evaluationMode?: JsonApiAutomationInAttributesEvaluationModeEnum; + externalRecipients?: Array; // (undocumented) - metadata?: JsonApiAutomationPatchAttributesMetadata | null; + imageExports?: Array; // (undocumented) - modifiedAt?: string; + metadata?: JsonApiAutomationOutAttributesMetadata | null; // (undocumented) - rawExports?: Array; + rawExports?: Array; // (undocumented) - schedule?: JsonApiAutomationPatchAttributesSchedule; + schedule?: JsonApiAutomationOutAttributesSchedule; // (undocumented) - slidesExports?: Array; - state?: JsonApiAutomationOutAttributesStateEnum; + slidesExports?: Array; + state?: JsonApiAutomationInAttributesStateEnum; // (undocumented) - tabularExports?: Array; + tabularExports?: Array; // (undocumented) tags?: Array; // (undocumented) title?: string; // (undocumented) - visualExports?: Array; + visualExports?: Array; } // @public (undocumented) -export type JsonApiAutomationOutAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; +export type JsonApiAutomationInAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; // @public (undocumented) -export type JsonApiAutomationOutAttributesStateEnum = "ACTIVE" | "PAUSED"; +export type JsonApiAutomationInAttributesStateEnum = "ACTIVE" | "PAUSED"; // @public (undocumented) -export interface JsonApiAutomationOutDocument { - // (undocumented) - data: JsonApiAutomationOut; - included?: Array; - // (undocumented) - links?: ObjectLinks; -} - -// @public -export type JsonApiAutomationOutIncludes = JsonApiAnalyticalDashboardOutWithLinks | JsonApiAutomationResultOutWithLinks | JsonApiExportDefinitionOutWithLinks | JsonApiNotificationChannelOutWithLinks | JsonApiUserIdentifierOutWithLinks | JsonApiUserOutWithLinks; - -// @public -export interface JsonApiAutomationOutList { - // (undocumented) - data: Array; - included?: Array; - // (undocumented) - links?: ListLinks; +export interface JsonApiAutomationInDocument { // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + data: JsonApiAutomationIn; } // @public (undocumented) -export interface JsonApiAutomationOutRelationships { - // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - // (undocumented) - automationResults?: JsonApiAutomationOutRelationshipsAutomationResults; - // (undocumented) - createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; +export interface JsonApiAutomationInRelationships { // (undocumented) - exportDefinitions?: JsonApiAutomationPatchRelationshipsExportDefinitions; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; // (undocumented) - modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; + exportDefinitions?: JsonApiAutomationOutRelationshipsExportDefinitions; // (undocumented) - notificationChannel?: JsonApiAutomationPatchRelationshipsNotificationChannel; + notificationChannel?: JsonApiAutomationOutRelationshipsNotificationChannel; // (undocumented) - recipients?: JsonApiAutomationPatchRelationshipsRecipients; -} - -// @public (undocumented) -export interface JsonApiAutomationOutRelationshipsAutomationResults { - data: Array; + recipients?: JsonApiAutomationOutRelationshipsRecipients; } // @public (undocumented) -export type JsonApiAutomationOutTypeEnum = "automation"; +export type JsonApiAutomationInTypeEnum = "automation"; -// @public (undocumented) -export interface JsonApiAutomationOutWithLinks { +// @public +export interface JsonApiAutomationLinkage { // (undocumented) - attributes?: JsonApiAutomationOutAttributes; id: string; // (undocumented) - links?: ObjectLinks; - // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; - // (undocumented) - relationships?: JsonApiAutomationOutRelationships; - type: JsonApiAutomationOutWithLinksTypeEnum; + type: JsonApiAutomationLinkageTypeEnum; } // @public (undocumented) -export type JsonApiAutomationOutWithLinksTypeEnum = "automation"; +export type JsonApiAutomationLinkageTypeEnum = "automation"; // @public -export interface JsonApiAutomationPatch { +export interface JsonApiAutomationOut { // (undocumented) - attributes?: JsonApiAutomationPatchAttributes; + attributes?: JsonApiAutomationOutAttributes; id: string; // (undocumented) - relationships?: JsonApiAutomationPatchRelationships; - type: JsonApiAutomationPatchTypeEnum; + meta?: JsonApiDatasetOutMeta; + // (undocumented) + relationships?: JsonApiAutomationOutRelationships; + type: JsonApiAutomationOutTypeEnum; } // @public (undocumented) -export interface JsonApiAutomationPatchAttributes { +export interface JsonApiAutomationOutAttributes { // (undocumented) - alert?: JsonApiAutomationPatchAttributesAlert; + alert?: JsonApiAutomationOutAttributesAlert; // (undocumented) areRelationsValid?: boolean; // (undocumented) - dashboardTabularExports?: Array; + createdAt?: string; + // (undocumented) + dashboardTabularExports?: Array; // (undocumented) description?: string; details?: object; - evaluationMode?: JsonApiAutomationPatchAttributesEvaluationModeEnum; - externalRecipients?: Array; + evaluationMode?: JsonApiAutomationOutAttributesEvaluationModeEnum; + externalRecipients?: Array; // (undocumented) - imageExports?: Array; + imageExports?: Array; // (undocumented) - metadata?: JsonApiAutomationPatchAttributesMetadata | null; + metadata?: JsonApiAutomationOutAttributesMetadata | null; // (undocumented) - rawExports?: Array; + modifiedAt?: string; + // (undocumented) + rawExports?: Array; // (undocumented) - schedule?: JsonApiAutomationPatchAttributesSchedule; + schedule?: JsonApiAutomationOutAttributesSchedule; // (undocumented) - slidesExports?: Array; - state?: JsonApiAutomationPatchAttributesStateEnum; + slidesExports?: Array; + state?: JsonApiAutomationOutAttributesStateEnum; // (undocumented) - tabularExports?: Array; + tabularExports?: Array; // (undocumented) tags?: Array; // (undocumented) title?: string; // (undocumented) - visualExports?: Array; + visualExports?: Array; } // @public (undocumented) -export interface JsonApiAutomationPatchAttributesAlert { +export interface JsonApiAutomationOutAttributesAlert { // (undocumented) condition: AlertCondition; // (undocumented) execution: AlertAfm; - trigger?: JsonApiAutomationPatchAttributesAlertTriggerEnum; + trigger?: JsonApiAutomationOutAttributesAlertTriggerEnum; } // @public (undocumented) -export type JsonApiAutomationPatchAttributesAlertTriggerEnum = "ALWAYS" | "ONCE"; +export type JsonApiAutomationOutAttributesAlertTriggerEnum = "ALWAYS" | "ONCE"; // @public (undocumented) -export interface JsonApiAutomationPatchAttributesDashboardTabularExportsInner { +export interface JsonApiAutomationOutAttributesDashboardTabularExportsInner { // (undocumented) requestPayload: DashboardTabularExportRequestV2; } // @public (undocumented) -export type JsonApiAutomationPatchAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; +export type JsonApiAutomationOutAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; // @public (undocumented) -export interface JsonApiAutomationPatchAttributesExternalRecipientsInner { +export interface JsonApiAutomationOutAttributesExternalRecipientsInner { email: string; } // @public (undocumented) -export interface JsonApiAutomationPatchAttributesImageExportsInner { +export interface JsonApiAutomationOutAttributesImageExportsInner { // (undocumented) requestPayload: ImageExportRequest; } // @public -export interface JsonApiAutomationPatchAttributesMetadata { +export interface JsonApiAutomationOutAttributesMetadata { // (undocumented) [key: string]: any; // (undocumented) @@ -14431,13 +15069,13 @@ export interface JsonApiAutomationPatchAttributesMetadata { } // @public (undocumented) -export interface JsonApiAutomationPatchAttributesRawExportsInner { +export interface JsonApiAutomationOutAttributesRawExportsInner { // (undocumented) requestPayload: RawExportAutomationRequest; } // @public (undocumented) -export interface JsonApiAutomationPatchAttributesSchedule { +export interface JsonApiAutomationOutAttributesSchedule { cron: string; cronDescription?: string; firstRun?: string; @@ -14445,66 +15083,130 @@ export interface JsonApiAutomationPatchAttributesSchedule { } // @public (undocumented) -export interface JsonApiAutomationPatchAttributesSlidesExportsInner { +export interface JsonApiAutomationOutAttributesSlidesExportsInner { // (undocumented) requestPayload: SlidesExportRequest; } // @public (undocumented) -export type JsonApiAutomationPatchAttributesStateEnum = "ACTIVE" | "PAUSED"; +export type JsonApiAutomationOutAttributesStateEnum = "ACTIVE" | "PAUSED"; // @public (undocumented) -export interface JsonApiAutomationPatchAttributesTabularExportsInner { +export interface JsonApiAutomationOutAttributesTabularExportsInner { // (undocumented) requestPayload: TabularExportRequest; } // @public (undocumented) -export interface JsonApiAutomationPatchAttributesVisualExportsInner { +export interface JsonApiAutomationOutAttributesVisualExportsInner { // (undocumented) requestPayload: VisualExportRequest; } // @public (undocumented) -export interface JsonApiAutomationPatchDocument { +export interface JsonApiAutomationOutDocument { // (undocumented) - data: JsonApiAutomationPatch; + data: JsonApiAutomationOut; + included?: Array; + // (undocumented) + links?: ObjectLinks; +} + +// @public +export type JsonApiAutomationOutIncludes = JsonApiAnalyticalDashboardOutWithLinks | JsonApiAutomationResultOutWithLinks | JsonApiExportDefinitionOutWithLinks | JsonApiNotificationChannelOutWithLinks | JsonApiUserIdentifierOutWithLinks | JsonApiUserOutWithLinks; + +// @public +export interface JsonApiAutomationOutList { + // (undocumented) + data: Array; + included?: Array; + // (undocumented) + links?: ListLinks; + // (undocumented) + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) -export interface JsonApiAutomationPatchRelationships { +export interface JsonApiAutomationOutRelationships { + // (undocumented) + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + // (undocumented) + automationResults?: JsonApiAutomationOutRelationshipsAutomationResults; + // (undocumented) + createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; + exportDefinitions?: JsonApiAutomationOutRelationshipsExportDefinitions; // (undocumented) - exportDefinitions?: JsonApiAutomationPatchRelationshipsExportDefinitions; + modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; // (undocumented) - notificationChannel?: JsonApiAutomationPatchRelationshipsNotificationChannel; + notificationChannel?: JsonApiAutomationOutRelationshipsNotificationChannel; // (undocumented) - recipients?: JsonApiAutomationPatchRelationshipsRecipients; + recipients?: JsonApiAutomationOutRelationshipsRecipients; } // @public (undocumented) -export interface JsonApiAutomationPatchRelationshipsAnalyticalDashboard { +export interface JsonApiAutomationOutRelationshipsAnalyticalDashboard { // (undocumented) data: JsonApiAnalyticalDashboardLinkage | null; } // @public (undocumented) -export interface JsonApiAutomationPatchRelationshipsExportDefinitions { +export interface JsonApiAutomationOutRelationshipsAutomationResults { + data: Array; +} + +// @public (undocumented) +export interface JsonApiAutomationOutRelationshipsExportDefinitions { data: Array; } // @public (undocumented) -export interface JsonApiAutomationPatchRelationshipsNotificationChannel { +export interface JsonApiAutomationOutRelationshipsNotificationChannel { // (undocumented) data: JsonApiNotificationChannelLinkage | null; } // @public (undocumented) -export interface JsonApiAutomationPatchRelationshipsRecipients { +export interface JsonApiAutomationOutRelationshipsRecipients { data: Array; } +// @public (undocumented) +export type JsonApiAutomationOutTypeEnum = "automation"; + +// @public (undocumented) +export interface JsonApiAutomationOutWithLinks { + // (undocumented) + attributes?: JsonApiAutomationOutAttributes; + id: string; + // (undocumented) + links?: ObjectLinks; + // (undocumented) + meta?: JsonApiDatasetOutMeta; + // (undocumented) + relationships?: JsonApiAutomationOutRelationships; + type: JsonApiAutomationOutWithLinksTypeEnum; +} + +// @public (undocumented) +export type JsonApiAutomationOutWithLinksTypeEnum = "automation"; + +// @public +export interface JsonApiAutomationPatch { + // (undocumented) + attributes?: JsonApiAutomationInAttributes; + id: string; + // (undocumented) + relationships?: JsonApiAutomationInRelationships; + type: JsonApiAutomationPatchTypeEnum; +} + +// @public (undocumented) +export interface JsonApiAutomationPatchDocument { + // (undocumented) + data: JsonApiAutomationPatch; +} + // @public (undocumented) export type JsonApiAutomationPatchTypeEnum = "automation"; @@ -14550,13 +15252,19 @@ export interface JsonApiAutomationResultOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiAutomationResultOutRelationships { // (undocumented) - automation?: JsonApiExportDefinitionOutRelationshipsAutomation; + automation?: JsonApiAutomationResultOutRelationshipsAutomation; +} + +// @public (undocumented) +export interface JsonApiAutomationResultOutRelationshipsAutomation { + // (undocumented) + data: JsonApiAutomationLinkage | null; } // @public (undocumented) @@ -14624,7 +15332,13 @@ export interface JsonApiColorPaletteOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiColorPaletteOutListMeta { + // (undocumented) + page?: PageMetadata; } // @public (undocumented) @@ -14670,7 +15384,7 @@ export type JsonApiColorPalettePatchTypeEnum = "colorPalette"; // @public export interface JsonApiCookieSecurityConfigurationIn { // (undocumented) - attributes?: JsonApiCookieSecurityConfigurationOutAttributes; + attributes?: JsonApiCookieSecurityConfigurationPatchAttributes; id: string; type: JsonApiCookieSecurityConfigurationInTypeEnum; } @@ -14687,18 +15401,11 @@ export type JsonApiCookieSecurityConfigurationInTypeEnum = "cookieSecurityConfig // @public export interface JsonApiCookieSecurityConfigurationOut { // (undocumented) - attributes?: JsonApiCookieSecurityConfigurationOutAttributes; + attributes?: JsonApiCookieSecurityConfigurationPatchAttributes; id: string; type: JsonApiCookieSecurityConfigurationOutTypeEnum; } -// @public (undocumented) -export interface JsonApiCookieSecurityConfigurationOutAttributes { - // (undocumented) - lastRotation?: string; - rotationInterval?: string; -} - // @public (undocumented) export interface JsonApiCookieSecurityConfigurationOutDocument { // (undocumented) @@ -14713,11 +15420,18 @@ export type JsonApiCookieSecurityConfigurationOutTypeEnum = "cookieSecurityConfi // @public export interface JsonApiCookieSecurityConfigurationPatch { // (undocumented) - attributes?: JsonApiCookieSecurityConfigurationOutAttributes; + attributes?: JsonApiCookieSecurityConfigurationPatchAttributes; id: string; type: JsonApiCookieSecurityConfigurationPatchTypeEnum; } +// @public (undocumented) +export interface JsonApiCookieSecurityConfigurationPatchAttributes { + // (undocumented) + lastRotation?: string; + rotationInterval?: string; +} + // @public (undocumented) export interface JsonApiCookieSecurityConfigurationPatchDocument { // (undocumented) @@ -14773,7 +15487,7 @@ export interface JsonApiCspDirectiveOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -14838,7 +15552,7 @@ export interface JsonApiCustomApplicationSettingOut { attributes: JsonApiCustomApplicationSettingOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; type: JsonApiCustomApplicationSettingOutTypeEnum; } @@ -14864,7 +15578,7 @@ export interface JsonApiCustomApplicationSettingOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -14878,62 +15592,143 @@ export interface JsonApiCustomApplicationSettingOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; type: JsonApiCustomApplicationSettingOutWithLinksTypeEnum; } // @public (undocumented) -export type JsonApiCustomApplicationSettingOutWithLinksTypeEnum = "customApplicationSetting"; +export type JsonApiCustomApplicationSettingOutWithLinksTypeEnum = "customApplicationSetting"; + +// @public +export interface JsonApiCustomApplicationSettingPatch { + // (undocumented) + attributes: JsonApiCustomApplicationSettingPatchAttributes; + id: string; + type: JsonApiCustomApplicationSettingPatchTypeEnum; +} + +// @public (undocumented) +export interface JsonApiCustomApplicationSettingPatchAttributes { + // (undocumented) + applicationName?: string; + content?: object; +} + +// @public (undocumented) +export interface JsonApiCustomApplicationSettingPatchDocument { + // (undocumented) + data: JsonApiCustomApplicationSettingPatch; +} + +// @public (undocumented) +export type JsonApiCustomApplicationSettingPatchTypeEnum = "customApplicationSetting"; + +// @public +export interface JsonApiCustomApplicationSettingPostOptionalId { + // (undocumented) + attributes: JsonApiCustomApplicationSettingOutAttributes; + id?: string; + type: JsonApiCustomApplicationSettingPostOptionalIdTypeEnum; +} + +// @public (undocumented) +export interface JsonApiCustomApplicationSettingPostOptionalIdDocument { + // (undocumented) + data: JsonApiCustomApplicationSettingPostOptionalId; +} + +// @public (undocumented) +export type JsonApiCustomApplicationSettingPostOptionalIdTypeEnum = "customApplicationSetting"; + +// @public +export interface JsonApiCustomGeoCollectionIn { + id: string; + type: JsonApiCustomGeoCollectionInTypeEnum; +} + +// @public (undocumented) +export interface JsonApiCustomGeoCollectionInDocument { + // (undocumented) + data: JsonApiCustomGeoCollectionIn; +} + +// @public (undocumented) +export type JsonApiCustomGeoCollectionInTypeEnum = "customGeoCollection"; // @public -export interface JsonApiCustomApplicationSettingPatch { - // (undocumented) - attributes: JsonApiCustomApplicationSettingPatchAttributes; +export interface JsonApiCustomGeoCollectionOut { id: string; - type: JsonApiCustomApplicationSettingPatchTypeEnum; + type: JsonApiCustomGeoCollectionOutTypeEnum; } // @public (undocumented) -export interface JsonApiCustomApplicationSettingPatchAttributes { +export interface JsonApiCustomGeoCollectionOutDocument { // (undocumented) - applicationName?: string; - content?: object; + data: JsonApiCustomGeoCollectionOut; + // (undocumented) + links?: ObjectLinks; +} + +// @public +export interface JsonApiCustomGeoCollectionOutList { + // (undocumented) + data: Array; + // (undocumented) + links?: ListLinks; + // (undocumented) + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) -export interface JsonApiCustomApplicationSettingPatchDocument { +export type JsonApiCustomGeoCollectionOutTypeEnum = "customGeoCollection"; + +// @public (undocumented) +export interface JsonApiCustomGeoCollectionOutWithLinks { + id: string; // (undocumented) - data: JsonApiCustomApplicationSettingPatch; + links?: ObjectLinks; + type: JsonApiCustomGeoCollectionOutWithLinksTypeEnum; } // @public (undocumented) -export type JsonApiCustomApplicationSettingPatchTypeEnum = "customApplicationSetting"; +export type JsonApiCustomGeoCollectionOutWithLinksTypeEnum = "customGeoCollection"; // @public -export interface JsonApiCustomApplicationSettingPostOptionalId { - // (undocumented) - attributes: JsonApiCustomApplicationSettingOutAttributes; - id?: string; - type: JsonApiCustomApplicationSettingPostOptionalIdTypeEnum; +export interface JsonApiCustomGeoCollectionPatch { + id: string; + type: JsonApiCustomGeoCollectionPatchTypeEnum; } // @public (undocumented) -export interface JsonApiCustomApplicationSettingPostOptionalIdDocument { +export interface JsonApiCustomGeoCollectionPatchDocument { // (undocumented) - data: JsonApiCustomApplicationSettingPostOptionalId; + data: JsonApiCustomGeoCollectionPatch; } // @public (undocumented) -export type JsonApiCustomApplicationSettingPostOptionalIdTypeEnum = "customApplicationSetting"; +export type JsonApiCustomGeoCollectionPatchTypeEnum = "customGeoCollection"; // @public export interface JsonApiDashboardPluginIn { // (undocumented) - attributes?: JsonApiDashboardPluginPatchAttributes; + attributes?: JsonApiDashboardPluginInAttributes; id: string; type: JsonApiDashboardPluginInTypeEnum; } +// @public (undocumented) +export interface JsonApiDashboardPluginInAttributes { + // (undocumented) + areRelationsValid?: boolean; + content?: object; + // (undocumented) + description?: string; + // (undocumented) + tags?: Array; + // (undocumented) + title?: string; +} + // @public (undocumented) export interface JsonApiDashboardPluginInDocument { // (undocumented) @@ -14960,7 +15755,7 @@ export interface JsonApiDashboardPluginOut { attributes?: JsonApiDashboardPluginOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiDashboardPluginOutRelationships; type: JsonApiDashboardPluginOutTypeEnum; @@ -15000,7 +15795,7 @@ export interface JsonApiDashboardPluginOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -15022,7 +15817,7 @@ export interface JsonApiDashboardPluginOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiDashboardPluginOutRelationships; type: JsonApiDashboardPluginOutWithLinksTypeEnum; @@ -15034,24 +15829,11 @@ export type JsonApiDashboardPluginOutWithLinksTypeEnum = "dashboardPlugin"; // @public export interface JsonApiDashboardPluginPatch { // (undocumented) - attributes?: JsonApiDashboardPluginPatchAttributes; + attributes?: JsonApiDashboardPluginInAttributes; id: string; type: JsonApiDashboardPluginPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiDashboardPluginPatchAttributes { - // (undocumented) - areRelationsValid?: boolean; - content?: object; - // (undocumented) - description?: string; - // (undocumented) - tags?: Array; - // (undocumented) - title?: string; -} - // @public (undocumented) export interface JsonApiDashboardPluginPatchDocument { // (undocumented) @@ -15064,7 +15846,7 @@ export type JsonApiDashboardPluginPatchTypeEnum = "dashboardPlugin"; // @public export interface JsonApiDashboardPluginPostOptionalId { // (undocumented) - attributes?: JsonApiDashboardPluginPatchAttributes; + attributes?: JsonApiDashboardPluginInAttributes; id?: string; type: JsonApiDashboardPluginPostOptionalIdTypeEnum; } @@ -15095,7 +15877,7 @@ export interface JsonApiDatasetOut { attributes: JsonApiDatasetOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiDatasetOutRelationships; type: JsonApiDatasetOutTypeEnum; @@ -15213,19 +15995,34 @@ export interface JsonApiDatasetOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiDatasetOutMeta { + // (undocumented) + origin?: JsonApiDatasetOutMetaOrigin; +} + +// @public (undocumented) +export interface JsonApiDatasetOutMetaOrigin { + originId: string; + originType: JsonApiDatasetOutMetaOriginOriginTypeEnum; } +// @public (undocumented) +export type JsonApiDatasetOutMetaOriginOriginTypeEnum = "NATIVE" | "PARENT"; + // @public (undocumented) export interface JsonApiDatasetOutRelationships { // (undocumented) aggregatedFacts?: JsonApiDatasetOutRelationshipsAggregatedFacts; // (undocumented) - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + attributes?: JsonApiDatasetOutRelationshipsAttributes; // (undocumented) - facts?: JsonApiVisualizationObjectOutRelationshipsFacts; + facts?: JsonApiDatasetOutRelationshipsFacts; // (undocumented) - references?: JsonApiVisualizationObjectOutRelationshipsDatasets; + references?: JsonApiDatasetOutRelationshipsReferences; // (undocumented) workspaceDataFilters?: JsonApiDatasetOutRelationshipsWorkspaceDataFilters; } @@ -15235,6 +16032,21 @@ export interface JsonApiDatasetOutRelationshipsAggregatedFacts { data: Array; } +// @public (undocumented) +export interface JsonApiDatasetOutRelationshipsAttributes { + data: Array; +} + +// @public (undocumented) +export interface JsonApiDatasetOutRelationshipsFacts { + data: Array; +} + +// @public (undocumented) +export interface JsonApiDatasetOutRelationshipsReferences { + data: Array; +} + // @public (undocumented) export interface JsonApiDatasetOutRelationshipsWorkspaceDataFilters { data: Array; @@ -15251,7 +16063,7 @@ export interface JsonApiDatasetOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiDatasetOutRelationships; type: JsonApiDatasetOutWithLinksTypeEnum; @@ -15283,7 +16095,7 @@ export interface JsonApiDataSourceIdentifierOut { attributes: JsonApiDataSourceIdentifierOutAttributes; id: string; // (undocumented) - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; type: JsonApiDataSourceIdentifierOutTypeEnum; } @@ -15315,9 +16127,17 @@ export interface JsonApiDataSourceIdentifierOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiDataSourceIdentifierOutMeta { + permissions?: Array; } +// @public (undocumented) +export type JsonApiDataSourceIdentifierOutMetaPermissionsEnum = "MANAGE" | "USE"; + // @public (undocumented) export type JsonApiDataSourceIdentifierOutTypeEnum = "dataSourceIdentifier"; @@ -15329,7 +16149,7 @@ export interface JsonApiDataSourceIdentifierOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; type: JsonApiDataSourceIdentifierOutWithLinksTypeEnum; } @@ -15351,7 +16171,7 @@ export interface JsonApiDataSourceInAttributes { clientId?: string | null; clientSecret?: string | null; name: string; - parameters?: Array | null; + parameters?: Array | null; password?: string | null; privateKey?: string | null; privateKeyPassphrase?: string | null; @@ -15383,7 +16203,7 @@ export interface JsonApiDataSourceOut { attributes: JsonApiDataSourceOutAttributes; id: string; // (undocumented) - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; type: JsonApiDataSourceOutTypeEnum; } @@ -15393,9 +16213,9 @@ export interface JsonApiDataSourceOutAttributes { authenticationType?: JsonApiDataSourceOutAttributesAuthenticationTypeEnum | null; cacheStrategy?: JsonApiDataSourceOutAttributesCacheStrategyEnum | null; clientId?: string | null; - decodedParameters?: Array | null; + decodedParameters?: Array | null; name: string; - parameters?: Array | null; + parameters?: Array | null; schema: string; type: JsonApiDataSourceOutAttributesTypeEnum; url?: string | null; @@ -15408,6 +16228,14 @@ export type JsonApiDataSourceOutAttributesAuthenticationTypeEnum = "USERNAME_PAS // @public (undocumented) export type JsonApiDataSourceOutAttributesCacheStrategyEnum = "ALWAYS" | "NEVER"; +// @public (undocumented) +export interface JsonApiDataSourceOutAttributesParametersInner { + // (undocumented) + name: string; + // (undocumented) + value: string; +} + // @public (undocumented) export type JsonApiDataSourceOutAttributesTypeEnum = "POSTGRESQL" | "REDSHIFT" | "VERTICA" | "SNOWFLAKE" | "ADS" | "BIGQUERY" | "MSSQL" | "PRESTO" | "DREMIO" | "DRILL" | "GREENPLUM" | "AZURESQL" | "SYNAPSESQL" | "DATABRICKS" | "GDSTORAGE" | "CLICKHOUSE" | "MYSQL" | "MARIADB" | "ORACLE" | "PINOT" | "SINGLESTORE" | "MOTHERDUCK" | "FLEXCONNECT" | "STARROCKS" | "ATHENA" | "MONGODB"; @@ -15426,17 +16254,9 @@ export interface JsonApiDataSourceOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; -} - -// @public (undocumented) -export interface JsonApiDataSourceOutMeta { - permissions?: Array; + meta?: JsonApiColorPaletteOutListMeta; } -// @public (undocumented) -export type JsonApiDataSourceOutMetaPermissionsEnum = "MANAGE" | "USE"; - // @public (undocumented) export type JsonApiDataSourceOutTypeEnum = "dataSource"; @@ -15448,7 +16268,7 @@ export interface JsonApiDataSourceOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; type: JsonApiDataSourceOutWithLinksTypeEnum; } @@ -15470,7 +16290,7 @@ export interface JsonApiDataSourcePatchAttributes { clientId?: string | null; clientSecret?: string | null; name?: string; - parameters?: Array | null; + parameters?: Array | null; password?: string | null; privateKey?: string | null; privateKeyPassphrase?: string | null; @@ -15484,14 +16304,6 @@ export interface JsonApiDataSourcePatchAttributes { // @public (undocumented) export type JsonApiDataSourcePatchAttributesCacheStrategyEnum = "ALWAYS" | "NEVER"; -// @public (undocumented) -export interface JsonApiDataSourcePatchAttributesParametersInner { - // (undocumented) - name: string; - // (undocumented) - value: string; -} - // @public (undocumented) export type JsonApiDataSourcePatchAttributesTypeEnum = "POSTGRESQL" | "REDSHIFT" | "VERTICA" | "SNOWFLAKE" | "ADS" | "BIGQUERY" | "MSSQL" | "PRESTO" | "DREMIO" | "DRILL" | "GREENPLUM" | "AZURESQL" | "SYNAPSESQL" | "DATABRICKS" | "GDSTORAGE" | "CLICKHOUSE" | "MYSQL" | "MARIADB" | "ORACLE" | "PINOT" | "SINGLESTORE" | "MOTHERDUCK" | "FLEXCONNECT" | "STARROCKS" | "ATHENA" | "MONGODB"; @@ -15535,7 +16347,7 @@ export interface JsonApiEntitlementOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -15557,19 +16369,41 @@ export type JsonApiEntitlementOutWithLinksTypeEnum = "entitlement"; // @public export interface JsonApiExportDefinitionIn { // (undocumented) - attributes?: JsonApiExportDefinitionPatchAttributes; + attributes?: JsonApiExportDefinitionInAttributes; id: string; // (undocumented) - relationships?: JsonApiExportDefinitionPatchRelationships; + relationships?: JsonApiExportDefinitionInRelationships; type: JsonApiExportDefinitionInTypeEnum; } +// @public (undocumented) +export interface JsonApiExportDefinitionInAttributes { + // (undocumented) + areRelationsValid?: boolean; + // (undocumented) + description?: string; + // (undocumented) + requestPayload?: JsonApiExportDefinitionOutAttributesRequestPayload; + // (undocumented) + tags?: Array; + // (undocumented) + title?: string; +} + // @public (undocumented) export interface JsonApiExportDefinitionInDocument { // (undocumented) data: JsonApiExportDefinitionIn; } +// @public (undocumented) +export interface JsonApiExportDefinitionInRelationships { + // (undocumented) + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + // (undocumented) + visualizationObject?: JsonApiExportDefinitionOutRelationshipsVisualizationObject; +} + // @public (undocumented) export type JsonApiExportDefinitionInTypeEnum = "exportDefinition"; @@ -15590,7 +16424,7 @@ export interface JsonApiExportDefinitionOut { attributes?: JsonApiExportDefinitionOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiExportDefinitionOutRelationships; type: JsonApiExportDefinitionOutTypeEnum; @@ -15637,15 +16471,15 @@ export interface JsonApiExportDefinitionOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiExportDefinitionOutRelationships { // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; // (undocumented) - automation?: JsonApiExportDefinitionOutRelationshipsAutomation; + automation?: JsonApiAutomationResultOutRelationshipsAutomation; // (undocumented) createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; // (undocumented) @@ -15654,12 +16488,6 @@ export interface JsonApiExportDefinitionOutRelationships { visualizationObject?: JsonApiExportDefinitionOutRelationshipsVisualizationObject; } -// @public (undocumented) -export interface JsonApiExportDefinitionOutRelationshipsAutomation { - // (undocumented) - data: JsonApiAutomationLinkage | null; -} - // @public (undocumented) export interface JsonApiExportDefinitionOutRelationshipsVisualizationObject { // (undocumented) @@ -15677,7 +16505,7 @@ export interface JsonApiExportDefinitionOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiExportDefinitionOutRelationships; type: JsonApiExportDefinitionOutWithLinksTypeEnum; @@ -15689,51 +16517,29 @@ export type JsonApiExportDefinitionOutWithLinksTypeEnum = "exportDefinition"; // @public export interface JsonApiExportDefinitionPatch { // (undocumented) - attributes?: JsonApiExportDefinitionPatchAttributes; + attributes?: JsonApiExportDefinitionInAttributes; id: string; // (undocumented) - relationships?: JsonApiExportDefinitionPatchRelationships; + relationships?: JsonApiExportDefinitionInRelationships; type: JsonApiExportDefinitionPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiExportDefinitionPatchAttributes { - // (undocumented) - areRelationsValid?: boolean; - // (undocumented) - description?: string; - // (undocumented) - requestPayload?: JsonApiExportDefinitionOutAttributesRequestPayload; - // (undocumented) - tags?: Array; - // (undocumented) - title?: string; -} - // @public (undocumented) export interface JsonApiExportDefinitionPatchDocument { // (undocumented) data: JsonApiExportDefinitionPatch; } -// @public (undocumented) -export interface JsonApiExportDefinitionPatchRelationships { - // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - // (undocumented) - visualizationObject?: JsonApiExportDefinitionOutRelationshipsVisualizationObject; -} - // @public (undocumented) export type JsonApiExportDefinitionPatchTypeEnum = "exportDefinition"; // @public export interface JsonApiExportDefinitionPostOptionalId { // (undocumented) - attributes?: JsonApiExportDefinitionPatchAttributes; + attributes?: JsonApiExportDefinitionInAttributes; id?: string; // (undocumented) - relationships?: JsonApiExportDefinitionPatchRelationships; + relationships?: JsonApiExportDefinitionInRelationships; type: JsonApiExportDefinitionPostOptionalIdTypeEnum; } @@ -15774,12 +16580,38 @@ export interface JsonApiExportTemplateOut { // @public (undocumented) export interface JsonApiExportTemplateOutAttributes { // (undocumented) - dashboardSlidesTemplate?: JsonApiExportTemplatePatchAttributesDashboardSlidesTemplate | null; + dashboardSlidesTemplate?: JsonApiExportTemplateOutAttributesDashboardSlidesTemplate | null; name: string; // (undocumented) - widgetSlidesTemplate?: JsonApiExportTemplatePatchAttributesWidgetSlidesTemplate | null; + widgetSlidesTemplate?: JsonApiExportTemplateOutAttributesWidgetSlidesTemplate | null; +} + +// @public +export interface JsonApiExportTemplateOutAttributesDashboardSlidesTemplate { + appliedOn: Array; + // (undocumented) + contentSlide?: ContentSlideTemplate | null; + // (undocumented) + coverSlide?: CoverSlideTemplate | null; + // (undocumented) + introSlide?: IntroSlideTemplate | null; + // (undocumented) + sectionSlide?: SectionSlideTemplate | null; +} + +// @public (undocumented) +export type JsonApiExportTemplateOutAttributesDashboardSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; + +// @public +export interface JsonApiExportTemplateOutAttributesWidgetSlidesTemplate { + appliedOn: Array; + // (undocumented) + contentSlide?: ContentSlideTemplate | null; } +// @public (undocumented) +export type JsonApiExportTemplateOutAttributesWidgetSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; + // @public (undocumented) export interface JsonApiExportTemplateOutDocument { // (undocumented) @@ -15795,7 +16627,7 @@ export interface JsonApiExportTemplateOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -15825,38 +16657,12 @@ export interface JsonApiExportTemplatePatch { // @public (undocumented) export interface JsonApiExportTemplatePatchAttributes { // (undocumented) - dashboardSlidesTemplate?: JsonApiExportTemplatePatchAttributesDashboardSlidesTemplate | null; + dashboardSlidesTemplate?: JsonApiExportTemplateOutAttributesDashboardSlidesTemplate | null; name?: string; // (undocumented) - widgetSlidesTemplate?: JsonApiExportTemplatePatchAttributesWidgetSlidesTemplate | null; -} - -// @public -export interface JsonApiExportTemplatePatchAttributesDashboardSlidesTemplate { - appliedOn: Array; - // (undocumented) - contentSlide?: ContentSlideTemplate | null; - // (undocumented) - coverSlide?: CoverSlideTemplate | null; - // (undocumented) - introSlide?: IntroSlideTemplate | null; - // (undocumented) - sectionSlide?: SectionSlideTemplate | null; -} - -// @public (undocumented) -export type JsonApiExportTemplatePatchAttributesDashboardSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; - -// @public -export interface JsonApiExportTemplatePatchAttributesWidgetSlidesTemplate { - appliedOn: Array; - // (undocumented) - contentSlide?: ContentSlideTemplate | null; + widgetSlidesTemplate?: JsonApiExportTemplateOutAttributesWidgetSlidesTemplate | null; } -// @public (undocumented) -export type JsonApiExportTemplatePatchAttributesWidgetSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; - // @public (undocumented) export interface JsonApiExportTemplatePatchDocument { // (undocumented) @@ -15900,7 +16706,7 @@ export interface JsonApiFactOut { attributes?: JsonApiFactOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiFactOutRelationships; type: JsonApiFactOutTypeEnum; @@ -15944,13 +16750,19 @@ export interface JsonApiFactOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiFactOutRelationships { // (undocumented) - dataset?: JsonApiAttributeOutRelationshipsDataset; + dataset?: JsonApiFactOutRelationshipsDataset; +} + +// @public (undocumented) +export interface JsonApiFactOutRelationshipsDataset { + // (undocumented) + data: JsonApiDatasetLinkage | null; } // @public (undocumented) @@ -15964,7 +16776,7 @@ export interface JsonApiFactOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiFactOutRelationships; type: JsonApiFactOutWithLinksTypeEnum; @@ -16024,7 +16836,7 @@ export interface JsonApiFilterContextOut { attributes: JsonApiFilterContextOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiFilterContextOutRelationships; type: JsonApiFilterContextOutTypeEnum; @@ -16063,15 +16875,15 @@ export interface JsonApiFilterContextOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiFilterContextOutRelationships { // (undocumented) - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + attributes?: JsonApiDatasetOutRelationshipsAttributes; // (undocumented) - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; + datasets?: JsonApiDatasetOutRelationshipsReferences; // (undocumented) labels?: JsonApiVisualizationObjectOutRelationshipsLabels; } @@ -16087,7 +16899,7 @@ export interface JsonApiFilterContextOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiFilterContextOutRelationships; type: JsonApiFilterContextOutWithLinksTypeEnum; @@ -16136,7 +16948,7 @@ export interface JsonApiFilterViewIn { attributes: JsonApiFilterViewOutAttributes; id: string; // (undocumented) - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; type: JsonApiFilterViewInTypeEnum; } @@ -16155,7 +16967,7 @@ export interface JsonApiFilterViewOut { attributes: JsonApiFilterViewOutAttributes; id: string; // (undocumented) - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; type: JsonApiFilterViewOutTypeEnum; } @@ -16193,7 +17005,15 @@ export interface JsonApiFilterViewOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiFilterViewOutRelationships { + // (undocumented) + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + // (undocumented) + user?: JsonApiOrganizationOutRelationshipsBootstrapUser; } // @public (undocumented) @@ -16207,7 +17027,7 @@ export interface JsonApiFilterViewOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; type: JsonApiFilterViewOutWithLinksTypeEnum; } @@ -16220,7 +17040,7 @@ export interface JsonApiFilterViewPatch { attributes: JsonApiFilterViewPatchAttributes; id: string; // (undocumented) - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; type: JsonApiFilterViewPatchTypeEnum; } @@ -16244,20 +17064,6 @@ export interface JsonApiFilterViewPatchDocument { data: JsonApiFilterViewPatch; } -// @public (undocumented) -export interface JsonApiFilterViewPatchRelationships { - // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - // (undocumented) - user?: JsonApiFilterViewPatchRelationshipsUser; -} - -// @public (undocumented) -export interface JsonApiFilterViewPatchRelationshipsUser { - // (undocumented) - data: JsonApiUserLinkage | null; -} - // @public (undocumented) export type JsonApiFilterViewPatchTypeEnum = "filterView"; @@ -16270,11 +17076,33 @@ export const jsonApiHeaders: { // @public export interface JsonApiIdentityProviderIn { // (undocumented) - attributes?: JsonApiIdentityProviderPatchAttributes; + attributes?: JsonApiIdentityProviderInAttributes; id: string; type: JsonApiIdentityProviderInTypeEnum; } +// @public (undocumented) +export interface JsonApiIdentityProviderInAttributes { + customClaimMapping?: { + [key: string]: string; + }; + identifiers?: Array; + idpType?: JsonApiIdentityProviderInAttributesIdpTypeEnum; + oauthClientId?: string; + oauthClientSecret?: string; + oauthCustomAuthAttributes?: { + [key: string]: string; + }; + oauthCustomScopes?: Array | null; + oauthIssuerId?: string; + oauthIssuerLocation?: string; + oauthSubjectIdClaim?: string; + samlMetadata?: string; +} + +// @public (undocumented) +export type JsonApiIdentityProviderInAttributesIdpTypeEnum = "MANAGED_IDP" | "FIM_IDP" | "DEX_IDP" | "CUSTOM_IDP"; + // @public (undocumented) export interface JsonApiIdentityProviderInDocument { // (undocumented) @@ -16338,7 +17166,7 @@ export interface JsonApiIdentityProviderOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -16348,44 +17176,22 @@ export type JsonApiIdentityProviderOutTypeEnum = "identityProvider"; export interface JsonApiIdentityProviderOutWithLinks { // (undocumented) attributes?: JsonApiIdentityProviderOutAttributes; - id: string; - // (undocumented) - links?: ObjectLinks; - type: JsonApiIdentityProviderOutWithLinksTypeEnum; -} - -// @public (undocumented) -export type JsonApiIdentityProviderOutWithLinksTypeEnum = "identityProvider"; - -// @public -export interface JsonApiIdentityProviderPatch { - // (undocumented) - attributes?: JsonApiIdentityProviderPatchAttributes; - id: string; - type: JsonApiIdentityProviderPatchTypeEnum; -} - -// @public (undocumented) -export interface JsonApiIdentityProviderPatchAttributes { - customClaimMapping?: { - [key: string]: string; - }; - identifiers?: Array; - idpType?: JsonApiIdentityProviderPatchAttributesIdpTypeEnum; - oauthClientId?: string; - oauthClientSecret?: string; - oauthCustomAuthAttributes?: { - [key: string]: string; - }; - oauthCustomScopes?: Array | null; - oauthIssuerId?: string; - oauthIssuerLocation?: string; - oauthSubjectIdClaim?: string; - samlMetadata?: string; + id: string; + // (undocumented) + links?: ObjectLinks; + type: JsonApiIdentityProviderOutWithLinksTypeEnum; } // @public (undocumented) -export type JsonApiIdentityProviderPatchAttributesIdpTypeEnum = "MANAGED_IDP" | "FIM_IDP" | "DEX_IDP" | "CUSTOM_IDP"; +export type JsonApiIdentityProviderOutWithLinksTypeEnum = "identityProvider"; + +// @public +export interface JsonApiIdentityProviderPatch { + // (undocumented) + attributes?: JsonApiIdentityProviderInAttributes; + id: string; + type: JsonApiIdentityProviderPatchTypeEnum; +} // @public (undocumented) export interface JsonApiIdentityProviderPatchDocument { @@ -16399,7 +17205,7 @@ export type JsonApiIdentityProviderPatchTypeEnum = "identityProvider"; // @public export interface JsonApiJwkIn { // (undocumented) - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; id: string; type: JsonApiJwkInTypeEnum; } @@ -16416,11 +17222,17 @@ export type JsonApiJwkInTypeEnum = "jwk"; // @public export interface JsonApiJwkOut { // (undocumented) - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; id: string; type: JsonApiJwkOutTypeEnum; } +// @public (undocumented) +export interface JsonApiJwkOutAttributes { + // (undocumented) + content?: RsaSpecification; +} + // @public (undocumented) export interface JsonApiJwkOutDocument { // (undocumented) @@ -16436,7 +17248,7 @@ export interface JsonApiJwkOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -16445,7 +17257,7 @@ export type JsonApiJwkOutTypeEnum = "jwk"; // @public (undocumented) export interface JsonApiJwkOutWithLinks { // (undocumented) - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; id: string; // (undocumented) links?: ObjectLinks; @@ -16458,17 +17270,11 @@ export type JsonApiJwkOutWithLinksTypeEnum = "jwk"; // @public export interface JsonApiJwkPatch { // (undocumented) - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; id: string; type: JsonApiJwkPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiJwkPatchAttributes { - // (undocumented) - content?: RsaSpecification; -} - // @public (undocumented) export interface JsonApiJwkPatchDocument { // (undocumented) @@ -16481,19 +17287,56 @@ export type JsonApiJwkPatchTypeEnum = "jwk"; // @public export interface JsonApiKnowledgeRecommendationIn { // (undocumented) - attributes: JsonApiKnowledgeRecommendationPostOptionalIdAttributes; + attributes: JsonApiKnowledgeRecommendationInAttributes; id: string; // (undocumented) - relationships: JsonApiKnowledgeRecommendationPostOptionalIdRelationships; + relationships: JsonApiKnowledgeRecommendationInRelationships; type: JsonApiKnowledgeRecommendationInTypeEnum; } +// @public (undocumented) +export interface JsonApiKnowledgeRecommendationInAttributes { + analyticalDashboardTitle?: string; + analyzedPeriod?: string; + analyzedValue?: any; + // (undocumented) + areRelationsValid?: boolean; + comparisonType: JsonApiKnowledgeRecommendationInAttributesComparisonTypeEnum; + confidence?: any; + description?: string; + direction: JsonApiKnowledgeRecommendationInAttributesDirectionEnum; + metricTitle?: string; + recommendations?: object; + referencePeriod?: string; + referenceValue?: any; + sourceCount?: number; + // (undocumented) + tags?: Array; + title: string; + widgetId?: string; + widgetName?: string; +} + +// @public (undocumented) +export type JsonApiKnowledgeRecommendationInAttributesComparisonTypeEnum = "MONTH" | "QUARTER" | "YEAR"; + +// @public (undocumented) +export type JsonApiKnowledgeRecommendationInAttributesDirectionEnum = "INCREASED" | "DECREASED"; + // @public (undocumented) export interface JsonApiKnowledgeRecommendationInDocument { // (undocumented) data: JsonApiKnowledgeRecommendationIn; } +// @public (undocumented) +export interface JsonApiKnowledgeRecommendationInRelationships { + // (undocumented) + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + // (undocumented) + metric: JsonApiKnowledgeRecommendationOutRelationshipsMetric; +} + // @public (undocumented) export type JsonApiKnowledgeRecommendationInTypeEnum = "knowledgeRecommendation"; @@ -16503,14 +17346,17 @@ export interface JsonApiKnowledgeRecommendationOut { attributes: JsonApiKnowledgeRecommendationOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) - relationships?: JsonApiKnowledgeRecommendationPatchRelationships; + relationships?: JsonApiKnowledgeRecommendationOutRelationships; type: JsonApiKnowledgeRecommendationOutTypeEnum; } // @public (undocumented) export interface JsonApiKnowledgeRecommendationOutAttributes { + analyticalDashboardTitle?: string; + analyzedPeriod?: string; + analyzedValue?: any; // (undocumented) areRelationsValid?: boolean; comparisonType: JsonApiKnowledgeRecommendationOutAttributesComparisonTypeEnum; @@ -16521,6 +17367,8 @@ export interface JsonApiKnowledgeRecommendationOutAttributes { direction: JsonApiKnowledgeRecommendationOutAttributesDirectionEnum; metricTitle?: string; recommendations?: object; + referencePeriod?: string; + referenceValue?: any; sourceCount?: number; // (undocumented) tags?: Array; @@ -16555,7 +17403,21 @@ export interface JsonApiKnowledgeRecommendationOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiKnowledgeRecommendationOutRelationships { + // (undocumented) + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + // (undocumented) + metric?: JsonApiKnowledgeRecommendationOutRelationshipsMetric; +} + +// @public (undocumented) +export interface JsonApiKnowledgeRecommendationOutRelationshipsMetric { + // (undocumented) + data: JsonApiMetricLinkage | null; } // @public (undocumented) @@ -16569,9 +17431,9 @@ export interface JsonApiKnowledgeRecommendationOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) - relationships?: JsonApiKnowledgeRecommendationPatchRelationships; + relationships?: JsonApiKnowledgeRecommendationOutRelationships; type: JsonApiKnowledgeRecommendationOutWithLinksTypeEnum; } @@ -16584,12 +17446,15 @@ export interface JsonApiKnowledgeRecommendationPatch { attributes: JsonApiKnowledgeRecommendationPatchAttributes; id: string; // (undocumented) - relationships: JsonApiKnowledgeRecommendationPatchRelationships; + relationships: JsonApiKnowledgeRecommendationOutRelationships; type: JsonApiKnowledgeRecommendationPatchTypeEnum; } // @public (undocumented) export interface JsonApiKnowledgeRecommendationPatchAttributes { + analyticalDashboardTitle?: string; + analyzedPeriod?: string; + analyzedValue?: any; // (undocumented) areRelationsValid?: boolean; comparisonType?: JsonApiKnowledgeRecommendationPatchAttributesComparisonTypeEnum; @@ -16598,6 +17463,8 @@ export interface JsonApiKnowledgeRecommendationPatchAttributes { direction?: JsonApiKnowledgeRecommendationPatchAttributesDirectionEnum; metricTitle?: string; recommendations?: object; + referencePeriod?: string; + referenceValue?: any; sourceCount?: number; // (undocumented) tags?: Array; @@ -16618,71 +17485,25 @@ export interface JsonApiKnowledgeRecommendationPatchDocument { data: JsonApiKnowledgeRecommendationPatch; } -// @public (undocumented) -export interface JsonApiKnowledgeRecommendationPatchRelationships { - // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - // (undocumented) - metric?: JsonApiKnowledgeRecommendationPatchRelationshipsMetric; -} - -// @public (undocumented) -export interface JsonApiKnowledgeRecommendationPatchRelationshipsMetric { - // (undocumented) - data: JsonApiMetricLinkage | null; -} - // @public (undocumented) export type JsonApiKnowledgeRecommendationPatchTypeEnum = "knowledgeRecommendation"; // @public export interface JsonApiKnowledgeRecommendationPostOptionalId { // (undocumented) - attributes: JsonApiKnowledgeRecommendationPostOptionalIdAttributes; + attributes: JsonApiKnowledgeRecommendationInAttributes; id?: string; // (undocumented) - relationships: JsonApiKnowledgeRecommendationPostOptionalIdRelationships; + relationships: JsonApiKnowledgeRecommendationInRelationships; type: JsonApiKnowledgeRecommendationPostOptionalIdTypeEnum; } -// @public (undocumented) -export interface JsonApiKnowledgeRecommendationPostOptionalIdAttributes { - // (undocumented) - areRelationsValid?: boolean; - comparisonType: JsonApiKnowledgeRecommendationPostOptionalIdAttributesComparisonTypeEnum; - confidence?: any; - description?: string; - direction: JsonApiKnowledgeRecommendationPostOptionalIdAttributesDirectionEnum; - metricTitle?: string; - recommendations?: object; - sourceCount?: number; - // (undocumented) - tags?: Array; - title: string; - widgetId?: string; - widgetName?: string; -} - -// @public (undocumented) -export type JsonApiKnowledgeRecommendationPostOptionalIdAttributesComparisonTypeEnum = "MONTH" | "QUARTER" | "YEAR"; - -// @public (undocumented) -export type JsonApiKnowledgeRecommendationPostOptionalIdAttributesDirectionEnum = "INCREASED" | "DECREASED"; - // @public (undocumented) export interface JsonApiKnowledgeRecommendationPostOptionalIdDocument { // (undocumented) data: JsonApiKnowledgeRecommendationPostOptionalId; } -// @public (undocumented) -export interface JsonApiKnowledgeRecommendationPostOptionalIdRelationships { - // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - // (undocumented) - metric: JsonApiKnowledgeRecommendationPatchRelationshipsMetric; -} - // @public (undocumented) export type JsonApiKnowledgeRecommendationPostOptionalIdTypeEnum = "knowledgeRecommendation"; @@ -16703,7 +17524,7 @@ export interface JsonApiLabelOut { attributes?: JsonApiLabelOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiLabelOutRelationships; type: JsonApiLabelOutTypeEnum; @@ -16740,7 +17561,7 @@ export interface JsonApiLabelOutAttributes { // @public export interface JsonApiLabelOutAttributesGeoAreaConfig { // (undocumented) - collection: GeoCollection; + collection: GeoCollectionIdentifier; } // @public (undocumented) @@ -16774,7 +17595,7 @@ export interface JsonApiLabelOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -16800,7 +17621,7 @@ export interface JsonApiLabelOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiLabelOutRelationships; type: JsonApiLabelOutWithLinksTypeEnum; @@ -16891,7 +17712,7 @@ export interface JsonApiLlmEndpointOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -16943,11 +17764,30 @@ export type JsonApiLlmEndpointPatchTypeEnum = "llmEndpoint"; // @public export interface JsonApiMemoryItemIn { // (undocumented) - attributes: JsonApiMemoryItemPostOptionalIdAttributes; + attributes: JsonApiMemoryItemInAttributes; id: string; type: JsonApiMemoryItemInTypeEnum; } +// @public (undocumented) +export interface JsonApiMemoryItemInAttributes { + // (undocumented) + areRelationsValid?: boolean; + // (undocumented) + description?: string; + instruction: string; + isDisabled?: boolean; + keywords?: Array; + strategy: JsonApiMemoryItemInAttributesStrategyEnum; + // (undocumented) + tags?: Array; + // (undocumented) + title?: string; +} + +// @public (undocumented) +export type JsonApiMemoryItemInAttributesStrategyEnum = "ALWAYS" | "AUTO"; + // @public (undocumented) export interface JsonApiMemoryItemInDocument { // (undocumented) @@ -16963,7 +17803,7 @@ export interface JsonApiMemoryItemOut { attributes: JsonApiMemoryItemOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiDashboardPluginOutRelationships; type: JsonApiMemoryItemOutTypeEnum; @@ -17009,7 +17849,7 @@ export interface JsonApiMemoryItemOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -17023,7 +17863,7 @@ export interface JsonApiMemoryItemOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiDashboardPluginOutRelationships; type: JsonApiMemoryItemOutWithLinksTypeEnum; @@ -17071,30 +17911,11 @@ export type JsonApiMemoryItemPatchTypeEnum = "memoryItem"; // @public export interface JsonApiMemoryItemPostOptionalId { // (undocumented) - attributes: JsonApiMemoryItemPostOptionalIdAttributes; + attributes: JsonApiMemoryItemInAttributes; id?: string; type: JsonApiMemoryItemPostOptionalIdTypeEnum; } -// @public (undocumented) -export interface JsonApiMemoryItemPostOptionalIdAttributes { - // (undocumented) - areRelationsValid?: boolean; - // (undocumented) - description?: string; - instruction: string; - isDisabled?: boolean; - keywords?: Array; - strategy: JsonApiMemoryItemPostOptionalIdAttributesStrategyEnum; - // (undocumented) - tags?: Array; - // (undocumented) - title?: string; -} - -// @public (undocumented) -export type JsonApiMemoryItemPostOptionalIdAttributesStrategyEnum = "ALWAYS" | "AUTO"; - // @public (undocumented) export interface JsonApiMemoryItemPostOptionalIdDocument { // (undocumented) @@ -17107,11 +17928,27 @@ export type JsonApiMemoryItemPostOptionalIdTypeEnum = "memoryItem"; // @public export interface JsonApiMetricIn { // (undocumented) - attributes: JsonApiMetricPostOptionalIdAttributes; + attributes: JsonApiMetricInAttributes; id: string; type: JsonApiMetricInTypeEnum; } +// @public (undocumented) +export interface JsonApiMetricInAttributes { + // (undocumented) + areRelationsValid?: boolean; + // (undocumented) + content: JsonApiMetricOutAttributesContent; + // (undocumented) + description?: string; + // (undocumented) + isHidden?: boolean; + // (undocumented) + tags?: Array; + // (undocumented) + title?: string; +} + // @public (undocumented) export interface JsonApiMetricInDocument { // (undocumented) @@ -17138,7 +17975,7 @@ export interface JsonApiMetricOut { attributes: JsonApiMetricOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiVisualizationObjectOutRelationships; type: JsonApiMetricOutTypeEnum; @@ -17195,7 +18032,7 @@ export interface JsonApiMetricOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -17209,7 +18046,7 @@ export interface JsonApiMetricOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiVisualizationObjectOutRelationships; type: JsonApiMetricOutWithLinksTypeEnum; @@ -17254,27 +18091,11 @@ export type JsonApiMetricPatchTypeEnum = "metric"; // @public export interface JsonApiMetricPostOptionalId { // (undocumented) - attributes: JsonApiMetricPostOptionalIdAttributes; + attributes: JsonApiMetricInAttributes; id?: string; type: JsonApiMetricPostOptionalIdTypeEnum; } -// @public (undocumented) -export interface JsonApiMetricPostOptionalIdAttributes { - // (undocumented) - areRelationsValid?: boolean; - // (undocumented) - content: JsonApiMetricOutAttributesContent; - // (undocumented) - description?: string; - // (undocumented) - isHidden?: boolean; - // (undocumented) - tags?: Array; - // (undocumented) - title?: string; -} - // @public (undocumented) export interface JsonApiMetricPostOptionalIdDocument { // (undocumented) @@ -17324,7 +18145,7 @@ export interface JsonApiNotificationChannelIdentifierOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -17346,7 +18167,7 @@ export type JsonApiNotificationChannelIdentifierOutWithLinksTypeEnum = "notifica // @public export interface JsonApiNotificationChannelIn { // (undocumented) - attributes?: JsonApiNotificationChannelPatchAttributes; + attributes?: JsonApiNotificationChannelPostOptionalIdAttributes; id: string; type: JsonApiNotificationChannelInTypeEnum; } @@ -17387,7 +18208,7 @@ export interface JsonApiNotificationChannelOutAttributes { // (undocumented) description?: string | null; // (undocumented) - destination?: JsonApiNotificationChannelPatchAttributesDestination; + destination?: JsonApiNotificationChannelOutAttributesDestination; // (undocumented) destinationType?: JsonApiNotificationChannelOutAttributesDestinationTypeEnum | null; inPlatformNotification?: JsonApiNotificationChannelOutAttributesInPlatformNotificationEnum; @@ -17402,6 +18223,9 @@ export type JsonApiNotificationChannelOutAttributesAllowedRecipientsEnum = "CREA // @public (undocumented) export type JsonApiNotificationChannelOutAttributesDashboardLinkVisibilityEnum = "HIDDEN" | "INTERNAL_ONLY" | "ALL"; +// @public +export type JsonApiNotificationChannelOutAttributesDestination = DefaultSmtp | InPlatform | Smtp | Webhook; + // @public (undocumented) export type JsonApiNotificationChannelOutAttributesDestinationTypeEnum = "WEBHOOK" | "SMTP" | "DEFAULT_SMTP" | "IN_PLATFORM"; @@ -17423,7 +18247,7 @@ export interface JsonApiNotificationChannelOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -17445,38 +18269,11 @@ export type JsonApiNotificationChannelOutWithLinksTypeEnum = "notificationChanne // @public export interface JsonApiNotificationChannelPatch { // (undocumented) - attributes?: JsonApiNotificationChannelPatchAttributes; + attributes?: JsonApiNotificationChannelPostOptionalIdAttributes; id: string; type: JsonApiNotificationChannelPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiNotificationChannelPatchAttributes { - allowedRecipients?: JsonApiNotificationChannelPatchAttributesAllowedRecipientsEnum; - customDashboardUrl?: string; - dashboardLinkVisibility?: JsonApiNotificationChannelPatchAttributesDashboardLinkVisibilityEnum; - // (undocumented) - description?: string | null; - // (undocumented) - destination?: JsonApiNotificationChannelPatchAttributesDestination; - inPlatformNotification?: JsonApiNotificationChannelPatchAttributesInPlatformNotificationEnum; - // (undocumented) - name?: string | null; - notificationSource?: string; -} - -// @public (undocumented) -export type JsonApiNotificationChannelPatchAttributesAllowedRecipientsEnum = "CREATOR" | "INTERNAL" | "EXTERNAL"; - -// @public (undocumented) -export type JsonApiNotificationChannelPatchAttributesDashboardLinkVisibilityEnum = "HIDDEN" | "INTERNAL_ONLY" | "ALL"; - -// @public -export type JsonApiNotificationChannelPatchAttributesDestination = DefaultSmtp | InPlatform | Smtp | Webhook; - -// @public (undocumented) -export type JsonApiNotificationChannelPatchAttributesInPlatformNotificationEnum = "DISABLED" | "ENABLED"; - // @public (undocumented) export interface JsonApiNotificationChannelPatchDocument { // (undocumented) @@ -17489,11 +18286,35 @@ export type JsonApiNotificationChannelPatchTypeEnum = "notificationChannel"; // @public export interface JsonApiNotificationChannelPostOptionalId { // (undocumented) - attributes?: JsonApiNotificationChannelPatchAttributes; + attributes?: JsonApiNotificationChannelPostOptionalIdAttributes; id?: string; type: JsonApiNotificationChannelPostOptionalIdTypeEnum; } +// @public (undocumented) +export interface JsonApiNotificationChannelPostOptionalIdAttributes { + allowedRecipients?: JsonApiNotificationChannelPostOptionalIdAttributesAllowedRecipientsEnum; + customDashboardUrl?: string; + dashboardLinkVisibility?: JsonApiNotificationChannelPostOptionalIdAttributesDashboardLinkVisibilityEnum; + // (undocumented) + description?: string | null; + // (undocumented) + destination?: JsonApiNotificationChannelOutAttributesDestination; + inPlatformNotification?: JsonApiNotificationChannelPostOptionalIdAttributesInPlatformNotificationEnum; + // (undocumented) + name?: string | null; + notificationSource?: string; +} + +// @public (undocumented) +export type JsonApiNotificationChannelPostOptionalIdAttributesAllowedRecipientsEnum = "CREATOR" | "INTERNAL" | "EXTERNAL"; + +// @public (undocumented) +export type JsonApiNotificationChannelPostOptionalIdAttributesDashboardLinkVisibilityEnum = "HIDDEN" | "INTERNAL_ONLY" | "ALL"; + +// @public (undocumented) +export type JsonApiNotificationChannelPostOptionalIdAttributesInPlatformNotificationEnum = "DISABLED" | "ENABLED"; + // @public (undocumented) export interface JsonApiNotificationChannelPostOptionalIdDocument { // (undocumented) @@ -17583,17 +18404,23 @@ export type JsonApiOrganizationOutMetaPermissionsEnum = "MANAGE" | "SELF_CREATE_ // @public (undocumented) export interface JsonApiOrganizationOutRelationships { // (undocumented) - bootstrapUser?: JsonApiFilterViewPatchRelationshipsUser; + bootstrapUser?: JsonApiOrganizationOutRelationshipsBootstrapUser; // (undocumented) - bootstrapUserGroup?: JsonApiUserDataFilterPatchRelationshipsUserGroup; + bootstrapUserGroup?: JsonApiOrganizationOutRelationshipsBootstrapUserGroup; // (undocumented) - identityProvider?: JsonApiOrganizationOutRelationshipsIdentityProvider; + identityProvider?: JsonApiOrganizationPatchRelationshipsIdentityProvider; } // @public (undocumented) -export interface JsonApiOrganizationOutRelationshipsIdentityProvider { +export interface JsonApiOrganizationOutRelationshipsBootstrapUser { // (undocumented) - data: JsonApiIdentityProviderLinkage | null; + data: JsonApiUserLinkage | null; +} + +// @public (undocumented) +export interface JsonApiOrganizationOutRelationshipsBootstrapUserGroup { + // (undocumented) + data: JsonApiUserGroupLinkage | null; } // @public (undocumented) @@ -17631,7 +18458,13 @@ export interface JsonApiOrganizationPatchDocument { // @public (undocumented) export interface JsonApiOrganizationPatchRelationships { // (undocumented) - identityProvider?: JsonApiOrganizationOutRelationshipsIdentityProvider; + identityProvider?: JsonApiOrganizationPatchRelationshipsIdentityProvider; +} + +// @public (undocumented) +export interface JsonApiOrganizationPatchRelationshipsIdentityProvider { + // (undocumented) + data: JsonApiIdentityProviderLinkage | null; } // @public (undocumented) @@ -17640,7 +18473,7 @@ export type JsonApiOrganizationPatchTypeEnum = "organization"; // @public export interface JsonApiOrganizationSettingIn { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; type: JsonApiOrganizationSettingInTypeEnum; } @@ -17657,11 +18490,21 @@ export type JsonApiOrganizationSettingInTypeEnum = "organizationSetting"; // @public export interface JsonApiOrganizationSettingOut { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; type: JsonApiOrganizationSettingOutTypeEnum; } +// @public (undocumented) +export interface JsonApiOrganizationSettingOutAttributes { + content?: object; + // (undocumented) + type?: JsonApiOrganizationSettingOutAttributesTypeEnum; +} + +// @public (undocumented) +export type JsonApiOrganizationSettingOutAttributesTypeEnum = "TIMEZONE" | "ACTIVE_THEME" | "ACTIVE_COLOR_PALETTE" | "ACTIVE_LLM_ENDPOINT" | "ACTIVE_CALENDARS" | "WHITE_LABELING" | "LOCALE" | "METADATA_LOCALE" | "FORMAT_LOCALE" | "MAPBOX_TOKEN" | "AG_GRID_TOKEN" | "WEEK_START" | "FISCAL_YEAR" | "SHOW_HIDDEN_CATALOG_ITEMS" | "OPERATOR_OVERRIDES" | "TIMEZONE_VALIDATION_ENABLED" | "OPENAI_CONFIG" | "ENABLE_FILE_ANALYTICS" | "ALERT" | "SEPARATORS" | "DATE_FILTER_CONFIG" | "JIT_PROVISIONING" | "JWT_JIT_PROVISIONING" | "DASHBOARD_FILTERS_APPLY_MODE" | "ENABLE_SLIDES_EXPORT" | "ENABLE_SNAPSHOT_EXPORT" | "AI_RATE_LIMIT" | "ATTACHMENT_SIZE_LIMIT" | "ATTACHMENT_LINK_TTL" | "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE" | "ENABLE_DRILL_TO_URL_BY_DEFAULT" | "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS" | "ENABLE_AUTOMATION_EVALUATION_MODE" | "ENABLE_ACCESSIBILITY_MODE" | "REGISTERED_PLUGGABLE_APPLICATIONS" | "DATA_LOCALE" | "LDM_DEFAULT_LOCALE" | "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS" | "MAX_ZOOM_LEVEL" | "SORT_CASE_SENSITIVE" | "METRIC_FORMAT_OVERRIDE" | "ENABLE_AI_ON_DATA"; + // @public (undocumented) export interface JsonApiOrganizationSettingOutDocument { // (undocumented) @@ -17677,7 +18520,7 @@ export interface JsonApiOrganizationSettingOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -17686,7 +18529,7 @@ export type JsonApiOrganizationSettingOutTypeEnum = "organizationSetting"; // @public (undocumented) export interface JsonApiOrganizationSettingOutWithLinks { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; // (undocumented) links?: ObjectLinks; @@ -17699,21 +18542,11 @@ export type JsonApiOrganizationSettingOutWithLinksTypeEnum = "organizationSettin // @public export interface JsonApiOrganizationSettingPatch { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; type: JsonApiOrganizationSettingPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiOrganizationSettingPatchAttributes { - content?: object; - // (undocumented) - type?: JsonApiOrganizationSettingPatchAttributesTypeEnum; -} - -// @public (undocumented) -export type JsonApiOrganizationSettingPatchAttributesTypeEnum = "TIMEZONE" | "ACTIVE_THEME" | "ACTIVE_COLOR_PALETTE" | "ACTIVE_LLM_ENDPOINT" | "ACTIVE_CALENDARS" | "WHITE_LABELING" | "LOCALE" | "METADATA_LOCALE" | "FORMAT_LOCALE" | "MAPBOX_TOKEN" | "AG_GRID_TOKEN" | "WEEK_START" | "FISCAL_YEAR" | "SHOW_HIDDEN_CATALOG_ITEMS" | "OPERATOR_OVERRIDES" | "TIMEZONE_VALIDATION_ENABLED" | "OPENAI_CONFIG" | "ENABLE_FILE_ANALYTICS" | "ALERT" | "SEPARATORS" | "DATE_FILTER_CONFIG" | "JIT_PROVISIONING" | "JWT_JIT_PROVISIONING" | "DASHBOARD_FILTERS_APPLY_MODE" | "ENABLE_SLIDES_EXPORT" | "ENABLE_SNAPSHOT_EXPORT" | "AI_RATE_LIMIT" | "ATTACHMENT_SIZE_LIMIT" | "ATTACHMENT_LINK_TTL" | "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE" | "ENABLE_DRILL_TO_URL_BY_DEFAULT" | "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS" | "ENABLE_AUTOMATION_EVALUATION_MODE" | "ENABLE_ACCESSIBILITY_MODE" | "REGISTERED_PLUGGABLE_APPLICATIONS" | "DATA_LOCALE" | "LDM_DEFAULT_LOCALE" | "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS" | "MAX_ZOOM_LEVEL" | "SORT_CASE_SENSITIVE" | "METRIC_FORMAT_OVERRIDE" | "ENABLE_AI_ON_DATA"; - // @public (undocumented) export interface JsonApiOrganizationSettingPatchDocument { // (undocumented) @@ -17763,7 +18596,7 @@ export interface JsonApiThemeOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -17805,7 +18638,7 @@ export interface JsonApiUserDataFilterIn { attributes: JsonApiUserDataFilterOutAttributes; id: string; // (undocumented) - relationships?: JsonApiUserDataFilterPatchRelationships; + relationships?: JsonApiUserDataFilterInRelationships; type: JsonApiUserDataFilterInTypeEnum; } @@ -17815,6 +18648,14 @@ export interface JsonApiUserDataFilterInDocument { data: JsonApiUserDataFilterIn; } +// @public (undocumented) +export interface JsonApiUserDataFilterInRelationships { + // (undocumented) + user?: JsonApiOrganizationOutRelationshipsBootstrapUser; + // (undocumented) + userGroup?: JsonApiOrganizationOutRelationshipsBootstrapUserGroup; +} + // @public (undocumented) export type JsonApiUserDataFilterInTypeEnum = "userDataFilter"; @@ -17824,7 +18665,7 @@ export interface JsonApiUserDataFilterOut { attributes: JsonApiUserDataFilterOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiUserDataFilterOutRelationships; type: JsonApiUserDataFilterOutTypeEnum; @@ -17864,25 +18705,25 @@ export interface JsonApiUserDataFilterOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiUserDataFilterOutRelationships { // (undocumented) - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + attributes?: JsonApiDatasetOutRelationshipsAttributes; // (undocumented) - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; + datasets?: JsonApiDatasetOutRelationshipsReferences; // (undocumented) - facts?: JsonApiVisualizationObjectOutRelationshipsFacts; + facts?: JsonApiDatasetOutRelationshipsFacts; // (undocumented) labels?: JsonApiVisualizationObjectOutRelationshipsLabels; // (undocumented) metrics?: JsonApiVisualizationObjectOutRelationshipsMetrics; // (undocumented) - user?: JsonApiFilterViewPatchRelationshipsUser; + user?: JsonApiOrganizationOutRelationshipsBootstrapUser; // (undocumented) - userGroup?: JsonApiUserDataFilterPatchRelationshipsUserGroup; + userGroup?: JsonApiOrganizationOutRelationshipsBootstrapUserGroup; } // @public (undocumented) @@ -17896,7 +18737,7 @@ export interface JsonApiUserDataFilterOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiUserDataFilterOutRelationships; type: JsonApiUserDataFilterOutWithLinksTypeEnum; @@ -17911,7 +18752,7 @@ export interface JsonApiUserDataFilterPatch { attributes: JsonApiUserDataFilterPatchAttributes; id: string; // (undocumented) - relationships?: JsonApiUserDataFilterPatchRelationships; + relationships?: JsonApiUserDataFilterInRelationships; type: JsonApiUserDataFilterPatchTypeEnum; } @@ -17935,20 +18776,6 @@ export interface JsonApiUserDataFilterPatchDocument { data: JsonApiUserDataFilterPatch; } -// @public (undocumented) -export interface JsonApiUserDataFilterPatchRelationships { - // (undocumented) - user?: JsonApiFilterViewPatchRelationshipsUser; - // (undocumented) - userGroup?: JsonApiUserDataFilterPatchRelationshipsUserGroup; -} - -// @public (undocumented) -export interface JsonApiUserDataFilterPatchRelationshipsUserGroup { - // (undocumented) - data: JsonApiUserGroupLinkage | null; -} - // @public (undocumented) export type JsonApiUserDataFilterPatchTypeEnum = "userDataFilter"; @@ -17958,7 +18785,7 @@ export interface JsonApiUserDataFilterPostOptionalId { attributes: JsonApiUserDataFilterOutAttributes; id?: string; // (undocumented) - relationships?: JsonApiUserDataFilterPatchRelationships; + relationships?: JsonApiUserDataFilterInRelationships; type: JsonApiUserDataFilterPostOptionalIdTypeEnum; } @@ -17974,10 +18801,10 @@ export type JsonApiUserDataFilterPostOptionalIdTypeEnum = "userDataFilter"; // @public export interface JsonApiUserGroupIn { // (undocumented) - attributes?: JsonApiUserGroupPatchAttributes; + attributes?: JsonApiUserGroupOutAttributes; id: string; // (undocumented) - relationships?: JsonApiUserGroupPatchRelationships; + relationships?: JsonApiUserGroupOutRelationships; type: JsonApiUserGroupInTypeEnum; } @@ -18004,13 +18831,19 @@ export type JsonApiUserGroupLinkageTypeEnum = "userGroup"; // @public export interface JsonApiUserGroupOut { // (undocumented) - attributes?: JsonApiUserGroupPatchAttributes; + attributes?: JsonApiUserGroupOutAttributes; id: string; // (undocumented) - relationships?: JsonApiUserGroupPatchRelationships; + relationships?: JsonApiUserGroupOutRelationships; type: JsonApiUserGroupOutTypeEnum; } +// @public (undocumented) +export interface JsonApiUserGroupOutAttributes { + // (undocumented) + name?: string; +} + // @public (undocumented) export interface JsonApiUserGroupOutDocument { // (undocumented) @@ -18028,7 +18861,18 @@ export interface JsonApiUserGroupOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiUserGroupOutRelationships { + // (undocumented) + parents?: JsonApiUserGroupOutRelationshipsParents; +} + +// @public (undocumented) +export interface JsonApiUserGroupOutRelationshipsParents { + data: Array; } // @public (undocumented) @@ -18037,12 +18881,12 @@ export type JsonApiUserGroupOutTypeEnum = "userGroup"; // @public (undocumented) export interface JsonApiUserGroupOutWithLinks { // (undocumented) - attributes?: JsonApiUserGroupPatchAttributes; + attributes?: JsonApiUserGroupOutAttributes; id: string; // (undocumented) links?: ObjectLinks; // (undocumented) - relationships?: JsonApiUserGroupPatchRelationships; + relationships?: JsonApiUserGroupOutRelationships; type: JsonApiUserGroupOutWithLinksTypeEnum; } @@ -18052,34 +18896,17 @@ export type JsonApiUserGroupOutWithLinksTypeEnum = "userGroup"; // @public export interface JsonApiUserGroupPatch { // (undocumented) - attributes?: JsonApiUserGroupPatchAttributes; + attributes?: JsonApiUserGroupOutAttributes; id: string; // (undocumented) - relationships?: JsonApiUserGroupPatchRelationships; + relationships?: JsonApiUserGroupOutRelationships; type: JsonApiUserGroupPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiUserGroupPatchAttributes { - // (undocumented) - name?: string; -} - // @public (undocumented) export interface JsonApiUserGroupPatchDocument { // (undocumented) - data: JsonApiUserGroupPatch; -} - -// @public (undocumented) -export interface JsonApiUserGroupPatchRelationships { - // (undocumented) - parents?: JsonApiUserGroupPatchRelationshipsParents; -} - -// @public (undocumented) -export interface JsonApiUserGroupPatchRelationshipsParents { - data: Array; + data: JsonApiUserGroupPatch; } // @public (undocumented) @@ -18129,7 +18956,7 @@ export interface JsonApiUserIdentifierOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -18151,10 +18978,10 @@ export type JsonApiUserIdentifierOutWithLinksTypeEnum = "userIdentifier"; // @public export interface JsonApiUserIn { // (undocumented) - attributes?: JsonApiUserPatchAttributes; + attributes?: JsonApiUserOutAttributes; id: string; // (undocumented) - relationships?: JsonApiUserPatchRelationships; + relationships?: JsonApiUserOutRelationships; type: JsonApiUserInTypeEnum; } @@ -18181,13 +19008,25 @@ export type JsonApiUserLinkageTypeEnum = "user"; // @public export interface JsonApiUserOut { // (undocumented) - attributes?: JsonApiUserPatchAttributes; + attributes?: JsonApiUserOutAttributes; id: string; // (undocumented) - relationships?: JsonApiUserPatchRelationships; + relationships?: JsonApiUserOutRelationships; type: JsonApiUserOutTypeEnum; } +// @public (undocumented) +export interface JsonApiUserOutAttributes { + // (undocumented) + authenticationId?: string; + // (undocumented) + email?: string; + // (undocumented) + firstname?: string; + // (undocumented) + lastname?: string; +} + // @public (undocumented) export interface JsonApiUserOutDocument { // (undocumented) @@ -18205,7 +19044,13 @@ export interface JsonApiUserOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiUserOutRelationships { + // (undocumented) + userGroups?: JsonApiUserGroupOutRelationshipsParents; } // @public (undocumented) @@ -18214,12 +19059,12 @@ export type JsonApiUserOutTypeEnum = "user"; // @public (undocumented) export interface JsonApiUserOutWithLinks { // (undocumented) - attributes?: JsonApiUserPatchAttributes; + attributes?: JsonApiUserOutAttributes; id: string; // (undocumented) links?: ObjectLinks; // (undocumented) - relationships?: JsonApiUserPatchRelationships; + relationships?: JsonApiUserOutRelationships; type: JsonApiUserOutWithLinksTypeEnum; } @@ -18229,44 +19074,26 @@ export type JsonApiUserOutWithLinksTypeEnum = "user"; // @public export interface JsonApiUserPatch { // (undocumented) - attributes?: JsonApiUserPatchAttributes; + attributes?: JsonApiUserOutAttributes; id: string; // (undocumented) - relationships?: JsonApiUserPatchRelationships; + relationships?: JsonApiUserOutRelationships; type: JsonApiUserPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiUserPatchAttributes { - // (undocumented) - authenticationId?: string; - // (undocumented) - email?: string; - // (undocumented) - firstname?: string; - // (undocumented) - lastname?: string; -} - // @public (undocumented) export interface JsonApiUserPatchDocument { // (undocumented) data: JsonApiUserPatch; } -// @public (undocumented) -export interface JsonApiUserPatchRelationships { - // (undocumented) - userGroups?: JsonApiUserGroupPatchRelationshipsParents; -} - // @public (undocumented) export type JsonApiUserPatchTypeEnum = "user"; // @public export interface JsonApiUserSettingIn { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; type: JsonApiUserSettingInTypeEnum; } @@ -18283,7 +19110,7 @@ export type JsonApiUserSettingInTypeEnum = "userSetting"; // @public export interface JsonApiUserSettingOut { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; type: JsonApiUserSettingOutTypeEnum; } @@ -18303,7 +19130,7 @@ export interface JsonApiUserSettingOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -18312,7 +19139,7 @@ export type JsonApiUserSettingOutTypeEnum = "userSetting"; // @public (undocumented) export interface JsonApiUserSettingOutWithLinks { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; // (undocumented) links?: ObjectLinks; @@ -18325,11 +19152,26 @@ export type JsonApiUserSettingOutWithLinksTypeEnum = "userSetting"; // @public export interface JsonApiVisualizationObjectIn { // (undocumented) - attributes: JsonApiVisualizationObjectPostOptionalIdAttributes; + attributes: JsonApiVisualizationObjectInAttributes; id: string; type: JsonApiVisualizationObjectInTypeEnum; } +// @public (undocumented) +export interface JsonApiVisualizationObjectInAttributes { + // (undocumented) + areRelationsValid?: boolean; + content: object; + // (undocumented) + description?: string; + // (undocumented) + isHidden?: boolean; + // (undocumented) + tags?: Array; + // (undocumented) + title?: string; +} + // @public (undocumented) export interface JsonApiVisualizationObjectInDocument { // (undocumented) @@ -18356,7 +19198,7 @@ export interface JsonApiVisualizationObjectOut { attributes: JsonApiVisualizationObjectOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiVisualizationObjectOutRelationships; type: JsonApiVisualizationObjectOutTypeEnum; @@ -18398,34 +19240,19 @@ export interface JsonApiVisualizationObjectOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; -} - -// @public (undocumented) -export interface JsonApiVisualizationObjectOutMeta { - // (undocumented) - origin?: JsonApiVisualizationObjectOutMetaOrigin; -} - -// @public (undocumented) -export interface JsonApiVisualizationObjectOutMetaOrigin { - originId: string; - originType: JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum; + meta?: JsonApiColorPaletteOutListMeta; } -// @public (undocumented) -export type JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum = "NATIVE" | "PARENT"; - // @public (undocumented) export interface JsonApiVisualizationObjectOutRelationships { // (undocumented) - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + attributes?: JsonApiDatasetOutRelationshipsAttributes; // (undocumented) createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; // (undocumented) - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; + datasets?: JsonApiDatasetOutRelationshipsReferences; // (undocumented) - facts?: JsonApiVisualizationObjectOutRelationshipsFacts; + facts?: JsonApiDatasetOutRelationshipsFacts; // (undocumented) labels?: JsonApiVisualizationObjectOutRelationshipsLabels; // (undocumented) @@ -18434,27 +19261,12 @@ export interface JsonApiVisualizationObjectOutRelationships { modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; } -// @public (undocumented) -export interface JsonApiVisualizationObjectOutRelationshipsAttributes { - data: Array; -} - // @public (undocumented) export interface JsonApiVisualizationObjectOutRelationshipsCreatedBy { // (undocumented) data: JsonApiUserIdentifierLinkage | null; } -// @public (undocumented) -export interface JsonApiVisualizationObjectOutRelationshipsDatasets { - data: Array; -} - -// @public (undocumented) -export interface JsonApiVisualizationObjectOutRelationshipsFacts { - data: Array; -} - // @public (undocumented) export interface JsonApiVisualizationObjectOutRelationshipsLabels { data: Array; @@ -18476,7 +19288,7 @@ export interface JsonApiVisualizationObjectOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiVisualizationObjectOutRelationships; type: JsonApiVisualizationObjectOutWithLinksTypeEnum; @@ -18520,26 +19332,11 @@ export type JsonApiVisualizationObjectPatchTypeEnum = "visualizationObject"; // @public export interface JsonApiVisualizationObjectPostOptionalId { // (undocumented) - attributes: JsonApiVisualizationObjectPostOptionalIdAttributes; + attributes: JsonApiVisualizationObjectInAttributes; id?: string; type: JsonApiVisualizationObjectPostOptionalIdTypeEnum; } -// @public (undocumented) -export interface JsonApiVisualizationObjectPostOptionalIdAttributes { - // (undocumented) - areRelationsValid?: boolean; - content: object; - // (undocumented) - description?: string; - // (undocumented) - isHidden?: boolean; - // (undocumented) - tags?: Array; - // (undocumented) - title?: string; -} - // @public (undocumented) export interface JsonApiVisualizationObjectPostOptionalIdDocument { // (undocumented) @@ -18570,27 +19367,27 @@ export interface JsonApiWorkspaceAutomationOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) export interface JsonApiWorkspaceAutomationOutRelationships { // (undocumented) - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; // (undocumented) automationResults?: JsonApiAutomationOutRelationshipsAutomationResults; // (undocumented) createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; // (undocumented) - exportDefinitions?: JsonApiAutomationPatchRelationshipsExportDefinitions; + exportDefinitions?: JsonApiAutomationOutRelationshipsExportDefinitions; // (undocumented) modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; // (undocumented) - notificationChannel?: JsonApiAutomationPatchRelationshipsNotificationChannel; + notificationChannel?: JsonApiAutomationOutRelationshipsNotificationChannel; // (undocumented) - recipients?: JsonApiAutomationPatchRelationshipsRecipients; + recipients?: JsonApiAutomationOutRelationshipsRecipients; // (undocumented) - workspace?: JsonApiWorkspacePatchRelationshipsParent; + workspace?: JsonApiWorkspaceOutRelationshipsParent; } // @public (undocumented) @@ -18647,7 +19444,7 @@ export interface JsonApiWorkspaceDataFilterOut { attributes?: JsonApiWorkspaceDataFilterOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiWorkspaceDataFilterOutRelationships; type: JsonApiWorkspaceDataFilterOutTypeEnum; @@ -18680,7 +19477,7 @@ export interface JsonApiWorkspaceDataFilterOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -18705,7 +19502,7 @@ export interface JsonApiWorkspaceDataFilterOutWithLinks { // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) relationships?: JsonApiWorkspaceDataFilterOutRelationships; type: JsonApiWorkspaceDataFilterOutWithLinksTypeEnum; @@ -18736,10 +19533,10 @@ export type JsonApiWorkspaceDataFilterPatchTypeEnum = "workspaceDataFilter"; // @public export interface JsonApiWorkspaceDataFilterSettingIn { // (undocumented) - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; id: string; // (undocumented) - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; type: JsonApiWorkspaceDataFilterSettingInTypeEnum; } @@ -18766,15 +19563,25 @@ export type JsonApiWorkspaceDataFilterSettingLinkageTypeEnum = "workspaceDataFil // @public export interface JsonApiWorkspaceDataFilterSettingOut { // (undocumented) - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; type: JsonApiWorkspaceDataFilterSettingOutTypeEnum; } +// @public (undocumented) +export interface JsonApiWorkspaceDataFilterSettingOutAttributes { + // (undocumented) + description?: string; + // (undocumented) + filterValues?: Array; + // (undocumented) + title?: string; +} + // @public (undocumented) export interface JsonApiWorkspaceDataFilterSettingOutDocument { // (undocumented) @@ -18792,7 +19599,19 @@ export interface JsonApiWorkspaceDataFilterSettingOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +// @public (undocumented) +export interface JsonApiWorkspaceDataFilterSettingOutRelationships { + // (undocumented) + workspaceDataFilter?: JsonApiWorkspaceDataFilterSettingOutRelationshipsWorkspaceDataFilter; +} + +// @public (undocumented) +export interface JsonApiWorkspaceDataFilterSettingOutRelationshipsWorkspaceDataFilter { + // (undocumented) + data: JsonApiWorkspaceDataFilterLinkage | null; } // @public (undocumented) @@ -18801,14 +19620,14 @@ export type JsonApiWorkspaceDataFilterSettingOutTypeEnum = "workspaceDataFilterS // @public (undocumented) export interface JsonApiWorkspaceDataFilterSettingOutWithLinks { // (undocumented) - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; id: string; // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; // (undocumented) - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; type: JsonApiWorkspaceDataFilterSettingOutWithLinksTypeEnum; } @@ -18818,51 +19637,29 @@ export type JsonApiWorkspaceDataFilterSettingOutWithLinksTypeEnum = "workspaceDa // @public export interface JsonApiWorkspaceDataFilterSettingPatch { // (undocumented) - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; id: string; // (undocumented) - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; type: JsonApiWorkspaceDataFilterSettingPatchTypeEnum; } -// @public (undocumented) -export interface JsonApiWorkspaceDataFilterSettingPatchAttributes { - // (undocumented) - description?: string; - // (undocumented) - filterValues?: Array; - // (undocumented) - title?: string; -} - // @public (undocumented) export interface JsonApiWorkspaceDataFilterSettingPatchDocument { // (undocumented) data: JsonApiWorkspaceDataFilterSettingPatch; } -// @public (undocumented) -export interface JsonApiWorkspaceDataFilterSettingPatchRelationships { - // (undocumented) - workspaceDataFilter?: JsonApiWorkspaceDataFilterSettingPatchRelationshipsWorkspaceDataFilter; -} - -// @public (undocumented) -export interface JsonApiWorkspaceDataFilterSettingPatchRelationshipsWorkspaceDataFilter { - // (undocumented) - data: JsonApiWorkspaceDataFilterLinkage | null; -} - // @public (undocumented) export type JsonApiWorkspaceDataFilterSettingPatchTypeEnum = "workspaceDataFilterSetting"; // @public export interface JsonApiWorkspaceIn { // (undocumented) - attributes?: JsonApiWorkspacePatchAttributes; + attributes?: JsonApiWorkspaceOutAttributes; id: string; // (undocumented) - relationships?: JsonApiWorkspacePatchRelationships; + relationships?: JsonApiWorkspaceOutRelationships; type: JsonApiWorkspaceInTypeEnum; } @@ -18889,15 +19686,37 @@ export type JsonApiWorkspaceLinkageTypeEnum = "workspace"; // @public export interface JsonApiWorkspaceOut { // (undocumented) - attributes?: JsonApiWorkspacePatchAttributes; + attributes?: JsonApiWorkspaceOutAttributes; id: string; // (undocumented) meta?: JsonApiWorkspaceOutMeta; // (undocumented) - relationships?: JsonApiWorkspacePatchRelationships; + relationships?: JsonApiWorkspaceOutRelationships; type: JsonApiWorkspaceOutTypeEnum; } +// @public (undocumented) +export interface JsonApiWorkspaceOutAttributes { + // (undocumented) + cacheExtraLimit?: number; + // (undocumented) + dataSource?: JsonApiWorkspaceOutAttributesDataSource; + // (undocumented) + description?: string | null; + // @deprecated + earlyAccess?: string | null; + earlyAccessValues?: Array | null; + // (undocumented) + name?: string | null; + prefix?: string | null; +} + +// @public +export interface JsonApiWorkspaceOutAttributesDataSource { + id: string; + schemaPath?: Array; +} + // @public (undocumented) export interface JsonApiWorkspaceOutDocument { // (undocumented) @@ -18915,7 +19734,7 @@ export interface JsonApiWorkspaceOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -18949,20 +19768,32 @@ export interface JsonApiWorkspaceOutMetaHierarchy { // @public (undocumented) export type JsonApiWorkspaceOutMetaPermissionsEnum = "MANAGE" | "ANALYZE" | "EXPORT" | "EXPORT_TABULAR" | "EXPORT_PDF" | "CREATE_AUTOMATION" | "USE_AI_ASSISTANT" | "CREATE_FILTER_VIEW" | "VIEW"; +// @public (undocumented) +export interface JsonApiWorkspaceOutRelationships { + // (undocumented) + parent?: JsonApiWorkspaceOutRelationshipsParent; +} + +// @public (undocumented) +export interface JsonApiWorkspaceOutRelationshipsParent { + // (undocumented) + data: JsonApiWorkspaceLinkage | null; +} + // @public (undocumented) export type JsonApiWorkspaceOutTypeEnum = "workspace"; // @public (undocumented) export interface JsonApiWorkspaceOutWithLinks { // (undocumented) - attributes?: JsonApiWorkspacePatchAttributes; + attributes?: JsonApiWorkspaceOutAttributes; id: string; // (undocumented) links?: ObjectLinks; // (undocumented) meta?: JsonApiWorkspaceOutMeta; // (undocumented) - relationships?: JsonApiWorkspacePatchRelationships; + relationships?: JsonApiWorkspaceOutRelationships; type: JsonApiWorkspaceOutWithLinksTypeEnum; } @@ -18972,60 +19803,26 @@ export type JsonApiWorkspaceOutWithLinksTypeEnum = "workspace"; // @public export interface JsonApiWorkspacePatch { // (undocumented) - attributes?: JsonApiWorkspacePatchAttributes; + attributes?: JsonApiWorkspaceOutAttributes; id: string; // (undocumented) - relationships?: JsonApiWorkspacePatchRelationships; + relationships?: JsonApiWorkspaceOutRelationships; type: JsonApiWorkspacePatchTypeEnum; } -// @public (undocumented) -export interface JsonApiWorkspacePatchAttributes { - // (undocumented) - cacheExtraLimit?: number; - // (undocumented) - dataSource?: JsonApiWorkspacePatchAttributesDataSource; - // (undocumented) - description?: string | null; - // @deprecated - earlyAccess?: string | null; - earlyAccessValues?: Array | null; - // (undocumented) - name?: string | null; - prefix?: string | null; -} - -// @public -export interface JsonApiWorkspacePatchAttributesDataSource { - id: string; - schemaPath?: Array; -} - // @public (undocumented) export interface JsonApiWorkspacePatchDocument { // (undocumented) data: JsonApiWorkspacePatch; } -// @public (undocumented) -export interface JsonApiWorkspacePatchRelationships { - // (undocumented) - parent?: JsonApiWorkspacePatchRelationshipsParent; -} - -// @public (undocumented) -export interface JsonApiWorkspacePatchRelationshipsParent { - // (undocumented) - data: JsonApiWorkspaceLinkage | null; -} - // @public (undocumented) export type JsonApiWorkspacePatchTypeEnum = "workspace"; // @public export interface JsonApiWorkspaceSettingIn { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; type: JsonApiWorkspaceSettingInTypeEnum; } @@ -19042,10 +19839,10 @@ export type JsonApiWorkspaceSettingInTypeEnum = "workspaceSetting"; // @public export interface JsonApiWorkspaceSettingOut { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; type: JsonApiWorkspaceSettingOutTypeEnum; } @@ -19064,7 +19861,7 @@ export interface JsonApiWorkspaceSettingOutList { // (undocumented) links?: ListLinks; // (undocumented) - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } // @public (undocumented) @@ -19073,12 +19870,12 @@ export type JsonApiWorkspaceSettingOutTypeEnum = "workspaceSetting"; // @public (undocumented) export interface JsonApiWorkspaceSettingOutWithLinks { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; // (undocumented) links?: ObjectLinks; // (undocumented) - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; type: JsonApiWorkspaceSettingOutWithLinksTypeEnum; } @@ -19088,7 +19885,7 @@ export type JsonApiWorkspaceSettingOutWithLinksTypeEnum = "workspaceSetting"; // @public export interface JsonApiWorkspaceSettingPatch { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id: string; type: JsonApiWorkspaceSettingPatchTypeEnum; } @@ -19105,7 +19902,7 @@ export type JsonApiWorkspaceSettingPatchTypeEnum = "workspaceSetting"; // @public export interface JsonApiWorkspaceSettingPostOptionalId { // (undocumented) - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; id?: string; type: JsonApiWorkspaceSettingPostOptionalIdTypeEnum; } @@ -20161,7 +20958,10 @@ export interface MeasureResultHeader { } // @public -export type MeasureValueFilter = AfmComparisonMeasureValueFilter | AfmRangeMeasureValueFilter; +export type MeasureValueCondition = ComparisonCondition | RangeCondition; + +// @public +export type MeasureValueFilter = AfmComparisonMeasureValueFilter | CompoundMeasureValueFilter_2 | AfmRangeMeasureValueFilter; // @public (undocumented) export class MetadataBaseApi { @@ -21148,6 +21948,8 @@ export type OrganizationGetEntitiesSupportingIncludedResult = JsonApiUserOutList export class OrganizationModelControllerApi extends MetadataBaseApi implements OrganizationModelControllerApiInterface { createEntityColorPalettes(requestParameters: OrganizationModelControllerApiCreateEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityCspDirectives(requestParameters: OrganizationModelControllerApiCreateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + createEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityDataSources(requestParameters: OrganizationModelControllerApiCreateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityExportTemplates(requestParameters: OrganizationModelControllerApiCreateEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityIdentityProviders(requestParameters: OrganizationModelControllerApiCreateEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -21161,6 +21963,8 @@ export class OrganizationModelControllerApi extends MetadataBaseApi implements O createEntityWorkspaces(requestParameters: OrganizationModelControllerApiCreateEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityColorPalettes(requestParameters: OrganizationModelControllerApiDeleteEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityCspDirectives(requestParameters: OrganizationModelControllerApiDeleteEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + deleteEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityDataSources(requestParameters: OrganizationModelControllerApiDeleteEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityExportTemplates(requestParameters: OrganizationModelControllerApiDeleteEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityIdentityProviders(requestParameters: OrganizationModelControllerApiDeleteEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -21175,6 +21979,8 @@ export class OrganizationModelControllerApi extends MetadataBaseApi implements O deleteEntityWorkspaces(requestParameters: OrganizationModelControllerApiDeleteEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesColorPalettes(requestParameters?: OrganizationModelControllerApiGetAllEntitiesColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesCspDirectives(requestParameters?: OrganizationModelControllerApiGetAllEntitiesCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getAllEntitiesCustomGeoCollections(requestParameters?: OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDataSourceIdentifiers(requestParameters?: OrganizationModelControllerApiGetAllEntitiesDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDataSources(requestParameters?: OrganizationModelControllerApiGetAllEntitiesDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesEntitlements(requestParameters?: OrganizationModelControllerApiGetAllEntitiesEntitlementsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -21193,6 +21999,8 @@ export class OrganizationModelControllerApi extends MetadataBaseApi implements O getAllEntitiesWorkspaces(requestParameters?: OrganizationModelControllerApiGetAllEntitiesWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityColorPalettes(requestParameters: OrganizationModelControllerApiGetEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityCspDirectives(requestParameters: OrganizationModelControllerApiGetEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDataSourceIdentifiers(requestParameters: OrganizationModelControllerApiGetEntityDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDataSources(requestParameters: OrganizationModelControllerApiGetEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityEntitlements(requestParameters: OrganizationModelControllerApiGetEntityEntitlementsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -21211,6 +22019,8 @@ export class OrganizationModelControllerApi extends MetadataBaseApi implements O getEntityWorkspaces(requestParameters: OrganizationModelControllerApiGetEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityColorPalettes(requestParameters: OrganizationModelControllerApiPatchEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityCspDirectives(requestParameters: OrganizationModelControllerApiPatchEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + patchEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDataSources(requestParameters: OrganizationModelControllerApiPatchEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityExportTemplates(requestParameters: OrganizationModelControllerApiPatchEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityIdentityProviders(requestParameters: OrganizationModelControllerApiPatchEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -21224,6 +22034,8 @@ export class OrganizationModelControllerApi extends MetadataBaseApi implements O patchEntityWorkspaces(requestParameters: OrganizationModelControllerApiPatchEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityColorPalettes(requestParameters: OrganizationModelControllerApiUpdateEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityCspDirectives(requestParameters: OrganizationModelControllerApiUpdateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + updateEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityDataSources(requestParameters: OrganizationModelControllerApiUpdateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityExportTemplates(requestParameters: OrganizationModelControllerApiUpdateEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityIdentityProviders(requestParameters: OrganizationModelControllerApiUpdateEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -21243,6 +22055,9 @@ export function OrganizationModelControllerApi_CreateEntityColorPalettes(axios: // @public export function OrganizationModelControllerApi_CreateEntityCspDirectives(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiCreateEntityCspDirectivesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function OrganizationModelControllerApi_CreateEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function OrganizationModelControllerApi_CreateEntityDataSources(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiCreateEntityDataSourcesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -21282,6 +22097,9 @@ export function OrganizationModelControllerApi_DeleteEntityColorPalettes(axios: // @public export function OrganizationModelControllerApi_DeleteEntityCspDirectives(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiDeleteEntityCspDirectivesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function OrganizationModelControllerApi_DeleteEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function OrganizationModelControllerApi_DeleteEntityDataSources(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiDeleteEntityDataSourcesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -21321,6 +22139,9 @@ export function OrganizationModelControllerApi_GetAllEntitiesColorPalettes(axios // @public export function OrganizationModelControllerApi_GetAllEntitiesCspDirectives(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiGetAllEntitiesCspDirectivesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function OrganizationModelControllerApi_GetAllEntitiesCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function OrganizationModelControllerApi_GetAllEntitiesDataSourceIdentifiers(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiGetAllEntitiesDataSourceIdentifiersRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -21372,6 +22193,9 @@ export function OrganizationModelControllerApi_GetEntityColorPalettes(axios: Axi // @public export function OrganizationModelControllerApi_GetEntityCspDirectives(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiGetEntityCspDirectivesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function OrganizationModelControllerApi_GetEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function OrganizationModelControllerApi_GetEntityDataSourceIdentifiers(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiGetEntityDataSourceIdentifiersRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -21423,6 +22247,9 @@ export function OrganizationModelControllerApi_PatchEntityColorPalettes(axios: A // @public export function OrganizationModelControllerApi_PatchEntityCspDirectives(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiPatchEntityCspDirectivesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function OrganizationModelControllerApi_PatchEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function OrganizationModelControllerApi_PatchEntityDataSources(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiPatchEntityDataSourcesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -21462,6 +22289,9 @@ export function OrganizationModelControllerApi_UpdateEntityColorPalettes(axios: // @public export function OrganizationModelControllerApi_UpdateEntityCspDirectives(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiUpdateEntityCspDirectivesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; +// @public (undocumented) +export function OrganizationModelControllerApi_UpdateEntityCustomGeoCollections(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; + // @public export function OrganizationModelControllerApi_UpdateEntityDataSources(axios: AxiosInstance, basePath: string, requestParameters: OrganizationModelControllerApiUpdateEntityDataSourcesRequest, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): AxiosPromise; @@ -21501,6 +22331,9 @@ export function OrganizationModelControllerApiAxiosParamCreator_CreateEntityColo // @public export function OrganizationModelControllerApiAxiosParamCreator_CreateEntityCspDirectives(jsonApiCspDirectiveInDocument: JsonApiCspDirectiveInDocument, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function OrganizationModelControllerApiAxiosParamCreator_CreateEntityCustomGeoCollections(jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function OrganizationModelControllerApiAxiosParamCreator_CreateEntityDataSources(jsonApiDataSourceInDocument: JsonApiDataSourceInDocument, metaInclude?: Array<"permissions" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -21540,6 +22373,9 @@ export function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityColo // @public export function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityCspDirectives(id: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityCustomGeoCollections(id: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityDataSources(id: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -21579,6 +22415,9 @@ export function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesCo // @public export function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesCspDirectives(filter?: string, page?: number, size?: number, sort?: Array, metaInclude?: Array<"page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesCustomGeoCollections(filter?: string, page?: number, size?: number, sort?: Array, metaInclude?: Array<"page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesDataSourceIdentifiers(filter?: string, page?: number, size?: number, sort?: Array, metaInclude?: Array<"permissions" | "page" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -21630,6 +22469,9 @@ export function OrganizationModelControllerApiAxiosParamCreator_GetEntityColorPa // @public export function OrganizationModelControllerApiAxiosParamCreator_GetEntityCspDirectives(id: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function OrganizationModelControllerApiAxiosParamCreator_GetEntityCustomGeoCollections(id: string, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function OrganizationModelControllerApiAxiosParamCreator_GetEntityDataSourceIdentifiers(id: string, filter?: string, metaInclude?: Array<"permissions" | "all" | "ALL">, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -21681,6 +22523,9 @@ export function OrganizationModelControllerApiAxiosParamCreator_PatchEntityColor // @public export function OrganizationModelControllerApiAxiosParamCreator_PatchEntityCspDirectives(id: string, jsonApiCspDirectivePatchDocument: JsonApiCspDirectivePatchDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function OrganizationModelControllerApiAxiosParamCreator_PatchEntityCustomGeoCollections(id: string, jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function OrganizationModelControllerApiAxiosParamCreator_PatchEntityDataSources(id: string, jsonApiDataSourcePatchDocument: JsonApiDataSourcePatchDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -21720,6 +22565,9 @@ export function OrganizationModelControllerApiAxiosParamCreator_UpdateEntityColo // @public export function OrganizationModelControllerApiAxiosParamCreator_UpdateEntityCspDirectives(id: string, jsonApiCspDirectiveInDocument: JsonApiCspDirectiveInDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; +// @public (undocumented) +export function OrganizationModelControllerApiAxiosParamCreator_UpdateEntityCustomGeoCollections(id: string, jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; + // @public export function OrganizationModelControllerApiAxiosParamCreator_UpdateEntityDataSources(id: string, jsonApiDataSourceInDocument: JsonApiDataSourceInDocument, filter?: string, options?: AxiosRequestConfig, configuration?: MetadataConfiguration): Promise; @@ -21763,6 +22611,11 @@ export interface OrganizationModelControllerApiCreateEntityCspDirectivesRequest readonly jsonApiCspDirectiveInDocument: JsonApiCspDirectiveInDocument; } +// @public +export interface OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest { + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; +} + // @public export interface OrganizationModelControllerApiCreateEntityDataSourcesRequest { readonly jsonApiDataSourceInDocument: JsonApiDataSourceInDocument; @@ -21835,6 +22688,12 @@ export interface OrganizationModelControllerApiDeleteEntityCspDirectivesRequest readonly id: string; } +// @public +export interface OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; +} + // @public export interface OrganizationModelControllerApiDeleteEntityDataSourcesRequest { readonly filter?: string; @@ -21919,6 +22778,15 @@ export interface OrganizationModelControllerApiGetAllEntitiesCspDirectivesReques readonly sort?: Array; } +// @public +export interface OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest { + readonly filter?: string; + readonly metaInclude?: Array<"page" | "all" | "ALL">; + readonly page?: number; + readonly size?: number; + readonly sort?: Array; +} + // @public export interface OrganizationModelControllerApiGetAllEntitiesDataSourceIdentifiersRequest { readonly filter?: string; @@ -22069,6 +22937,12 @@ export interface OrganizationModelControllerApiGetEntityCspDirectivesRequest { readonly id: string; } +// @public +export interface OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; +} + // @public export interface OrganizationModelControllerApiGetEntityDataSourceIdentifiersRequest { readonly filter?: string; @@ -22169,6 +23043,8 @@ export interface OrganizationModelControllerApiGetEntityWorkspacesRequest { export interface OrganizationModelControllerApiInterface { createEntityColorPalettes(requestParameters: OrganizationModelControllerApiCreateEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityCspDirectives(requestParameters: OrganizationModelControllerApiCreateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + createEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityDataSources(requestParameters: OrganizationModelControllerApiCreateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityExportTemplates(requestParameters: OrganizationModelControllerApiCreateEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; createEntityIdentityProviders(requestParameters: OrganizationModelControllerApiCreateEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -22182,6 +23058,8 @@ export interface OrganizationModelControllerApiInterface { createEntityWorkspaces(requestParameters: OrganizationModelControllerApiCreateEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityColorPalettes(requestParameters: OrganizationModelControllerApiDeleteEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityCspDirectives(requestParameters: OrganizationModelControllerApiDeleteEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + deleteEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityDataSources(requestParameters: OrganizationModelControllerApiDeleteEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityExportTemplates(requestParameters: OrganizationModelControllerApiDeleteEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; deleteEntityIdentityProviders(requestParameters: OrganizationModelControllerApiDeleteEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -22196,6 +23074,8 @@ export interface OrganizationModelControllerApiInterface { deleteEntityWorkspaces(requestParameters: OrganizationModelControllerApiDeleteEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesColorPalettes(requestParameters: OrganizationModelControllerApiGetAllEntitiesColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesCspDirectives(requestParameters: OrganizationModelControllerApiGetAllEntitiesCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getAllEntitiesCustomGeoCollections(requestParameters: OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDataSourceIdentifiers(requestParameters: OrganizationModelControllerApiGetAllEntitiesDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesDataSources(requestParameters: OrganizationModelControllerApiGetAllEntitiesDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; getAllEntitiesEntitlements(requestParameters: OrganizationModelControllerApiGetAllEntitiesEntitlementsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -22214,6 +23094,8 @@ export interface OrganizationModelControllerApiInterface { getAllEntitiesWorkspaces(requestParameters: OrganizationModelControllerApiGetAllEntitiesWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityColorPalettes(requestParameters: OrganizationModelControllerApiGetEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityCspDirectives(requestParameters: OrganizationModelControllerApiGetEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + getEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDataSourceIdentifiers(requestParameters: OrganizationModelControllerApiGetEntityDataSourceIdentifiersRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityDataSources(requestParameters: OrganizationModelControllerApiGetEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; getEntityEntitlements(requestParameters: OrganizationModelControllerApiGetEntityEntitlementsRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -22232,6 +23114,8 @@ export interface OrganizationModelControllerApiInterface { getEntityWorkspaces(requestParameters: OrganizationModelControllerApiGetEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityColorPalettes(requestParameters: OrganizationModelControllerApiPatchEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityCspDirectives(requestParameters: OrganizationModelControllerApiPatchEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + patchEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityDataSources(requestParameters: OrganizationModelControllerApiPatchEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityExportTemplates(requestParameters: OrganizationModelControllerApiPatchEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; patchEntityIdentityProviders(requestParameters: OrganizationModelControllerApiPatchEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -22245,6 +23129,8 @@ export interface OrganizationModelControllerApiInterface { patchEntityWorkspaces(requestParameters: OrganizationModelControllerApiPatchEntityWorkspacesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityColorPalettes(requestParameters: OrganizationModelControllerApiUpdateEntityColorPalettesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityCspDirectives(requestParameters: OrganizationModelControllerApiUpdateEntityCspDirectivesRequest, options?: AxiosRequestConfig): AxiosPromise; + // (undocumented) + updateEntityCustomGeoCollections(requestParameters: OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityDataSources(requestParameters: OrganizationModelControllerApiUpdateEntityDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityExportTemplates(requestParameters: OrganizationModelControllerApiUpdateEntityExportTemplatesRequest, options?: AxiosRequestConfig): AxiosPromise; updateEntityIdentityProviders(requestParameters: OrganizationModelControllerApiUpdateEntityIdentityProvidersRequest, options?: AxiosRequestConfig): AxiosPromise; @@ -22272,6 +23158,13 @@ export interface OrganizationModelControllerApiPatchEntityCspDirectivesRequest { readonly jsonApiCspDirectivePatchDocument: JsonApiCspDirectivePatchDocument; } +// @public +export interface OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; + readonly jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument; +} + // @public export interface OrganizationModelControllerApiPatchEntityDataSourcesRequest { readonly filter?: string; @@ -22366,6 +23259,13 @@ export interface OrganizationModelControllerApiUpdateEntityCspDirectivesRequest readonly jsonApiCspDirectiveInDocument: JsonApiCspDirectiveInDocument; } +// @public +export interface OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest { + readonly filter?: string; + readonly id: string; + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; +} + // @public export interface OrganizationModelControllerApiUpdateEntityDataSourcesRequest { readonly filter?: string; @@ -22962,6 +23862,25 @@ interface Range_2 { } export { Range_2 as Range } +// @public +export interface RangeCondition { + // (undocumented) + range: RangeConditionRange; +} + +// @public (undocumented) +export interface RangeConditionRange { + // (undocumented) + from: number; + // (undocumented) + operator: RangeConditionRangeOperatorEnum; + // (undocumented) + to: number; +} + +// @public (undocumented) +export type RangeConditionRangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; + // @public export interface RangeMeasureValueFilter { // (undocumented) diff --git a/libs/api-client-tiger/package.json b/libs/api-client-tiger/package.json index 35b0ee1718c..ed7707da1c8 100644 --- a/libs/api-client-tiger/package.json +++ b/libs/api-client-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/api-client-tiger", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "API Client for GoodData Cloud and GoodData.CN", "repository": { "type": "git", @@ -13,25 +13,25 @@ "type": "module", "exports": { ".": "./esm/index.js", - "./aac": "./esm/api-endpoints/aac/index.js", - "./entitiesObjects": "./esm/api-endpoints/entitiesObjects/index.js", - "./execution": "./esm/api-endpoints/execution/index.js", - "./userManagement": "./esm/api-endpoints/userManagement/index.js", - "./labelElements": "./esm/api-endpoints/labelElements/index.js", - "./validObjects": "./esm/api-endpoints/validObjects/index.js", - "./validDescendants": "./esm/api-endpoints/validDescendants/index.js", - "./explain": "./esm/api-endpoints/explain/index.js", - "./layout": "./esm/api-endpoints/layout/index.js", - "./actions": "./esm/api-endpoints/actions/index.js", - "./profile": "./esm/api-endpoints/profile/index.js", - "./locationStyle": "./esm/api-endpoints/locationStyle/index.js", - "./genAI": "./esm/api-endpoints/genAI/index.js", - "./authActions": "./esm/api-endpoints/authActions/index.js", - "./scanModel": "./esm/api-endpoints/scanModel/index.js", - "./export": "./esm/api-endpoints/export/index.js", - "./result": "./esm/api-endpoints/result/index.js", - "./automation": "./esm/api-endpoints/automation/index.js", - "./smartFunctions": "./esm/api-endpoints/smartFunctions/index.js" + "./endpoints/aac": "./esm/endpoints/aac/index.js", + "./endpoints/entitiesObjects": "./esm/endpoints/entitiesObjects/index.js", + "./endpoints/execution": "./esm/endpoints/execution/index.js", + "./endpoints/userManagement": "./esm/endpoints/userManagement/index.js", + "./endpoints/labelElements": "./esm/endpoints/labelElements/index.js", + "./endpoints/validObjects": "./esm/endpoints/validObjects/index.js", + "./endpoints/validDescendants": "./esm/endpoints/validDescendants/index.js", + "./endpoints/explain": "./esm/endpoints/explain/index.js", + "./endpoints/layout": "./esm/endpoints/layout/index.js", + "./endpoints/actions": "./esm/endpoints/actions/index.js", + "./endpoints/profile": "./esm/endpoints/profile/index.js", + "./endpoints/locationStyle": "./esm/endpoints/locationStyle/index.js", + "./endpoints/genAI": "./esm/endpoints/genAI/index.js", + "./endpoints/authActions": "./esm/endpoints/authActions/index.js", + "./endpoints/scanModel": "./esm/endpoints/scanModel/index.js", + "./endpoints/export": "./esm/endpoints/export/index.js", + "./endpoints/result": "./esm/endpoints/result/index.js", + "./endpoints/automation": "./esm/endpoints/automation/index.js", + "./endpoints/smartFunctions": "./esm/endpoints/smartFunctions/index.js" }, "browser": "./esm/index.js", "types": "./esm/index.d.ts", @@ -57,8 +57,8 @@ "eslint-fix": "eslint -c .eslintrc.cjs --ignore-path ../.eslintignore . --fix", "generate-client": "npm run openapi-generate && fix-esm-import-path ./src && npm run prettier-write", "openapi-generate": "./scripts/generate.js", - "prettier-check": "prettier --no-error-on-unmatched-pattern --check '{src,test}/**/*.{json,scss,md,yaml,html}'", - "prettier-write": "prettier --no-error-on-unmatched-pattern --write '{src,test}/**/*.{json,scss,md,yaml,html}'", + "prettier-check": "prettier --no-error-on-unmatched-pattern --check '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'", + "prettier-write": "prettier --no-error-on-unmatched-pattern --write '{src,test}/**/*.{ts,tsx,json,scss,md,yaml,html}'", "test": "vitest watch", "test-ci": "vitest run --reporter=junit --outputFile=./ci/results/test-results.xml", "test-once": "vitest run", @@ -79,8 +79,8 @@ "@microsoft/api-extractor": "^7.52.8", "@openapitools/openapi-generator-cli": "^2.6.0", "@types/lodash-es": "^4.17.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "commander": "^8.1.0", "dependency-cruiser": "^14.1.2", "dotenv": "16.0.3", diff --git a/libs/api-client-tiger/src/api-endpoints/README.md b/libs/api-client-tiger/src/endpoints/README.md similarity index 97% rename from libs/api-client-tiger/src/api-endpoints/README.md rename to libs/api-client-tiger/src/endpoints/README.md index 0d5ac35e01b..58debc07214 100644 --- a/libs/api-client-tiger/src/api-endpoints/README.md +++ b/libs/api-client-tiger/src/endpoints/README.md @@ -50,7 +50,7 @@ The API endpoints are exported as separate entry points in `package.json` to ena ```typescript // ✅ Good: Only imports execution API - import { ExecutionAPI_ComputeReport } from "@gooddata/api-client-tiger/execution"; + import { ExecutionAPI_ComputeReport } from "@gooddata/api-client-tiger/endpoints/execution"; // ❌ Bad: Imports entire client (not tree-shakeable) import { tigerClientFactory, ITigerClient } from "@gooddata/api-client-tiger"; @@ -74,8 +74,8 @@ import { tigerClientFactory, ITigerClient } from "@gooddata/api-client-tiger"; const client = tigerClientFactory(axios); // ✅ Preferred - tree-shakeable -import { tigerExecutionClientFactory } from "@gooddata/api-client-tiger/execution"; -import { tigerProfileClientFactory } from "@gooddata/api-client-tiger/profile"; +import { tigerExecutionClientFactory } from "@gooddata/api-client-tiger/endpoints/execution"; +import { tigerProfileClientFactory } from "@gooddata/api-client-tiger/endpoints/profile"; const executionClient = tigerExecutionClientFactory(axios); const profileClient = tigerProfileClientFactory(axios); ``` diff --git a/libs/api-client-tiger/src/api-endpoints/aac/index.ts b/libs/api-client-tiger/src/endpoints/aac/index.ts similarity index 100% rename from libs/api-client-tiger/src/api-endpoints/aac/index.ts rename to libs/api-client-tiger/src/endpoints/aac/index.ts diff --git a/libs/api-client-tiger/src/api-endpoints/actions/index.ts b/libs/api-client-tiger/src/endpoints/actions/index.ts similarity index 98% rename from libs/api-client-tiger/src/api-endpoints/actions/index.ts rename to libs/api-client-tiger/src/endpoints/actions/index.ts index d15bb67bda9..d7dd5b21a08 100644 --- a/libs/api-client-tiger/src/api-endpoints/actions/index.ts +++ b/libs/api-client-tiger/src/endpoints/actions/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Actions API - Export commonly used ActionsApi functions export { diff --git a/libs/api-client-tiger/src/api-endpoints/authActions/index.ts b/libs/api-client-tiger/src/endpoints/authActions/index.ts similarity index 88% rename from libs/api-client-tiger/src/api-endpoints/authActions/index.ts rename to libs/api-client-tiger/src/endpoints/authActions/index.ts index 6fba90f34c7..ad925ecc543 100644 --- a/libs/api-client-tiger/src/api-endpoints/authActions/index.ts +++ b/libs/api-client-tiger/src/endpoints/authActions/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Auth Actions API - Export auth-related ActionsApi functions with AuthApi_ prefix export { diff --git a/libs/api-client-tiger/src/api-endpoints/automation/index.ts b/libs/api-client-tiger/src/endpoints/automation/index.ts similarity index 96% rename from libs/api-client-tiger/src/api-endpoints/automation/index.ts rename to libs/api-client-tiger/src/endpoints/automation/index.ts index 37b0cce69bc..9489c2131f6 100644 --- a/libs/api-client-tiger/src/api-endpoints/automation/index.ts +++ b/libs/api-client-tiger/src/endpoints/automation/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Automation API - Export ActionsAutomation functions with AutomationApi_ prefix export { diff --git a/libs/api-client-tiger/src/api-endpoints/entitiesObjects/index.ts b/libs/api-client-tiger/src/endpoints/entitiesObjects/index.ts similarity index 97% rename from libs/api-client-tiger/src/api-endpoints/entitiesObjects/index.ts rename to libs/api-client-tiger/src/endpoints/entitiesObjects/index.ts index bfe22f2547b..7e1e83ace8b 100644 --- a/libs/api-client-tiger/src/api-endpoints/entitiesObjects/index.ts +++ b/libs/api-client-tiger/src/endpoints/entitiesObjects/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // DashboardsApi export { @@ -57,12 +57,12 @@ export { // ContextFiltersApi export { - ContextFiltersApi_CreateEntityFilterContexts, - ContextFiltersApi_GetEntityFilterContexts, - ContextFiltersApi_UpdateEntityFilterContexts, - type ContextFiltersApiCreateEntityFilterContextsRequest, - type ContextFiltersApiGetEntityFilterContextsRequest, - type ContextFiltersApiUpdateEntityFilterContextsRequest, + FilterContextApi_CreateEntityFilterContexts, + FilterContextApi_GetEntityFilterContexts, + FilterContextApi_UpdateEntityFilterContexts, + type FilterContextApiCreateEntityFilterContextsRequest, + type FilterContextApiGetEntityFilterContextsRequest, + type FilterContextApiUpdateEntityFilterContextsRequest, } from "../../generated/metadata-json-api/index.js"; // EntitiesApi - Workspaces diff --git a/libs/api-client-tiger/src/api-endpoints/execution/index.ts b/libs/api-client-tiger/src/endpoints/execution/index.ts similarity index 95% rename from libs/api-client-tiger/src/api-endpoints/execution/index.ts rename to libs/api-client-tiger/src/endpoints/execution/index.ts index c393aa91242..5336c82cc10 100644 --- a/libs/api-client-tiger/src/api-endpoints/execution/index.ts +++ b/libs/api-client-tiger/src/endpoints/execution/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Execution API export { diff --git a/libs/api-client-tiger/src/api-endpoints/explain/index.ts b/libs/api-client-tiger/src/endpoints/explain/index.ts similarity index 83% rename from libs/api-client-tiger/src/api-endpoints/explain/index.ts rename to libs/api-client-tiger/src/endpoints/explain/index.ts index b348c90f8e4..d0b09b1d495 100644 --- a/libs/api-client-tiger/src/api-endpoints/explain/index.ts +++ b/libs/api-client-tiger/src/endpoints/explain/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Explain API export { diff --git a/libs/api-client-tiger/src/api-endpoints/export/index.ts b/libs/api-client-tiger/src/endpoints/export/index.ts similarity index 98% rename from libs/api-client-tiger/src/api-endpoints/export/index.ts rename to libs/api-client-tiger/src/endpoints/export/index.ts index 44915d946d9..7ed9003ea90 100644 --- a/libs/api-client-tiger/src/api-endpoints/export/index.ts +++ b/libs/api-client-tiger/src/endpoints/export/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Export API - Export ActionsExport functions with ExportApi_ prefix export { diff --git a/libs/api-client-tiger/src/api-endpoints/genAI/index.ts b/libs/api-client-tiger/src/endpoints/genAI/index.ts similarity index 97% rename from libs/api-client-tiger/src/api-endpoints/genAI/index.ts rename to libs/api-client-tiger/src/endpoints/genAI/index.ts index f99306337ce..d957efe7f43 100644 --- a/libs/api-client-tiger/src/api-endpoints/genAI/index.ts +++ b/libs/api-client-tiger/src/endpoints/genAI/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // GenAI API - Export GenAI-related ActionsApi functions with GenAiApi_ prefix export { diff --git a/libs/api-client-tiger/src/api-endpoints/labelElements/index.ts b/libs/api-client-tiger/src/endpoints/labelElements/index.ts similarity index 81% rename from libs/api-client-tiger/src/api-endpoints/labelElements/index.ts rename to libs/api-client-tiger/src/endpoints/labelElements/index.ts index a479ce33d23..46ccf891994 100644 --- a/libs/api-client-tiger/src/api-endpoints/labelElements/index.ts +++ b/libs/api-client-tiger/src/endpoints/labelElements/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Label Elements API export { diff --git a/libs/api-client-tiger/src/api-endpoints/layout/index.ts b/libs/api-client-tiger/src/endpoints/layout/index.ts similarity index 94% rename from libs/api-client-tiger/src/api-endpoints/layout/index.ts rename to libs/api-client-tiger/src/endpoints/layout/index.ts index 8c189083353..43ddf3c03f7 100644 --- a/libs/api-client-tiger/src/api-endpoints/layout/index.ts +++ b/libs/api-client-tiger/src/endpoints/layout/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Layout API - Export all LayoutApi functions export { diff --git a/libs/api-client-tiger/src/api-endpoints/locationStyle/index.ts b/libs/api-client-tiger/src/endpoints/locationStyle/index.ts similarity index 84% rename from libs/api-client-tiger/src/api-endpoints/locationStyle/index.ts rename to libs/api-client-tiger/src/endpoints/locationStyle/index.ts index 83c06c08389..388af98992f 100644 --- a/libs/api-client-tiger/src/api-endpoints/locationStyle/index.ts +++ b/libs/api-client-tiger/src/endpoints/locationStyle/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation export { LocationStyleApi_GetDefaultStyle, tigerLocationStyleClientFactory } from "../../locationStyle.js"; export type { LocationStyleApiInterface, LocationStyleDocument } from "../../locationStyle.js"; diff --git a/libs/api-client-tiger/src/api-endpoints/profile/index.ts b/libs/api-client-tiger/src/endpoints/profile/index.ts similarity index 86% rename from libs/api-client-tiger/src/api-endpoints/profile/index.ts rename to libs/api-client-tiger/src/endpoints/profile/index.ts index 64511461fe4..92c1d51663d 100644 --- a/libs/api-client-tiger/src/api-endpoints/profile/index.ts +++ b/libs/api-client-tiger/src/endpoints/profile/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation export { isLiveFeatures, diff --git a/libs/api-client-tiger/src/api-endpoints/result/index.ts b/libs/api-client-tiger/src/endpoints/result/index.ts similarity index 96% rename from libs/api-client-tiger/src/api-endpoints/result/index.ts rename to libs/api-client-tiger/src/endpoints/result/index.ts index e51cdd5855f..b53cf12b963 100644 --- a/libs/api-client-tiger/src/api-endpoints/result/index.ts +++ b/libs/api-client-tiger/src/endpoints/result/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Result API - Export ActionsApi functions with ResultApi_ prefix export { diff --git a/libs/api-client-tiger/src/api-endpoints/scanModel/index.ts b/libs/api-client-tiger/src/endpoints/scanModel/index.ts similarity index 96% rename from libs/api-client-tiger/src/api-endpoints/scanModel/index.ts rename to libs/api-client-tiger/src/endpoints/scanModel/index.ts index 28f2e4cf2db..f59aeb76dce 100644 --- a/libs/api-client-tiger/src/api-endpoints/scanModel/index.ts +++ b/libs/api-client-tiger/src/endpoints/scanModel/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Scan Model API - Export scan model ActionsApi functions with ScanModelApi_ prefix export { diff --git a/libs/api-client-tiger/src/api-endpoints/smartFunctions/index.ts b/libs/api-client-tiger/src/endpoints/smartFunctions/index.ts similarity index 97% rename from libs/api-client-tiger/src/api-endpoints/smartFunctions/index.ts rename to libs/api-client-tiger/src/endpoints/smartFunctions/index.ts index a4a0fe9f1b0..7aefceb85ca 100644 --- a/libs/api-client-tiger/src/api-endpoints/smartFunctions/index.ts +++ b/libs/api-client-tiger/src/endpoints/smartFunctions/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Smart Functions API - Export ActionsApi functions with SmartFunctionsApi_ prefix export { diff --git a/libs/api-client-tiger/src/api-endpoints/userManagement/index.ts b/libs/api-client-tiger/src/endpoints/userManagement/index.ts similarity index 96% rename from libs/api-client-tiger/src/api-endpoints/userManagement/index.ts rename to libs/api-client-tiger/src/endpoints/userManagement/index.ts index 9deef7a674c..913a3bfa854 100644 --- a/libs/api-client-tiger/src/api-endpoints/userManagement/index.ts +++ b/libs/api-client-tiger/src/endpoints/userManagement/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // User Management API export { diff --git a/libs/api-client-tiger/src/api-endpoints/validDescendants/index.ts b/libs/api-client-tiger/src/endpoints/validDescendants/index.ts similarity index 87% rename from libs/api-client-tiger/src/api-endpoints/validDescendants/index.ts rename to libs/api-client-tiger/src/endpoints/validDescendants/index.ts index 06866325c9b..8b7b3963d12 100644 --- a/libs/api-client-tiger/src/api-endpoints/validDescendants/index.ts +++ b/libs/api-client-tiger/src/endpoints/validDescendants/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Valid Descendants API export { diff --git a/libs/api-client-tiger/src/api-endpoints/validObjects/index.ts b/libs/api-client-tiger/src/endpoints/validObjects/index.ts similarity index 81% rename from libs/api-client-tiger/src/api-endpoints/validObjects/index.ts rename to libs/api-client-tiger/src/endpoints/validObjects/index.ts index c1ea7e60550..5a08325cb11 100644 --- a/libs/api-client-tiger/src/api-endpoints/validObjects/index.ts +++ b/libs/api-client-tiger/src/endpoints/validObjects/index.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation // Valid Objects API export { diff --git a/libs/api-client-tiger/src/generated/afm-rest-api/api.ts b/libs/api-client-tiger/src/generated/afm-rest-api/api.ts index 3128994bdef..a3304cfa61f 100644 --- a/libs/api-client-tiger/src/generated/afm-rest-api/api.ts +++ b/libs/api-client-tiger/src/generated/afm-rest-api/api.ts @@ -66,6 +66,7 @@ export interface AbsoluteDateFilterAbsoluteDateFilter { */ export type AbstractMeasureValueFilter = | ComparisonMeasureValueFilter + | CompoundMeasureValueFilter | RangeMeasureValueFilter | RankingFilter; @@ -541,6 +542,14 @@ export interface ChangeAnalysisRequest { * Whether to use smart attribute selection (LLM-based) instead of discovering all valid attributes. If true, GenAI will intelligently select the most relevant attributes for change analysis. If false or not set, all valid attributes will be discovered using Calcique. Smart attribute selection applies only when no attributes are provided. */ useSmartAttributeSelection?: boolean; + /** + * Only include attributes with at least one of these tags. If empty, no inclusion filter is applied. This filter applies to both auto-discovered and explicitly provided attributes. + */ + includeTags?: Array; + /** + * Exclude attributes with any of these tags. This filter applies to both auto-discovered and explicitly provided attributes. + */ + excludeTags?: Array; } /** @@ -765,6 +774,26 @@ export interface ClusteringResult { ycoord: Array; } +/** + * Condition that compares the metric value to a given constant value using a comparison operator. + */ +export interface ComparisonCondition { + comparison: ComparisonConditionComparison; +} + +export interface ComparisonConditionComparison { + operator: ComparisonConditionComparisonOperatorEnum; + value: number; +} + +export type ComparisonConditionComparisonOperatorEnum = + | "GREATER_THAN" + | "GREATER_THAN_OR_EQUAL_TO" + | "LESS_THAN" + | "LESS_THAN_OR_EQUAL_TO" + | "EQUAL_TO" + | "NOT_EQUAL_TO"; + /** * Filter the result by comparing specified metric to given constant value, using given comparison operator. */ @@ -796,6 +825,31 @@ export type ComparisonMeasureValueFilterComparisonMeasureValueFilterOperatorEnum | "EQUAL_TO" | "NOT_EQUAL_TO"; +/** + * Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned). + */ +export interface CompoundMeasureValueFilter { + compoundMeasureValueFilter: CompoundMeasureValueFilterCompoundMeasureValueFilter; +} + +export interface CompoundMeasureValueFilterCompoundMeasureValueFilter { + /** + * References to the attributes to be used when filtering. + */ + dimensionality?: Array; + /** + * A value that will be substituted for null values in the metric for the comparisons. + */ + treatNullValuesAs?: number; + /** + * List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned. + */ + conditions: Array; + localIdentifier?: string; + applyOnResult?: boolean; + measure: AfmIdentifier; +} + /** * List of created visualization objects */ @@ -1259,6 +1313,7 @@ export type FilterByLabelTypeEnum = "PRIMARY" | "REQUESTED"; export type FilterDefinition = | AbsoluteDateFilter | ComparisonMeasureValueFilter + | CompoundMeasureValueFilter | InlineFilterDefinition | NegativeAttributeFilter | PositiveAttributeFilter @@ -1313,16 +1368,22 @@ export interface FoundObjects { * Configuration specific to geo area labels. */ export interface GeoAreaConfig { - collection: GeoCollection; + collection: GeoCollectionIdentifier; } -export interface GeoCollection { +export interface GeoCollectionIdentifier { /** * Geo collection identifier. */ id: string; + /** + * Type of geo collection. + */ + kind?: GeoCollectionIdentifierKindEnum; } +export type GeoCollectionIdentifierKindEnum = "STATIC" | "CUSTOM"; + export interface GetQualityIssuesResponse { /** * List of quality issues found in the workspace @@ -1504,11 +1565,20 @@ export interface MeasureResultHeader { measureIndex: number; } +/** + * @type MeasureValueCondition + * A condition for filtering by measure value. Can be either a comparison or a range condition. + */ +export type MeasureValueCondition = ComparisonCondition | RangeCondition; + /** * @type MeasureValueFilter * Abstract filter definition type filtering by the value of the metric. */ -export type MeasureValueFilter = ComparisonMeasureValueFilter | RangeMeasureValueFilter; +export type MeasureValueFilter = + | ComparisonMeasureValueFilter + | CompoundMeasureValueFilter + | RangeMeasureValueFilter; export interface MemoryItemCreatedByUsers { /** @@ -1843,6 +1913,21 @@ export type QualityIssuesCalculationStatusResponseStatusEnum = | "NOT_FOUND" | "DISABLED"; +/** + * Condition that checks if the metric value is within a given range. + */ +export interface RangeCondition { + range: RangeConditionRange; +} + +export interface RangeConditionRange { + operator: RangeConditionRangeOperatorEnum; + from: number; + to: number; +} + +export type RangeConditionRangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; + /** * Filter the result by comparing specified metric to given range of values. */ diff --git a/libs/api-client-tiger/src/generated/afm-rest-api/openapi-spec.json b/libs/api-client-tiger/src/generated/afm-rest-api/openapi-spec.json index 6967222cf8e..deddbb44ba9 100644 --- a/libs/api-client-tiger/src/generated/afm-rest-api/openapi-spec.json +++ b/libs/api-client-tiger/src/generated/afm-rest-api/openapi-spec.json @@ -1836,6 +1836,9 @@ { "$ref": "#/components/schemas/RangeMeasureValueFilter" }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, { "$ref": "#/components/schemas/RankingFilter" } @@ -2107,6 +2110,35 @@ }, "description": "Bounding filter for this relative date filter. This can be used to limit the range of the relative date filter to a specific date range." }, + "ComparisonCondition": { + "required": ["comparison"], + "type": "object", + "properties": { + "comparison": { + "required": ["operator", "value"], + "type": "object", + "properties": { + "operator": { + "type": "string", + "example": "GREATER_THAN", + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL_TO", + "LESS_THAN", + "LESS_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO" + ] + }, + "value": { + "type": "number", + "example": 100 + } + } + } + }, + "description": "Condition that compares the metric value to a given constant value using a comparison operator." + }, "ComparisonMeasureValueFilter": { "required": ["comparisonMeasureValueFilter"], "type": "object", @@ -2157,6 +2189,47 @@ }, "description": "Filter the result by comparing specified metric to given constant value, using given comparison operator." }, + "CompoundMeasureValueFilter": { + "required": ["compoundMeasureValueFilter"], + "type": "object", + "properties": { + "compoundMeasureValueFilter": { + "required": ["conditions", "measure"], + "type": "object", + "properties": { + "dimensionality": { + "type": "array", + "description": "References to the attributes to be used when filtering.", + "items": { + "$ref": "#/components/schemas/AfmIdentifier" + } + }, + "treatNullValuesAs": { + "type": "number", + "description": "A value that will be substituted for null values in the metric for the comparisons.", + "example": 0 + }, + "conditions": { + "type": "array", + "description": "List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned.", + "items": { + "$ref": "#/components/schemas/MeasureValueCondition" + } + }, + "localIdentifier": { + "type": "string" + }, + "applyOnResult": { + "type": "boolean" + }, + "measure": { + "$ref": "#/components/schemas/AfmIdentifier" + } + } + } + }, + "description": "Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned)." + }, "DateFilter": { "type": "object", "description": "Abstract filter definition type for dates.", @@ -2185,6 +2258,9 @@ { "$ref": "#/components/schemas/RangeMeasureValueFilter" }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, { "$ref": "#/components/schemas/AbsoluteDateFilter" }, @@ -2285,6 +2361,18 @@ }, "description": "Metric is a quantity that is calculated from the data." }, + "MeasureValueCondition": { + "type": "object", + "description": "A condition for filtering by measure value. Can be either a comparison or a range condition.", + "oneOf": [ + { + "$ref": "#/components/schemas/ComparisonCondition" + }, + { + "$ref": "#/components/schemas/RangeCondition" + } + ] + }, "MeasureValueFilter": { "type": "object", "description": "Abstract filter definition type filtering by the value of the metric.", @@ -2294,6 +2382,9 @@ }, { "$ref": "#/components/schemas/RangeMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" } ] }, @@ -2490,6 +2581,32 @@ }, "description": "Filter able to limit element values by label and related selected elements." }, + "RangeCondition": { + "required": ["range"], + "type": "object", + "properties": { + "range": { + "required": ["from", "operator", "to"], + "type": "object", + "properties": { + "operator": { + "type": "string", + "example": "BETWEEN", + "enum": ["BETWEEN", "NOT_BETWEEN"] + }, + "from": { + "type": "number", + "example": 100 + }, + "to": { + "type": "number", + "example": 999 + } + } + } + }, + "description": "Condition that checks if the metric value is within a given range." + }, "RangeMeasureValueFilter": { "required": ["rangeMeasureValueFilter"], "type": "object", @@ -2879,6 +2996,22 @@ "type": "boolean", "description": "Whether to use smart attribute selection (LLM-based) instead of discovering all valid attributes. If true, GenAI will intelligently select the most relevant attributes for change analysis. If false or not set, all valid attributes will be discovered using Calcique. Smart attribute selection applies only when no attributes are provided.", "default": false + }, + "includeTags": { + "type": "array", + "description": "Only include attributes with at least one of these tags. If empty, no inclusion filter is applied. This filter applies to both auto-discovered and explicitly provided attributes.", + "items": { + "type": "string", + "description": "Only include attributes with at least one of these tags. If empty, no inclusion filter is applied. This filter applies to both auto-discovered and explicitly provided attributes." + } + }, + "excludeTags": { + "type": "array", + "description": "Exclude attributes with any of these tags. This filter applies to both auto-discovered and explicitly provided attributes.", + "items": { + "type": "string", + "description": "Exclude attributes with any of these tags. This filter applies to both auto-discovered and explicitly provided attributes." + } } }, "description": "Request for change analysis computation" @@ -3566,12 +3699,12 @@ "type": "object", "properties": { "collection": { - "$ref": "#/components/schemas/GeoCollection" + "$ref": "#/components/schemas/GeoCollectionIdentifier" } }, "description": "Configuration specific to geo area labels." }, - "GeoCollection": { + "GeoCollectionIdentifier": { "required": ["id"], "type": "object", "properties": { @@ -3579,6 +3712,12 @@ "maxLength": 255, "type": "string", "description": "Geo collection identifier." + }, + "kind": { + "type": "string", + "description": "Type of geo collection.", + "default": "STATIC", + "enum": ["STATIC", "CUSTOM"] } } }, diff --git a/libs/api-client-tiger/src/generated/automation-json-api/api.ts b/libs/api-client-tiger/src/generated/automation-json-api/api.ts index ca6f7211341..5a403905cb2 100644 --- a/libs/api-client-tiger/src/generated/automation-json-api/api.ts +++ b/libs/api-client-tiger/src/generated/automation-json-api/api.ts @@ -74,6 +74,7 @@ export interface AutomationAbsoluteDateFilterAbsoluteDateFilter { */ export type AutomationAbstractMeasureValueFilter = | AutomationComparisonMeasureValueFilter + | AutomationCompoundMeasureValueFilter | AutomationRangeMeasureValueFilter | AutomationRankingFilter; @@ -493,6 +494,26 @@ export type AutomationComparisonOperatorEnum = | "EQUAL_TO" | "NOT_EQUAL_TO"; +/** + * Condition that compares the metric value to a given constant value using a comparison operator. + */ +export interface AutomationComparisonCondition { + comparison: AutomationComparisonConditionComparison; +} + +export interface AutomationComparisonConditionComparison { + operator: AutomationComparisonConditionComparisonOperatorEnum; + value: number; +} + +export type AutomationComparisonConditionComparisonOperatorEnum = + | "GREATER_THAN" + | "GREATER_THAN_OR_EQUAL_TO" + | "LESS_THAN" + | "LESS_THAN_OR_EQUAL_TO" + | "EQUAL_TO" + | "NOT_EQUAL_TO"; + /** * Filter the result by comparing specified metric to given constant value, using given comparison operator. */ @@ -528,6 +549,31 @@ export interface AutomationComparisonWrapper { comparison: AutomationComparison; } +/** + * Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned). + */ +export interface AutomationCompoundMeasureValueFilter { + compoundMeasureValueFilter: AutomationCompoundMeasureValueFilterCompoundMeasureValueFilter; +} + +export interface AutomationCompoundMeasureValueFilterCompoundMeasureValueFilter { + /** + * References to the attributes to be used when filtering. + */ + dimensionality?: Array; + /** + * A value that will be substituted for null values in the metric for the comparisons. + */ + treatNullValuesAs?: number; + /** + * List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned. + */ + conditions: Array; + localIdentifier?: string; + applyOnResult?: boolean; + measure: AutomationAfmIdentifier; +} + /** * Custom label object override. */ @@ -809,6 +855,7 @@ export type AutomationExportResultStatusEnum = "SUCCESS" | "ERROR" | "INTERNAL_E export type AutomationFilterDefinition = | AutomationAbsoluteDateFilter | AutomationComparisonMeasureValueFilter + | AutomationCompoundMeasureValueFilter | AutomationInlineFilterDefinition | AutomationNegativeAttributeFilter | AutomationPositiveAttributeFilter @@ -973,12 +1020,19 @@ export type AutomationMeasureItemDefinition = | AutomationPopMeasureDefinition | AutomationSimpleMeasureDefinition; +/** + * @type AutomationMeasureValueCondition + * A condition for filtering by measure value. Can be either a comparison or a range condition. + */ +export type AutomationMeasureValueCondition = AutomationComparisonCondition | AutomationRangeCondition; + /** * @type AutomationMeasureValueFilter * Abstract filter definition type filtering by the value of the metric. */ export type AutomationMeasureValueFilter = | AutomationComparisonMeasureValueFilter + | AutomationCompoundMeasureValueFilter | AutomationRangeMeasureValueFilter; export interface AutomationMetricRecord { @@ -1160,6 +1214,21 @@ export interface AutomationRange { export type AutomationRangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; +/** + * Condition that checks if the metric value is within a given range. + */ +export interface AutomationRangeCondition { + range: AutomationRangeConditionRange; +} + +export interface AutomationRangeConditionRange { + operator: AutomationRangeConditionRangeOperatorEnum; + from: number; + to: number; +} + +export type AutomationRangeConditionRangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; + /** * Filter the result by comparing specified metric to given range of values. */ diff --git a/libs/api-client-tiger/src/generated/automation-json-api/openapi-spec.json b/libs/api-client-tiger/src/generated/automation-json-api/openapi-spec.json index 8c2c11ffae1..d8fcb5d618b 100644 --- a/libs/api-client-tiger/src/generated/automation-json-api/openapi-spec.json +++ b/libs/api-client-tiger/src/generated/automation-json-api/openapi-spec.json @@ -400,6 +400,9 @@ { "$ref": "#/components/schemas/RangeMeasureValueFilter" }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, { "$ref": "#/components/schemas/RankingFilter" } @@ -1087,6 +1090,35 @@ } } }, + "ComparisonCondition": { + "required": ["comparison"], + "type": "object", + "properties": { + "comparison": { + "required": ["operator", "value"], + "type": "object", + "properties": { + "operator": { + "type": "string", + "example": "GREATER_THAN", + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL_TO", + "LESS_THAN", + "LESS_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO" + ] + }, + "value": { + "type": "number", + "example": 100 + } + } + } + }, + "description": "Condition that compares the metric value to a given constant value using a comparison operator." + }, "ComparisonMeasureValueFilter": { "required": ["comparisonMeasureValueFilter"], "type": "object", @@ -1146,6 +1178,47 @@ } } }, + "CompoundMeasureValueFilter": { + "required": ["compoundMeasureValueFilter"], + "type": "object", + "properties": { + "compoundMeasureValueFilter": { + "required": ["conditions", "measure"], + "type": "object", + "properties": { + "dimensionality": { + "type": "array", + "description": "References to the attributes to be used when filtering.", + "items": { + "$ref": "#/components/schemas/AfmIdentifier" + } + }, + "treatNullValuesAs": { + "type": "number", + "description": "A value that will be substituted for null values in the metric for the comparisons.", + "example": 0 + }, + "conditions": { + "type": "array", + "description": "List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned.", + "items": { + "$ref": "#/components/schemas/MeasureValueCondition" + } + }, + "localIdentifier": { + "type": "string" + }, + "applyOnResult": { + "type": "boolean" + }, + "measure": { + "$ref": "#/components/schemas/AfmIdentifier" + } + } + } + }, + "description": "Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned)." + }, "CustomLabel": { "required": ["title"], "type": "object", @@ -1529,6 +1602,9 @@ { "$ref": "#/components/schemas/RangeMeasureValueFilter" }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, { "$ref": "#/components/schemas/AbsoluteDateFilter" }, @@ -1761,6 +1837,18 @@ }, "description": "Metric is a quantity that is calculated from the data." }, + "MeasureValueCondition": { + "type": "object", + "description": "A condition for filtering by measure value. Can be either a comparison or a range condition.", + "oneOf": [ + { + "$ref": "#/components/schemas/ComparisonCondition" + }, + { + "$ref": "#/components/schemas/RangeCondition" + } + ] + }, "MeasureValueFilter": { "type": "object", "description": "Abstract filter definition type filtering by the value of the metric.", @@ -1770,6 +1858,9 @@ }, { "$ref": "#/components/schemas/RangeMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" } ] }, @@ -1988,6 +2079,32 @@ } } }, + "RangeCondition": { + "required": ["range"], + "type": "object", + "properties": { + "range": { + "required": ["from", "operator", "to"], + "type": "object", + "properties": { + "operator": { + "type": "string", + "example": "BETWEEN", + "enum": ["BETWEEN", "NOT_BETWEEN"] + }, + "from": { + "type": "number", + "example": 100 + }, + "to": { + "type": "number", + "example": 999 + } + } + } + }, + "description": "Condition that checks if the metric value is within a given range." + }, "RangeMeasureValueFilter": { "required": ["rangeMeasureValueFilter"], "type": "object", diff --git a/libs/api-client-tiger/src/generated/export-json-api/api.ts b/libs/api-client-tiger/src/generated/export-json-api/api.ts index 7edf3985cdd..6c205de22cc 100644 --- a/libs/api-client-tiger/src/generated/export-json-api/api.ts +++ b/libs/api-client-tiger/src/generated/export-json-api/api.ts @@ -66,6 +66,7 @@ export interface ExportAbsoluteDateFilterAbsoluteDateFilter { */ export type ExportAbstractMeasureValueFilter = | ExportComparisonMeasureValueFilter + | ExportCompoundMeasureValueFilter | ExportRangeMeasureValueFilter | ExportRankingFilter; @@ -277,6 +278,26 @@ export type ExportBoundedFilterGranularityEnum = | "FISCAL_QUARTER" | "FISCAL_YEAR"; +/** + * Condition that compares the metric value to a given constant value using a comparison operator. + */ +export interface ExportComparisonCondition { + comparison: ExportComparisonConditionComparison; +} + +export interface ExportComparisonConditionComparison { + operator: ExportComparisonConditionComparisonOperatorEnum; + value: number; +} + +export type ExportComparisonConditionComparisonOperatorEnum = + | "GREATER_THAN" + | "GREATER_THAN_OR_EQUAL_TO" + | "LESS_THAN" + | "LESS_THAN_OR_EQUAL_TO" + | "EQUAL_TO" + | "NOT_EQUAL_TO"; + /** * Filter the result by comparing specified metric to given constant value, using given comparison operator. */ @@ -308,6 +329,31 @@ export type ExportComparisonMeasureValueFilterComparisonMeasureValueFilterOperat | "EQUAL_TO" | "NOT_EQUAL_TO"; +/** + * Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned). + */ +export interface ExportCompoundMeasureValueFilter { + compoundMeasureValueFilter: ExportCompoundMeasureValueFilterCompoundMeasureValueFilter; +} + +export interface ExportCompoundMeasureValueFilterCompoundMeasureValueFilter { + /** + * References to the attributes to be used when filtering. + */ + dimensionality?: Array; + /** + * A value that will be substituted for null values in the metric for the comparisons. + */ + treatNullValuesAs?: number; + /** + * List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned. + */ + conditions: Array; + localIdentifier?: string; + applyOnResult?: boolean; + measure: ExportAfmIdentifier; +} + /** * Custom label object override. */ @@ -507,6 +553,7 @@ export interface ExportExportResponse { export type ExportFilterDefinition = | ExportAbsoluteDateFilter | ExportComparisonMeasureValueFilter + | ExportCompoundMeasureValueFilter | ExportInlineFilterDefinition | ExportNegativeAttributeFilter | ExportPositiveAttributeFilter @@ -644,11 +691,20 @@ export interface ExportMeasureItem { definition: ExportMeasureDefinition; } +/** + * @type ExportMeasureValueCondition + * A condition for filtering by measure value. Can be either a comparison or a range condition. + */ +export type ExportMeasureValueCondition = ExportComparisonCondition | ExportRangeCondition; + /** * @type ExportMeasureValueFilter * Abstract filter definition type filtering by the value of the metric. */ -export type ExportMeasureValueFilter = ExportComparisonMeasureValueFilter | ExportRangeMeasureValueFilter; +export type ExportMeasureValueFilter = + | ExportComparisonMeasureValueFilter + | ExportCompoundMeasureValueFilter + | ExportRangeMeasureValueFilter; /** * Filter able to limit element values by label and related selected negated elements. @@ -767,6 +823,21 @@ export interface ExportPositiveAttributeFilterPositiveAttributeFilter { label: ExportAfmIdentifier; } +/** + * Condition that checks if the metric value is within a given range. + */ +export interface ExportRangeCondition { + range: ExportRangeConditionRange; +} + +export interface ExportRangeConditionRange { + operator: ExportRangeConditionRangeOperatorEnum; + from: number; + to: number; +} + +export type ExportRangeConditionRangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; + /** * Filter the result by comparing specified metric to given range of values. */ diff --git a/libs/api-client-tiger/src/generated/export-json-api/openapi-spec.json b/libs/api-client-tiger/src/generated/export-json-api/openapi-spec.json index 59678eb1010..87e0b96c81a 100644 --- a/libs/api-client-tiger/src/generated/export-json-api/openapi-spec.json +++ b/libs/api-client-tiger/src/generated/export-json-api/openapi-spec.json @@ -1326,6 +1326,9 @@ { "$ref": "#/components/schemas/RangeMeasureValueFilter" }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, { "$ref": "#/components/schemas/RankingFilter" } @@ -1597,6 +1600,35 @@ }, "description": "Bounding filter for this relative date filter. This can be used to limit the range of the relative date filter to a specific date range." }, + "ComparisonCondition": { + "required": ["comparison"], + "type": "object", + "properties": { + "comparison": { + "required": ["operator", "value"], + "type": "object", + "properties": { + "operator": { + "type": "string", + "example": "GREATER_THAN", + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL_TO", + "LESS_THAN", + "LESS_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO" + ] + }, + "value": { + "type": "number", + "example": 100 + } + } + } + }, + "description": "Condition that compares the metric value to a given constant value using a comparison operator." + }, "ComparisonMeasureValueFilter": { "required": ["comparisonMeasureValueFilter"], "type": "object", @@ -1647,6 +1679,47 @@ }, "description": "Filter the result by comparing specified metric to given constant value, using given comparison operator." }, + "CompoundMeasureValueFilter": { + "required": ["compoundMeasureValueFilter"], + "type": "object", + "properties": { + "compoundMeasureValueFilter": { + "required": ["conditions", "measure"], + "type": "object", + "properties": { + "dimensionality": { + "type": "array", + "description": "References to the attributes to be used when filtering.", + "items": { + "$ref": "#/components/schemas/AfmIdentifier" + } + }, + "treatNullValuesAs": { + "type": "number", + "description": "A value that will be substituted for null values in the metric for the comparisons.", + "example": 0 + }, + "conditions": { + "type": "array", + "description": "List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned.", + "items": { + "$ref": "#/components/schemas/MeasureValueCondition" + } + }, + "localIdentifier": { + "type": "string" + }, + "applyOnResult": { + "type": "boolean" + }, + "measure": { + "$ref": "#/components/schemas/AfmIdentifier" + } + } + } + }, + "description": "Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned)." + }, "DateFilter": { "type": "object", "description": "Abstract filter definition type for dates.", @@ -1695,6 +1768,9 @@ { "$ref": "#/components/schemas/RangeMeasureValueFilter" }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, { "$ref": "#/components/schemas/AbsoluteDateFilter" }, @@ -1795,6 +1871,18 @@ }, "description": "Metric is a quantity that is calculated from the data." }, + "MeasureValueCondition": { + "type": "object", + "description": "A condition for filtering by measure value. Can be either a comparison or a range condition.", + "oneOf": [ + { + "$ref": "#/components/schemas/ComparisonCondition" + }, + { + "$ref": "#/components/schemas/RangeCondition" + } + ] + }, "MeasureValueFilter": { "type": "object", "description": "Abstract filter definition type filtering by the value of the metric.", @@ -1804,6 +1892,9 @@ }, { "$ref": "#/components/schemas/RangeMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" } ] }, @@ -1946,6 +2037,32 @@ }, "description": "Filter able to limit element values by label and related selected elements." }, + "RangeCondition": { + "required": ["range"], + "type": "object", + "properties": { + "range": { + "required": ["from", "operator", "to"], + "type": "object", + "properties": { + "operator": { + "type": "string", + "example": "BETWEEN", + "enum": ["BETWEEN", "NOT_BETWEEN"] + }, + "from": { + "type": "number", + "example": 100 + }, + "to": { + "type": "number", + "example": 999 + } + } + } + }, + "description": "Condition that checks if the metric value is within a given range." + }, "RangeMeasureValueFilter": { "required": ["rangeMeasureValueFilter"], "type": "object", diff --git a/libs/api-client-tiger/src/generated/metadata-json-api/api.ts b/libs/api-client-tiger/src/generated/metadata-json-api/api.ts index 4c564dee22e..8e82856094b 100644 --- a/libs/api-client-tiger/src/generated/metadata-json-api/api.ts +++ b/libs/api-client-tiger/src/generated/metadata-json-api/api.ts @@ -46,6 +46,1039 @@ export interface AFM { auxMeasures?: Array; } +/** + * AAC analytics model representation compatible with Analytics-as-Code YAML format. + */ +export interface AacAnalyticsModel { + /** + * An array of metrics. + */ + metrics?: Array; + /** + * An array of visualizations. + */ + visualizations?: Array; + /** + * An array of dashboards. + */ + dashboards?: Array; + /** + * An array of dashboard plugins. + */ + plugins?: Array; + /** + * An array of attribute hierarchies. + */ + attribute_hierarchies?: Array; +} + +/** + * AAC attribute hierarchy definition. + */ +export interface AacAttributeHierarchy { + /** + * Unique identifier of the attribute hierarchy. + */ + id: string; + /** + * Attribute hierarchy type discriminator. + */ + type: string; + /** + * Human readable title. + */ + title?: string; + /** + * Attribute hierarchy description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * Ordered list of attribute identifiers (first is top level). + */ + attributes: Array; +} + +/** + * Attribute bucket (for repeater). + */ +export interface AacBucketItem { + /** + * Reference to attribute/label/metric/fact. + */ + using?: string; + /** + * Local identifier. + */ + local_id?: string; + /** + * Title override. + */ + title?: string; + /** + * Format override. + */ + format?: string; + /** + * Alias. + */ + alias?: string; + /** + * Display as label. + */ + display_as?: string; + /** + * Show all values. + */ + show_all_values?: boolean; + /** + * Compute ratio. + */ + compute_ratio?: boolean; + /** + * Inline MAQL expression. + */ + maql?: string; + additionalProperties?: { [key: string]: object }; +} + +/** + * AAC dashboard definition. + */ +export interface AacDashboard { + /** + * Unique identifier of the dashboard. + */ + id: string; + /** + * Dashboard type discriminator. + */ + type: string; + /** + * Human readable title. + */ + title?: string; + /** + * Dashboard description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * Whether cross filtering is enabled. + */ + cross_filtering?: boolean; + /** + * Whether user can reset custom filters. + */ + user_filters_reset?: boolean; + /** + * Whether user filter settings are stored. + */ + user_filters_save?: boolean; + /** + * Whether filter views are enabled. + */ + filter_views?: boolean; + /** + * Whether section headers are enabled. + */ + enable_section_headers?: boolean; + /** + * Dashboard sections (for non-tabbed dashboards). + */ + sections?: Array; + /** + * Dashboard filters. + */ + filters?: { [key: string]: AacDashboardFilter }; + /** + * Dashboard plugins. + */ + plugins?: Array; + /** + * Dashboard tabs (for tabbed dashboards). + */ + tabs?: Array; + /** + * Active tab ID for tabbed dashboards. + */ + active_tab_id?: string; + permissions?: AacDashboardPermissions; +} + +/** + * Tab-specific filters. + */ +export interface AacDashboardFilter { + /** + * Filter type. + */ + type: string; + /** + * Filter title. + */ + title?: string; + /** + * Filter mode. + */ + mode?: string; + /** + * Attribute or label to filter by. + */ + using?: string; + /** + * Whether multiselect is enabled. + */ + multiselect?: boolean; + /** + * Display as label. + */ + display_as?: string; + state?: AacFilterState; + /** + * Parent filter references. + */ + parents?: Array; + /** + * Metric filters for validation. + */ + metric_filters?: Array; + /** + * Date granularity. + */ + granularity?: string; + /** + * Free-form JSON object + */ + from?: object | null; + /** + * Free-form JSON object + */ + to?: object | null; + /** + * Date dataset reference. + */ + date?: string; +} + +/** + * Dashboard permissions. + */ +export interface AacDashboardPermissions { + view?: AacPermission; + edit?: AacPermission; + share?: AacPermission; +} + +/** + * Dashboard plugins. + */ +export interface AacDashboardPluginLink { + /** + * Plugin ID. + */ + id: string; + /** + * Free-form JSON object + */ + parameters?: object | null; +} + +/** + * AAC dataset definition. + */ +export interface AacDataset { + /** + * Unique identifier of the dataset. + */ + id: string; + /** + * Dataset type discriminator. + */ + type: string; + /** + * Human readable title. + */ + title?: string; + /** + * Dataset description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * Table path in the data source. + */ + table_path?: string; + /** + * SQL statement defining this dataset. + */ + sql?: string; + /** + * Primary key column(s). + */ + primary_key?: Array; + /** + * Dataset fields (attributes, facts, aggregated facts). + */ + fields?: { [key: string]: AacField }; + /** + * References to other datasets. + */ + references?: Array; + /** + * Workspace data filters. + */ + workspace_data_filters?: Array; + /** + * Data source ID. + */ + data_source?: string; + /** + * Precedence value for aggregate awareness. + */ + precedence?: number; +} + +/** + * AAC date dataset definition. + */ +export interface AacDateDataset { + /** + * Unique identifier of the date dataset. + */ + id: string; + /** + * Dataset type discriminator. + */ + type: string; + /** + * Human readable title. + */ + title?: string; + /** + * Date dataset description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * Title base for formatting. + */ + title_base?: string; + /** + * Title pattern for formatting. + */ + title_pattern?: string; + /** + * List of granularities. + */ + granularities?: Array; +} + +/** + * AAC field definition (attribute, fact, or aggregated_fact). + */ +export interface AacField { + /** + * Field type. + */ + type: string; + /** + * Human readable title. + */ + title?: string; + /** + * Field description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * Source column in the physical database. + */ + source_column?: string; + /** + * Data type of the column. + */ + data_type?: AacFieldDataTypeEnum; + /** + * Default view label ID. + */ + default_view?: string; + /** + * Sort column name. + */ + sort_column?: string; + /** + * Sort direction. + */ + sort_direction?: AacFieldSortDirectionEnum; + /** + * Whether to show in AI results. + */ + show_in_ai_results?: boolean; + /** + * Deprecated. Use showInAiResults instead. + */ + is_hidden?: boolean; + /** + * Locale for sorting. + */ + locale?: string; + /** + * Attribute labels. + */ + labels?: { [key: string]: AacLabel }; + /** + * Aggregation method. + */ + aggregated_as?: string; + /** + * Source fact ID for aggregated fact. + */ + assigned_to?: string; +} + +export type AacFieldDataTypeEnum = + | "INT" + | "STRING" + | "DATE" + | "NUMERIC" + | "TIMESTAMP" + | "TIMESTAMP_TZ" + | "BOOLEAN"; +export type AacFieldSortDirectionEnum = "ASC" | "DESC"; + +/** + * Filter state. + */ +export interface AacFilterState { + /** + * Included values. + */ + include?: Array; + /** + * Excluded values. + */ + exclude?: Array; +} + +/** + * GEO area configuration. + */ +export interface AacGeoAreaConfig { + collection: AacGeoCollectionIdentifier; +} + +/** + * GEO collection configuration. + */ +export interface AacGeoCollectionIdentifier { + /** + * Collection identifier. + */ + id: string; + /** + * Type of geo collection. + */ + kind?: AacGeoCollectionIdentifierKindEnum; +} + +export type AacGeoCollectionIdentifierKindEnum = "STATIC" | "CUSTOM"; + +/** + * AAC label definition. + */ +export interface AacLabel { + /** + * Source column name. + */ + source_column?: string; + /** + * Data type of the column. + */ + data_type?: AacLabelDataTypeEnum; + /** + * Human readable title. + */ + title?: string; + /** + * Label description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * Value type. + */ + value_type?: string; + geo_area_config?: AacGeoAreaConfig; + /** + * Whether to show in AI results. + */ + show_in_ai_results?: boolean; + /** + * Deprecated. Use showInAiResults instead. + */ + is_hidden?: boolean; + /** + * Locale for sorting. + */ + locale?: string; + /** + * Localized source columns. + */ + translations?: Array; +} + +export type AacLabelDataTypeEnum = + | "INT" + | "STRING" + | "DATE" + | "NUMERIC" + | "TIMESTAMP" + | "TIMESTAMP_TZ" + | "BOOLEAN"; + +/** + * Localized source columns. + */ +export interface AacLabelTranslation { + /** + * Source column for translation. + */ + source_column: string; + /** + * Locale identifier. + */ + locale: string; +} + +/** + * AAC logical data model representation compatible with Analytics-as-Code YAML format. + */ +export interface AacLogicalModel { + /** + * An array of datasets. + */ + datasets?: Array; + /** + * An array of date datasets. + */ + date_datasets?: Array; +} + +/** + * AAC metric definition. + */ +export interface AacMetric { + /** + * Unique identifier of the metric. + */ + id: string; + /** + * Metric type discriminator. + */ + type: string; + /** + * Human readable title. + */ + title?: string; + /** + * Metric description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * MAQL expression defining the metric. + */ + maql: string; + /** + * Default format for metric values. + */ + format?: string; + /** + * Whether to show in AI results. + */ + show_in_ai_results?: boolean; + /** + * Deprecated. Use showInAiResults instead. + */ + is_hidden?: boolean; +} + +/** + * SHARE permission. + */ +export interface AacPermission { + /** + * Grant to all users. + */ + all?: boolean; + /** + * List of user IDs. + */ + users?: Array; + /** + * List of user group IDs. + */ + user_groups?: Array; +} + +/** + * AAC dashboard plugin definition. + */ +export interface AacPlugin { + /** + * Unique identifier of the plugin. + */ + id: string; + /** + * Plugin type discriminator. + */ + type: string; + /** + * Human readable title. + */ + title?: string; + /** + * Plugin description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * URL of the plugin. + */ + url: string; +} + +/** + * Query definition. + */ +export interface AacQuery { + /** + * Query metrics. + */ + metrics?: Array; + /** + * Query attributes. + */ + attributes?: Array; + /** + * Query filters. + */ + filters?: { [key: string]: AacQueryFilter }; +} + +/** + * Query attributes. + */ +export interface AacQueryAttribute { + /** + * Attribute or label reference. + */ + using?: string; + /** + * Local identifier. + */ + local_id?: string; + /** + * Display as label. + */ + display_as?: string; + /** + * Show all values. + */ + show_all_values?: boolean; + additionalProperties?: { [key: string]: object }; +} + +/** + * Query filters. + */ +export interface AacQueryFilter { + /** + * Filter type. + */ + type: string; + /** + * Reference to attribute/label/date. + */ + using?: string; + state?: AacFilterState; + /** + * Date granularity. + */ + granularity?: string; + /** + * Free-form JSON object + */ + from?: object | null; + /** + * Free-form JSON object + */ + to?: object | null; + /** + * Condition for metric value filter. + */ + condition?: string; + /** + * Value for metric value filter. + */ + value?: number; + additionalProperties?: { [key: string]: object }; +} + +/** + * Query metrics. + */ +export interface AacQueryMetric { + /** + * Metric reference or inline definition. + */ + using?: string; + /** + * Local identifier. + */ + local_id?: string; + /** + * Inline MAQL expression. + */ + maql?: string; + /** + * Format override. + */ + format?: string; + /** + * Title override. + */ + title?: string; + /** + * Compute ratio. + */ + compute_ratio?: boolean; + additionalProperties?: { [key: string]: object }; +} + +/** + * AAC reference to another dataset. + */ +export interface AacReference { + /** + * Target dataset ID. + */ + dataset: string; + /** + * Source columns for the reference. + */ + sources: Array; + /** + * Whether the reference is multi-directional. + */ + multi_directional?: boolean; +} + +/** + * Source columns for the reference. + */ +export interface AacReferenceSource { + /** + * Source column name. + */ + source_column: string; + /** + * Data type of the column. + */ + data_type?: AacReferenceSourceDataTypeEnum; + /** + * Target in the referenced dataset. + */ + target?: string; +} + +export type AacReferenceSourceDataTypeEnum = + | "INT" + | "STRING" + | "DATE" + | "NUMERIC" + | "TIMESTAMP" + | "TIMESTAMP_TZ" + | "BOOLEAN"; + +/** + * Sections within the tab. + */ +export interface AacSection { + /** + * Section title. + */ + title?: string; + /** + * Section description. + */ + description?: string; + /** + * Whether section header is visible. + */ + header?: boolean; + /** + * Widgets in the section. + */ + widgets?: Array; +} + +/** + * Dashboard tabs (for tabbed dashboards). + */ +export interface AacTab { + /** + * Unique identifier of the tab. + */ + id: string; + /** + * Display title for the tab. + */ + title: string; + /** + * Tab-specific filters. + */ + filters?: { [key: string]: AacDashboardFilter }; + /** + * Sections within the tab. + */ + sections?: Array; +} + +/** + * AAC visualization definition. + */ +export interface AacVisualization { + /** + * Unique identifier of the visualization. + */ + id: string; + /** + * Visualization type. + */ + type: AacVisualizationTypeEnum; + /** + * Human readable title. + */ + title?: string; + /** + * Visualization description. + */ + description?: string; + /** + * Metadata tags. + */ + tags?: Array; + /** + * Whether to show in AI results. + */ + show_in_ai_results?: boolean; + /** + * Deprecated. Use showInAiResults instead. + */ + is_hidden?: boolean; + query?: AacQuery; + /** + * Free-form JSON object + */ + config?: object | null; + /** + * Metrics bucket. + */ + metrics?: Array; + /** + * View by attributes bucket. + */ + view_by?: Array; + /** + * Segment by attributes bucket. + */ + segment_by?: Array; + /** + * Rows bucket (for tables). + */ + rows?: Array; + /** + * Columns bucket (for tables). + */ + columns?: Array; + /** + * Stack bucket. + */ + stack?: Array; + /** + * Trend bucket. + */ + trend?: Array; + /** + * Primary measures bucket. + */ + primary_measures?: Array; + /** + * Secondary measures bucket. + */ + secondary_measures?: Array; + /** + * Location bucket (for geo charts). + */ + location?: Array; + /** + * Size bucket. + */ + size?: Array; + /** + * Color bucket. + */ + color?: Array; + /** + * Attribute bucket (for repeater). + */ + attribute?: Array; + additionalProperties?: { [key: string]: object }; +} + +export type AacVisualizationTypeEnum = + | "table" + | "bar_chart" + | "column_chart" + | "line_chart" + | "area_chart" + | "scatter_chart" + | "bubble_chart" + | "pie_chart" + | "donut_chart" + | "treemap_chart" + | "pyramid_chart" + | "funnel_chart" + | "heatmap_chart" + | "bullet_chart" + | "waterfall_chart" + | "dependency_wheel_chart" + | "sankey_chart" + | "headline_chart" + | "combo_chart" + | "geo_chart" + | "geo_area_chart" + | "repeater_chart"; + +/** + * Widgets in the section. + */ +export interface AacWidget { + /** + * Widget type. + */ + type?: string; + size?: AacWidgetSize; + /** + * Visualization ID reference. + */ + visualization?: string; + /** + * Inline metric reference. + */ + metric?: string; + /** + * Widget title override. + */ + title?: string; + /** + * Widget description override. + */ + description?: string; + /** + * Date dataset for filtering. + */ + date?: string; + /** + * Whether widget ignores dashboard filters. + */ + ignore_dashboard_filters?: Array; + /** + * Free-form JSON object + */ + drill_down?: object | null; + /** + * Rich text content. + */ + content?: string; + /** + * Nested sections for layout widgets. + */ + sections?: Array; + additionalProperties?: { [key: string]: object }; +} + +/** + * Widget size. + */ +export interface AacWidgetSize { + /** + * Width in grid columns. + */ + width?: number; + /** + * Height in grid rows. + */ + height?: number; + /** + * Height definition mode. + */ + height_as_ratio?: boolean; +} + +/** + * Workspace data filters. + */ +export interface AacWorkspaceDataFilter { + /** + * Filter identifier. + */ + filter_id: string; + /** + * Source column name. + */ + source_column: string; + /** + * Data type of the column. + */ + data_type: AacWorkspaceDataFilterDataTypeEnum; +} + +export type AacWorkspaceDataFilterDataTypeEnum = + | "INT" + | "STRING" + | "DATE" + | "NUMERIC" + | "TIMESTAMP" + | "TIMESTAMP_TZ" + | "BOOLEAN"; + /** * A datetime filter specifying exact from and to values. */ @@ -66,6 +1099,7 @@ export interface AbsoluteDateFilterAbsoluteDateFilter { */ export type AbstractMeasureValueFilter = | ComparisonMeasureValueFilter + | CompoundMeasureValueFilter | RangeMeasureValueFilter | RankingFilter; @@ -530,6 +1564,26 @@ export type ComparisonOperatorEnum = | "EQUAL_TO" | "NOT_EQUAL_TO"; +/** + * Condition that compares the metric value to a given constant value using a comparison operator. + */ +export interface ComparisonCondition { + comparison: ComparisonConditionComparison; +} + +export interface ComparisonConditionComparison { + operator: ComparisonConditionComparisonOperatorEnum; + value: number; +} + +export type ComparisonConditionComparisonOperatorEnum = + | "GREATER_THAN" + | "GREATER_THAN_OR_EQUAL_TO" + | "LESS_THAN" + | "LESS_THAN_OR_EQUAL_TO" + | "EQUAL_TO" + | "NOT_EQUAL_TO"; + /** * Filter the result by comparing specified metric to given constant value, using given comparison operator. */ @@ -565,6 +1619,31 @@ export interface ComparisonWrapper { comparison: Comparison; } +/** + * Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned). + */ +export interface CompoundMeasureValueFilter { + compoundMeasureValueFilter: CompoundMeasureValueFilterCompoundMeasureValueFilter; +} + +export interface CompoundMeasureValueFilterCompoundMeasureValueFilter { + /** + * References to the attributes to be used when filtering. + */ + dimensionality?: Array; + /** + * A value that will be substituted for null values in the metric for the comparisons. + */ + treatNullValuesAs?: number; + /** + * List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned. + */ + conditions: Array; + localIdentifier?: string; + applyOnResult?: boolean; + measure: AfmIdentifier; +} + /** * Settings for content slide. */ @@ -2951,6 +4030,7 @@ export type FactIdentifierTypeEnum = "fact"; export type FilterDefinition = | AbsoluteDateFilter | ComparisonMeasureValueFilter + | CompoundMeasureValueFilter | InlineFilterDefinition | NegativeAttributeFilter | PositiveAttributeFilter @@ -3053,16 +4133,22 @@ export interface GenerateLdmRequest { * Configuration specific to geo area labels. */ export interface GeoAreaConfig { - collection: GeoCollection; + collection: GeoCollectionIdentifier; } -export interface GeoCollection { +export interface GeoCollectionIdentifier { /** * Geo collection identifier. */ id: string; + /** + * Type of geo collection. + */ + kind?: GeoCollectionIdentifierKindEnum; } +export type GeoCollectionIdentifierKindEnum = "STATIC" | "CUSTOM"; + /** * A grain identifier. */ @@ -3292,7 +4378,7 @@ export interface JsonApiAggregatedFactOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiAggregatedFactOutAttributes; relationships?: JsonApiAggregatedFactOutRelationships; } @@ -3338,7 +4424,7 @@ export type JsonApiAggregatedFactOutIncludes = JsonApiDatasetOutWithLinks | Json export interface JsonApiAggregatedFactOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -3346,7 +4432,7 @@ export interface JsonApiAggregatedFactOutList { } export interface JsonApiAggregatedFactOutRelationships { - dataset?: JsonApiAttributeOutRelationshipsDataset; + dataset?: JsonApiFactOutRelationshipsDataset; sourceFact?: JsonApiAggregatedFactOutRelationshipsSourceFact; } @@ -3363,7 +4449,7 @@ export interface JsonApiAggregatedFactOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiAggregatedFactOutAttributes; relationships?: JsonApiAggregatedFactOutRelationships; links?: ObjectLinks; @@ -3462,7 +4548,7 @@ export type JsonApiAnalyticalDashboardOutIncludes = export interface JsonApiAnalyticalDashboardOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -3474,7 +4560,7 @@ export interface JsonApiAnalyticalDashboardOutMeta { * List of valid permissions for a logged-in user. */ permissions?: Array; - origin?: JsonApiVisualizationObjectOutMetaOrigin; + origin?: JsonApiDatasetOutMetaOrigin; accessInfo?: JsonApiAnalyticalDashboardOutMetaAccessInfo; } @@ -3494,7 +4580,7 @@ export interface JsonApiAnalyticalDashboardOutRelationships { analyticalDashboards?: JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards; labels?: JsonApiVisualizationObjectOutRelationshipsLabels; metrics?: JsonApiVisualizationObjectOutRelationshipsMetrics; - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; + datasets?: JsonApiDatasetOutRelationshipsReferences; filterContexts?: JsonApiAnalyticalDashboardOutRelationshipsFilterContexts; dashboardPlugins?: JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins; } @@ -3652,11 +4738,7 @@ export interface JsonApiApiTokenOutDocument { export interface JsonApiApiTokenOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; -} - -export interface JsonApiApiTokenOutListMeta { - page?: PageMetadata; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiApiTokenOutWithLinks { @@ -3686,11 +4768,22 @@ export interface JsonApiAttributeHierarchyIn { * API identifier of an object */ id: string; - attributes?: JsonApiAttributeHierarchyPatchAttributes; + attributes?: JsonApiAttributeHierarchyInAttributes; } export type JsonApiAttributeHierarchyInTypeEnum = "attributeHierarchy"; +export interface JsonApiAttributeHierarchyInAttributes { + title?: string; + description?: string; + tags?: Array; + areRelationsValid?: boolean; + /** + * Free-form JSON content. Maximum supported length is 15000 characters. + */ + content?: object; +} + export interface JsonApiAttributeHierarchyInDocument { data: JsonApiAttributeHierarchyIn; } @@ -3717,7 +4810,7 @@ export interface JsonApiAttributeHierarchyOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiAttributeHierarchyOutAttributes; relationships?: JsonApiAttributeHierarchyOutRelationships; } @@ -3759,7 +4852,7 @@ export type JsonApiAttributeHierarchyOutIncludes = export interface JsonApiAttributeHierarchyOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -3769,7 +4862,7 @@ export interface JsonApiAttributeHierarchyOutList { export interface JsonApiAttributeHierarchyOutRelationships { createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + attributes?: JsonApiDatasetOutRelationshipsAttributes; } export interface JsonApiAttributeHierarchyOutWithLinks { @@ -3781,7 +4874,7 @@ export interface JsonApiAttributeHierarchyOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiAttributeHierarchyOutAttributes; relationships?: JsonApiAttributeHierarchyOutRelationships; links?: ObjectLinks; @@ -3801,22 +4894,11 @@ export interface JsonApiAttributeHierarchyPatch { * API identifier of an object */ id: string; - attributes?: JsonApiAttributeHierarchyPatchAttributes; + attributes?: JsonApiAttributeHierarchyInAttributes; } export type JsonApiAttributeHierarchyPatchTypeEnum = "attributeHierarchy"; -export interface JsonApiAttributeHierarchyPatchAttributes { - title?: string; - description?: string; - tags?: Array; - areRelationsValid?: boolean; - /** - * Free-form JSON content. Maximum supported length is 15000 characters. - */ - content?: object; -} - export interface JsonApiAttributeHierarchyPatchDocument { data: JsonApiAttributeHierarchyPatch; } @@ -3843,7 +4925,7 @@ export interface JsonApiAttributeOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiAttributeOutAttributes; relationships?: JsonApiAttributeOutRelationships; } @@ -3917,7 +4999,7 @@ export type JsonApiAttributeOutIncludes = export interface JsonApiAttributeOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -3925,7 +5007,7 @@ export interface JsonApiAttributeOutList { } export interface JsonApiAttributeOutRelationships { - dataset?: JsonApiAttributeOutRelationshipsDataset; + dataset?: JsonApiFactOutRelationshipsDataset; defaultView?: JsonApiAttributeOutRelationshipsDefaultView; labels?: JsonApiVisualizationObjectOutRelationshipsLabels; attributeHierarchies?: JsonApiAttributeOutRelationshipsAttributeHierarchies; @@ -3938,10 +5020,6 @@ export interface JsonApiAttributeOutRelationshipsAttributeHierarchies { data: Array; } -export interface JsonApiAttributeOutRelationshipsDataset { - data: JsonApiDatasetLinkage | null; -} - export interface JsonApiAttributeOutRelationshipsDefaultView { data: JsonApiLabelLinkage | null; } @@ -3955,7 +5033,7 @@ export interface JsonApiAttributeOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiAttributeOutAttributes; relationships?: JsonApiAttributeOutRelationships; links?: ObjectLinks; @@ -4007,46 +5085,13 @@ export interface JsonApiAutomationIn { * API identifier of an object */ id: string; - attributes?: JsonApiAutomationPatchAttributes; - relationships?: JsonApiAutomationPatchRelationships; + attributes?: JsonApiAutomationInAttributes; + relationships?: JsonApiAutomationInRelationships; } export type JsonApiAutomationInTypeEnum = "automation"; -export interface JsonApiAutomationInDocument { - data: JsonApiAutomationIn; -} - -/** - * The \\\"type\\\" and \\\"id\\\" to non-empty members. - */ -export interface JsonApiAutomationLinkage { - id: string; - type: JsonApiAutomationLinkageTypeEnum; -} - -export type JsonApiAutomationLinkageTypeEnum = "automation"; - -/** - * JSON:API representation of automation entity. - */ -export interface JsonApiAutomationOut { - /** - * Object type - */ - type: JsonApiAutomationOutTypeEnum; - /** - * API identifier of an object - */ - id: string; - meta?: JsonApiVisualizationObjectOutMeta; - attributes?: JsonApiAutomationOutAttributes; - relationships?: JsonApiAutomationOutRelationships; -} - -export type JsonApiAutomationOutTypeEnum = "automation"; - -export interface JsonApiAutomationOutAttributes { +export interface JsonApiAutomationInAttributes { title?: string; description?: string; tags?: Array; @@ -4055,120 +5100,73 @@ export interface JsonApiAutomationOutAttributes { * Additional details to be included in the automated message. */ details?: object; - metadata?: JsonApiAutomationPatchAttributesMetadata | null; + metadata?: JsonApiAutomationOutAttributesMetadata | null; /** * Current state of the automation. */ - state?: JsonApiAutomationOutAttributesStateEnum; + state?: JsonApiAutomationInAttributesStateEnum; /** * Specify automation evaluation mode. */ - evaluationMode?: JsonApiAutomationOutAttributesEvaluationModeEnum; - schedule?: JsonApiAutomationPatchAttributesSchedule; - alert?: JsonApiAutomationPatchAttributesAlert; - tabularExports?: Array; - visualExports?: Array; - imageExports?: Array; - rawExports?: Array; - slidesExports?: Array; - dashboardTabularExports?: Array; + evaluationMode?: JsonApiAutomationInAttributesEvaluationModeEnum; + schedule?: JsonApiAutomationOutAttributesSchedule; + alert?: JsonApiAutomationOutAttributesAlert; + tabularExports?: Array; + visualExports?: Array; + imageExports?: Array; + rawExports?: Array; + slidesExports?: Array; + dashboardTabularExports?: Array; /** * External recipients of the automation action results. */ - externalRecipients?: Array; - createdAt?: string; - modifiedAt?: string; + externalRecipients?: Array; } -export type JsonApiAutomationOutAttributesStateEnum = "ACTIVE" | "PAUSED"; -export type JsonApiAutomationOutAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; +export type JsonApiAutomationInAttributesStateEnum = "ACTIVE" | "PAUSED"; +export type JsonApiAutomationInAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; -export interface JsonApiAutomationOutDocument { - data: JsonApiAutomationOut; - links?: ObjectLinks; - /** - * Included resources - */ - included?: Array; +export interface JsonApiAutomationInDocument { + data: JsonApiAutomationIn; } -/** - * @type JsonApiAutomationOutIncludes - */ -export type JsonApiAutomationOutIncludes = - | JsonApiAnalyticalDashboardOutWithLinks - | JsonApiAutomationResultOutWithLinks - | JsonApiExportDefinitionOutWithLinks - | JsonApiNotificationChannelOutWithLinks - | JsonApiUserIdentifierOutWithLinks - | JsonApiUserOutWithLinks; +export interface JsonApiAutomationInRelationships { + notificationChannel?: JsonApiAutomationOutRelationshipsNotificationChannel; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + exportDefinitions?: JsonApiAutomationOutRelationshipsExportDefinitions; + recipients?: JsonApiAutomationOutRelationshipsRecipients; +} /** - * A JSON:API document with a list of resources + * The \\\"type\\\" and \\\"id\\\" to non-empty members. */ -export interface JsonApiAutomationOutList { - data: Array; - links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; - /** - * Included resources - */ - included?: Array; -} - -export interface JsonApiAutomationOutRelationships { - notificationChannel?: JsonApiAutomationPatchRelationshipsNotificationChannel; - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; - modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; - exportDefinitions?: JsonApiAutomationPatchRelationshipsExportDefinitions; - recipients?: JsonApiAutomationPatchRelationshipsRecipients; - automationResults?: JsonApiAutomationOutRelationshipsAutomationResults; -} - -export interface JsonApiAutomationOutRelationshipsAutomationResults { - /** - * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. - */ - data: Array; -} - -export interface JsonApiAutomationOutWithLinks { - /** - * Object type - */ - type: JsonApiAutomationOutWithLinksTypeEnum; - /** - * API identifier of an object - */ +export interface JsonApiAutomationLinkage { id: string; - meta?: JsonApiVisualizationObjectOutMeta; - attributes?: JsonApiAutomationOutAttributes; - relationships?: JsonApiAutomationOutRelationships; - links?: ObjectLinks; + type: JsonApiAutomationLinkageTypeEnum; } -export type JsonApiAutomationOutWithLinksTypeEnum = "automation"; +export type JsonApiAutomationLinkageTypeEnum = "automation"; /** - * JSON:API representation of patching automation entity. + * JSON:API representation of automation entity. */ -export interface JsonApiAutomationPatch { +export interface JsonApiAutomationOut { /** * Object type */ - type: JsonApiAutomationPatchTypeEnum; + type: JsonApiAutomationOutTypeEnum; /** * API identifier of an object */ id: string; - attributes?: JsonApiAutomationPatchAttributes; - relationships?: JsonApiAutomationPatchRelationships; + meta?: JsonApiDatasetOutMeta; + attributes?: JsonApiAutomationOutAttributes; + relationships?: JsonApiAutomationOutRelationships; } -export type JsonApiAutomationPatchTypeEnum = "automation"; +export type JsonApiAutomationOutTypeEnum = "automation"; -export interface JsonApiAutomationPatchAttributes { +export interface JsonApiAutomationOutAttributes { title?: string; description?: string; tags?: Array; @@ -4177,73 +5175,75 @@ export interface JsonApiAutomationPatchAttributes { * Additional details to be included in the automated message. */ details?: object; - metadata?: JsonApiAutomationPatchAttributesMetadata | null; + metadata?: JsonApiAutomationOutAttributesMetadata | null; /** * Current state of the automation. */ - state?: JsonApiAutomationPatchAttributesStateEnum; + state?: JsonApiAutomationOutAttributesStateEnum; /** * Specify automation evaluation mode. */ - evaluationMode?: JsonApiAutomationPatchAttributesEvaluationModeEnum; - schedule?: JsonApiAutomationPatchAttributesSchedule; - alert?: JsonApiAutomationPatchAttributesAlert; - tabularExports?: Array; - visualExports?: Array; - imageExports?: Array; - rawExports?: Array; - slidesExports?: Array; - dashboardTabularExports?: Array; + evaluationMode?: JsonApiAutomationOutAttributesEvaluationModeEnum; + schedule?: JsonApiAutomationOutAttributesSchedule; + alert?: JsonApiAutomationOutAttributesAlert; + tabularExports?: Array; + visualExports?: Array; + imageExports?: Array; + rawExports?: Array; + slidesExports?: Array; + dashboardTabularExports?: Array; /** * External recipients of the automation action results. */ - externalRecipients?: Array; + externalRecipients?: Array; + createdAt?: string; + modifiedAt?: string; } -export type JsonApiAutomationPatchAttributesStateEnum = "ACTIVE" | "PAUSED"; -export type JsonApiAutomationPatchAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; +export type JsonApiAutomationOutAttributesStateEnum = "ACTIVE" | "PAUSED"; +export type JsonApiAutomationOutAttributesEvaluationModeEnum = "SHARED" | "PER_RECIPIENT"; -export interface JsonApiAutomationPatchAttributesAlert { +export interface JsonApiAutomationOutAttributesAlert { execution: AlertAfm; condition: AlertCondition; /** * Trigger behavior for the alert. ALWAYS - alert is triggered every time the condition is met. ONCE - alert is triggered only once when the condition is met. */ - trigger?: JsonApiAutomationPatchAttributesAlertTriggerEnum; + trigger?: JsonApiAutomationOutAttributesAlertTriggerEnum; } -export type JsonApiAutomationPatchAttributesAlertTriggerEnum = "ALWAYS" | "ONCE"; +export type JsonApiAutomationOutAttributesAlertTriggerEnum = "ALWAYS" | "ONCE"; -export interface JsonApiAutomationPatchAttributesDashboardTabularExportsInner { +export interface JsonApiAutomationOutAttributesDashboardTabularExportsInner { requestPayload: DashboardTabularExportRequestV2; } -export interface JsonApiAutomationPatchAttributesExternalRecipientsInner { +export interface JsonApiAutomationOutAttributesExternalRecipientsInner { /** * E-mail address to send notifications from. */ email: string; } -export interface JsonApiAutomationPatchAttributesImageExportsInner { +export interface JsonApiAutomationOutAttributesImageExportsInner { requestPayload: ImageExportRequest; } /** * Additional information for the automation. */ -export interface JsonApiAutomationPatchAttributesMetadata { +export interface JsonApiAutomationOutAttributesMetadata { [key: string]: any; widget?: string; visibleFilters?: Array; } -export interface JsonApiAutomationPatchAttributesRawExportsInner { +export interface JsonApiAutomationOutAttributesRawExportsInner { requestPayload: RawExportAutomationRequest; } -export interface JsonApiAutomationPatchAttributesSchedule { +export interface JsonApiAutomationOutAttributesSchedule { /** * Cron expression defining the schedule of the automation. The format is SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK (YEAR). The example expression signifies an action every 30 minutes from 9:00 to 17:00 on workdays. */ @@ -4262,51 +5262,129 @@ export interface JsonApiAutomationPatchAttributesSchedule { firstRun?: string; } -export interface JsonApiAutomationPatchAttributesSlidesExportsInner { +export interface JsonApiAutomationOutAttributesSlidesExportsInner { requestPayload: SlidesExportRequest; } -export interface JsonApiAutomationPatchAttributesTabularExportsInner { +export interface JsonApiAutomationOutAttributesTabularExportsInner { requestPayload: TabularExportRequest; } -export interface JsonApiAutomationPatchAttributesVisualExportsInner { +export interface JsonApiAutomationOutAttributesVisualExportsInner { requestPayload: VisualExportRequest; } -export interface JsonApiAutomationPatchDocument { - data: JsonApiAutomationPatch; +export interface JsonApiAutomationOutDocument { + data: JsonApiAutomationOut; + links?: ObjectLinks; + /** + * Included resources + */ + included?: Array; } -export interface JsonApiAutomationPatchRelationships { - notificationChannel?: JsonApiAutomationPatchRelationshipsNotificationChannel; - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - exportDefinitions?: JsonApiAutomationPatchRelationshipsExportDefinitions; - recipients?: JsonApiAutomationPatchRelationshipsRecipients; +/** + * @type JsonApiAutomationOutIncludes + */ +export type JsonApiAutomationOutIncludes = + | JsonApiAnalyticalDashboardOutWithLinks + | JsonApiAutomationResultOutWithLinks + | JsonApiExportDefinitionOutWithLinks + | JsonApiNotificationChannelOutWithLinks + | JsonApiUserIdentifierOutWithLinks + | JsonApiUserOutWithLinks; + +/** + * A JSON:API document with a list of resources + */ +export interface JsonApiAutomationOutList { + data: Array; + links?: ListLinks; + meta?: JsonApiColorPaletteOutListMeta; + /** + * Included resources + */ + included?: Array; } -export interface JsonApiAutomationPatchRelationshipsAnalyticalDashboard { +export interface JsonApiAutomationOutRelationships { + notificationChannel?: JsonApiAutomationOutRelationshipsNotificationChannel; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; + modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; + exportDefinitions?: JsonApiAutomationOutRelationshipsExportDefinitions; + recipients?: JsonApiAutomationOutRelationshipsRecipients; + automationResults?: JsonApiAutomationOutRelationshipsAutomationResults; +} + +export interface JsonApiAutomationOutRelationshipsAnalyticalDashboard { data: JsonApiAnalyticalDashboardLinkage | null; } -export interface JsonApiAutomationPatchRelationshipsExportDefinitions { +export interface JsonApiAutomationOutRelationshipsAutomationResults { + /** + * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. + */ + data: Array; +} + +export interface JsonApiAutomationOutRelationshipsExportDefinitions { /** * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. */ data: Array; } -export interface JsonApiAutomationPatchRelationshipsNotificationChannel { +export interface JsonApiAutomationOutRelationshipsNotificationChannel { data: JsonApiNotificationChannelLinkage | null; } -export interface JsonApiAutomationPatchRelationshipsRecipients { +export interface JsonApiAutomationOutRelationshipsRecipients { /** * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. */ data: Array; } +export interface JsonApiAutomationOutWithLinks { + /** + * Object type + */ + type: JsonApiAutomationOutWithLinksTypeEnum; + /** + * API identifier of an object + */ + id: string; + meta?: JsonApiDatasetOutMeta; + attributes?: JsonApiAutomationOutAttributes; + relationships?: JsonApiAutomationOutRelationships; + links?: ObjectLinks; +} + +export type JsonApiAutomationOutWithLinksTypeEnum = "automation"; + +/** + * JSON:API representation of patching automation entity. + */ +export interface JsonApiAutomationPatch { + /** + * Object type + */ + type: JsonApiAutomationPatchTypeEnum; + /** + * API identifier of an object + */ + id: string; + attributes?: JsonApiAutomationInAttributes; + relationships?: JsonApiAutomationInRelationships; +} + +export type JsonApiAutomationPatchTypeEnum = "automation"; + +export interface JsonApiAutomationPatchDocument { + data: JsonApiAutomationPatch; +} + /** * The \\\"type\\\" and \\\"id\\\" to non-empty members. */ @@ -4356,7 +5434,7 @@ export type JsonApiAutomationResultOutAttributesStatusEnum = "SUCCESS" | "FAILED export interface JsonApiAutomationResultOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -4364,7 +5442,11 @@ export interface JsonApiAutomationResultOutList { } export interface JsonApiAutomationResultOutRelationships { - automation?: JsonApiExportDefinitionOutRelationshipsAutomation; + automation?: JsonApiAutomationResultOutRelationshipsAutomation; +} + +export interface JsonApiAutomationResultOutRelationshipsAutomation { + data: JsonApiAutomationLinkage | null; } export interface JsonApiAutomationResultOutWithLinks { @@ -4440,7 +5522,11 @@ export interface JsonApiColorPaletteOutDocument { export interface JsonApiColorPaletteOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +export interface JsonApiColorPaletteOutListMeta { + page?: PageMetadata; } export interface JsonApiColorPaletteOutWithLinks { @@ -4499,7 +5585,7 @@ export interface JsonApiCookieSecurityConfigurationIn { * API identifier of an object */ id: string; - attributes?: JsonApiCookieSecurityConfigurationOutAttributes; + attributes?: JsonApiCookieSecurityConfigurationPatchAttributes; } export type JsonApiCookieSecurityConfigurationInTypeEnum = "cookieSecurityConfiguration"; @@ -4520,19 +5606,11 @@ export interface JsonApiCookieSecurityConfigurationOut { * API identifier of an object */ id: string; - attributes?: JsonApiCookieSecurityConfigurationOutAttributes; + attributes?: JsonApiCookieSecurityConfigurationPatchAttributes; } export type JsonApiCookieSecurityConfigurationOutTypeEnum = "cookieSecurityConfiguration"; -export interface JsonApiCookieSecurityConfigurationOutAttributes { - lastRotation?: string; - /** - * Length of interval between automatic rotations expressed in format of ISO 8601 duration - */ - rotationInterval?: string; -} - export interface JsonApiCookieSecurityConfigurationOutDocument { data: JsonApiCookieSecurityConfigurationOut; links?: ObjectLinks; @@ -4550,11 +5628,19 @@ export interface JsonApiCookieSecurityConfigurationPatch { * API identifier of an object */ id: string; - attributes?: JsonApiCookieSecurityConfigurationOutAttributes; + attributes?: JsonApiCookieSecurityConfigurationPatchAttributes; } export type JsonApiCookieSecurityConfigurationPatchTypeEnum = "cookieSecurityConfiguration"; +export interface JsonApiCookieSecurityConfigurationPatchAttributes { + lastRotation?: string; + /** + * Length of interval between automatic rotations expressed in format of ISO 8601 duration + */ + rotationInterval?: string; +} + export interface JsonApiCookieSecurityConfigurationPatchDocument { data: JsonApiCookieSecurityConfigurationPatch; } @@ -4612,7 +5698,7 @@ export interface JsonApiCspDirectiveOutDocument { export interface JsonApiCspDirectiveOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiCspDirectiveOutWithLinks { @@ -4688,7 +5774,7 @@ export interface JsonApiCustomApplicationSettingOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiCustomApplicationSettingOutAttributes; } @@ -4713,7 +5799,7 @@ export interface JsonApiCustomApplicationSettingOutDocument { export interface JsonApiCustomApplicationSettingOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiCustomApplicationSettingOutWithLinks { @@ -4725,7 +5811,7 @@ export interface JsonApiCustomApplicationSettingOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiCustomApplicationSettingOutAttributes; links?: ObjectLinks; } @@ -4782,6 +5868,90 @@ export interface JsonApiCustomApplicationSettingPostOptionalIdDocument { data: JsonApiCustomApplicationSettingPostOptionalId; } +/** + * JSON:API representation of customGeoCollection entity. + */ +export interface JsonApiCustomGeoCollectionIn { + /** + * Object type + */ + type: JsonApiCustomGeoCollectionInTypeEnum; + /** + * API identifier of an object + */ + id: string; +} + +export type JsonApiCustomGeoCollectionInTypeEnum = "customGeoCollection"; + +export interface JsonApiCustomGeoCollectionInDocument { + data: JsonApiCustomGeoCollectionIn; +} + +/** + * JSON:API representation of customGeoCollection entity. + */ +export interface JsonApiCustomGeoCollectionOut { + /** + * Object type + */ + type: JsonApiCustomGeoCollectionOutTypeEnum; + /** + * API identifier of an object + */ + id: string; +} + +export type JsonApiCustomGeoCollectionOutTypeEnum = "customGeoCollection"; + +export interface JsonApiCustomGeoCollectionOutDocument { + data: JsonApiCustomGeoCollectionOut; + links?: ObjectLinks; +} + +/** + * A JSON:API document with a list of resources + */ +export interface JsonApiCustomGeoCollectionOutList { + data: Array; + links?: ListLinks; + meta?: JsonApiColorPaletteOutListMeta; +} + +export interface JsonApiCustomGeoCollectionOutWithLinks { + /** + * Object type + */ + type: JsonApiCustomGeoCollectionOutWithLinksTypeEnum; + /** + * API identifier of an object + */ + id: string; + links?: ObjectLinks; +} + +export type JsonApiCustomGeoCollectionOutWithLinksTypeEnum = "customGeoCollection"; + +/** + * JSON:API representation of patching customGeoCollection entity. + */ +export interface JsonApiCustomGeoCollectionPatch { + /** + * Object type + */ + type: JsonApiCustomGeoCollectionPatchTypeEnum; + /** + * API identifier of an object + */ + id: string; +} + +export type JsonApiCustomGeoCollectionPatchTypeEnum = "customGeoCollection"; + +export interface JsonApiCustomGeoCollectionPatchDocument { + data: JsonApiCustomGeoCollectionPatch; +} + /** * JSON:API representation of dashboardPlugin entity. */ @@ -4794,11 +5964,22 @@ export interface JsonApiDashboardPluginIn { * API identifier of an object */ id: string; - attributes?: JsonApiDashboardPluginPatchAttributes; + attributes?: JsonApiDashboardPluginInAttributes; } export type JsonApiDashboardPluginInTypeEnum = "dashboardPlugin"; +export interface JsonApiDashboardPluginInAttributes { + title?: string; + description?: string; + tags?: Array; + areRelationsValid?: boolean; + /** + * Free-form JSON content. Maximum supported length is 250000 characters. + */ + content?: object; +} + export interface JsonApiDashboardPluginInDocument { data: JsonApiDashboardPluginIn; } @@ -4825,7 +6006,7 @@ export interface JsonApiDashboardPluginOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiDashboardPluginOutAttributes; relationships?: JsonApiDashboardPluginOutRelationships; } @@ -4860,7 +6041,7 @@ export interface JsonApiDashboardPluginOutDocument { export interface JsonApiDashboardPluginOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -4881,7 +6062,7 @@ export interface JsonApiDashboardPluginOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiDashboardPluginOutAttributes; relationships?: JsonApiDashboardPluginOutRelationships; links?: ObjectLinks; @@ -4901,22 +6082,11 @@ export interface JsonApiDashboardPluginPatch { * API identifier of an object */ id: string; - attributes?: JsonApiDashboardPluginPatchAttributes; + attributes?: JsonApiDashboardPluginInAttributes; } export type JsonApiDashboardPluginPatchTypeEnum = "dashboardPlugin"; -export interface JsonApiDashboardPluginPatchAttributes { - title?: string; - description?: string; - tags?: Array; - areRelationsValid?: boolean; - /** - * Free-form JSON content. Maximum supported length is 250000 characters. - */ - content?: object; -} - export interface JsonApiDashboardPluginPatchDocument { data: JsonApiDashboardPluginPatch; } @@ -4933,7 +6103,7 @@ export interface JsonApiDashboardPluginPostOptionalId { * API identifier of an object */ id?: string; - attributes?: JsonApiDashboardPluginPatchAttributes; + attributes?: JsonApiDashboardPluginInAttributes; } export type JsonApiDashboardPluginPostOptionalIdTypeEnum = "dashboardPlugin"; @@ -4954,7 +6124,7 @@ export interface JsonApiDataSourceIdentifierOut { * API identifier of an object */ id: string; - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; attributes: JsonApiDataSourceIdentifierOutAttributes; } @@ -5005,9 +6175,18 @@ export interface JsonApiDataSourceIdentifierOutDocument { export interface JsonApiDataSourceIdentifierOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; +} + +export interface JsonApiDataSourceIdentifierOutMeta { + /** + * List of valid permissions for a logged-in user. + */ + permissions?: Array; } +export type JsonApiDataSourceIdentifierOutMetaPermissionsEnum = "MANAGE" | "USE"; + export interface JsonApiDataSourceIdentifierOutWithLinks { /** * Object type @@ -5017,7 +6196,7 @@ export interface JsonApiDataSourceIdentifierOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; attributes: JsonApiDataSourceIdentifierOutAttributes; links?: ObjectLinks; } @@ -5089,7 +6268,7 @@ export interface JsonApiDataSourceInAttributes { /** * Additional parameters to be used when connecting to the database providing the data for the data source. */ - parameters?: Array | null; + parameters?: Array | null; /** * Determines how the results coming from a particular datasource should be cached. */ @@ -5145,7 +6324,7 @@ export interface JsonApiDataSourceOut { * API identifier of an object */ id: string; - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; attributes: JsonApiDataSourceOutAttributes; } @@ -5179,11 +6358,11 @@ export interface JsonApiDataSourceOutAttributes { /** * Additional parameters to be used when connecting to the database providing the data for the data source. */ - parameters?: Array | null; + parameters?: Array | null; /** * Decoded parameters to be used when connecting to the database providing the data for the data source. */ - decodedParameters?: Array | null; + decodedParameters?: Array | null; /** * Determines how the results coming from a particular datasource should be cached. */ @@ -5233,6 +6412,11 @@ export type JsonApiDataSourceOutAttributesAuthenticationTypeEnum = | "CLIENT_SECRET" | "ACCESS_TOKEN"; +export interface JsonApiDataSourceOutAttributesParametersInner { + name: string; + value: string; +} + export interface JsonApiDataSourceOutDocument { data: JsonApiDataSourceOut; links?: ObjectLinks; @@ -5244,18 +6428,9 @@ export interface JsonApiDataSourceOutDocument { export interface JsonApiDataSourceOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; -} - -export interface JsonApiDataSourceOutMeta { - /** - * List of valid permissions for a logged-in user. - */ - permissions?: Array; + meta?: JsonApiColorPaletteOutListMeta; } -export type JsonApiDataSourceOutMetaPermissionsEnum = "MANAGE" | "USE"; - export interface JsonApiDataSourceOutWithLinks { /** * Object type @@ -5265,7 +6440,7 @@ export interface JsonApiDataSourceOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiDataSourceOutMeta; + meta?: JsonApiDataSourceIdentifierOutMeta; attributes: JsonApiDataSourceOutAttributes; links?: ObjectLinks; } @@ -5337,7 +6512,7 @@ export interface JsonApiDataSourcePatchAttributes { /** * Additional parameters to be used when connecting to the database providing the data for the data source. */ - parameters?: Array | null; + parameters?: Array | null; /** * Determines how the results coming from a particular datasource should be cached. */ @@ -5377,11 +6552,6 @@ export type JsonApiDataSourcePatchAttributesTypeEnum = | "MONGODB"; export type JsonApiDataSourcePatchAttributesCacheStrategyEnum = "ALWAYS" | "NEVER"; -export interface JsonApiDataSourcePatchAttributesParametersInner { - name: string; - value: string; -} - export interface JsonApiDataSourcePatchDocument { data: JsonApiDataSourcePatch; } @@ -5408,7 +6578,7 @@ export interface JsonApiDatasetOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiDatasetOutAttributes; relationships?: JsonApiDatasetOutRelationships; } @@ -5522,18 +6692,35 @@ export type JsonApiDatasetOutIncludes = export interface JsonApiDatasetOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ included?: Array; } +export interface JsonApiDatasetOutMeta { + origin?: JsonApiDatasetOutMetaOrigin; +} + +export interface JsonApiDatasetOutMetaOrigin { + /** + * defines type of the origin of the entity + */ + originType: JsonApiDatasetOutMetaOriginOriginTypeEnum; + /** + * defines id of the workspace where the entity comes from + */ + originId: string; +} + +export type JsonApiDatasetOutMetaOriginOriginTypeEnum = "NATIVE" | "PARENT"; + export interface JsonApiDatasetOutRelationships { - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; - facts?: JsonApiVisualizationObjectOutRelationshipsFacts; + attributes?: JsonApiDatasetOutRelationshipsAttributes; + facts?: JsonApiDatasetOutRelationshipsFacts; aggregatedFacts?: JsonApiDatasetOutRelationshipsAggregatedFacts; - references?: JsonApiVisualizationObjectOutRelationshipsDatasets; + references?: JsonApiDatasetOutRelationshipsReferences; workspaceDataFilters?: JsonApiDatasetOutRelationshipsWorkspaceDataFilters; } @@ -5544,6 +6731,27 @@ export interface JsonApiDatasetOutRelationshipsAggregatedFacts { data: Array; } +export interface JsonApiDatasetOutRelationshipsAttributes { + /** + * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. + */ + data: Array; +} + +export interface JsonApiDatasetOutRelationshipsFacts { + /** + * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. + */ + data: Array; +} + +export interface JsonApiDatasetOutRelationshipsReferences { + /** + * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. + */ + data: Array; +} + export interface JsonApiDatasetOutRelationshipsWorkspaceDataFilters { /** * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. @@ -5560,7 +6768,7 @@ export interface JsonApiDatasetOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiDatasetOutAttributes; relationships?: JsonApiDatasetOutRelationships; links?: ObjectLinks; @@ -5622,7 +6830,7 @@ export interface JsonApiEntitlementOutDocument { export interface JsonApiEntitlementOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiEntitlementOutWithLinks { @@ -5652,16 +6860,29 @@ export interface JsonApiExportDefinitionIn { * API identifier of an object */ id: string; - attributes?: JsonApiExportDefinitionPatchAttributes; - relationships?: JsonApiExportDefinitionPatchRelationships; + attributes?: JsonApiExportDefinitionInAttributes; + relationships?: JsonApiExportDefinitionInRelationships; } export type JsonApiExportDefinitionInTypeEnum = "exportDefinition"; +export interface JsonApiExportDefinitionInAttributes { + title?: string; + description?: string; + tags?: Array; + requestPayload?: JsonApiExportDefinitionOutAttributesRequestPayload; + areRelationsValid?: boolean; +} + export interface JsonApiExportDefinitionInDocument { data: JsonApiExportDefinitionIn; } +export interface JsonApiExportDefinitionInRelationships { + visualizationObject?: JsonApiExportDefinitionOutRelationshipsVisualizationObject; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; +} + /** * The \\\"type\\\" and \\\"id\\\" to non-empty members. */ @@ -5684,7 +6905,7 @@ export interface JsonApiExportDefinitionOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiExportDefinitionOutAttributes; relationships?: JsonApiExportDefinitionOutRelationships; } @@ -5731,7 +6952,7 @@ export type JsonApiExportDefinitionOutIncludes = export interface JsonApiExportDefinitionOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -5740,16 +6961,12 @@ export interface JsonApiExportDefinitionOutList { export interface JsonApiExportDefinitionOutRelationships { visualizationObject?: JsonApiExportDefinitionOutRelationshipsVisualizationObject; - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - automation?: JsonApiExportDefinitionOutRelationshipsAutomation; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + automation?: JsonApiAutomationResultOutRelationshipsAutomation; createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; } -export interface JsonApiExportDefinitionOutRelationshipsAutomation { - data: JsonApiAutomationLinkage | null; -} - export interface JsonApiExportDefinitionOutRelationshipsVisualizationObject { data: JsonApiVisualizationObjectLinkage | null; } @@ -5763,7 +6980,7 @@ export interface JsonApiExportDefinitionOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiExportDefinitionOutAttributes; relationships?: JsonApiExportDefinitionOutRelationships; links?: ObjectLinks; @@ -5783,29 +7000,16 @@ export interface JsonApiExportDefinitionPatch { * API identifier of an object */ id: string; - attributes?: JsonApiExportDefinitionPatchAttributes; - relationships?: JsonApiExportDefinitionPatchRelationships; + attributes?: JsonApiExportDefinitionInAttributes; + relationships?: JsonApiExportDefinitionInRelationships; } export type JsonApiExportDefinitionPatchTypeEnum = "exportDefinition"; -export interface JsonApiExportDefinitionPatchAttributes { - title?: string; - description?: string; - tags?: Array; - requestPayload?: JsonApiExportDefinitionOutAttributesRequestPayload; - areRelationsValid?: boolean; -} - export interface JsonApiExportDefinitionPatchDocument { data: JsonApiExportDefinitionPatch; } -export interface JsonApiExportDefinitionPatchRelationships { - visualizationObject?: JsonApiExportDefinitionOutRelationshipsVisualizationObject; - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; -} - /** * JSON:API representation of exportDefinition entity. */ @@ -5818,8 +7022,8 @@ export interface JsonApiExportDefinitionPostOptionalId { * API identifier of an object */ id?: string; - attributes?: JsonApiExportDefinitionPatchAttributes; - relationships?: JsonApiExportDefinitionPatchRelationships; + attributes?: JsonApiExportDefinitionInAttributes; + relationships?: JsonApiExportDefinitionInRelationships; } export type JsonApiExportDefinitionPostOptionalIdTypeEnum = "exportDefinition"; @@ -5871,10 +7075,39 @@ export interface JsonApiExportTemplateOutAttributes { * User-facing name of the Slides template. */ name: string; - dashboardSlidesTemplate?: JsonApiExportTemplatePatchAttributesDashboardSlidesTemplate | null; - widgetSlidesTemplate?: JsonApiExportTemplatePatchAttributesWidgetSlidesTemplate | null; + dashboardSlidesTemplate?: JsonApiExportTemplateOutAttributesDashboardSlidesTemplate | null; + widgetSlidesTemplate?: JsonApiExportTemplateOutAttributesWidgetSlidesTemplate | null; +} + +/** + * Template for dashboard slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} + */ +export interface JsonApiExportTemplateOutAttributesDashboardSlidesTemplate { + /** + * Export types this template applies to. + */ + appliedOn: Array; + coverSlide?: CoverSlideTemplate | null; + introSlide?: IntroSlideTemplate | null; + sectionSlide?: SectionSlideTemplate | null; + contentSlide?: ContentSlideTemplate | null; } +export type JsonApiExportTemplateOutAttributesDashboardSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; + +/** + * Template for widget slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} + */ +export interface JsonApiExportTemplateOutAttributesWidgetSlidesTemplate { + /** + * Export types this template applies to. + */ + appliedOn: Array; + contentSlide?: ContentSlideTemplate | null; +} + +export type JsonApiExportTemplateOutAttributesWidgetSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; + export interface JsonApiExportTemplateOutDocument { data: JsonApiExportTemplateOut; links?: ObjectLinks; @@ -5886,7 +7119,7 @@ export interface JsonApiExportTemplateOutDocument { export interface JsonApiExportTemplateOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiExportTemplateOutWithLinks { @@ -5926,39 +7159,10 @@ export interface JsonApiExportTemplatePatchAttributes { * User-facing name of the Slides template. */ name?: string; - dashboardSlidesTemplate?: JsonApiExportTemplatePatchAttributesDashboardSlidesTemplate | null; - widgetSlidesTemplate?: JsonApiExportTemplatePatchAttributesWidgetSlidesTemplate | null; -} - -/** - * Template for dashboard slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} - */ -export interface JsonApiExportTemplatePatchAttributesDashboardSlidesTemplate { - /** - * Export types this template applies to. - */ - appliedOn: Array; - coverSlide?: CoverSlideTemplate | null; - introSlide?: IntroSlideTemplate | null; - sectionSlide?: SectionSlideTemplate | null; - contentSlide?: ContentSlideTemplate | null; -} - -export type JsonApiExportTemplatePatchAttributesDashboardSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; - -/** - * Template for widget slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} - */ -export interface JsonApiExportTemplatePatchAttributesWidgetSlidesTemplate { - /** - * Export types this template applies to. - */ - appliedOn: Array; - contentSlide?: ContentSlideTemplate | null; + dashboardSlidesTemplate?: JsonApiExportTemplateOutAttributesDashboardSlidesTemplate | null; + widgetSlidesTemplate?: JsonApiExportTemplateOutAttributesWidgetSlidesTemplate | null; } -export type JsonApiExportTemplatePatchAttributesWidgetSlidesTemplateAppliedOnEnum = "PDF" | "PPTX"; - export interface JsonApiExportTemplatePatchDocument { data: JsonApiExportTemplatePatch; } @@ -6006,7 +7210,7 @@ export interface JsonApiFactOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiFactOutAttributes; relationships?: JsonApiFactOutRelationships; } @@ -6047,7 +7251,7 @@ export interface JsonApiFactOutDocument { export interface JsonApiFactOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -6055,7 +7259,11 @@ export interface JsonApiFactOutList { } export interface JsonApiFactOutRelationships { - dataset?: JsonApiAttributeOutRelationshipsDataset; + dataset?: JsonApiFactOutRelationshipsDataset; +} + +export interface JsonApiFactOutRelationshipsDataset { + data: JsonApiDatasetLinkage | null; } export interface JsonApiFactOutWithLinks { @@ -6067,7 +7275,7 @@ export interface JsonApiFactOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiFactOutAttributes; relationships?: JsonApiFactOutRelationships; links?: ObjectLinks; @@ -6139,7 +7347,7 @@ export interface JsonApiFilterContextOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiFilterContextOutAttributes; relationships?: JsonApiFilterContextOutRelationships; } @@ -6180,7 +7388,7 @@ export type JsonApiFilterContextOutIncludes = export interface JsonApiFilterContextOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -6188,8 +7396,8 @@ export interface JsonApiFilterContextOutList { } export interface JsonApiFilterContextOutRelationships { - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; + attributes?: JsonApiDatasetOutRelationshipsAttributes; + datasets?: JsonApiDatasetOutRelationshipsReferences; labels?: JsonApiVisualizationObjectOutRelationshipsLabels; } @@ -6202,7 +7410,7 @@ export interface JsonApiFilterContextOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiFilterContextOutAttributes; relationships?: JsonApiFilterContextOutRelationships; links?: ObjectLinks; @@ -6265,7 +7473,7 @@ export interface JsonApiFilterViewIn { */ id: string; attributes: JsonApiFilterViewOutAttributes; - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; } export type JsonApiFilterViewInTypeEnum = "filterView"; @@ -6287,7 +7495,7 @@ export interface JsonApiFilterViewOut { */ id: string; attributes: JsonApiFilterViewOutAttributes; - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; } export type JsonApiFilterViewOutTypeEnum = "filterView"; @@ -6327,13 +7535,18 @@ export type JsonApiFilterViewOutIncludes = JsonApiAnalyticalDashboardOutWithLink export interface JsonApiFilterViewOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ included?: Array; } +export interface JsonApiFilterViewOutRelationships { + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; + user?: JsonApiOrganizationOutRelationshipsBootstrapUser; +} + export interface JsonApiFilterViewOutWithLinks { /** * Object type @@ -6344,7 +7557,7 @@ export interface JsonApiFilterViewOutWithLinks { */ id: string; attributes: JsonApiFilterViewOutAttributes; - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; links?: ObjectLinks; } @@ -6363,7 +7576,7 @@ export interface JsonApiFilterViewPatch { */ id: string; attributes: JsonApiFilterViewPatchAttributes; - relationships?: JsonApiFilterViewPatchRelationships; + relationships?: JsonApiFilterViewOutRelationships; } export type JsonApiFilterViewPatchTypeEnum = "filterView"; @@ -6387,15 +7600,6 @@ export interface JsonApiFilterViewPatchDocument { data: JsonApiFilterViewPatch; } -export interface JsonApiFilterViewPatchRelationships { - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; - user?: JsonApiFilterViewPatchRelationshipsUser; -} - -export interface JsonApiFilterViewPatchRelationshipsUser { - data: JsonApiUserLinkage | null; -} - /** * JSON:API representation of identityProvider entity. */ @@ -6408,134 +7612,12 @@ export interface JsonApiIdentityProviderIn { * API identifier of an object */ id: string; - attributes?: JsonApiIdentityProviderPatchAttributes; + attributes?: JsonApiIdentityProviderInAttributes; } export type JsonApiIdentityProviderInTypeEnum = "identityProvider"; -export interface JsonApiIdentityProviderInDocument { - data: JsonApiIdentityProviderIn; -} - -/** - * The \\\"type\\\" and \\\"id\\\" to non-empty members. - */ -export interface JsonApiIdentityProviderLinkage { - id: string; - type: JsonApiIdentityProviderLinkageTypeEnum; -} - -export type JsonApiIdentityProviderLinkageTypeEnum = "identityProvider"; - -/** - * JSON:API representation of identityProvider entity. - */ -export interface JsonApiIdentityProviderOut { - /** - * Object type - */ - type: JsonApiIdentityProviderOutTypeEnum; - /** - * API identifier of an object - */ - id: string; - attributes?: JsonApiIdentityProviderOutAttributes; -} - -export type JsonApiIdentityProviderOutTypeEnum = "identityProvider"; - -export interface JsonApiIdentityProviderOutAttributes { - /** - * List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP. - */ - identifiers?: Array; - /** - * Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute. - */ - customClaimMapping?: { [key: string]: string }; - /** - * The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP. - */ - oauthClientId?: string; - /** - * The location of your OIDC provider. This field is mandatory for OIDC IdP. - */ - oauthIssuerLocation?: string; - /** - * Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider. - */ - oauthIssuerId?: string; - /** - * Any string identifying the claim in ID token, that should be used for user identification. The default value is \'sub\'. - */ - oauthSubjectIdClaim?: string; - /** - * Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute. - */ - oauthCustomAuthAttributes?: { [key: string]: string }; - /** - * List of additional OAuth scopes which may be required by other providers (e.g. Snowflake) - */ - oauthCustomScopes?: Array | null; - /** - * Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer\'s own IdP, protected from deletion if currently used by org for authentication, deletable otherwise. - */ - idpType?: JsonApiIdentityProviderOutAttributesIdpTypeEnum; -} - -export type JsonApiIdentityProviderOutAttributesIdpTypeEnum = - | "MANAGED_IDP" - | "FIM_IDP" - | "DEX_IDP" - | "CUSTOM_IDP"; - -export interface JsonApiIdentityProviderOutDocument { - data: JsonApiIdentityProviderOut; - links?: ObjectLinks; -} - -/** - * A JSON:API document with a list of resources - */ -export interface JsonApiIdentityProviderOutList { - data: Array; - links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; -} - -export interface JsonApiIdentityProviderOutWithLinks { - /** - * Object type - */ - type: JsonApiIdentityProviderOutWithLinksTypeEnum; - /** - * API identifier of an object - */ - id: string; - attributes?: JsonApiIdentityProviderOutAttributes; - links?: ObjectLinks; -} - -export type JsonApiIdentityProviderOutWithLinksTypeEnum = "identityProvider"; - -/** - * JSON:API representation of patching identityProvider entity. - */ -export interface JsonApiIdentityProviderPatch { - /** - * Object type - */ - type: JsonApiIdentityProviderPatchTypeEnum; - /** - * API identifier of an object - */ - id: string; - attributes?: JsonApiIdentityProviderPatchAttributes; -} - -export type JsonApiIdentityProviderPatchTypeEnum = "identityProvider"; - -export interface JsonApiIdentityProviderPatchAttributes { +export interface JsonApiIdentityProviderInAttributes { /** * List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP. */ @@ -6579,15 +7661,137 @@ export interface JsonApiIdentityProviderPatchAttributes { /** * Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer\'s own IdP, protected from deletion if currently used by org for authentication, deletable otherwise. */ - idpType?: JsonApiIdentityProviderPatchAttributesIdpTypeEnum; + idpType?: JsonApiIdentityProviderInAttributesIdpTypeEnum; } -export type JsonApiIdentityProviderPatchAttributesIdpTypeEnum = +export type JsonApiIdentityProviderInAttributesIdpTypeEnum = | "MANAGED_IDP" | "FIM_IDP" | "DEX_IDP" | "CUSTOM_IDP"; +export interface JsonApiIdentityProviderInDocument { + data: JsonApiIdentityProviderIn; +} + +/** + * The \\\"type\\\" and \\\"id\\\" to non-empty members. + */ +export interface JsonApiIdentityProviderLinkage { + id: string; + type: JsonApiIdentityProviderLinkageTypeEnum; +} + +export type JsonApiIdentityProviderLinkageTypeEnum = "identityProvider"; + +/** + * JSON:API representation of identityProvider entity. + */ +export interface JsonApiIdentityProviderOut { + /** + * Object type + */ + type: JsonApiIdentityProviderOutTypeEnum; + /** + * API identifier of an object + */ + id: string; + attributes?: JsonApiIdentityProviderOutAttributes; +} + +export type JsonApiIdentityProviderOutTypeEnum = "identityProvider"; + +export interface JsonApiIdentityProviderOutAttributes { + /** + * List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP. + */ + identifiers?: Array; + /** + * Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute. + */ + customClaimMapping?: { [key: string]: string }; + /** + * The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP. + */ + oauthClientId?: string; + /** + * The location of your OIDC provider. This field is mandatory for OIDC IdP. + */ + oauthIssuerLocation?: string; + /** + * Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider. + */ + oauthIssuerId?: string; + /** + * Any string identifying the claim in ID token, that should be used for user identification. The default value is \'sub\'. + */ + oauthSubjectIdClaim?: string; + /** + * Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute. + */ + oauthCustomAuthAttributes?: { [key: string]: string }; + /** + * List of additional OAuth scopes which may be required by other providers (e.g. Snowflake) + */ + oauthCustomScopes?: Array | null; + /** + * Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer\'s own IdP, protected from deletion if currently used by org for authentication, deletable otherwise. + */ + idpType?: JsonApiIdentityProviderOutAttributesIdpTypeEnum; +} + +export type JsonApiIdentityProviderOutAttributesIdpTypeEnum = + | "MANAGED_IDP" + | "FIM_IDP" + | "DEX_IDP" + | "CUSTOM_IDP"; + +export interface JsonApiIdentityProviderOutDocument { + data: JsonApiIdentityProviderOut; + links?: ObjectLinks; +} + +/** + * A JSON:API document with a list of resources + */ +export interface JsonApiIdentityProviderOutList { + data: Array; + links?: ListLinks; + meta?: JsonApiColorPaletteOutListMeta; +} + +export interface JsonApiIdentityProviderOutWithLinks { + /** + * Object type + */ + type: JsonApiIdentityProviderOutWithLinksTypeEnum; + /** + * API identifier of an object + */ + id: string; + attributes?: JsonApiIdentityProviderOutAttributes; + links?: ObjectLinks; +} + +export type JsonApiIdentityProviderOutWithLinksTypeEnum = "identityProvider"; + +/** + * JSON:API representation of patching identityProvider entity. + */ +export interface JsonApiIdentityProviderPatch { + /** + * Object type + */ + type: JsonApiIdentityProviderPatchTypeEnum; + /** + * API identifier of an object + */ + id: string; + attributes?: JsonApiIdentityProviderInAttributes; +} + +export type JsonApiIdentityProviderPatchTypeEnum = "identityProvider"; + export interface JsonApiIdentityProviderPatchDocument { data: JsonApiIdentityProviderPatch; } @@ -6604,7 +7808,7 @@ export interface JsonApiJwkIn { * API identifier of an object */ id: string; - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; } export type JsonApiJwkInTypeEnum = "jwk"; @@ -6625,11 +7829,15 @@ export interface JsonApiJwkOut { * API identifier of an object */ id: string; - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; } export type JsonApiJwkOutTypeEnum = "jwk"; +export interface JsonApiJwkOutAttributes { + content?: RsaSpecification; +} + export interface JsonApiJwkOutDocument { data: JsonApiJwkOut; links?: ObjectLinks; @@ -6641,7 +7849,7 @@ export interface JsonApiJwkOutDocument { export interface JsonApiJwkOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiJwkOutWithLinks { @@ -6653,7 +7861,7 @@ export interface JsonApiJwkOutWithLinks { * API identifier of an object */ id: string; - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; links?: ObjectLinks; } @@ -6671,15 +7879,11 @@ export interface JsonApiJwkPatch { * API identifier of an object */ id: string; - attributes?: JsonApiJwkPatchAttributes; + attributes?: JsonApiJwkOutAttributes; } export type JsonApiJwkPatchTypeEnum = "jwk"; -export interface JsonApiJwkPatchAttributes { - content?: RsaSpecification; -} - export interface JsonApiJwkPatchDocument { data: JsonApiJwkPatch; } @@ -6696,16 +7900,89 @@ export interface JsonApiKnowledgeRecommendationIn { * API identifier of an object */ id: string; - attributes: JsonApiKnowledgeRecommendationPostOptionalIdAttributes; - relationships: JsonApiKnowledgeRecommendationPostOptionalIdRelationships; + attributes: JsonApiKnowledgeRecommendationInAttributes; + relationships: JsonApiKnowledgeRecommendationInRelationships; } export type JsonApiKnowledgeRecommendationInTypeEnum = "knowledgeRecommendation"; +export interface JsonApiKnowledgeRecommendationInAttributes { + /** + * Human-readable title for the recommendation, e.g. \'Revenue decreased vs last month\' + */ + title: string; + /** + * Description of the recommendation + */ + description?: string; + tags?: Array; + areRelationsValid?: boolean; + /** + * Human-readable title of the metric (denormalized for display) + */ + metricTitle?: string; + /** + * Direction of the metric change + */ + direction: JsonApiKnowledgeRecommendationInAttributesDirectionEnum; + /** + * Time period for comparison + */ + comparisonType: JsonApiKnowledgeRecommendationInAttributesComparisonTypeEnum; + /** + * ID of the widget where the anomaly was detected + */ + widgetId?: string; + /** + * Name of the widget where the anomaly was detected + */ + widgetName?: string; + /** + * Confidence score (0.0 to 1.0) + */ + confidence?: any; + /** + * Structured recommendations data as JSON + */ + recommendations?: object; + /** + * Number of source documents used for generation + */ + sourceCount?: number; + /** + * Reference time period for comparison (e.g., \'2023-06\' or \'Jun 2023\') + */ + referencePeriod?: string; + /** + * Analyzed time period (e.g., \'2023-07\' or \'July 2023\') + */ + analyzedPeriod?: string; + /** + * Metric value in the reference period + */ + referenceValue?: any; + /** + * Metric value in the analyzed period (the observed value that triggered the anomaly) + */ + analyzedValue?: any; + /** + * Human-readable title of the analytical dashboard (denormalized for display) + */ + analyticalDashboardTitle?: string; +} + +export type JsonApiKnowledgeRecommendationInAttributesDirectionEnum = "INCREASED" | "DECREASED"; +export type JsonApiKnowledgeRecommendationInAttributesComparisonTypeEnum = "MONTH" | "QUARTER" | "YEAR"; + export interface JsonApiKnowledgeRecommendationInDocument { data: JsonApiKnowledgeRecommendationIn; } +export interface JsonApiKnowledgeRecommendationInRelationships { + metric: JsonApiKnowledgeRecommendationOutRelationshipsMetric; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; +} + /** * JSON:API representation of knowledgeRecommendation entity. */ @@ -6718,9 +7995,9 @@ export interface JsonApiKnowledgeRecommendationOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiKnowledgeRecommendationOutAttributes; - relationships?: JsonApiKnowledgeRecommendationPatchRelationships; + relationships?: JsonApiKnowledgeRecommendationOutRelationships; } export type JsonApiKnowledgeRecommendationOutTypeEnum = "knowledgeRecommendation"; @@ -6768,6 +8045,26 @@ export interface JsonApiKnowledgeRecommendationOutAttributes { * Number of source documents used for generation */ sourceCount?: number; + /** + * Reference time period for comparison (e.g., \'2023-06\' or \'Jun 2023\') + */ + referencePeriod?: string; + /** + * Analyzed time period (e.g., \'2023-07\' or \'July 2023\') + */ + analyzedPeriod?: string; + /** + * Metric value in the reference period + */ + referenceValue?: any; + /** + * Metric value in the analyzed period (the observed value that triggered the anomaly) + */ + analyzedValue?: any; + /** + * Human-readable title of the analytical dashboard (denormalized for display) + */ + analyticalDashboardTitle?: string; createdAt?: string; } @@ -6796,13 +8093,22 @@ export type JsonApiKnowledgeRecommendationOutIncludes = export interface JsonApiKnowledgeRecommendationOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ included?: Array; } +export interface JsonApiKnowledgeRecommendationOutRelationships { + metric?: JsonApiKnowledgeRecommendationOutRelationshipsMetric; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; +} + +export interface JsonApiKnowledgeRecommendationOutRelationshipsMetric { + data: JsonApiMetricLinkage | null; +} + export interface JsonApiKnowledgeRecommendationOutWithLinks { /** * Object type @@ -6812,9 +8118,9 @@ export interface JsonApiKnowledgeRecommendationOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiKnowledgeRecommendationOutAttributes; - relationships?: JsonApiKnowledgeRecommendationPatchRelationships; + relationships?: JsonApiKnowledgeRecommendationOutRelationships; links?: ObjectLinks; } @@ -6833,7 +8139,7 @@ export interface JsonApiKnowledgeRecommendationPatch { */ id: string; attributes: JsonApiKnowledgeRecommendationPatchAttributes; - relationships: JsonApiKnowledgeRecommendationPatchRelationships; + relationships: JsonApiKnowledgeRecommendationOutRelationships; } export type JsonApiKnowledgeRecommendationPatchTypeEnum = "knowledgeRecommendation"; @@ -6881,6 +8187,26 @@ export interface JsonApiKnowledgeRecommendationPatchAttributes { * Number of source documents used for generation */ sourceCount?: number; + /** + * Reference time period for comparison (e.g., \'2023-06\' or \'Jun 2023\') + */ + referencePeriod?: string; + /** + * Analyzed time period (e.g., \'2023-07\' or \'July 2023\') + */ + analyzedPeriod?: string; + /** + * Metric value in the reference period + */ + referenceValue?: any; + /** + * Metric value in the analyzed period (the observed value that triggered the anomaly) + */ + analyzedValue?: any; + /** + * Human-readable title of the analytical dashboard (denormalized for display) + */ + analyticalDashboardTitle?: string; } export type JsonApiKnowledgeRecommendationPatchAttributesDirectionEnum = "INCREASED" | "DECREASED"; @@ -6890,15 +8216,6 @@ export interface JsonApiKnowledgeRecommendationPatchDocument { data: JsonApiKnowledgeRecommendationPatch; } -export interface JsonApiKnowledgeRecommendationPatchRelationships { - metric?: JsonApiKnowledgeRecommendationPatchRelationshipsMetric; - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; -} - -export interface JsonApiKnowledgeRecommendationPatchRelationshipsMetric { - data: JsonApiMetricLinkage | null; -} - /** * JSON:API representation of knowledgeRecommendation entity. */ @@ -6911,72 +8228,16 @@ export interface JsonApiKnowledgeRecommendationPostOptionalId { * API identifier of an object */ id?: string; - attributes: JsonApiKnowledgeRecommendationPostOptionalIdAttributes; - relationships: JsonApiKnowledgeRecommendationPostOptionalIdRelationships; + attributes: JsonApiKnowledgeRecommendationInAttributes; + relationships: JsonApiKnowledgeRecommendationInRelationships; } export type JsonApiKnowledgeRecommendationPostOptionalIdTypeEnum = "knowledgeRecommendation"; -export interface JsonApiKnowledgeRecommendationPostOptionalIdAttributes { - /** - * Human-readable title for the recommendation, e.g. \'Revenue decreased vs last month\' - */ - title: string; - /** - * Description of the recommendation - */ - description?: string; - tags?: Array; - areRelationsValid?: boolean; - /** - * Human-readable title of the metric (denormalized for display) - */ - metricTitle?: string; - /** - * Direction of the metric change - */ - direction: JsonApiKnowledgeRecommendationPostOptionalIdAttributesDirectionEnum; - /** - * Time period for comparison - */ - comparisonType: JsonApiKnowledgeRecommendationPostOptionalIdAttributesComparisonTypeEnum; - /** - * ID of the widget where the anomaly was detected - */ - widgetId?: string; - /** - * Name of the widget where the anomaly was detected - */ - widgetName?: string; - /** - * Confidence score (0.0 to 1.0) - */ - confidence?: any; - /** - * Structured recommendations data as JSON - */ - recommendations?: object; - /** - * Number of source documents used for generation - */ - sourceCount?: number; -} - -export type JsonApiKnowledgeRecommendationPostOptionalIdAttributesDirectionEnum = "INCREASED" | "DECREASED"; -export type JsonApiKnowledgeRecommendationPostOptionalIdAttributesComparisonTypeEnum = - | "MONTH" - | "QUARTER" - | "YEAR"; - export interface JsonApiKnowledgeRecommendationPostOptionalIdDocument { data: JsonApiKnowledgeRecommendationPostOptionalId; } -export interface JsonApiKnowledgeRecommendationPostOptionalIdRelationships { - metric: JsonApiKnowledgeRecommendationPatchRelationshipsMetric; - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; -} - /** * The \\\"type\\\" and \\\"id\\\" to non-empty members. */ @@ -6999,7 +8260,7 @@ export interface JsonApiLabelOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiLabelOutAttributes; relationships?: JsonApiLabelOutRelationships; } @@ -7042,7 +8303,7 @@ export type JsonApiLabelOutAttributesValueTypeEnum = * Configuration specific to geo area labels. */ export interface JsonApiLabelOutAttributesGeoAreaConfig { - collection: GeoCollection; + collection: GeoCollectionIdentifier; } export interface JsonApiLabelOutAttributesTranslationsInner { @@ -7065,7 +8326,7 @@ export interface JsonApiLabelOutDocument { export interface JsonApiLabelOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -7089,7 +8350,7 @@ export interface JsonApiLabelOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiLabelOutAttributes; relationships?: JsonApiLabelOutRelationships; links?: ObjectLinks; @@ -7221,7 +8482,7 @@ export interface JsonApiLlmEndpointOutDocument { export interface JsonApiLlmEndpointOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiLlmEndpointOutWithLinks { @@ -7301,11 +8562,36 @@ export interface JsonApiMemoryItemIn { * API identifier of an object */ id: string; - attributes: JsonApiMemoryItemPostOptionalIdAttributes; + attributes: JsonApiMemoryItemInAttributes; } export type JsonApiMemoryItemInTypeEnum = "memoryItem"; +export interface JsonApiMemoryItemInAttributes { + title?: string; + description?: string; + tags?: Array; + areRelationsValid?: boolean; + /** + * Strategy defining when the memory item should be applied + */ + strategy: JsonApiMemoryItemInAttributesStrategyEnum; + /** + * The text that will be injected into the system prompt + */ + instruction: string; + /** + * Set of unique strings used for semantic similarity filtering + */ + keywords?: Array; + /** + * Whether memory item is disabled + */ + isDisabled?: boolean; +} + +export type JsonApiMemoryItemInAttributesStrategyEnum = "ALWAYS" | "AUTO"; + export interface JsonApiMemoryItemInDocument { data: JsonApiMemoryItemIn; } @@ -7322,7 +8608,7 @@ export interface JsonApiMemoryItemOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiMemoryItemOutAttributes; relationships?: JsonApiDashboardPluginOutRelationships; } @@ -7371,7 +8657,7 @@ export interface JsonApiMemoryItemOutDocument { export interface JsonApiMemoryItemOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -7387,7 +8673,7 @@ export interface JsonApiMemoryItemOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiMemoryItemOutAttributes; relationships?: JsonApiDashboardPluginOutRelationships; links?: ObjectLinks; @@ -7453,36 +8739,11 @@ export interface JsonApiMemoryItemPostOptionalId { * API identifier of an object */ id?: string; - attributes: JsonApiMemoryItemPostOptionalIdAttributes; + attributes: JsonApiMemoryItemInAttributes; } export type JsonApiMemoryItemPostOptionalIdTypeEnum = "memoryItem"; -export interface JsonApiMemoryItemPostOptionalIdAttributes { - title?: string; - description?: string; - tags?: Array; - areRelationsValid?: boolean; - /** - * Strategy defining when the memory item should be applied - */ - strategy: JsonApiMemoryItemPostOptionalIdAttributesStrategyEnum; - /** - * The text that will be injected into the system prompt - */ - instruction: string; - /** - * Set of unique strings used for semantic similarity filtering - */ - keywords?: Array; - /** - * Whether memory item is disabled - */ - isDisabled?: boolean; -} - -export type JsonApiMemoryItemPostOptionalIdAttributesStrategyEnum = "ALWAYS" | "AUTO"; - export interface JsonApiMemoryItemPostOptionalIdDocument { data: JsonApiMemoryItemPostOptionalId; } @@ -7499,11 +8760,20 @@ export interface JsonApiMetricIn { * API identifier of an object */ id: string; - attributes: JsonApiMetricPostOptionalIdAttributes; + attributes: JsonApiMetricInAttributes; } export type JsonApiMetricInTypeEnum = "metric"; +export interface JsonApiMetricInAttributes { + title?: string; + description?: string; + tags?: Array; + areRelationsValid?: boolean; + content: JsonApiMetricOutAttributesContent; + isHidden?: boolean; +} + export interface JsonApiMetricInDocument { data: JsonApiMetricIn; } @@ -7530,7 +8800,7 @@ export interface JsonApiMetricOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiMetricOutAttributes; relationships?: JsonApiVisualizationObjectOutRelationships; } @@ -7588,7 +8858,7 @@ export type JsonApiMetricOutIncludes = export interface JsonApiMetricOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -7604,7 +8874,7 @@ export interface JsonApiMetricOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiMetricOutAttributes; relationships?: JsonApiVisualizationObjectOutRelationships; links?: ObjectLinks; @@ -7654,20 +8924,11 @@ export interface JsonApiMetricPostOptionalId { * API identifier of an object */ id?: string; - attributes: JsonApiMetricPostOptionalIdAttributes; + attributes: JsonApiMetricInAttributes; } export type JsonApiMetricPostOptionalIdTypeEnum = "metric"; -export interface JsonApiMetricPostOptionalIdAttributes { - title?: string; - description?: string; - tags?: Array; - areRelationsValid?: boolean; - content: JsonApiMetricOutAttributesContent; - isHidden?: boolean; -} - export interface JsonApiMetricPostOptionalIdDocument { data: JsonApiMetricPostOptionalId; } @@ -7720,7 +8981,7 @@ export interface JsonApiNotificationChannelIdentifierOutDocument { export interface JsonApiNotificationChannelIdentifierOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiNotificationChannelIdentifierOutWithLinks { @@ -7750,7 +9011,7 @@ export interface JsonApiNotificationChannelIn { * API identifier of an object */ id: string; - attributes?: JsonApiNotificationChannelPatchAttributes; + attributes?: JsonApiNotificationChannelPostOptionalIdAttributes; } export type JsonApiNotificationChannelInTypeEnum = "notificationChannel"; @@ -7789,7 +9050,7 @@ export type JsonApiNotificationChannelOutTypeEnum = "notificationChannel"; export interface JsonApiNotificationChannelOutAttributes { name?: string | null; description?: string | null; - destination?: JsonApiNotificationChannelPatchAttributesDestination; + destination?: JsonApiNotificationChannelOutAttributesDestination; destinationType?: JsonApiNotificationChannelOutAttributesDestinationTypeEnum | null; /** * Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are: {workspaceId} {dashboardId} {automationId} {asOfDate} @@ -7828,6 +9089,12 @@ export type JsonApiNotificationChannelOutAttributesAllowedRecipientsEnum = | "EXTERNAL"; export type JsonApiNotificationChannelOutAttributesInPlatformNotificationEnum = "DISABLED" | "ENABLED"; +/** + * @type JsonApiNotificationChannelOutAttributesDestination + * The destination where the notifications are to be sent. + */ +export type JsonApiNotificationChannelOutAttributesDestination = DefaultSmtp | InPlatform | Smtp | Webhook; + export interface JsonApiNotificationChannelOutDocument { data: JsonApiNotificationChannelOut; links?: ObjectLinks; @@ -7839,7 +9106,7 @@ export interface JsonApiNotificationChannelOutDocument { export interface JsonApiNotificationChannelOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiNotificationChannelOutWithLinks { @@ -7869,15 +9136,36 @@ export interface JsonApiNotificationChannelPatch { * API identifier of an object */ id: string; - attributes?: JsonApiNotificationChannelPatchAttributes; + attributes?: JsonApiNotificationChannelPostOptionalIdAttributes; } export type JsonApiNotificationChannelPatchTypeEnum = "notificationChannel"; -export interface JsonApiNotificationChannelPatchAttributes { +export interface JsonApiNotificationChannelPatchDocument { + data: JsonApiNotificationChannelPatch; +} + +/** + * JSON:API representation of notificationChannel entity. + */ +export interface JsonApiNotificationChannelPostOptionalId { + /** + * Object type + */ + type: JsonApiNotificationChannelPostOptionalIdTypeEnum; + /** + * API identifier of an object + */ + id?: string; + attributes?: JsonApiNotificationChannelPostOptionalIdAttributes; +} + +export type JsonApiNotificationChannelPostOptionalIdTypeEnum = "notificationChannel"; + +export interface JsonApiNotificationChannelPostOptionalIdAttributes { name?: string | null; description?: string | null; - destination?: JsonApiNotificationChannelPatchAttributesDestination; + destination?: JsonApiNotificationChannelOutAttributesDestination; /** * Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are: {workspaceId} {dashboardId} {automationId} {asOfDate} */ @@ -7885,7 +9173,7 @@ export interface JsonApiNotificationChannelPatchAttributes { /** * Dashboard link visibility in notifications. HIDDEN - the link will not be included INTERNAL_ONLY - only internal users will see the link ALL - all users will see the link */ - dashboardLinkVisibility?: JsonApiNotificationChannelPatchAttributesDashboardLinkVisibilityEnum; + dashboardLinkVisibility?: JsonApiNotificationChannelPostOptionalIdAttributesDashboardLinkVisibilityEnum; /** * Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are: {{workspaceId}} {{workspaceName}} {{workspaceDescription}} {{dashboardId}} {{dashboardName}} {{dashboardDescription}} */ @@ -7893,49 +9181,24 @@ export interface JsonApiNotificationChannelPatchAttributes { /** * Allowed recipients of notifications from this channel. CREATOR - only the creator INTERNAL - all users within the organization EXTERNAL - all recipients including those outside the organization */ - allowedRecipients?: JsonApiNotificationChannelPatchAttributesAllowedRecipientsEnum; + allowedRecipients?: JsonApiNotificationChannelPostOptionalIdAttributesAllowedRecipientsEnum; /** * In-platform notifications configuration. No effect if the destination type is IN_PLATFORM. DISABLED - in-platform notifications are not sent ENABLED - in-platform notifications are sent in addition to the regular notifications */ - inPlatformNotification?: JsonApiNotificationChannelPatchAttributesInPlatformNotificationEnum; + inPlatformNotification?: JsonApiNotificationChannelPostOptionalIdAttributesInPlatformNotificationEnum; } -export type JsonApiNotificationChannelPatchAttributesDashboardLinkVisibilityEnum = +export type JsonApiNotificationChannelPostOptionalIdAttributesDashboardLinkVisibilityEnum = | "HIDDEN" | "INTERNAL_ONLY" | "ALL"; -export type JsonApiNotificationChannelPatchAttributesAllowedRecipientsEnum = +export type JsonApiNotificationChannelPostOptionalIdAttributesAllowedRecipientsEnum = | "CREATOR" | "INTERNAL" | "EXTERNAL"; -export type JsonApiNotificationChannelPatchAttributesInPlatformNotificationEnum = "DISABLED" | "ENABLED"; - -/** - * @type JsonApiNotificationChannelPatchAttributesDestination - * The destination where the notifications are to be sent. - */ -export type JsonApiNotificationChannelPatchAttributesDestination = DefaultSmtp | InPlatform | Smtp | Webhook; - -export interface JsonApiNotificationChannelPatchDocument { - data: JsonApiNotificationChannelPatch; -} - -/** - * JSON:API representation of notificationChannel entity. - */ -export interface JsonApiNotificationChannelPostOptionalId { - /** - * Object type - */ - type: JsonApiNotificationChannelPostOptionalIdTypeEnum; - /** - * API identifier of an object - */ - id?: string; - attributes?: JsonApiNotificationChannelPatchAttributes; -} - -export type JsonApiNotificationChannelPostOptionalIdTypeEnum = "notificationChannel"; +export type JsonApiNotificationChannelPostOptionalIdAttributesInPlatformNotificationEnum = + | "DISABLED" + | "ENABLED"; export interface JsonApiNotificationChannelPostOptionalIdDocument { data: JsonApiNotificationChannelPostOptionalId; @@ -8032,13 +9295,17 @@ export interface JsonApiOrganizationOutMeta { export type JsonApiOrganizationOutMetaPermissionsEnum = "MANAGE" | "SELF_CREATE_TOKEN"; export interface JsonApiOrganizationOutRelationships { - bootstrapUser?: JsonApiFilterViewPatchRelationshipsUser; - bootstrapUserGroup?: JsonApiUserDataFilterPatchRelationshipsUserGroup; - identityProvider?: JsonApiOrganizationOutRelationshipsIdentityProvider; + bootstrapUser?: JsonApiOrganizationOutRelationshipsBootstrapUser; + bootstrapUserGroup?: JsonApiOrganizationOutRelationshipsBootstrapUserGroup; + identityProvider?: JsonApiOrganizationPatchRelationshipsIdentityProvider; } -export interface JsonApiOrganizationOutRelationshipsIdentityProvider { - data: JsonApiIdentityProviderLinkage | null; +export interface JsonApiOrganizationOutRelationshipsBootstrapUser { + data: JsonApiUserLinkage | null; +} + +export interface JsonApiOrganizationOutRelationshipsBootstrapUserGroup { + data: JsonApiUserGroupLinkage | null; } /** @@ -8079,7 +9346,11 @@ export interface JsonApiOrganizationPatchDocument { } export interface JsonApiOrganizationPatchRelationships { - identityProvider?: JsonApiOrganizationOutRelationshipsIdentityProvider; + identityProvider?: JsonApiOrganizationPatchRelationshipsIdentityProvider; +} + +export interface JsonApiOrganizationPatchRelationshipsIdentityProvider { + data: JsonApiIdentityProviderLinkage | null; } /** @@ -8094,7 +9365,7 @@ export interface JsonApiOrganizationSettingIn { * API identifier of an object */ id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiOrganizationSettingInTypeEnum = "organizationSetting"; @@ -8115,66 +9386,20 @@ export interface JsonApiOrganizationSettingOut { * API identifier of an object */ id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiOrganizationSettingOutTypeEnum = "organizationSetting"; -export interface JsonApiOrganizationSettingOutDocument { - data: JsonApiOrganizationSettingOut; - links?: ObjectLinks; -} - -/** - * A JSON:API document with a list of resources - */ -export interface JsonApiOrganizationSettingOutList { - data: Array; - links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; -} - -export interface JsonApiOrganizationSettingOutWithLinks { - /** - * Object type - */ - type: JsonApiOrganizationSettingOutWithLinksTypeEnum; - /** - * API identifier of an object - */ - id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; - links?: ObjectLinks; -} - -export type JsonApiOrganizationSettingOutWithLinksTypeEnum = "organizationSetting"; - -/** - * JSON:API representation of patching organizationSetting entity. - */ -export interface JsonApiOrganizationSettingPatch { - /** - * Object type - */ - type: JsonApiOrganizationSettingPatchTypeEnum; - /** - * API identifier of an object - */ - id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; -} - -export type JsonApiOrganizationSettingPatchTypeEnum = "organizationSetting"; - -export interface JsonApiOrganizationSettingPatchAttributes { +export interface JsonApiOrganizationSettingOutAttributes { /** * Free-form JSON content. Maximum supported length is 15000 characters. */ content?: object; - type?: JsonApiOrganizationSettingPatchAttributesTypeEnum; + type?: JsonApiOrganizationSettingOutAttributesTypeEnum; } -export type JsonApiOrganizationSettingPatchAttributesTypeEnum = +export type JsonApiOrganizationSettingOutAttributesTypeEnum = | "TIMEZONE" | "ACTIVE_THEME" | "ACTIVE_COLOR_PALETTE" @@ -8218,6 +9443,52 @@ export type JsonApiOrganizationSettingPatchAttributesTypeEnum = | "METRIC_FORMAT_OVERRIDE" | "ENABLE_AI_ON_DATA"; +export interface JsonApiOrganizationSettingOutDocument { + data: JsonApiOrganizationSettingOut; + links?: ObjectLinks; +} + +/** + * A JSON:API document with a list of resources + */ +export interface JsonApiOrganizationSettingOutList { + data: Array; + links?: ListLinks; + meta?: JsonApiColorPaletteOutListMeta; +} + +export interface JsonApiOrganizationSettingOutWithLinks { + /** + * Object type + */ + type: JsonApiOrganizationSettingOutWithLinksTypeEnum; + /** + * API identifier of an object + */ + id: string; + attributes?: JsonApiOrganizationSettingOutAttributes; + links?: ObjectLinks; +} + +export type JsonApiOrganizationSettingOutWithLinksTypeEnum = "organizationSetting"; + +/** + * JSON:API representation of patching organizationSetting entity. + */ +export interface JsonApiOrganizationSettingPatch { + /** + * Object type + */ + type: JsonApiOrganizationSettingPatchTypeEnum; + /** + * API identifier of an object + */ + id: string; + attributes?: JsonApiOrganizationSettingOutAttributes; +} + +export type JsonApiOrganizationSettingPatchTypeEnum = "organizationSetting"; + export interface JsonApiOrganizationSettingPatchDocument { data: JsonApiOrganizationSettingPatch; } @@ -8271,7 +9542,7 @@ export interface JsonApiThemeOutDocument { export interface JsonApiThemeOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiThemeOutWithLinks { @@ -8323,7 +9594,7 @@ export interface JsonApiUserDataFilterIn { */ id: string; attributes: JsonApiUserDataFilterOutAttributes; - relationships?: JsonApiUserDataFilterPatchRelationships; + relationships?: JsonApiUserDataFilterInRelationships; } export type JsonApiUserDataFilterInTypeEnum = "userDataFilter"; @@ -8332,6 +9603,11 @@ export interface JsonApiUserDataFilterInDocument { data: JsonApiUserDataFilterIn; } +export interface JsonApiUserDataFilterInRelationships { + user?: JsonApiOrganizationOutRelationshipsBootstrapUser; + userGroup?: JsonApiOrganizationOutRelationshipsBootstrapUserGroup; +} + /** * JSON:API representation of userDataFilter entity. */ @@ -8344,7 +9620,7 @@ export interface JsonApiUserDataFilterOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiUserDataFilterOutAttributes; relationships?: JsonApiUserDataFilterOutRelationships; } @@ -8386,7 +9662,7 @@ export type JsonApiUserDataFilterOutIncludes = export interface JsonApiUserDataFilterOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -8394,13 +9670,13 @@ export interface JsonApiUserDataFilterOutList { } export interface JsonApiUserDataFilterOutRelationships { - user?: JsonApiFilterViewPatchRelationshipsUser; - userGroup?: JsonApiUserDataFilterPatchRelationshipsUserGroup; - facts?: JsonApiVisualizationObjectOutRelationshipsFacts; - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + user?: JsonApiOrganizationOutRelationshipsBootstrapUser; + userGroup?: JsonApiOrganizationOutRelationshipsBootstrapUserGroup; + facts?: JsonApiDatasetOutRelationshipsFacts; + attributes?: JsonApiDatasetOutRelationshipsAttributes; labels?: JsonApiVisualizationObjectOutRelationshipsLabels; metrics?: JsonApiVisualizationObjectOutRelationshipsMetrics; - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; + datasets?: JsonApiDatasetOutRelationshipsReferences; } export interface JsonApiUserDataFilterOutWithLinks { @@ -8412,7 +9688,7 @@ export interface JsonApiUserDataFilterOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiUserDataFilterOutAttributes; relationships?: JsonApiUserDataFilterOutRelationships; links?: ObjectLinks; @@ -8433,7 +9709,7 @@ export interface JsonApiUserDataFilterPatch { */ id: string; attributes: JsonApiUserDataFilterPatchAttributes; - relationships?: JsonApiUserDataFilterPatchRelationships; + relationships?: JsonApiUserDataFilterInRelationships; } export type JsonApiUserDataFilterPatchTypeEnum = "userDataFilter"; @@ -8450,15 +9726,6 @@ export interface JsonApiUserDataFilterPatchDocument { data: JsonApiUserDataFilterPatch; } -export interface JsonApiUserDataFilterPatchRelationships { - user?: JsonApiFilterViewPatchRelationshipsUser; - userGroup?: JsonApiUserDataFilterPatchRelationshipsUserGroup; -} - -export interface JsonApiUserDataFilterPatchRelationshipsUserGroup { - data: JsonApiUserGroupLinkage | null; -} - /** * JSON:API representation of userDataFilter entity. */ @@ -8472,7 +9739,7 @@ export interface JsonApiUserDataFilterPostOptionalId { */ id?: string; attributes: JsonApiUserDataFilterOutAttributes; - relationships?: JsonApiUserDataFilterPatchRelationships; + relationships?: JsonApiUserDataFilterInRelationships; } export type JsonApiUserDataFilterPostOptionalIdTypeEnum = "userDataFilter"; @@ -8493,8 +9760,8 @@ export interface JsonApiUserGroupIn { * API identifier of an object */ id: string; - attributes?: JsonApiUserGroupPatchAttributes; - relationships?: JsonApiUserGroupPatchRelationships; + attributes?: JsonApiUserGroupOutAttributes; + relationships?: JsonApiUserGroupOutRelationships; } export type JsonApiUserGroupInTypeEnum = "userGroup"; @@ -8525,12 +9792,16 @@ export interface JsonApiUserGroupOut { * API identifier of an object */ id: string; - attributes?: JsonApiUserGroupPatchAttributes; - relationships?: JsonApiUserGroupPatchRelationships; + attributes?: JsonApiUserGroupOutAttributes; + relationships?: JsonApiUserGroupOutRelationships; } export type JsonApiUserGroupOutTypeEnum = "userGroup"; +export interface JsonApiUserGroupOutAttributes { + name?: string; +} + export interface JsonApiUserGroupOutDocument { data: JsonApiUserGroupOut; links?: ObjectLinks; @@ -8546,13 +9817,24 @@ export interface JsonApiUserGroupOutDocument { export interface JsonApiUserGroupOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ included?: Array; } +export interface JsonApiUserGroupOutRelationships { + parents?: JsonApiUserGroupOutRelationshipsParents; +} + +export interface JsonApiUserGroupOutRelationshipsParents { + /** + * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. + */ + data: Array; +} + export interface JsonApiUserGroupOutWithLinks { /** * Object type @@ -8562,8 +9844,8 @@ export interface JsonApiUserGroupOutWithLinks { * API identifier of an object */ id: string; - attributes?: JsonApiUserGroupPatchAttributes; - relationships?: JsonApiUserGroupPatchRelationships; + attributes?: JsonApiUserGroupOutAttributes; + relationships?: JsonApiUserGroupOutRelationships; links?: ObjectLinks; } @@ -8581,31 +9863,16 @@ export interface JsonApiUserGroupPatch { * API identifier of an object */ id: string; - attributes?: JsonApiUserGroupPatchAttributes; - relationships?: JsonApiUserGroupPatchRelationships; + attributes?: JsonApiUserGroupOutAttributes; + relationships?: JsonApiUserGroupOutRelationships; } export type JsonApiUserGroupPatchTypeEnum = "userGroup"; -export interface JsonApiUserGroupPatchAttributes { - name?: string; -} - export interface JsonApiUserGroupPatchDocument { data: JsonApiUserGroupPatch; } -export interface JsonApiUserGroupPatchRelationships { - parents?: JsonApiUserGroupPatchRelationshipsParents; -} - -export interface JsonApiUserGroupPatchRelationshipsParents { - /** - * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. - */ - data: Array; -} - /** * The \\\"type\\\" and \\\"id\\\" to non-empty members. */ @@ -8650,7 +9917,7 @@ export interface JsonApiUserIdentifierOutDocument { export interface JsonApiUserIdentifierOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiUserIdentifierOutWithLinks { @@ -8680,8 +9947,8 @@ export interface JsonApiUserIn { * API identifier of an object */ id: string; - attributes?: JsonApiUserPatchAttributes; - relationships?: JsonApiUserPatchRelationships; + attributes?: JsonApiUserOutAttributes; + relationships?: JsonApiUserOutRelationships; } export type JsonApiUserInTypeEnum = "user"; @@ -8712,12 +9979,19 @@ export interface JsonApiUserOut { * API identifier of an object */ id: string; - attributes?: JsonApiUserPatchAttributes; - relationships?: JsonApiUserPatchRelationships; + attributes?: JsonApiUserOutAttributes; + relationships?: JsonApiUserOutRelationships; } export type JsonApiUserOutTypeEnum = "user"; +export interface JsonApiUserOutAttributes { + authenticationId?: string; + firstname?: string; + lastname?: string; + email?: string; +} + export interface JsonApiUserOutDocument { data: JsonApiUserOut; links?: ObjectLinks; @@ -8733,13 +10007,17 @@ export interface JsonApiUserOutDocument { export interface JsonApiUserOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ included?: Array; } +export interface JsonApiUserOutRelationships { + userGroups?: JsonApiUserGroupOutRelationshipsParents; +} + export interface JsonApiUserOutWithLinks { /** * Object type @@ -8749,8 +10027,8 @@ export interface JsonApiUserOutWithLinks { * API identifier of an object */ id: string; - attributes?: JsonApiUserPatchAttributes; - relationships?: JsonApiUserPatchRelationships; + attributes?: JsonApiUserOutAttributes; + relationships?: JsonApiUserOutRelationships; links?: ObjectLinks; } @@ -8768,27 +10046,16 @@ export interface JsonApiUserPatch { * API identifier of an object */ id: string; - attributes?: JsonApiUserPatchAttributes; - relationships?: JsonApiUserPatchRelationships; + attributes?: JsonApiUserOutAttributes; + relationships?: JsonApiUserOutRelationships; } export type JsonApiUserPatchTypeEnum = "user"; -export interface JsonApiUserPatchAttributes { - authenticationId?: string; - firstname?: string; - lastname?: string; - email?: string; -} - export interface JsonApiUserPatchDocument { data: JsonApiUserPatch; } -export interface JsonApiUserPatchRelationships { - userGroups?: JsonApiUserGroupPatchRelationshipsParents; -} - /** * JSON:API representation of userSetting entity. */ @@ -8801,7 +10068,7 @@ export interface JsonApiUserSettingIn { * API identifier of an object */ id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiUserSettingInTypeEnum = "userSetting"; @@ -8822,7 +10089,7 @@ export interface JsonApiUserSettingOut { * API identifier of an object */ id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiUserSettingOutTypeEnum = "userSetting"; @@ -8838,7 +10105,7 @@ export interface JsonApiUserSettingOutDocument { export interface JsonApiUserSettingOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiUserSettingOutWithLinks { @@ -8850,7 +10117,7 @@ export interface JsonApiUserSettingOutWithLinks { * API identifier of an object */ id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; links?: ObjectLinks; } @@ -8868,11 +10135,23 @@ export interface JsonApiVisualizationObjectIn { * API identifier of an object */ id: string; - attributes: JsonApiVisualizationObjectPostOptionalIdAttributes; + attributes: JsonApiVisualizationObjectInAttributes; } export type JsonApiVisualizationObjectInTypeEnum = "visualizationObject"; +export interface JsonApiVisualizationObjectInAttributes { + title?: string; + description?: string; + tags?: Array; + areRelationsValid?: boolean; + /** + * Free-form JSON content. Maximum supported length is 250000 characters. + */ + content: object; + isHidden?: boolean; +} + export interface JsonApiVisualizationObjectInDocument { data: JsonApiVisualizationObjectIn; } @@ -8899,7 +10178,7 @@ export interface JsonApiVisualizationObjectOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiVisualizationObjectOutAttributes; relationships?: JsonApiVisualizationObjectOutRelationships; } @@ -8935,65 +10214,27 @@ export interface JsonApiVisualizationObjectOutDocument { export interface JsonApiVisualizationObjectOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ included?: Array; } -export interface JsonApiVisualizationObjectOutMeta { - origin?: JsonApiVisualizationObjectOutMetaOrigin; -} - -export interface JsonApiVisualizationObjectOutMetaOrigin { - /** - * defines type of the origin of the entity - */ - originType: JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum; - /** - * defines id of the workspace where the entity comes from - */ - originId: string; -} - -export type JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum = "NATIVE" | "PARENT"; - export interface JsonApiVisualizationObjectOutRelationships { createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; - facts?: JsonApiVisualizationObjectOutRelationshipsFacts; - attributes?: JsonApiVisualizationObjectOutRelationshipsAttributes; + facts?: JsonApiDatasetOutRelationshipsFacts; + attributes?: JsonApiDatasetOutRelationshipsAttributes; labels?: JsonApiVisualizationObjectOutRelationshipsLabels; metrics?: JsonApiVisualizationObjectOutRelationshipsMetrics; - datasets?: JsonApiVisualizationObjectOutRelationshipsDatasets; -} - -export interface JsonApiVisualizationObjectOutRelationshipsAttributes { - /** - * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. - */ - data: Array; + datasets?: JsonApiDatasetOutRelationshipsReferences; } export interface JsonApiVisualizationObjectOutRelationshipsCreatedBy { data: JsonApiUserIdentifierLinkage | null; } -export interface JsonApiVisualizationObjectOutRelationshipsDatasets { - /** - * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. - */ - data: Array; -} - -export interface JsonApiVisualizationObjectOutRelationshipsFacts { - /** - * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. - */ - data: Array; -} - export interface JsonApiVisualizationObjectOutRelationshipsLabels { /** * References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource\'s links object. @@ -9017,7 +10258,7 @@ export interface JsonApiVisualizationObjectOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes: JsonApiVisualizationObjectOutAttributes; relationships?: JsonApiVisualizationObjectOutRelationships; links?: ObjectLinks; @@ -9070,23 +10311,11 @@ export interface JsonApiVisualizationObjectPostOptionalId { * API identifier of an object */ id?: string; - attributes: JsonApiVisualizationObjectPostOptionalIdAttributes; + attributes: JsonApiVisualizationObjectInAttributes; } export type JsonApiVisualizationObjectPostOptionalIdTypeEnum = "visualizationObject"; -export interface JsonApiVisualizationObjectPostOptionalIdAttributes { - title?: string; - description?: string; - tags?: Array; - areRelationsValid?: boolean; - /** - * Free-form JSON content. Maximum supported length is 250000 characters. - */ - content: object; - isHidden?: boolean; -} - export interface JsonApiVisualizationObjectPostOptionalIdDocument { data: JsonApiVisualizationObjectPostOptionalId; } @@ -9127,7 +10356,7 @@ export type JsonApiWorkspaceAutomationOutIncludes = export interface JsonApiWorkspaceAutomationOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -9135,13 +10364,13 @@ export interface JsonApiWorkspaceAutomationOutList { } export interface JsonApiWorkspaceAutomationOutRelationships { - workspace?: JsonApiWorkspacePatchRelationshipsParent; - notificationChannel?: JsonApiAutomationPatchRelationshipsNotificationChannel; - analyticalDashboard?: JsonApiAutomationPatchRelationshipsAnalyticalDashboard; + workspace?: JsonApiWorkspaceOutRelationshipsParent; + notificationChannel?: JsonApiAutomationOutRelationshipsNotificationChannel; + analyticalDashboard?: JsonApiAutomationOutRelationshipsAnalyticalDashboard; createdBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; modifiedBy?: JsonApiVisualizationObjectOutRelationshipsCreatedBy; - exportDefinitions?: JsonApiAutomationPatchRelationshipsExportDefinitions; - recipients?: JsonApiAutomationPatchRelationshipsRecipients; + exportDefinitions?: JsonApiAutomationOutRelationshipsExportDefinitions; + recipients?: JsonApiAutomationOutRelationshipsRecipients; automationResults?: JsonApiAutomationOutRelationshipsAutomationResults; } @@ -9205,7 +10434,7 @@ export interface JsonApiWorkspaceDataFilterOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiWorkspaceDataFilterOutAttributes; relationships?: JsonApiWorkspaceDataFilterOutRelationships; } @@ -9233,7 +10462,7 @@ export interface JsonApiWorkspaceDataFilterOutDocument { export interface JsonApiWorkspaceDataFilterOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -9260,7 +10489,7 @@ export interface JsonApiWorkspaceDataFilterOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; attributes?: JsonApiWorkspaceDataFilterOutAttributes; relationships?: JsonApiWorkspaceDataFilterOutRelationships; links?: ObjectLinks; @@ -9302,8 +10531,8 @@ export interface JsonApiWorkspaceDataFilterSettingIn { * API identifier of an object */ id: string; - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; } export type JsonApiWorkspaceDataFilterSettingInTypeEnum = "workspaceDataFilterSetting"; @@ -9334,13 +10563,19 @@ export interface JsonApiWorkspaceDataFilterSettingOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + meta?: JsonApiDatasetOutMeta; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; } export type JsonApiWorkspaceDataFilterSettingOutTypeEnum = "workspaceDataFilterSetting"; +export interface JsonApiWorkspaceDataFilterSettingOutAttributes { + title?: string; + description?: string; + filterValues?: Array; +} + export interface JsonApiWorkspaceDataFilterSettingOutDocument { data: JsonApiWorkspaceDataFilterSettingOut; links?: ObjectLinks; @@ -9356,13 +10591,21 @@ export interface JsonApiWorkspaceDataFilterSettingOutDocument { export interface JsonApiWorkspaceDataFilterSettingOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ included?: Array; } +export interface JsonApiWorkspaceDataFilterSettingOutRelationships { + workspaceDataFilter?: JsonApiWorkspaceDataFilterSettingOutRelationshipsWorkspaceDataFilter; +} + +export interface JsonApiWorkspaceDataFilterSettingOutRelationshipsWorkspaceDataFilter { + data: JsonApiWorkspaceDataFilterLinkage | null; +} + export interface JsonApiWorkspaceDataFilterSettingOutWithLinks { /** * Object type @@ -9372,9 +10615,9 @@ export interface JsonApiWorkspaceDataFilterSettingOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + meta?: JsonApiDatasetOutMeta; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; links?: ObjectLinks; } @@ -9392,30 +10635,16 @@ export interface JsonApiWorkspaceDataFilterSettingPatch { * API identifier of an object */ id: string; - attributes?: JsonApiWorkspaceDataFilterSettingPatchAttributes; - relationships?: JsonApiWorkspaceDataFilterSettingPatchRelationships; + attributes?: JsonApiWorkspaceDataFilterSettingOutAttributes; + relationships?: JsonApiWorkspaceDataFilterSettingOutRelationships; } export type JsonApiWorkspaceDataFilterSettingPatchTypeEnum = "workspaceDataFilterSetting"; -export interface JsonApiWorkspaceDataFilterSettingPatchAttributes { - title?: string; - description?: string; - filterValues?: Array; -} - export interface JsonApiWorkspaceDataFilterSettingPatchDocument { data: JsonApiWorkspaceDataFilterSettingPatch; } -export interface JsonApiWorkspaceDataFilterSettingPatchRelationships { - workspaceDataFilter?: JsonApiWorkspaceDataFilterSettingPatchRelationshipsWorkspaceDataFilter; -} - -export interface JsonApiWorkspaceDataFilterSettingPatchRelationshipsWorkspaceDataFilter { - data: JsonApiWorkspaceDataFilterLinkage | null; -} - /** * JSON:API representation of workspace entity. */ @@ -9428,8 +10657,8 @@ export interface JsonApiWorkspaceIn { * API identifier of an object */ id: string; - attributes?: JsonApiWorkspacePatchAttributes; - relationships?: JsonApiWorkspacePatchRelationships; + attributes?: JsonApiWorkspaceOutAttributes; + relationships?: JsonApiWorkspaceOutRelationships; } export type JsonApiWorkspaceInTypeEnum = "workspace"; @@ -9461,12 +10690,46 @@ export interface JsonApiWorkspaceOut { */ id: string; meta?: JsonApiWorkspaceOutMeta; - attributes?: JsonApiWorkspacePatchAttributes; - relationships?: JsonApiWorkspacePatchRelationships; + attributes?: JsonApiWorkspaceOutAttributes; + relationships?: JsonApiWorkspaceOutRelationships; } export type JsonApiWorkspaceOutTypeEnum = "workspace"; +export interface JsonApiWorkspaceOutAttributes { + name?: string | null; + /** + * The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues. + * @deprecated + */ + earlyAccess?: string | null; + /** + * The early access feature identifiers. They are used to enable experimental features. + */ + earlyAccessValues?: Array | null; + description?: string | null; + /** + * Custom prefix of entity identifiers in workspace + */ + prefix?: string | null; + cacheExtraLimit?: number; + dataSource?: JsonApiWorkspaceOutAttributesDataSource; +} + +/** + * The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace. + */ +export interface JsonApiWorkspaceOutAttributesDataSource { + /** + * The ID of the used data source. + */ + id: string; + /** + * The full schema path as array of its path parts. Will be rendered as subPath1.subPath2... + */ + schemaPath?: Array; +} + export interface JsonApiWorkspaceOutDocument { data: JsonApiWorkspaceOut; links?: ObjectLinks; @@ -9482,7 +10745,7 @@ export interface JsonApiWorkspaceOutDocument { export interface JsonApiWorkspaceOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; /** * Included resources */ @@ -9539,6 +10802,14 @@ export interface JsonApiWorkspaceOutMetaHierarchy { childrenCount: number; } +export interface JsonApiWorkspaceOutRelationships { + parent?: JsonApiWorkspaceOutRelationshipsParent; +} + +export interface JsonApiWorkspaceOutRelationshipsParent { + data: JsonApiWorkspaceLinkage | null; +} + export interface JsonApiWorkspaceOutWithLinks { /** * Object type @@ -9549,8 +10820,8 @@ export interface JsonApiWorkspaceOutWithLinks { */ id: string; meta?: JsonApiWorkspaceOutMeta; - attributes?: JsonApiWorkspacePatchAttributes; - relationships?: JsonApiWorkspacePatchRelationships; + attributes?: JsonApiWorkspaceOutAttributes; + relationships?: JsonApiWorkspaceOutRelationships; links?: ObjectLinks; } @@ -9568,58 +10839,16 @@ export interface JsonApiWorkspacePatch { * API identifier of an object */ id: string; - attributes?: JsonApiWorkspacePatchAttributes; - relationships?: JsonApiWorkspacePatchRelationships; + attributes?: JsonApiWorkspaceOutAttributes; + relationships?: JsonApiWorkspaceOutRelationships; } export type JsonApiWorkspacePatchTypeEnum = "workspace"; -export interface JsonApiWorkspacePatchAttributes { - name?: string | null; - /** - * The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues. - * @deprecated - */ - earlyAccess?: string | null; - /** - * The early access feature identifiers. They are used to enable experimental features. - */ - earlyAccessValues?: Array | null; - description?: string | null; - /** - * Custom prefix of entity identifiers in workspace - */ - prefix?: string | null; - cacheExtraLimit?: number; - dataSource?: JsonApiWorkspacePatchAttributesDataSource; -} - -/** - * The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace. - */ -export interface JsonApiWorkspacePatchAttributesDataSource { - /** - * The ID of the used data source. - */ - id: string; - /** - * The full schema path as array of its path parts. Will be rendered as subPath1.subPath2... - */ - schemaPath?: Array; -} - export interface JsonApiWorkspacePatchDocument { data: JsonApiWorkspacePatch; } -export interface JsonApiWorkspacePatchRelationships { - parent?: JsonApiWorkspacePatchRelationshipsParent; -} - -export interface JsonApiWorkspacePatchRelationshipsParent { - data: JsonApiWorkspaceLinkage | null; -} - /** * JSON:API representation of workspaceSetting entity. */ @@ -9632,7 +10861,7 @@ export interface JsonApiWorkspaceSettingIn { * API identifier of an object */ id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiWorkspaceSettingInTypeEnum = "workspaceSetting"; @@ -9653,8 +10882,8 @@ export interface JsonApiWorkspaceSettingOut { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; - attributes?: JsonApiOrganizationSettingPatchAttributes; + meta?: JsonApiDatasetOutMeta; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiWorkspaceSettingOutTypeEnum = "workspaceSetting"; @@ -9670,7 +10899,7 @@ export interface JsonApiWorkspaceSettingOutDocument { export interface JsonApiWorkspaceSettingOutList { data: Array; links?: ListLinks; - meta?: JsonApiApiTokenOutListMeta; + meta?: JsonApiColorPaletteOutListMeta; } export interface JsonApiWorkspaceSettingOutWithLinks { @@ -9682,8 +10911,8 @@ export interface JsonApiWorkspaceSettingOutWithLinks { * API identifier of an object */ id: string; - meta?: JsonApiVisualizationObjectOutMeta; - attributes?: JsonApiOrganizationSettingPatchAttributes; + meta?: JsonApiDatasetOutMeta; + attributes?: JsonApiOrganizationSettingOutAttributes; links?: ObjectLinks; } @@ -9701,7 +10930,7 @@ export interface JsonApiWorkspaceSettingPatch { * API identifier of an object */ id: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiWorkspaceSettingPatchTypeEnum = "workspaceSetting"; @@ -9722,7 +10951,7 @@ export interface JsonApiWorkspaceSettingPostOptionalId { * API identifier of an object */ id?: string; - attributes?: JsonApiOrganizationSettingPatchAttributes; + attributes?: JsonApiOrganizationSettingOutAttributes; } export type JsonApiWorkspaceSettingPostOptionalIdTypeEnum = "workspaceSetting"; @@ -9806,11 +11035,20 @@ export interface MeasureItem { definition: MeasureDefinition; } +/** + * @type MeasureValueCondition + * A condition for filtering by measure value. Can be either a comparison or a range condition. + */ +export type MeasureValueCondition = ComparisonCondition | RangeCondition; + /** * @type MeasureValueFilter * Abstract filter definition type filtering by the value of the metric. */ -export type MeasureValueFilter = ComparisonMeasureValueFilter | RangeMeasureValueFilter; +export type MeasureValueFilter = + | ComparisonMeasureValueFilter + | CompoundMeasureValueFilter + | RangeMeasureValueFilter; export interface ModelFile { skeleton?: Skeleton; @@ -10107,6 +11345,21 @@ export interface Range { export type RangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; +/** + * Condition that checks if the metric value is within a given range. + */ +export interface RangeCondition { + range: RangeConditionRange; +} + +export interface RangeConditionRange { + operator: RangeConditionRangeOperatorEnum; + from: number; + to: number; +} + +export type RangeConditionRangeOperatorEnum = "BETWEEN" | "NOT_BETWEEN"; + /** * Filter the result by comparing specified metric to given range of values. */ @@ -11101,29 +12354,42 @@ export interface Xliff { otherAttributes?: { [key: string]: string }; } -// AIApi FP - AIApiAxiosParamCreator +// AACAnalyticsModelApi FP - AACAnalyticsModelApiAxiosParamCreator /** - * (BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. - * @summary (BETA) Check Organization Metadata Inconsistencies + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {string} workspaceId + * @param {Array<'ACTIVITY_INFO'>} [exclude] * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function AIApiAxiosParamCreator_MetadataCheckOrganization( +export async function AACAnalyticsModelApiAxiosParamCreator_GetAnalyticsModelAac( + workspaceId: string, + exclude?: Array<"ACTIVITY_INFO">, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - const localVarPath = `/api/v1/actions/organization/metadataCheck`; + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("getAnalyticsModelAac", "workspaceId", workspaceId); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/analyticsModel`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; if (configuration) { baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (exclude) { + localVarQueryParameter["exclude"] = exclude; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -11138,23 +12404,27 @@ export async function AIApiAxiosParamCreator_MetadataCheckOrganization( }; } -// AIApi FP - AIApiAxiosParamCreator +// AACAnalyticsModelApi FP - AACAnalyticsModelApiAxiosParamCreator /** - * (BETA) Temporary solution. Later relevant metadata actions will trigger it in its scope only. - * @summary (BETA) Sync Metadata to other services + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format * @param {string} workspaceId + * @param {AacAnalyticsModel} aacAnalyticsModel * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function AIApiAxiosParamCreator_MetadataSync( +export async function AACAnalyticsModelApiAxiosParamCreator_SetAnalyticsModelAac( workspaceId: string, + aacAnalyticsModel: AacAnalyticsModel, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("metadataSync", "workspaceId", workspaceId); - const localVarPath = `/api/v1/actions/workspaces/{workspaceId}/metadataSync`.replace( + assertParamExists("setAnalyticsModelAac", "workspaceId", workspaceId); + // verify required parameter 'aacAnalyticsModel' is not null or undefined + assertParamExists("setAnalyticsModelAac", "aacAnalyticsModel", aacAnalyticsModel); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/analyticsModel`.replace( `{${"workspaceId"}}`, encodeURIComponent(String(workspaceId)), ); @@ -11164,10 +12434,12 @@ export async function AIApiAxiosParamCreator_MetadataSync( if (configuration) { baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + localVarHeaderParameter["Content-Type"] = "application/json"; + setSearchParams(localVarUrlObj, localVarQueryParameter); const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -11175,6 +12447,12 @@ export async function AIApiAxiosParamCreator_MetadataSync( ...headersFromBaseOptions, ...options.headers, }; + const needsSerialization = + typeof aacAnalyticsModel !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(aacAnalyticsModel !== undefined ? aacAnalyticsModel : {}) + : aacAnalyticsModel || ""; return { url: toPathString(localVarUrlObj), @@ -11182,19 +12460,564 @@ export async function AIApiAxiosParamCreator_MetadataSync( }; } +// AACAnalyticsModelApi Api FP +/** + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AACAnalyticsModelApiGetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AACAnalyticsModelApi_GetAnalyticsModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AACAnalyticsModelApiGetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AACAnalyticsModelApiAxiosParamCreator_GetAnalyticsModelAac( + requestParameters.workspaceId, + requestParameters.exclude, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// AACAnalyticsModelApi Api FP +/** + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AACAnalyticsModelApiSetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AACAnalyticsModelApi_SetAnalyticsModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AACAnalyticsModelApiSetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AACAnalyticsModelApiAxiosParamCreator_SetAnalyticsModelAac( + requestParameters.workspaceId, + requestParameters.aacAnalyticsModel, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +/** + * AACAnalyticsModelApi - interface + * @export + * @interface AACAnalyticsModelApi + */ +export interface AACAnalyticsModelApiInterface { + /** + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {AACAnalyticsModelApiGetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACAnalyticsModelApiInterface + */ + getAnalyticsModelAac( + requestParameters: AACAnalyticsModelApiGetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format + * @param {AACAnalyticsModelApiSetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACAnalyticsModelApiInterface + */ + setAnalyticsModelAac( + requestParameters: AACAnalyticsModelApiSetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; +} + +/** + * Request parameters for getAnalyticsModelAac operation in AACAnalyticsModelApi. + * @export + * @interface AACAnalyticsModelApiGetAnalyticsModelAacRequest + */ +export interface AACAnalyticsModelApiGetAnalyticsModelAacRequest { + /** + * + * @type {string} + * @memberof AACAnalyticsModelApiGetAnalyticsModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {Array<'ACTIVITY_INFO'>} + * @memberof AACAnalyticsModelApiGetAnalyticsModelAac + */ + readonly exclude?: Array<"ACTIVITY_INFO">; +} + +/** + * Request parameters for setAnalyticsModelAac operation in AACAnalyticsModelApi. + * @export + * @interface AACAnalyticsModelApiSetAnalyticsModelAacRequest + */ +export interface AACAnalyticsModelApiSetAnalyticsModelAacRequest { + /** + * + * @type {string} + * @memberof AACAnalyticsModelApiSetAnalyticsModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {AacAnalyticsModel} + * @memberof AACAnalyticsModelApiSetAnalyticsModelAac + */ + readonly aacAnalyticsModel: AacAnalyticsModel; +} + +/** + * AACAnalyticsModelApi - object-oriented interface + * @export + * @class AACAnalyticsModelApi + * @extends {BaseAPI} + */ +export class AACAnalyticsModelApi extends BaseAPI implements AACAnalyticsModelApiInterface { + /** + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {AACAnalyticsModelApiGetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACAnalyticsModelApi + */ + public getAnalyticsModelAac( + requestParameters: AACAnalyticsModelApiGetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AACAnalyticsModelApi_GetAnalyticsModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format + * @param {AACAnalyticsModelApiSetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACAnalyticsModelApi + */ + public setAnalyticsModelAac( + requestParameters: AACAnalyticsModelApiSetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AACAnalyticsModelApi_SetAnalyticsModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } +} + +// AACLogicalDataModelApi FP - AACLogicalDataModelApiAxiosParamCreator +/** + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format + * @param {string} workspaceId + * @param {boolean} [includeParents] + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AACLogicalDataModelApiAxiosParamCreator_GetLogicalModelAac( + workspaceId: string, + includeParents?: boolean, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("getLogicalModelAac", "workspaceId", workspaceId); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/logicalModel`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (includeParents !== undefined) { + localVarQueryParameter["includeParents"] = includeParents; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// AACLogicalDataModelApi FP - AACLogicalDataModelApiAxiosParamCreator +/** + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format + * @param {string} workspaceId + * @param {AacLogicalModel} aacLogicalModel + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AACLogicalDataModelApiAxiosParamCreator_SetLogicalModelAac( + workspaceId: string, + aacLogicalModel: AacLogicalModel, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("setLogicalModelAac", "workspaceId", workspaceId); + // verify required parameter 'aacLogicalModel' is not null or undefined + assertParamExists("setLogicalModelAac", "aacLogicalModel", aacLogicalModel); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/logicalModel`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof aacLogicalModel !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(aacLogicalModel !== undefined ? aacLogicalModel : {}) + : aacLogicalModel || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// AACLogicalDataModelApi Api FP +/** + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AACLogicalDataModelApiGetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AACLogicalDataModelApi_GetLogicalModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AACLogicalDataModelApiGetLogicalModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AACLogicalDataModelApiAxiosParamCreator_GetLogicalModelAac( + requestParameters.workspaceId, + requestParameters.includeParents, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// AACLogicalDataModelApi Api FP +/** + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AACLogicalDataModelApiSetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AACLogicalDataModelApi_SetLogicalModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AACLogicalDataModelApiSetLogicalModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AACLogicalDataModelApiAxiosParamCreator_SetLogicalModelAac( + requestParameters.workspaceId, + requestParameters.aacLogicalModel, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +/** + * AACLogicalDataModelApi - interface + * @export + * @interface AACLogicalDataModelApi + */ +export interface AACLogicalDataModelApiInterface { + /** + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format + * @param {AACLogicalDataModelApiGetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACLogicalDataModelApiInterface + */ + getLogicalModelAac( + requestParameters: AACLogicalDataModelApiGetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format + * @param {AACLogicalDataModelApiSetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACLogicalDataModelApiInterface + */ + setLogicalModelAac( + requestParameters: AACLogicalDataModelApiSetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; +} + +/** + * Request parameters for getLogicalModelAac operation in AACLogicalDataModelApi. + * @export + * @interface AACLogicalDataModelApiGetLogicalModelAacRequest + */ +export interface AACLogicalDataModelApiGetLogicalModelAacRequest { + /** + * + * @type {string} + * @memberof AACLogicalDataModelApiGetLogicalModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {boolean} + * @memberof AACLogicalDataModelApiGetLogicalModelAac + */ + readonly includeParents?: boolean; +} + +/** + * Request parameters for setLogicalModelAac operation in AACLogicalDataModelApi. + * @export + * @interface AACLogicalDataModelApiSetLogicalModelAacRequest + */ +export interface AACLogicalDataModelApiSetLogicalModelAacRequest { + /** + * + * @type {string} + * @memberof AACLogicalDataModelApiSetLogicalModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {AacLogicalModel} + * @memberof AACLogicalDataModelApiSetLogicalModelAac + */ + readonly aacLogicalModel: AacLogicalModel; +} + +/** + * AACLogicalDataModelApi - object-oriented interface + * @export + * @class AACLogicalDataModelApi + * @extends {BaseAPI} + */ +export class AACLogicalDataModelApi extends BaseAPI implements AACLogicalDataModelApiInterface { + /** + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format + * @param {AACLogicalDataModelApiGetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACLogicalDataModelApi + */ + public getLogicalModelAac( + requestParameters: AACLogicalDataModelApiGetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AACLogicalDataModelApi_GetLogicalModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format + * @param {AACLogicalDataModelApiSetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AACLogicalDataModelApi + */ + public setLogicalModelAac( + requestParameters: AACLogicalDataModelApiSetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AACLogicalDataModelApi_SetLogicalModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } +} + // AIApi FP - AIApiAxiosParamCreator /** - * (BETA) Temporary solution. Later relevant metadata actions will trigger sync in their scope only. - * @summary (BETA) Sync organization scope Metadata to other services + * (BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. + * @summary (BETA) Check Organization Metadata Inconsistencies * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function AIApiAxiosParamCreator_MetadataSyncOrganization( +export async function AIApiAxiosParamCreator_MetadataCheckOrganization( options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - const localVarPath = `/api/v1/actions/organization/metadataSync`; + const localVarPath = `/api/v1/actions/organization/metadataCheck`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// AIApi FP - AIApiAxiosParamCreator +/** + * (BETA) Temporary solution. Later relevant metadata actions will trigger it in its scope only. + * @summary (BETA) Sync Metadata to other services + * @param {string} workspaceId + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AIApiAxiosParamCreator_MetadataSync( + workspaceId: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("metadataSync", "workspaceId", workspaceId); + const localVarPath = `/api/v1/actions/workspaces/{workspaceId}/metadataSync`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// AIApi FP - AIApiAxiosParamCreator +/** + * (BETA) Temporary solution. Later relevant metadata actions will trigger sync in their scope only. + * @summary (BETA) Sync organization scope Metadata to other services + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AIApiAxiosParamCreator_MetadataSyncOrganization( + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + const localVarPath = `/api/v1/actions/organization/metadataSync`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12014,19 +13837,28 @@ export class APITokensApi extends BaseAPI implements APITokensApiInterface { } } -// ActionsApi FP - ActionsApiAxiosParamCreator +// AacApi FP - AacApiAxiosParamCreator /** - * Provides information about platform usage, like amount of users, workspaces, ... _NOTE_: The `admin` user is always excluded from this amount. - * @summary Info about the platform usage. + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {string} workspaceId + * @param {Array<'ACTIVITY_INFO'>} [exclude] * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function ActionsApiAxiosParamCreator_AllPlatformUsage( +export async function AacApiAxiosParamCreator_GetAnalyticsModelAac( + workspaceId: string, + exclude?: Array<"ACTIVITY_INFO">, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - const localVarPath = `/api/v1/actions/collectUsage`; + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("getAnalyticsModelAac", "workspaceId", workspaceId); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/analyticsModel`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12037,6 +13869,10 @@ export async function ActionsApiAxiosParamCreator_AllPlatformUsage( const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (exclude) { + localVarQueryParameter["exclude"] = exclude; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -12051,30 +13887,28 @@ export async function ActionsApiAxiosParamCreator_AllPlatformUsage( }; } -// ActionsApi FP - ActionsApiAxiosParamCreator +// AacApi FP - AacApiAxiosParamCreator /** - * - * @summary Get Available Assignees + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format * @param {string} workspaceId - * @param {string} dashboardId + * @param {boolean} [includeParents] * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function ActionsApiAxiosParamCreator_AvailableAssignees( +export async function AacApiAxiosParamCreator_GetLogicalModelAac( workspaceId: string, - dashboardId: string, + includeParents?: boolean, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("availableAssignees", "workspaceId", workspaceId); - // verify required parameter 'dashboardId' is not null or undefined - assertParamExists("availableAssignees", "dashboardId", dashboardId); - const localVarPath = - `/api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/availableAssignees` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"dashboardId"}}`, encodeURIComponent(String(dashboardId))); + assertParamExists("getLogicalModelAac", "workspaceId", workspaceId); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/logicalModel`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12085,6 +13919,10 @@ export async function ActionsApiAxiosParamCreator_AvailableAssignees( const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (includeParents !== undefined) { + localVarQueryParameter["includeParents"] = includeParents; + } + setSearchParams(localVarUrlObj, localVarQueryParameter); const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -12099,27 +13937,27 @@ export async function ActionsApiAxiosParamCreator_AvailableAssignees( }; } -// ActionsApi FP - ActionsApiAxiosParamCreator +// AacApi FP - AacApiAxiosParamCreator /** - * Finds entities with given ID in hierarchy (e.g. to check possible future conflicts). - * @summary Finds entities with given ID in hierarchy. + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format * @param {string} workspaceId - * @param {Array} hierarchyObjectIdentification + * @param {AacAnalyticsModel} aacAnalyticsModel * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function ActionsApiAxiosParamCreator_CheckEntityOverrides( +export async function AacApiAxiosParamCreator_SetAnalyticsModelAac( workspaceId: string, - hierarchyObjectIdentification: Array, + aacAnalyticsModel: AacAnalyticsModel, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("checkEntityOverrides", "workspaceId", workspaceId); - // verify required parameter 'hierarchyObjectIdentification' is not null or undefined - assertParamExists("checkEntityOverrides", "hierarchyObjectIdentification", hierarchyObjectIdentification); - const localVarPath = `/api/v1/actions/workspaces/{workspaceId}/checkEntityOverrides`.replace( + assertParamExists("setAnalyticsModelAac", "workspaceId", workspaceId); + // verify required parameter 'aacAnalyticsModel' is not null or undefined + assertParamExists("setAnalyticsModelAac", "aacAnalyticsModel", aacAnalyticsModel); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/analyticsModel`.replace( `{${"workspaceId"}}`, encodeURIComponent(String(workspaceId)), ); @@ -12129,7 +13967,7 @@ export async function ActionsApiAxiosParamCreator_CheckEntityOverrides( if (configuration) { baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -12143,11 +13981,11 @@ export async function ActionsApiAxiosParamCreator_CheckEntityOverrides( ...options.headers, }; const needsSerialization = - typeof hierarchyObjectIdentification !== "string" || + typeof aacAnalyticsModel !== "string" || localVarRequestOptions.headers["Content-Type"] === "application/json"; localVarRequestOptions.data = needsSerialization - ? JSON.stringify(hierarchyObjectIdentification !== undefined ? hierarchyObjectIdentification : {}) - : hierarchyObjectIdentification || ""; + ? JSON.stringify(aacAnalyticsModel !== undefined ? aacAnalyticsModel : {}) + : aacAnalyticsModel || ""; return { url: toPathString(localVarUrlObj), @@ -12155,27 +13993,27 @@ export async function ActionsApiAxiosParamCreator_CheckEntityOverrides( }; } -// ActionsApi FP - ActionsApiAxiosParamCreator +// AacApi FP - AacApiAxiosParamCreator /** - * Cleans up all translations for a particular locale. - * @summary Cleans up translations. + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format * @param {string} workspaceId - * @param {LocaleRequest} localeRequest + * @param {AacLogicalModel} aacLogicalModel * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function ActionsApiAxiosParamCreator_CleanTranslations( +export async function AacApiAxiosParamCreator_SetLogicalModelAac( workspaceId: string, - localeRequest: LocaleRequest, + aacLogicalModel: AacLogicalModel, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("cleanTranslations", "workspaceId", workspaceId); - // verify required parameter 'localeRequest' is not null or undefined - assertParamExists("cleanTranslations", "localeRequest", localeRequest); - const localVarPath = `/api/v1/actions/workspaces/{workspaceId}/translations/clean`.replace( + assertParamExists("setLogicalModelAac", "workspaceId", workspaceId); + // verify required parameter 'aacLogicalModel' is not null or undefined + assertParamExists("setLogicalModelAac", "aacLogicalModel", aacLogicalModel); + const localVarPath = `/api/v1/aac/workspaces/{workspaceId}/logicalModel`.replace( `{${"workspaceId"}}`, encodeURIComponent(String(workspaceId)), ); @@ -12185,7 +14023,7 @@ export async function ActionsApiAxiosParamCreator_CleanTranslations( if (configuration) { baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -12199,11 +14037,11 @@ export async function ActionsApiAxiosParamCreator_CleanTranslations( ...options.headers, }; const needsSerialization = - typeof localeRequest !== "string" || + typeof aacLogicalModel !== "string" || localVarRequestOptions.headers["Content-Type"] === "application/json"; localVarRequestOptions.data = needsSerialization - ? JSON.stringify(localeRequest !== undefined ? localeRequest : {}) - : localeRequest || ""; + ? JSON.stringify(aacLogicalModel !== undefined ? aacLogicalModel : {}) + : aacLogicalModel || ""; return { url: toPathString(localVarUrlObj), @@ -12211,30 +14049,570 @@ export async function ActionsApiAxiosParamCreator_CleanTranslations( }; } +// AacApi Api FP +/** + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AacApiGetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AacApi_GetAnalyticsModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AacApiGetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AacApiAxiosParamCreator_GetAnalyticsModelAac( + requestParameters.workspaceId, + requestParameters.exclude, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// AacApi Api FP +/** + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AacApiGetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AacApi_GetLogicalModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AacApiGetLogicalModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AacApiAxiosParamCreator_GetLogicalModelAac( + requestParameters.workspaceId, + requestParameters.includeParents, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// AacApi Api FP +/** + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AacApiSetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AacApi_SetAnalyticsModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AacApiSetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AacApiAxiosParamCreator_SetAnalyticsModelAac( + requestParameters.workspaceId, + requestParameters.aacAnalyticsModel, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// AacApi Api FP +/** + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {AacApiSetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function AacApi_SetLogicalModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: AacApiSetLogicalModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await AacApiAxiosParamCreator_SetLogicalModelAac( + requestParameters.workspaceId, + requestParameters.aacLogicalModel, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +/** + * AacApi - interface + * @export + * @interface AacApi + */ +export interface AacApiInterface { + /** + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {AacApiGetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApiInterface + */ + getAnalyticsModelAac( + requestParameters: AacApiGetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format + * @param {AacApiGetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApiInterface + */ + getLogicalModelAac( + requestParameters: AacApiGetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format + * @param {AacApiSetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApiInterface + */ + setAnalyticsModelAac( + requestParameters: AacApiSetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format + * @param {AacApiSetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApiInterface + */ + setLogicalModelAac( + requestParameters: AacApiSetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; +} + +/** + * Request parameters for getAnalyticsModelAac operation in AacApi. + * @export + * @interface AacApiGetAnalyticsModelAacRequest + */ +export interface AacApiGetAnalyticsModelAacRequest { + /** + * + * @type {string} + * @memberof AacApiGetAnalyticsModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {Array<'ACTIVITY_INFO'>} + * @memberof AacApiGetAnalyticsModelAac + */ + readonly exclude?: Array<"ACTIVITY_INFO">; +} + +/** + * Request parameters for getLogicalModelAac operation in AacApi. + * @export + * @interface AacApiGetLogicalModelAacRequest + */ +export interface AacApiGetLogicalModelAacRequest { + /** + * + * @type {string} + * @memberof AacApiGetLogicalModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {boolean} + * @memberof AacApiGetLogicalModelAac + */ + readonly includeParents?: boolean; +} + +/** + * Request parameters for setAnalyticsModelAac operation in AacApi. + * @export + * @interface AacApiSetAnalyticsModelAacRequest + */ +export interface AacApiSetAnalyticsModelAacRequest { + /** + * + * @type {string} + * @memberof AacApiSetAnalyticsModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {AacAnalyticsModel} + * @memberof AacApiSetAnalyticsModelAac + */ + readonly aacAnalyticsModel: AacAnalyticsModel; +} + +/** + * Request parameters for setLogicalModelAac operation in AacApi. + * @export + * @interface AacApiSetLogicalModelAacRequest + */ +export interface AacApiSetLogicalModelAacRequest { + /** + * + * @type {string} + * @memberof AacApiSetLogicalModelAac + */ + readonly workspaceId: string; + + /** + * + * @type {AacLogicalModel} + * @memberof AacApiSetLogicalModelAac + */ + readonly aacLogicalModel: AacLogicalModel; +} + +/** + * AacApi - object-oriented interface + * @export + * @class AacApi + * @extends {BaseAPI} + */ +export class AacApi extends BaseAPI implements AacApiInterface { + /** + * Retrieve the analytics model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This includes metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Get analytics model in AAC format + * @param {AacApiGetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApi + */ + public getAnalyticsModelAac( + requestParameters: AacApiGetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AacApi_GetAnalyticsModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * Retrieve the logical data model of the workspace in Analytics as Code format. The returned format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. Use this for exporting models that can be directly used as YAML configuration files. + * @summary Get logical model in AAC format + * @param {AacApiGetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApi + */ + public getLogicalModelAac( + requestParameters: AacApiGetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AacApi_GetLogicalModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * Set the analytics model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire analytics model with the provided definition, including metrics, dashboards, visualizations, plugins, and attribute hierarchies. + * @summary Set analytics model from AAC format + * @param {AacApiSetAnalyticsModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApi + */ + public setAnalyticsModelAac( + requestParameters: AacApiSetAnalyticsModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AacApi_SetAnalyticsModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * Set the logical data model of the workspace using Analytics as Code format. The input format is compatible with the YAML definitions used by the GoodData Analytics as Code VSCode extension. This replaces the entire logical model with the provided definition. + * @summary Set logical model from AAC format + * @param {AacApiSetLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AacApi + */ + public setLogicalModelAac( + requestParameters: AacApiSetLogicalModelAacRequest, + options?: AxiosRequestConfig, + ) { + return AacApi_SetLogicalModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } +} + // ActionsApi FP - ActionsApiAxiosParamCreator /** - * - * @summary Get Dashboard Permissions - * @param {string} workspaceId - * @param {string} dashboardId + * Provides information about platform usage, like amount of users, workspaces, ... _NOTE_: The `admin` user is always excluded from this amount. + * @summary Info about the platform usage. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function ActionsApiAxiosParamCreator_DashboardPermissions( - workspaceId: string, - dashboardId: string, +export async function ActionsApiAxiosParamCreator_AllPlatformUsage( options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("dashboardPermissions", "workspaceId", workspaceId); - // verify required parameter 'dashboardId' is not null or undefined - assertParamExists("dashboardPermissions", "dashboardId", dashboardId); - const localVarPath = - `/api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/permissions` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"dashboardId"}}`, encodeURIComponent(String(dashboardId))); + const localVarPath = `/api/v1/actions/collectUsage`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// ActionsApi FP - ActionsApiAxiosParamCreator +/** + * + * @summary Get Available Assignees + * @param {string} workspaceId + * @param {string} dashboardId + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function ActionsApiAxiosParamCreator_AvailableAssignees( + workspaceId: string, + dashboardId: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("availableAssignees", "workspaceId", workspaceId); + // verify required parameter 'dashboardId' is not null or undefined + assertParamExists("availableAssignees", "dashboardId", dashboardId); + const localVarPath = + `/api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/availableAssignees` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"dashboardId"}}`, encodeURIComponent(String(dashboardId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// ActionsApi FP - ActionsApiAxiosParamCreator +/** + * Finds entities with given ID in hierarchy (e.g. to check possible future conflicts). + * @summary Finds entities with given ID in hierarchy. + * @param {string} workspaceId + * @param {Array} hierarchyObjectIdentification + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function ActionsApiAxiosParamCreator_CheckEntityOverrides( + workspaceId: string, + hierarchyObjectIdentification: Array, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("checkEntityOverrides", "workspaceId", workspaceId); + // verify required parameter 'hierarchyObjectIdentification' is not null or undefined + assertParamExists("checkEntityOverrides", "hierarchyObjectIdentification", hierarchyObjectIdentification); + const localVarPath = `/api/v1/actions/workspaces/{workspaceId}/checkEntityOverrides`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof hierarchyObjectIdentification !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(hierarchyObjectIdentification !== undefined ? hierarchyObjectIdentification : {}) + : hierarchyObjectIdentification || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// ActionsApi FP - ActionsApiAxiosParamCreator +/** + * Cleans up all translations for a particular locale. + * @summary Cleans up translations. + * @param {string} workspaceId + * @param {LocaleRequest} localeRequest + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function ActionsApiAxiosParamCreator_CleanTranslations( + workspaceId: string, + localeRequest: LocaleRequest, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("cleanTranslations", "workspaceId", workspaceId); + // verify required parameter 'localeRequest' is not null or undefined + assertParamExists("cleanTranslations", "localeRequest", localeRequest); + const localVarPath = `/api/v1/actions/workspaces/{workspaceId}/translations/clean`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof localeRequest !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(localeRequest !== undefined ? localeRequest : {}) + : localeRequest || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// ActionsApi FP - ActionsApiAxiosParamCreator +/** + * + * @summary Get Dashboard Permissions + * @param {string} workspaceId + * @param {string} dashboardId + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function ActionsApiAxiosParamCreator_DashboardPermissions( + workspaceId: string, + dashboardId: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("dashboardPermissions", "workspaceId", workspaceId); + // verify required parameter 'dashboardId' is not null or undefined + assertParamExists("dashboardPermissions", "dashboardId", dashboardId); + const localVarPath = + `/api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/permissions` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"dashboardId"}}`, encodeURIComponent(String(dashboardId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -12436,6 +14814,62 @@ export async function ActionsApiAxiosParamCreator_GenerateLogicalModel( }; } +// ActionsApi FP - ActionsApiAxiosParamCreator +/** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {string} dataSourceId + * @param {GenerateLdmRequest} generateLdmRequest + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function ActionsApiAxiosParamCreator_GenerateLogicalModelAac( + dataSourceId: string, + generateLdmRequest: GenerateLdmRequest, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'dataSourceId' is not null or undefined + assertParamExists("generateLogicalModelAac", "dataSourceId", dataSourceId); + // verify required parameter 'generateLdmRequest' is not null or undefined + assertParamExists("generateLogicalModelAac", "generateLdmRequest", generateLdmRequest); + const localVarPath = `/api/v1/actions/dataSources/{dataSourceId}/generateLogicalModelAac`.replace( + `{${"dataSourceId"}}`, + encodeURIComponent(String(dataSourceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof generateLdmRequest !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(generateLdmRequest !== undefined ? generateLdmRequest : {}) + : generateLdmRequest || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // ActionsApi FP - ActionsApiAxiosParamCreator /** * Computes the dependent entities graph @@ -14431,6 +16865,33 @@ export async function ActionsApi_GenerateLogicalModel( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// ActionsApi Api FP +/** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {ActionsApiGenerateLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function ActionsApi_GenerateLogicalModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: ActionsApiGenerateLogicalModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await ActionsApiAxiosParamCreator_GenerateLogicalModelAac( + requestParameters.dataSourceId, + requestParameters.generateLdmRequest, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // ActionsApi Api FP /** * Computes the dependent entities graph @@ -15453,6 +17914,19 @@ export interface ActionsApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {ActionsApiGenerateLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ActionsApiInterface + */ + generateLogicalModelAac( + requestParameters: ActionsApiGenerateLogicalModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * Computes the dependent entities graph * @summary Computes the dependent entities graph @@ -16027,6 +18501,27 @@ export interface ActionsApiGenerateLogicalModelRequest { readonly generateLdmRequest: GenerateLdmRequest; } +/** + * Request parameters for generateLogicalModelAac operation in ActionsApi. + * @export + * @interface ActionsApiGenerateLogicalModelAacRequest + */ +export interface ActionsApiGenerateLogicalModelAacRequest { + /** + * + * @type {string} + * @memberof ActionsApiGenerateLogicalModelAac + */ + readonly dataSourceId: string; + + /** + * + * @type {GenerateLdmRequest} + * @memberof ActionsApiGenerateLogicalModelAac + */ + readonly generateLdmRequest: GenerateLdmRequest; +} + /** * Request parameters for getDependentEntitiesGraph operation in ActionsApi. * @export @@ -16738,6 +19233,27 @@ export class ActionsApi extends BaseAPI implements ActionsApiInterface { ); } + /** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {ActionsApiGenerateLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ActionsApi + */ + public generateLogicalModelAac( + requestParameters: ActionsApiGenerateLogicalModelAacRequest, + options?: AxiosRequestConfig, + ) { + return ActionsApi_GenerateLogicalModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * Computes the dependent entities graph * @summary Computes the dependent entities graph @@ -25570,1631 +28086,520 @@ export class CSPDirectivesApi extends BaseAPI implements CSPDirectivesApiInterfa } } -// ContextFiltersApi FP - ContextFiltersApiAxiosParamCreator +// CookieSecurityConfigurationApi FP - CookieSecurityConfigurationApiAxiosParamCreator +/** + * + * @summary Get CookieSecurityConfiguration + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function CookieSecurityConfigurationApiAxiosParamCreator_GetEntityCookieSecurityConfigurations( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("getEntityCookieSecurityConfigurations", "id", id); + const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// CookieSecurityConfigurationApi FP - CookieSecurityConfigurationApiAxiosParamCreator +/** + * + * @summary Patch CookieSecurityConfiguration + * @param {string} id + * @param {JsonApiCookieSecurityConfigurationPatchDocument} jsonApiCookieSecurityConfigurationPatchDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function CookieSecurityConfigurationApiAxiosParamCreator_PatchEntityCookieSecurityConfigurations( + id: string, + jsonApiCookieSecurityConfigurationPatchDocument: JsonApiCookieSecurityConfigurationPatchDocument, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("patchEntityCookieSecurityConfigurations", "id", id); + // verify required parameter 'jsonApiCookieSecurityConfigurationPatchDocument' is not null or undefined + assertParamExists( + "patchEntityCookieSecurityConfigurations", + "jsonApiCookieSecurityConfigurationPatchDocument", + jsonApiCookieSecurityConfigurationPatchDocument, + ); + const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PATCH", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCookieSecurityConfigurationPatchDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCookieSecurityConfigurationPatchDocument !== undefined + ? jsonApiCookieSecurityConfigurationPatchDocument + : {}, + ) + : jsonApiCookieSecurityConfigurationPatchDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// CookieSecurityConfigurationApi FP - CookieSecurityConfigurationApiAxiosParamCreator +/** + * + * @summary Put CookieSecurityConfiguration + * @param {string} id + * @param {JsonApiCookieSecurityConfigurationInDocument} jsonApiCookieSecurityConfigurationInDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function CookieSecurityConfigurationApiAxiosParamCreator_UpdateEntityCookieSecurityConfigurations( + id: string, + jsonApiCookieSecurityConfigurationInDocument: JsonApiCookieSecurityConfigurationInDocument, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("updateEntityCookieSecurityConfigurations", "id", id); + // verify required parameter 'jsonApiCookieSecurityConfigurationInDocument' is not null or undefined + assertParamExists( + "updateEntityCookieSecurityConfigurations", + "jsonApiCookieSecurityConfigurationInDocument", + jsonApiCookieSecurityConfigurationInDocument, + ); + const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCookieSecurityConfigurationInDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCookieSecurityConfigurationInDocument !== undefined + ? jsonApiCookieSecurityConfigurationInDocument + : {}, + ) + : jsonApiCookieSecurityConfigurationInDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// CookieSecurityConfigurationApi Api FP +/** + * + * @summary Get CookieSecurityConfiguration + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function CookieSecurityConfigurationApi_GetEntityCookieSecurityConfigurations( + axios: AxiosInstance, + basePath: string, + requestParameters: CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await CookieSecurityConfigurationApiAxiosParamCreator_GetEntityCookieSecurityConfigurations( + requestParameters.id, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// CookieSecurityConfigurationApi Api FP +/** + * + * @summary Patch CookieSecurityConfiguration + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function CookieSecurityConfigurationApi_PatchEntityCookieSecurityConfigurations( + axios: AxiosInstance, + basePath: string, + requestParameters: CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await CookieSecurityConfigurationApiAxiosParamCreator_PatchEntityCookieSecurityConfigurations( + requestParameters.id, + requestParameters.jsonApiCookieSecurityConfigurationPatchDocument, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// CookieSecurityConfigurationApi Api FP +/** + * + * @summary Put CookieSecurityConfiguration + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function CookieSecurityConfigurationApi_UpdateEntityCookieSecurityConfigurations( + axios: AxiosInstance, + basePath: string, + requestParameters: CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await CookieSecurityConfigurationApiAxiosParamCreator_UpdateEntityCookieSecurityConfigurations( + requestParameters.id, + requestParameters.jsonApiCookieSecurityConfigurationInDocument, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +/** + * CookieSecurityConfigurationApi - interface + * @export + * @interface CookieSecurityConfigurationApi + */ +export interface CookieSecurityConfigurationApiInterface { + /** + * + * @summary Get CookieSecurityConfiguration + * @param {CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CookieSecurityConfigurationApiInterface + */ + getEntityCookieSecurityConfigurations( + requestParameters: CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * + * @summary Patch CookieSecurityConfiguration + * @param {CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CookieSecurityConfigurationApiInterface + */ + patchEntityCookieSecurityConfigurations( + requestParameters: CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * + * @summary Put CookieSecurityConfiguration + * @param {CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CookieSecurityConfigurationApiInterface + */ + updateEntityCookieSecurityConfigurations( + requestParameters: CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; +} + +/** + * Request parameters for getEntityCookieSecurityConfigurations operation in CookieSecurityConfigurationApi. + * @export + * @interface CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest + */ +export interface CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest { + /** + * + * @type {string} + * @memberof CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurations + */ + readonly id: string; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurations + */ + readonly filter?: string; +} + +/** + * Request parameters for patchEntityCookieSecurityConfigurations operation in CookieSecurityConfigurationApi. + * @export + * @interface CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest + */ +export interface CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest { + /** + * + * @type {string} + * @memberof CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurations + */ + readonly id: string; + + /** + * + * @type {JsonApiCookieSecurityConfigurationPatchDocument} + * @memberof CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurations + */ + readonly jsonApiCookieSecurityConfigurationPatchDocument: JsonApiCookieSecurityConfigurationPatchDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurations + */ + readonly filter?: string; +} + +/** + * Request parameters for updateEntityCookieSecurityConfigurations operation in CookieSecurityConfigurationApi. + * @export + * @interface CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest + */ +export interface CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest { + /** + * + * @type {string} + * @memberof CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurations + */ + readonly id: string; + + /** + * + * @type {JsonApiCookieSecurityConfigurationInDocument} + * @memberof CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurations + */ + readonly jsonApiCookieSecurityConfigurationInDocument: JsonApiCookieSecurityConfigurationInDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurations + */ + readonly filter?: string; +} + +/** + * CookieSecurityConfigurationApi - object-oriented interface + * @export + * @class CookieSecurityConfigurationApi + * @extends {BaseAPI} + */ +export class CookieSecurityConfigurationApi + extends BaseAPI + implements CookieSecurityConfigurationApiInterface +{ + /** + * + * @summary Get CookieSecurityConfiguration + * @param {CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CookieSecurityConfigurationApi + */ + public getEntityCookieSecurityConfigurations( + requestParameters: CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + ) { + return CookieSecurityConfigurationApi_GetEntityCookieSecurityConfigurations( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * + * @summary Patch CookieSecurityConfiguration + * @param {CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CookieSecurityConfigurationApi + */ + public patchEntityCookieSecurityConfigurations( + requestParameters: CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + ) { + return CookieSecurityConfigurationApi_PatchEntityCookieSecurityConfigurations( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * + * @summary Put CookieSecurityConfiguration + * @param {CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof CookieSecurityConfigurationApi + */ + public updateEntityCookieSecurityConfigurations( + requestParameters: CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest, + options?: AxiosRequestConfig, + ) { + return CookieSecurityConfigurationApi_UpdateEntityCookieSecurityConfigurations( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } +} + +// DashboardsApi FP - DashboardsApiAxiosParamCreator /** * - * @summary Post Context Filters + * @summary Post Dashboards * @param {string} workspaceId - * @param {JsonApiFilterContextPostOptionalIdDocument} jsonApiFilterContextPostOptionalIdDocument - * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @param {Array<'origin' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. + * @param {JsonApiAnalyticalDashboardPostOptionalIdDocument} jsonApiAnalyticalDashboardPostOptionalIdDocument + * @param {Array<'userIdentifiers' | 'visualizationObjects' | 'analyticalDashboards' | 'labels' | 'metrics' | 'datasets' | 'filterContexts' | 'dashboardPlugins' | 'createdBy' | 'modifiedBy' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @param {Array<'permissions' | 'origin' | 'accessInfo' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function ContextFiltersApiAxiosParamCreator_CreateEntityFilterContexts( +export async function DashboardsApiAxiosParamCreator_CreateEntityAnalyticalDashboards( workspaceId: string, - jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument, - include?: Array<"attributes" | "datasets" | "labels" | "ALL">, - metaInclude?: Array<"origin" | "all" | "ALL">, + jsonApiAnalyticalDashboardPostOptionalIdDocument: JsonApiAnalyticalDashboardPostOptionalIdDocument, + include?: Array< + | "userIdentifiers" + | "visualizationObjects" + | "analyticalDashboards" + | "labels" + | "metrics" + | "datasets" + | "filterContexts" + | "dashboardPlugins" + | "createdBy" + | "modifiedBy" + | "ALL" + >, + metaInclude?: Array<"permissions" | "origin" | "accessInfo" | "all" | "ALL">, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("createEntityFilterContexts", "workspaceId", workspaceId); - // verify required parameter 'jsonApiFilterContextPostOptionalIdDocument' is not null or undefined + assertParamExists("createEntityAnalyticalDashboards", "workspaceId", workspaceId); + // verify required parameter 'jsonApiAnalyticalDashboardPostOptionalIdDocument' is not null or undefined assertParamExists( - "createEntityFilterContexts", - "jsonApiFilterContextPostOptionalIdDocument", - jsonApiFilterContextPostOptionalIdDocument, + "createEntityAnalyticalDashboards", + "jsonApiAnalyticalDashboardPostOptionalIdDocument", + jsonApiAnalyticalDashboardPostOptionalIdDocument, ); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts`.replace( - `{${"workspaceId"}}`, - encodeURIComponent(String(workspaceId)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (include) { - localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); - } - - if (metaInclude) { - localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); - } - - localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - const needsSerialization = - typeof jsonApiFilterContextPostOptionalIdDocument !== "string" || - localVarRequestOptions.headers["Content-Type"] === "application/json"; - localVarRequestOptions.data = needsSerialization - ? JSON.stringify( - jsonApiFilterContextPostOptionalIdDocument !== undefined - ? jsonApiFilterContextPostOptionalIdDocument - : {}, - ) - : jsonApiFilterContextPostOptionalIdDocument || ""; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// ContextFiltersApi FP - ContextFiltersApiAxiosParamCreator -/** - * - * @summary Delete a Context Filter - * @param {string} workspaceId - * @param {string} objectId - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApiAxiosParamCreator_DeleteEntityFilterContexts( - workspaceId: string, - objectId: string, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("deleteEntityFilterContexts", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("deleteEntityFilterContexts", "objectId", objectId); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// ContextFiltersApi FP - ContextFiltersApiAxiosParamCreator -/** - * - * @summary Get all Context Filters - * @param {string} workspaceId - * @param {'ALL' | 'PARENTS' | 'NATIVE'} [origin] - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @param {number} [page] Zero-based page index (0..N) - * @param {number} [size] The size of the page to be returned - * @param {Array} [sort] Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. - * @param {boolean} [xGDCVALIDATERELATIONS] - * @param {Array<'origin' | 'page' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApiAxiosParamCreator_GetAllEntitiesFilterContexts( - workspaceId: string, - origin?: "ALL" | "PARENTS" | "NATIVE", - filter?: string, - include?: Array<"attributes" | "datasets" | "labels" | "ALL">, - page?: number, - size?: number, - sort?: Array, - xGDCVALIDATERELATIONS?: boolean, - metaInclude?: Array<"origin" | "page" | "all" | "ALL">, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("getAllEntitiesFilterContexts", "workspaceId", workspaceId); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts`.replace( - `{${"workspaceId"}}`, - encodeURIComponent(String(workspaceId)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (origin !== undefined) { - localVarQueryParameter["origin"] = origin; - } - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - if (include) { - localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); - } - - if (page !== undefined) { - localVarQueryParameter["page"] = page; - } - - if (size !== undefined) { - localVarQueryParameter["size"] = size; - } - - if (sort) { - localVarQueryParameter["sort"] = sort; - } - - if (metaInclude) { - localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); - } - - if (xGDCVALIDATERELATIONS !== undefined && xGDCVALIDATERELATIONS !== null) { - localVarHeaderParameter["X-GDC-VALIDATE-RELATIONS"] = String(JSON.stringify(xGDCVALIDATERELATIONS)); - } - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// ContextFiltersApi FP - ContextFiltersApiAxiosParamCreator -/** - * - * @summary Get a Context Filter - * @param {string} workspaceId - * @param {string} objectId - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @param {boolean} [xGDCVALIDATERELATIONS] - * @param {Array<'origin' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApiAxiosParamCreator_GetEntityFilterContexts( - workspaceId: string, - objectId: string, - filter?: string, - include?: Array<"attributes" | "datasets" | "labels" | "ALL">, - xGDCVALIDATERELATIONS?: boolean, - metaInclude?: Array<"origin" | "all" | "ALL">, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("getEntityFilterContexts", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("getEntityFilterContexts", "objectId", objectId); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - if (include) { - localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); - } - - if (metaInclude) { - localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); - } - - if (xGDCVALIDATERELATIONS !== undefined && xGDCVALIDATERELATIONS !== null) { - localVarHeaderParameter["X-GDC-VALIDATE-RELATIONS"] = String(JSON.stringify(xGDCVALIDATERELATIONS)); - } - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// ContextFiltersApi FP - ContextFiltersApiAxiosParamCreator -/** - * - * @summary Patch a Context Filter - * @param {string} workspaceId - * @param {string} objectId - * @param {JsonApiFilterContextPatchDocument} jsonApiFilterContextPatchDocument - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApiAxiosParamCreator_PatchEntityFilterContexts( - workspaceId: string, - objectId: string, - jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument, - filter?: string, - include?: Array<"attributes" | "datasets" | "labels" | "ALL">, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("patchEntityFilterContexts", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("patchEntityFilterContexts", "objectId", objectId); - // verify required parameter 'jsonApiFilterContextPatchDocument' is not null or undefined - assertParamExists( - "patchEntityFilterContexts", - "jsonApiFilterContextPatchDocument", - jsonApiFilterContextPatchDocument, - ); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "PATCH", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - if (include) { - localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); - } - - localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - const needsSerialization = - typeof jsonApiFilterContextPatchDocument !== "string" || - localVarRequestOptions.headers["Content-Type"] === "application/json"; - localVarRequestOptions.data = needsSerialization - ? JSON.stringify( - jsonApiFilterContextPatchDocument !== undefined ? jsonApiFilterContextPatchDocument : {}, - ) - : jsonApiFilterContextPatchDocument || ""; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// ContextFiltersApi FP - ContextFiltersApiAxiosParamCreator -/** - * - * @summary Put a Context Filter - * @param {string} workspaceId - * @param {string} objectId - * @param {JsonApiFilterContextInDocument} jsonApiFilterContextInDocument - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApiAxiosParamCreator_UpdateEntityFilterContexts( - workspaceId: string, - objectId: string, - jsonApiFilterContextInDocument: JsonApiFilterContextInDocument, - filter?: string, - include?: Array<"attributes" | "datasets" | "labels" | "ALL">, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("updateEntityFilterContexts", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("updateEntityFilterContexts", "objectId", objectId); - // verify required parameter 'jsonApiFilterContextInDocument' is not null or undefined - assertParamExists( - "updateEntityFilterContexts", - "jsonApiFilterContextInDocument", - jsonApiFilterContextInDocument, - ); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - if (include) { - localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); - } - - localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - const needsSerialization = - typeof jsonApiFilterContextInDocument !== "string" || - localVarRequestOptions.headers["Content-Type"] === "application/json"; - localVarRequestOptions.data = needsSerialization - ? JSON.stringify(jsonApiFilterContextInDocument !== undefined ? jsonApiFilterContextInDocument : {}) - : jsonApiFilterContextInDocument || ""; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// ContextFiltersApi Api FP -/** - * - * @summary Post Context Filters - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {ContextFiltersApiCreateEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApi_CreateEntityFilterContexts( - axios: AxiosInstance, - basePath: string, - requestParameters: ContextFiltersApiCreateEntityFilterContextsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await ContextFiltersApiAxiosParamCreator_CreateEntityFilterContexts( - requestParameters.workspaceId, - requestParameters.jsonApiFilterContextPostOptionalIdDocument, - requestParameters.include, - requestParameters.metaInclude, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -// ContextFiltersApi Api FP -/** - * - * @summary Delete a Context Filter - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {ContextFiltersApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApi_DeleteEntityFilterContexts( - axios: AxiosInstance, - basePath: string, - requestParameters: ContextFiltersApiDeleteEntityFilterContextsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await ContextFiltersApiAxiosParamCreator_DeleteEntityFilterContexts( - requestParameters.workspaceId, - requestParameters.objectId, - requestParameters.filter, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -// ContextFiltersApi Api FP -/** - * - * @summary Get all Context Filters - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {ContextFiltersApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApi_GetAllEntitiesFilterContexts( - axios: AxiosInstance, - basePath: string, - requestParameters: ContextFiltersApiGetAllEntitiesFilterContextsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await ContextFiltersApiAxiosParamCreator_GetAllEntitiesFilterContexts( - requestParameters.workspaceId, - requestParameters.origin, - requestParameters.filter, - requestParameters.include, - requestParameters.page, - requestParameters.size, - requestParameters.sort, - requestParameters.xGDCVALIDATERELATIONS, - requestParameters.metaInclude, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -// ContextFiltersApi Api FP -/** - * - * @summary Get a Context Filter - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {ContextFiltersApiGetEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApi_GetEntityFilterContexts( - axios: AxiosInstance, - basePath: string, - requestParameters: ContextFiltersApiGetEntityFilterContextsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await ContextFiltersApiAxiosParamCreator_GetEntityFilterContexts( - requestParameters.workspaceId, - requestParameters.objectId, - requestParameters.filter, - requestParameters.include, - requestParameters.xGDCVALIDATERELATIONS, - requestParameters.metaInclude, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -// ContextFiltersApi Api FP -/** - * - * @summary Patch a Context Filter - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {ContextFiltersApiPatchEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApi_PatchEntityFilterContexts( - axios: AxiosInstance, - basePath: string, - requestParameters: ContextFiltersApiPatchEntityFilterContextsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await ContextFiltersApiAxiosParamCreator_PatchEntityFilterContexts( - requestParameters.workspaceId, - requestParameters.objectId, - requestParameters.jsonApiFilterContextPatchDocument, - requestParameters.filter, - requestParameters.include, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -// ContextFiltersApi Api FP -/** - * - * @summary Put a Context Filter - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {ContextFiltersApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function ContextFiltersApi_UpdateEntityFilterContexts( - axios: AxiosInstance, - basePath: string, - requestParameters: ContextFiltersApiUpdateEntityFilterContextsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await ContextFiltersApiAxiosParamCreator_UpdateEntityFilterContexts( - requestParameters.workspaceId, - requestParameters.objectId, - requestParameters.jsonApiFilterContextInDocument, - requestParameters.filter, - requestParameters.include, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -/** - * ContextFiltersApi - interface - * @export - * @interface ContextFiltersApi - */ -export interface ContextFiltersApiInterface { - /** - * - * @summary Post Context Filters - * @param {ContextFiltersApiCreateEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApiInterface - */ - createEntityFilterContexts( - requestParameters: ContextFiltersApiCreateEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; - - /** - * - * @summary Delete a Context Filter - * @param {ContextFiltersApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApiInterface - */ - deleteEntityFilterContexts( - requestParameters: ContextFiltersApiDeleteEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; - - /** - * - * @summary Get all Context Filters - * @param {ContextFiltersApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApiInterface - */ - getAllEntitiesFilterContexts( - requestParameters: ContextFiltersApiGetAllEntitiesFilterContextsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; - - /** - * - * @summary Get a Context Filter - * @param {ContextFiltersApiGetEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApiInterface - */ - getEntityFilterContexts( - requestParameters: ContextFiltersApiGetEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; - - /** - * - * @summary Patch a Context Filter - * @param {ContextFiltersApiPatchEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApiInterface - */ - patchEntityFilterContexts( - requestParameters: ContextFiltersApiPatchEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; - - /** - * - * @summary Put a Context Filter - * @param {ContextFiltersApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApiInterface - */ - updateEntityFilterContexts( - requestParameters: ContextFiltersApiUpdateEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; -} - -/** - * Request parameters for createEntityFilterContexts operation in ContextFiltersApi. - * @export - * @interface ContextFiltersApiCreateEntityFilterContextsRequest - */ -export interface ContextFiltersApiCreateEntityFilterContextsRequest { - /** - * - * @type {string} - * @memberof ContextFiltersApiCreateEntityFilterContexts - */ - readonly workspaceId: string; - - /** - * - * @type {JsonApiFilterContextPostOptionalIdDocument} - * @memberof ContextFiltersApiCreateEntityFilterContexts - */ - readonly jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument; - - /** - * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} - * @memberof ContextFiltersApiCreateEntityFilterContexts - */ - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - - /** - * Include Meta objects. - * @type {Array<'origin' | 'all' | 'ALL'>} - * @memberof ContextFiltersApiCreateEntityFilterContexts - */ - readonly metaInclude?: Array<"origin" | "all" | "ALL">; -} - -/** - * Request parameters for deleteEntityFilterContexts operation in ContextFiltersApi. - * @export - * @interface ContextFiltersApiDeleteEntityFilterContextsRequest - */ -export interface ContextFiltersApiDeleteEntityFilterContextsRequest { - /** - * - * @type {string} - * @memberof ContextFiltersApiDeleteEntityFilterContexts - */ - readonly workspaceId: string; - - /** - * - * @type {string} - * @memberof ContextFiltersApiDeleteEntityFilterContexts - */ - readonly objectId: string; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof ContextFiltersApiDeleteEntityFilterContexts - */ - readonly filter?: string; -} - -/** - * Request parameters for getAllEntitiesFilterContexts operation in ContextFiltersApi. - * @export - * @interface ContextFiltersApiGetAllEntitiesFilterContextsRequest - */ -export interface ContextFiltersApiGetAllEntitiesFilterContextsRequest { - /** - * - * @type {string} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly workspaceId: string; - - /** - * - * @type {'ALL' | 'PARENTS' | 'NATIVE'} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly origin?: "ALL" | "PARENTS" | "NATIVE"; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly filter?: string; - - /** - * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - - /** - * Zero-based page index (0..N) - * @type {number} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly page?: number; - - /** - * The size of the page to be returned - * @type {number} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly size?: number; - - /** - * Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. - * @type {Array} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly sort?: Array; - - /** - * - * @type {boolean} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly xGDCVALIDATERELATIONS?: boolean; - - /** - * Include Meta objects. - * @type {Array<'origin' | 'page' | 'all' | 'ALL'>} - * @memberof ContextFiltersApiGetAllEntitiesFilterContexts - */ - readonly metaInclude?: Array<"origin" | "page" | "all" | "ALL">; -} - -/** - * Request parameters for getEntityFilterContexts operation in ContextFiltersApi. - * @export - * @interface ContextFiltersApiGetEntityFilterContextsRequest - */ -export interface ContextFiltersApiGetEntityFilterContextsRequest { - /** - * - * @type {string} - * @memberof ContextFiltersApiGetEntityFilterContexts - */ - readonly workspaceId: string; - - /** - * - * @type {string} - * @memberof ContextFiltersApiGetEntityFilterContexts - */ - readonly objectId: string; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof ContextFiltersApiGetEntityFilterContexts - */ - readonly filter?: string; - - /** - * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} - * @memberof ContextFiltersApiGetEntityFilterContexts - */ - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; - - /** - * - * @type {boolean} - * @memberof ContextFiltersApiGetEntityFilterContexts - */ - readonly xGDCVALIDATERELATIONS?: boolean; - - /** - * Include Meta objects. - * @type {Array<'origin' | 'all' | 'ALL'>} - * @memberof ContextFiltersApiGetEntityFilterContexts - */ - readonly metaInclude?: Array<"origin" | "all" | "ALL">; -} - -/** - * Request parameters for patchEntityFilterContexts operation in ContextFiltersApi. - * @export - * @interface ContextFiltersApiPatchEntityFilterContextsRequest - */ -export interface ContextFiltersApiPatchEntityFilterContextsRequest { - /** - * - * @type {string} - * @memberof ContextFiltersApiPatchEntityFilterContexts - */ - readonly workspaceId: string; - - /** - * - * @type {string} - * @memberof ContextFiltersApiPatchEntityFilterContexts - */ - readonly objectId: string; - - /** - * - * @type {JsonApiFilterContextPatchDocument} - * @memberof ContextFiltersApiPatchEntityFilterContexts - */ - readonly jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof ContextFiltersApiPatchEntityFilterContexts - */ - readonly filter?: string; - - /** - * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} - * @memberof ContextFiltersApiPatchEntityFilterContexts - */ - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; -} - -/** - * Request parameters for updateEntityFilterContexts operation in ContextFiltersApi. - * @export - * @interface ContextFiltersApiUpdateEntityFilterContextsRequest - */ -export interface ContextFiltersApiUpdateEntityFilterContextsRequest { - /** - * - * @type {string} - * @memberof ContextFiltersApiUpdateEntityFilterContexts - */ - readonly workspaceId: string; - - /** - * - * @type {string} - * @memberof ContextFiltersApiUpdateEntityFilterContexts - */ - readonly objectId: string; - - /** - * - * @type {JsonApiFilterContextInDocument} - * @memberof ContextFiltersApiUpdateEntityFilterContexts - */ - readonly jsonApiFilterContextInDocument: JsonApiFilterContextInDocument; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof ContextFiltersApiUpdateEntityFilterContexts - */ - readonly filter?: string; - - /** - * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} - * @memberof ContextFiltersApiUpdateEntityFilterContexts - */ - readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; -} - -/** - * ContextFiltersApi - object-oriented interface - * @export - * @class ContextFiltersApi - * @extends {BaseAPI} - */ -export class ContextFiltersApi extends BaseAPI implements ContextFiltersApiInterface { - /** - * - * @summary Post Context Filters - * @param {ContextFiltersApiCreateEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApi - */ - public createEntityFilterContexts( - requestParameters: ContextFiltersApiCreateEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ) { - return ContextFiltersApi_CreateEntityFilterContexts( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } - - /** - * - * @summary Delete a Context Filter - * @param {ContextFiltersApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApi - */ - public deleteEntityFilterContexts( - requestParameters: ContextFiltersApiDeleteEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ) { - return ContextFiltersApi_DeleteEntityFilterContexts( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } - - /** - * - * @summary Get all Context Filters - * @param {ContextFiltersApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApi - */ - public getAllEntitiesFilterContexts( - requestParameters: ContextFiltersApiGetAllEntitiesFilterContextsRequest, - options?: AxiosRequestConfig, - ) { - return ContextFiltersApi_GetAllEntitiesFilterContexts( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } - - /** - * - * @summary Get a Context Filter - * @param {ContextFiltersApiGetEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApi - */ - public getEntityFilterContexts( - requestParameters: ContextFiltersApiGetEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ) { - return ContextFiltersApi_GetEntityFilterContexts( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } - - /** - * - * @summary Patch a Context Filter - * @param {ContextFiltersApiPatchEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApi - */ - public patchEntityFilterContexts( - requestParameters: ContextFiltersApiPatchEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ) { - return ContextFiltersApi_PatchEntityFilterContexts( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } - - /** - * - * @summary Put a Context Filter - * @param {ContextFiltersApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof ContextFiltersApi - */ - public updateEntityFilterContexts( - requestParameters: ContextFiltersApiUpdateEntityFilterContextsRequest, - options?: AxiosRequestConfig, - ) { - return ContextFiltersApi_UpdateEntityFilterContexts( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } -} - -// CookieSecurityConfigurationApi FP - CookieSecurityConfigurationApiAxiosParamCreator -/** - * - * @summary Get CookieSecurityConfiguration - * @param {string} id - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function CookieSecurityConfigurationApiAxiosParamCreator_GetEntityCookieSecurityConfigurations( - id: string, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("getEntityCookieSecurityConfigurations", "id", id); - const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// CookieSecurityConfigurationApi FP - CookieSecurityConfigurationApiAxiosParamCreator -/** - * - * @summary Patch CookieSecurityConfiguration - * @param {string} id - * @param {JsonApiCookieSecurityConfigurationPatchDocument} jsonApiCookieSecurityConfigurationPatchDocument - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function CookieSecurityConfigurationApiAxiosParamCreator_PatchEntityCookieSecurityConfigurations( - id: string, - jsonApiCookieSecurityConfigurationPatchDocument: JsonApiCookieSecurityConfigurationPatchDocument, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("patchEntityCookieSecurityConfigurations", "id", id); - // verify required parameter 'jsonApiCookieSecurityConfigurationPatchDocument' is not null or undefined - assertParamExists( - "patchEntityCookieSecurityConfigurations", - "jsonApiCookieSecurityConfigurationPatchDocument", - jsonApiCookieSecurityConfigurationPatchDocument, - ); - const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "PATCH", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - const needsSerialization = - typeof jsonApiCookieSecurityConfigurationPatchDocument !== "string" || - localVarRequestOptions.headers["Content-Type"] === "application/json"; - localVarRequestOptions.data = needsSerialization - ? JSON.stringify( - jsonApiCookieSecurityConfigurationPatchDocument !== undefined - ? jsonApiCookieSecurityConfigurationPatchDocument - : {}, - ) - : jsonApiCookieSecurityConfigurationPatchDocument || ""; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// CookieSecurityConfigurationApi FP - CookieSecurityConfigurationApiAxiosParamCreator -/** - * - * @summary Put CookieSecurityConfiguration - * @param {string} id - * @param {JsonApiCookieSecurityConfigurationInDocument} jsonApiCookieSecurityConfigurationInDocument - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function CookieSecurityConfigurationApiAxiosParamCreator_UpdateEntityCookieSecurityConfigurations( - id: string, - jsonApiCookieSecurityConfigurationInDocument: JsonApiCookieSecurityConfigurationInDocument, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("updateEntityCookieSecurityConfigurations", "id", id); - // verify required parameter 'jsonApiCookieSecurityConfigurationInDocument' is not null or undefined - assertParamExists( - "updateEntityCookieSecurityConfigurations", - "jsonApiCookieSecurityConfigurationInDocument", - jsonApiCookieSecurityConfigurationInDocument, - ); - const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - const needsSerialization = - typeof jsonApiCookieSecurityConfigurationInDocument !== "string" || - localVarRequestOptions.headers["Content-Type"] === "application/json"; - localVarRequestOptions.data = needsSerialization - ? JSON.stringify( - jsonApiCookieSecurityConfigurationInDocument !== undefined - ? jsonApiCookieSecurityConfigurationInDocument - : {}, - ) - : jsonApiCookieSecurityConfigurationInDocument || ""; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// CookieSecurityConfigurationApi Api FP -/** - * - * @summary Get CookieSecurityConfiguration - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function CookieSecurityConfigurationApi_GetEntityCookieSecurityConfigurations( - axios: AxiosInstance, - basePath: string, - requestParameters: CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = - await CookieSecurityConfigurationApiAxiosParamCreator_GetEntityCookieSecurityConfigurations( - requestParameters.id, - requestParameters.filter, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -// CookieSecurityConfigurationApi Api FP -/** - * - * @summary Patch CookieSecurityConfiguration - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function CookieSecurityConfigurationApi_PatchEntityCookieSecurityConfigurations( - axios: AxiosInstance, - basePath: string, - requestParameters: CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = - await CookieSecurityConfigurationApiAxiosParamCreator_PatchEntityCookieSecurityConfigurations( - requestParameters.id, - requestParameters.jsonApiCookieSecurityConfigurationPatchDocument, - requestParameters.filter, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -// CookieSecurityConfigurationApi Api FP -/** - * - * @summary Put CookieSecurityConfiguration - * @param {AxiosInstance} axios Axios instance. - * @param {string} basePath Base path. - * @param {CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function CookieSecurityConfigurationApi_UpdateEntityCookieSecurityConfigurations( - axios: AxiosInstance, - basePath: string, - requestParameters: CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = - await CookieSecurityConfigurationApiAxiosParamCreator_UpdateEntityCookieSecurityConfigurations( - requestParameters.id, - requestParameters.jsonApiCookieSecurityConfigurationInDocument, - requestParameters.filter, - options || {}, - configuration, - ); - return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); -} - -/** - * CookieSecurityConfigurationApi - interface - * @export - * @interface CookieSecurityConfigurationApi - */ -export interface CookieSecurityConfigurationApiInterface { - /** - * - * @summary Get CookieSecurityConfiguration - * @param {CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof CookieSecurityConfigurationApiInterface - */ - getEntityCookieSecurityConfigurations( - requestParameters: CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; - - /** - * - * @summary Patch CookieSecurityConfiguration - * @param {CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof CookieSecurityConfigurationApiInterface - */ - patchEntityCookieSecurityConfigurations( - requestParameters: CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; - - /** - * - * @summary Put CookieSecurityConfiguration - * @param {CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof CookieSecurityConfigurationApiInterface - */ - updateEntityCookieSecurityConfigurations( - requestParameters: CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - ): AxiosPromise; -} - -/** - * Request parameters for getEntityCookieSecurityConfigurations operation in CookieSecurityConfigurationApi. - * @export - * @interface CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest - */ -export interface CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest { - /** - * - * @type {string} - * @memberof CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurations - */ - readonly id: string; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurations - */ - readonly filter?: string; -} - -/** - * Request parameters for patchEntityCookieSecurityConfigurations operation in CookieSecurityConfigurationApi. - * @export - * @interface CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest - */ -export interface CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest { - /** - * - * @type {string} - * @memberof CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurations - */ - readonly id: string; - - /** - * - * @type {JsonApiCookieSecurityConfigurationPatchDocument} - * @memberof CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurations - */ - readonly jsonApiCookieSecurityConfigurationPatchDocument: JsonApiCookieSecurityConfigurationPatchDocument; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurations - */ - readonly filter?: string; -} - -/** - * Request parameters for updateEntityCookieSecurityConfigurations operation in CookieSecurityConfigurationApi. - * @export - * @interface CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest - */ -export interface CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest { - /** - * - * @type {string} - * @memberof CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurations - */ - readonly id: string; - - /** - * - * @type {JsonApiCookieSecurityConfigurationInDocument} - * @memberof CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurations - */ - readonly jsonApiCookieSecurityConfigurationInDocument: JsonApiCookieSecurityConfigurationInDocument; - - /** - * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @type {string} - * @memberof CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurations - */ - readonly filter?: string; -} - -/** - * CookieSecurityConfigurationApi - object-oriented interface - * @export - * @class CookieSecurityConfigurationApi - * @extends {BaseAPI} - */ -export class CookieSecurityConfigurationApi - extends BaseAPI - implements CookieSecurityConfigurationApiInterface -{ - /** - * - * @summary Get CookieSecurityConfiguration - * @param {CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof CookieSecurityConfigurationApi - */ - public getEntityCookieSecurityConfigurations( - requestParameters: CookieSecurityConfigurationApiGetEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - ) { - return CookieSecurityConfigurationApi_GetEntityCookieSecurityConfigurations( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } - - /** - * - * @summary Patch CookieSecurityConfiguration - * @param {CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof CookieSecurityConfigurationApi - */ - public patchEntityCookieSecurityConfigurations( - requestParameters: CookieSecurityConfigurationApiPatchEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - ) { - return CookieSecurityConfigurationApi_PatchEntityCookieSecurityConfigurations( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } - - /** - * - * @summary Put CookieSecurityConfiguration - * @param {CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest} requestParameters Request parameters. - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof CookieSecurityConfigurationApi - */ - public updateEntityCookieSecurityConfigurations( - requestParameters: CookieSecurityConfigurationApiUpdateEntityCookieSecurityConfigurationsRequest, - options?: AxiosRequestConfig, - ) { - return CookieSecurityConfigurationApi_UpdateEntityCookieSecurityConfigurations( - this.axios, - this.basePath, - requestParameters, - options, - this.configuration, - ); - } -} - -// DashboardsApi FP - DashboardsApiAxiosParamCreator -/** - * - * @summary Post Dashboards - * @param {string} workspaceId - * @param {JsonApiAnalyticalDashboardPostOptionalIdDocument} jsonApiAnalyticalDashboardPostOptionalIdDocument - * @param {Array<'userIdentifiers' | 'visualizationObjects' | 'analyticalDashboards' | 'labels' | 'metrics' | 'datasets' | 'filterContexts' | 'dashboardPlugins' | 'createdBy' | 'modifiedBy' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @param {Array<'permissions' | 'origin' | 'accessInfo' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function DashboardsApiAxiosParamCreator_CreateEntityAnalyticalDashboards( - workspaceId: string, - jsonApiAnalyticalDashboardPostOptionalIdDocument: JsonApiAnalyticalDashboardPostOptionalIdDocument, - include?: Array< - | "userIdentifiers" - | "visualizationObjects" - | "analyticalDashboards" - | "labels" - | "metrics" - | "datasets" - | "filterContexts" - | "dashboardPlugins" - | "createdBy" - | "modifiedBy" - | "ALL" - >, - metaInclude?: Array<"permissions" | "origin" | "accessInfo" | "all" | "ALL">, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("createEntityAnalyticalDashboards", "workspaceId", workspaceId); - // verify required parameter 'jsonApiAnalyticalDashboardPostOptionalIdDocument' is not null or undefined - assertParamExists( - "createEntityAnalyticalDashboards", - "jsonApiAnalyticalDashboardPostOptionalIdDocument", - jsonApiAnalyticalDashboardPostOptionalIdDocument, - ); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/analyticalDashboards`.replace( + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/analyticalDashboards`.replace( `{${"workspaceId"}}`, encodeURIComponent(String(workspaceId)), ); @@ -34886,6 +36291,60 @@ export async function EntitiesApiAxiosParamCreator_CreateEntityCustomApplication }; } +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @param {JsonApiCustomGeoCollectionInDocument} jsonApiCustomGeoCollectionInDocument + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_CreateEntityCustomGeoCollections( + jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'jsonApiCustomGeoCollectionInDocument' is not null or undefined + assertParamExists( + "createEntityCustomGeoCollections", + "jsonApiCustomGeoCollectionInDocument", + jsonApiCustomGeoCollectionInDocument, + ); + const localVarPath = `/api/v1/entities/customGeoCollections`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCustomGeoCollectionInDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCustomGeoCollectionInDocument !== undefined ? jsonApiCustomGeoCollectionInDocument : {}, + ) + : jsonApiCustomGeoCollectionInDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * @@ -35164,7 +36623,7 @@ export async function EntitiesApiAxiosParamCreator_CreateEntityExportTemplates( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {string} workspaceId * @param {JsonApiFilterContextPostOptionalIdDocument} jsonApiFilterContextPostOptionalIdDocument * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. @@ -36531,28 +37990,184 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityAnalyticalDashboa // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Delete an API Token for a user - * @param {string} userId + * @summary Delete an API Token for a user + * @param {string} userId + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_DeleteEntityApiTokens( + userId: string, + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'userId' is not null or undefined + assertParamExists("deleteEntityApiTokens", "userId", userId); + // verify required parameter 'id' is not null or undefined + assertParamExists("deleteEntityApiTokens", "id", id); + const localVarPath = `/api/v1/entities/users/{userId}/apiTokens/{id}` + .replace(`{${"userId"}}`, encodeURIComponent(String(userId))) + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @summary Delete an Attribute Hierarchy + * @param {string} workspaceId + * @param {string} objectId + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_DeleteEntityAttributeHierarchies( + workspaceId: string, + objectId: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("deleteEntityAttributeHierarchies", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("deleteEntityAttributeHierarchies", "objectId", objectId); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/attributeHierarchies/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @summary Delete an Automation + * @param {string} workspaceId + * @param {string} objectId + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_DeleteEntityAutomations( + workspaceId: string, + objectId: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("deleteEntityAutomations", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("deleteEntityAutomations", "objectId", objectId); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/automations/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @summary Delete a Color Pallette * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_DeleteEntityApiTokens( - userId: string, +export async function EntitiesApiAxiosParamCreator_DeleteEntityColorPalettes( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - // verify required parameter 'userId' is not null or undefined - assertParamExists("deleteEntityApiTokens", "userId", userId); // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityApiTokens", "id", id); - const localVarPath = `/api/v1/entities/users/{userId}/apiTokens/{id}` - .replace(`{${"userId"}}`, encodeURIComponent(String(userId))) - .replace(`{${"id"}}`, encodeURIComponent(String(id))); + assertParamExists("deleteEntityColorPalettes", "id", id); + const localVarPath = `/api/v1/entities/colorPalettes/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -36583,29 +38198,26 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityApiTokens( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** - * - * @summary Delete an Attribute Hierarchy - * @param {string} workspaceId - * @param {string} objectId + * Context Security Police Directive + * @summary Delete CSP Directives + * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_DeleteEntityAttributeHierarchies( - workspaceId: string, - objectId: string, +export async function EntitiesApiAxiosParamCreator_DeleteEntityCspDirectives( + id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("deleteEntityAttributeHierarchies", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("deleteEntityAttributeHierarchies", "objectId", objectId); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/attributeHierarchies/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // verify required parameter 'id' is not null or undefined + assertParamExists("deleteEntityCspDirectives", "id", id); + const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -36637,7 +38249,7 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityAttributeHierarch // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Delete an Automation + * @summary Delete a Custom Application Setting * @param {string} workspaceId * @param {string} objectId * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). @@ -36645,7 +38257,7 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityAttributeHierarch * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_DeleteEntityAutomations( +export async function EntitiesApiAxiosParamCreator_DeleteEntityCustomApplicationSettings( workspaceId: string, objectId: string, filter?: string, @@ -36653,10 +38265,10 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityAutomations( configuration?: Configuration, ): Promise { // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("deleteEntityAutomations", "workspaceId", workspaceId); + assertParamExists("deleteEntityCustomApplicationSettings", "workspaceId", workspaceId); // verify required parameter 'objectId' is not null or undefined - assertParamExists("deleteEntityAutomations", "objectId", objectId); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/automations/{objectId}` + assertParamExists("deleteEntityCustomApplicationSettings", "objectId", objectId); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/customApplicationSettings/{objectId}` .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. @@ -36690,72 +38302,21 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityAutomations( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Delete a Color Pallette * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_DeleteEntityColorPalettes( +export async function EntitiesApiAxiosParamCreator_DeleteEntityCustomGeoCollections( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityColorPalettes", "id", id); - const localVarPath = `/api/v1/entities/colorPalettes/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// EntitiesApi FP - EntitiesApiAxiosParamCreator -/** - * Context Security Police Directive - * @summary Delete CSP Directives - * @param {string} id - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function EntitiesApiAxiosParamCreator_DeleteEntityCspDirectives( - id: string, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityCspDirectives", "id", id); - const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( + assertParamExists("deleteEntityCustomGeoCollections", "id", id); + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( `{${"id"}}`, encodeURIComponent(String(id)), ); @@ -36787,59 +38348,6 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityCspDirectives( }; } -// EntitiesApi FP - EntitiesApiAxiosParamCreator -/** - * - * @summary Delete a Custom Application Setting - * @param {string} workspaceId - * @param {string} objectId - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function EntitiesApiAxiosParamCreator_DeleteEntityCustomApplicationSettings( - workspaceId: string, - objectId: string, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("deleteEntityCustomApplicationSettings", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("deleteEntityCustomApplicationSettings", "objectId", objectId); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/customApplicationSettings/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * @@ -37049,7 +38557,7 @@ export async function EntitiesApiAxiosParamCreator_DeleteEntityExportTemplates( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). @@ -38933,6 +40441,72 @@ export async function EntitiesApiAxiosParamCreator_GetAllEntitiesCustomApplicati }; } +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {number} [page] Zero-based page index (0..N) + * @param {number} [size] The size of the page to be returned + * @param {Array} [sort] Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. + * @param {Array<'page' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_GetAllEntitiesCustomGeoCollections( + filter?: string, + page?: number, + size?: number, + sort?: Array, + metaInclude?: Array<"page" | "all" | "ALL">, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + const localVarPath = `/api/v1/entities/customGeoCollections`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + if (page !== undefined) { + localVarQueryParameter["page"] = page; + } + + if (size !== undefined) { + localVarQueryParameter["size"] = size; + } + + if (sort) { + localVarQueryParameter["sort"] = sort; + } + + if (metaInclude) { + localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * @@ -39591,7 +41165,7 @@ export async function EntitiesApiAxiosParamCreator_GetAllEntitiesFacts( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {string} workspaceId * @param {'ALL' | 'PARENTS' | 'NATIVE'} [origin] * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). @@ -42061,26 +43635,83 @@ export async function EntitiesApiAxiosParamCreator_GetEntityCookieSecurityConfig // EntitiesApi FP - EntitiesApiAxiosParamCreator /** - * Context Security Police Directive - * @summary Get CSP Directives - * @param {string} id + * Context Security Police Directive + * @summary Get CSP Directives + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_GetEntityCspDirectives( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("getEntityCspDirectives", "id", id); + const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @summary Get a Custom Application Setting + * @param {string} workspaceId + * @param {string} objectId * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {boolean} [xGDCVALIDATERELATIONS] + * @param {Array<'origin' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_GetEntityCspDirectives( - id: string, +export async function EntitiesApiAxiosParamCreator_GetEntityCustomApplicationSettings( + workspaceId: string, + objectId: string, filter?: string, + xGDCVALIDATERELATIONS?: boolean, + metaInclude?: Array<"origin" | "all" | "ALL">, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("getEntityCspDirectives", "id", id); - const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("getEntityCustomApplicationSettings", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("getEntityCustomApplicationSettings", "objectId", objectId); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/customApplicationSettings/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -42095,6 +43726,14 @@ export async function EntitiesApiAxiosParamCreator_GetEntityCspDirectives( localVarQueryParameter["filter"] = filter; } + if (metaInclude) { + localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); + } + + if (xGDCVALIDATERELATIONS !== undefined && xGDCVALIDATERELATIONS !== null) { + localVarHeaderParameter["X-GDC-VALIDATE-RELATIONS"] = String(JSON.stringify(xGDCVALIDATERELATIONS)); + } + setSearchParams(localVarUrlObj, localVarQueryParameter); const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -42112,32 +43751,24 @@ export async function EntitiesApiAxiosParamCreator_GetEntityCspDirectives( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Get a Custom Application Setting - * @param {string} workspaceId - * @param {string} objectId + * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {boolean} [xGDCVALIDATERELATIONS] - * @param {Array<'origin' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_GetEntityCustomApplicationSettings( - workspaceId: string, - objectId: string, +export async function EntitiesApiAxiosParamCreator_GetEntityCustomGeoCollections( + id: string, filter?: string, - xGDCVALIDATERELATIONS?: boolean, - metaInclude?: Array<"origin" | "all" | "ALL">, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("getEntityCustomApplicationSettings", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("getEntityCustomApplicationSettings", "objectId", objectId); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/customApplicationSettings/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // verify required parameter 'id' is not null or undefined + assertParamExists("getEntityCustomGeoCollections", "id", id); + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -42152,14 +43783,6 @@ export async function EntitiesApiAxiosParamCreator_GetEntityCustomApplicationSet localVarQueryParameter["filter"] = filter; } - if (metaInclude) { - localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); - } - - if (xGDCVALIDATERELATIONS !== undefined && xGDCVALIDATERELATIONS !== null) { - localVarHeaderParameter["X-GDC-VALIDATE-RELATIONS"] = String(JSON.stringify(xGDCVALIDATERELATIONS)); - } - setSearchParams(localVarUrlObj, localVarQueryParameter); const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = { @@ -42692,7 +44315,7 @@ export async function EntitiesApiAxiosParamCreator_GetEntityFacts( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). @@ -44829,6 +46452,75 @@ export async function EntitiesApiAxiosParamCreator_PatchEntityCustomApplicationS }; } +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @param {string} id + * @param {JsonApiCustomGeoCollectionPatchDocument} jsonApiCustomGeoCollectionPatchDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_PatchEntityCustomGeoCollections( + id: string, + jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("patchEntityCustomGeoCollections", "id", id); + // verify required parameter 'jsonApiCustomGeoCollectionPatchDocument' is not null or undefined + assertParamExists( + "patchEntityCustomGeoCollections", + "jsonApiCustomGeoCollectionPatchDocument", + jsonApiCustomGeoCollectionPatchDocument, + ); + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PATCH", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCustomGeoCollectionPatchDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCustomGeoCollectionPatchDocument !== undefined + ? jsonApiCustomGeoCollectionPatchDocument + : {}, + ) + : jsonApiCustomGeoCollectionPatchDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * @@ -45281,7 +46973,7 @@ export async function EntitiesApiAxiosParamCreator_PatchEntityFacts( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {JsonApiFilterContextPatchDocument} jsonApiFilterContextPatchDocument @@ -48622,11 +50314,147 @@ export async function EntitiesApiAxiosParamCreator_UpdateEntityColorPalettes( ...options.headers, }; const needsSerialization = - typeof jsonApiColorPaletteInDocument !== "string" || + typeof jsonApiColorPaletteInDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(jsonApiColorPaletteInDocument !== undefined ? jsonApiColorPaletteInDocument : {}) + : jsonApiColorPaletteInDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * + * @summary Put CookieSecurityConfiguration + * @param {string} id + * @param {JsonApiCookieSecurityConfigurationInDocument} jsonApiCookieSecurityConfigurationInDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_UpdateEntityCookieSecurityConfigurations( + id: string, + jsonApiCookieSecurityConfigurationInDocument: JsonApiCookieSecurityConfigurationInDocument, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("updateEntityCookieSecurityConfigurations", "id", id); + // verify required parameter 'jsonApiCookieSecurityConfigurationInDocument' is not null or undefined + assertParamExists( + "updateEntityCookieSecurityConfigurations", + "jsonApiCookieSecurityConfigurationInDocument", + jsonApiCookieSecurityConfigurationInDocument, + ); + const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCookieSecurityConfigurationInDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCookieSecurityConfigurationInDocument !== undefined + ? jsonApiCookieSecurityConfigurationInDocument + : {}, + ) + : jsonApiCookieSecurityConfigurationInDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// EntitiesApi FP - EntitiesApiAxiosParamCreator +/** + * Context Security Police Directive + * @summary Put CSP Directives + * @param {string} id + * @param {JsonApiCspDirectiveInDocument} jsonApiCspDirectiveInDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApiAxiosParamCreator_UpdateEntityCspDirectives( + id: string, + jsonApiCspDirectiveInDocument: JsonApiCspDirectiveInDocument, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("updateEntityCspDirectives", "id", id); + // verify required parameter 'jsonApiCspDirectiveInDocument' is not null or undefined + assertParamExists( + "updateEntityCspDirectives", + "jsonApiCspDirectiveInDocument", + jsonApiCspDirectiveInDocument, + ); + const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCspDirectiveInDocument !== "string" || localVarRequestOptions.headers["Content-Type"] === "application/json"; localVarRequestOptions.data = needsSerialization - ? JSON.stringify(jsonApiColorPaletteInDocument !== undefined ? jsonApiColorPaletteInDocument : {}) - : jsonApiColorPaletteInDocument || ""; + ? JSON.stringify(jsonApiCspDirectiveInDocument !== undefined ? jsonApiCspDirectiveInDocument : {}) + : jsonApiCspDirectiveInDocument || ""; return { url: toPathString(localVarUrlObj), @@ -48637,33 +50465,36 @@ export async function EntitiesApiAxiosParamCreator_UpdateEntityColorPalettes( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Put CookieSecurityConfiguration - * @param {string} id - * @param {JsonApiCookieSecurityConfigurationInDocument} jsonApiCookieSecurityConfigurationInDocument + * @summary Put a Custom Application Setting + * @param {string} workspaceId + * @param {string} objectId + * @param {JsonApiCustomApplicationSettingInDocument} jsonApiCustomApplicationSettingInDocument * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_UpdateEntityCookieSecurityConfigurations( - id: string, - jsonApiCookieSecurityConfigurationInDocument: JsonApiCookieSecurityConfigurationInDocument, +export async function EntitiesApiAxiosParamCreator_UpdateEntityCustomApplicationSettings( + workspaceId: string, + objectId: string, + jsonApiCustomApplicationSettingInDocument: JsonApiCustomApplicationSettingInDocument, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("updateEntityCookieSecurityConfigurations", "id", id); - // verify required parameter 'jsonApiCookieSecurityConfigurationInDocument' is not null or undefined + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("updateEntityCustomApplicationSettings", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("updateEntityCustomApplicationSettings", "objectId", objectId); + // verify required parameter 'jsonApiCustomApplicationSettingInDocument' is not null or undefined assertParamExists( - "updateEntityCookieSecurityConfigurations", - "jsonApiCookieSecurityConfigurationInDocument", - jsonApiCookieSecurityConfigurationInDocument, - ); - const localVarPath = `/api/v1/entities/admin/cookieSecurityConfigurations/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), + "updateEntityCustomApplicationSettings", + "jsonApiCustomApplicationSettingInDocument", + jsonApiCustomApplicationSettingInDocument, ); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/customApplicationSettings/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -48688,15 +50519,15 @@ export async function EntitiesApiAxiosParamCreator_UpdateEntityCookieSecurityCon ...options.headers, }; const needsSerialization = - typeof jsonApiCookieSecurityConfigurationInDocument !== "string" || + typeof jsonApiCustomApplicationSettingInDocument !== "string" || localVarRequestOptions.headers["Content-Type"] === "application/json"; localVarRequestOptions.data = needsSerialization ? JSON.stringify( - jsonApiCookieSecurityConfigurationInDocument !== undefined - ? jsonApiCookieSecurityConfigurationInDocument + jsonApiCustomApplicationSettingInDocument !== undefined + ? jsonApiCustomApplicationSettingInDocument : {}, ) - : jsonApiCookieSecurityConfigurationInDocument || ""; + : jsonApiCustomApplicationSettingInDocument || ""; return { url: toPathString(localVarUrlObj), @@ -48706,31 +50537,30 @@ export async function EntitiesApiAxiosParamCreator_UpdateEntityCookieSecurityCon // EntitiesApi FP - EntitiesApiAxiosParamCreator /** - * Context Security Police Directive - * @summary Put CSP Directives + * * @param {string} id - * @param {JsonApiCspDirectiveInDocument} jsonApiCspDirectiveInDocument + * @param {JsonApiCustomGeoCollectionInDocument} jsonApiCustomGeoCollectionInDocument * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function EntitiesApiAxiosParamCreator_UpdateEntityCspDirectives( +export async function EntitiesApiAxiosParamCreator_UpdateEntityCustomGeoCollections( id: string, - jsonApiCspDirectiveInDocument: JsonApiCspDirectiveInDocument, + jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("updateEntityCspDirectives", "id", id); - // verify required parameter 'jsonApiCspDirectiveInDocument' is not null or undefined + assertParamExists("updateEntityCustomGeoCollections", "id", id); + // verify required parameter 'jsonApiCustomGeoCollectionInDocument' is not null or undefined assertParamExists( - "updateEntityCspDirectives", - "jsonApiCspDirectiveInDocument", - jsonApiCspDirectiveInDocument, + "updateEntityCustomGeoCollections", + "jsonApiCustomGeoCollectionInDocument", + jsonApiCustomGeoCollectionInDocument, ); - const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( `{${"id"}}`, encodeURIComponent(String(id)), ); @@ -48758,84 +50588,13 @@ export async function EntitiesApiAxiosParamCreator_UpdateEntityCspDirectives( ...options.headers, }; const needsSerialization = - typeof jsonApiCspDirectiveInDocument !== "string" || - localVarRequestOptions.headers["Content-Type"] === "application/json"; - localVarRequestOptions.data = needsSerialization - ? JSON.stringify(jsonApiCspDirectiveInDocument !== undefined ? jsonApiCspDirectiveInDocument : {}) - : jsonApiCspDirectiveInDocument || ""; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// EntitiesApi FP - EntitiesApiAxiosParamCreator -/** - * - * @summary Put a Custom Application Setting - * @param {string} workspaceId - * @param {string} objectId - * @param {JsonApiCustomApplicationSettingInDocument} jsonApiCustomApplicationSettingInDocument - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function EntitiesApiAxiosParamCreator_UpdateEntityCustomApplicationSettings( - workspaceId: string, - objectId: string, - jsonApiCustomApplicationSettingInDocument: JsonApiCustomApplicationSettingInDocument, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'workspaceId' is not null or undefined - assertParamExists("updateEntityCustomApplicationSettings", "workspaceId", workspaceId); - // verify required parameter 'objectId' is not null or undefined - assertParamExists("updateEntityCustomApplicationSettings", "objectId", objectId); - // verify required parameter 'jsonApiCustomApplicationSettingInDocument' is not null or undefined - assertParamExists( - "updateEntityCustomApplicationSettings", - "jsonApiCustomApplicationSettingInDocument", - jsonApiCustomApplicationSettingInDocument, - ); - const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/customApplicationSettings/{objectId}` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) - .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - const needsSerialization = - typeof jsonApiCustomApplicationSettingInDocument !== "string" || + typeof jsonApiCustomGeoCollectionInDocument !== "string" || localVarRequestOptions.headers["Content-Type"] === "application/json"; localVarRequestOptions.data = needsSerialization ? JSON.stringify( - jsonApiCustomApplicationSettingInDocument !== undefined - ? jsonApiCustomApplicationSettingInDocument - : {}, + jsonApiCustomGeoCollectionInDocument !== undefined ? jsonApiCustomGeoCollectionInDocument : {}, ) - : jsonApiCustomApplicationSettingInDocument || ""; + : jsonApiCustomGeoCollectionInDocument || ""; return { url: toPathString(localVarUrlObj), @@ -49139,7 +50898,7 @@ export async function EntitiesApiAxiosParamCreator_UpdateEntityExportTemplates( // EntitiesApi FP - EntitiesApiAxiosParamCreator /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {JsonApiFilterContextInDocument} jsonApiFilterContextInDocument @@ -50843,6 +52602,31 @@ export async function EntitiesApi_CreateEntityCustomApplicationSettings( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// EntitiesApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {EntitiesApiCreateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApi_CreateEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: EntitiesApiCreateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await EntitiesApiAxiosParamCreator_CreateEntityCustomGeoCollections( + requestParameters.jsonApiCustomGeoCollectionInDocument, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // EntitiesApi Api FP /** * @@ -50957,7 +52741,7 @@ export async function EntitiesApi_CreateEntityExportTemplates( // EntitiesApi Api FP /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {EntitiesApiCreateEntityFilterContextsRequest} requestParameters Request parameters. @@ -51699,6 +53483,32 @@ export async function EntitiesApi_DeleteEntityCustomApplicationSettings( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// EntitiesApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {EntitiesApiDeleteEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApi_DeleteEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: EntitiesApiDeleteEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await EntitiesApiAxiosParamCreator_DeleteEntityCustomGeoCollections( + requestParameters.id, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // EntitiesApi Api FP /** * @@ -51812,7 +53622,7 @@ export async function EntitiesApi_DeleteEntityExportTemplates( // EntitiesApi Api FP /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {EntitiesApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. @@ -52681,6 +54491,35 @@ export async function EntitiesApi_GetAllEntitiesCustomApplicationSettings( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// EntitiesApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApi_GetAllEntitiesCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await EntitiesApiAxiosParamCreator_GetAllEntitiesCustomGeoCollections( + requestParameters.filter, + requestParameters.page, + requestParameters.size, + requestParameters.sort, + requestParameters.metaInclude, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // EntitiesApi Api FP /** * @@ -52940,7 +54779,7 @@ export async function EntitiesApi_GetAllEntitiesFacts( // EntitiesApi Api FP /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {EntitiesApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. @@ -54009,6 +55848,32 @@ export async function EntitiesApi_GetEntityCustomApplicationSettings( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// EntitiesApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {EntitiesApiGetEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApi_GetEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: EntitiesApiGetEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await EntitiesApiAxiosParamCreator_GetEntityCustomGeoCollections( + requestParameters.id, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // EntitiesApi Api FP /** * @@ -54246,7 +56111,7 @@ export async function EntitiesApi_GetEntityFacts( // EntitiesApi Api FP /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {EntitiesApiGetEntityFilterContextsRequest} requestParameters Request parameters. @@ -55196,6 +57061,33 @@ export async function EntitiesApi_PatchEntityCustomApplicationSettings( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// EntitiesApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {EntitiesApiPatchEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApi_PatchEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: EntitiesApiPatchEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await EntitiesApiAxiosParamCreator_PatchEntityCustomGeoCollections( + requestParameters.id, + requestParameters.jsonApiCustomGeoCollectionPatchDocument, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // EntitiesApi Api FP /** * @@ -55375,7 +57267,7 @@ export async function EntitiesApi_PatchEntityFacts( // EntitiesApi Api FP /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {EntitiesApiPatchEntityFilterContextsRequest} requestParameters Request parameters. @@ -56822,6 +58714,33 @@ export async function EntitiesApi_UpdateEntityCustomApplicationSettings( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// EntitiesApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {EntitiesApiUpdateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function EntitiesApi_UpdateEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: EntitiesApiUpdateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await EntitiesApiAxiosParamCreator_UpdateEntityCustomGeoCollections( + requestParameters.id, + requestParameters.jsonApiCustomGeoCollectionInDocument, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // EntitiesApi Api FP /** * @@ -56941,7 +58860,7 @@ export async function EntitiesApi_UpdateEntityExportTemplates( // EntitiesApi Api FP /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {EntitiesApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. @@ -57645,6 +59564,18 @@ export interface EntitiesApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {EntitiesApiCreateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApiInterface + */ + createEntityCustomGeoCollections( + requestParameters: EntitiesApiCreateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Post Plugins @@ -57699,7 +59630,7 @@ export interface EntitiesApiInterface { /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {EntitiesApiCreateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -58046,6 +59977,18 @@ export interface EntitiesApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {EntitiesApiDeleteEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApiInterface + */ + deleteEntityCustomGeoCollections( + requestParameters: EntitiesApiDeleteEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Delete a Plugin @@ -58100,7 +60043,7 @@ export interface EntitiesApiInterface { /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {EntitiesApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -58484,6 +60427,18 @@ export interface EntitiesApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApiInterface + */ + getAllEntitiesCustomGeoCollections( + requestParameters: EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Get all Plugins @@ -58590,7 +60545,7 @@ export interface EntitiesApiInterface { /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {EntitiesApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -59031,6 +60986,18 @@ export interface EntitiesApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {EntitiesApiGetEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApiInterface + */ + getEntityCustomGeoCollections( + requestParameters: EntitiesApiGetEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Get a Plugin @@ -59137,7 +61104,7 @@ export interface EntitiesApiInterface { /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {EntitiesApiGetEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -59561,6 +61528,18 @@ export interface EntitiesApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {EntitiesApiPatchEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApiInterface + */ + patchEntityCustomGeoCollections( + requestParameters: EntitiesApiPatchEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Patch a Plugin @@ -59641,7 +61620,7 @@ export interface EntitiesApiInterface { /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {EntitiesApiPatchEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -60285,6 +62264,18 @@ export interface EntitiesApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {EntitiesApiUpdateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApiInterface + */ + updateEntityCustomGeoCollections( + requestParameters: EntitiesApiUpdateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Put a Plugin @@ -60339,7 +62330,7 @@ export interface EntitiesApiInterface { /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {EntitiesApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -60816,6 +62807,20 @@ export interface EntitiesApiCreateEntityCustomApplicationSettingsRequest { readonly metaInclude?: Array<"origin" | "all" | "ALL">; } +/** + * Request parameters for createEntityCustomGeoCollections operation in EntitiesApi. + * @export + * @interface EntitiesApiCreateEntityCustomGeoCollectionsRequest + */ +export interface EntitiesApiCreateEntityCustomGeoCollectionsRequest { + /** + * + * @type {JsonApiCustomGeoCollectionInDocument} + * @memberof EntitiesApiCreateEntityCustomGeoCollections + */ + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; +} + /** * Request parameters for createEntityDashboardPlugins operation in EntitiesApi. * @export @@ -61658,6 +63663,27 @@ export interface EntitiesApiDeleteEntityCustomApplicationSettingsRequest { readonly filter?: string; } +/** + * Request parameters for deleteEntityCustomGeoCollections operation in EntitiesApi. + * @export + * @interface EntitiesApiDeleteEntityCustomGeoCollectionsRequest + */ +export interface EntitiesApiDeleteEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof EntitiesApiDeleteEntityCustomGeoCollections + */ + readonly id: string; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof EntitiesApiDeleteEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for deleteEntityDashboardPlugins operation in EntitiesApi. * @export @@ -62890,6 +64916,48 @@ export interface EntitiesApiGetAllEntitiesCustomApplicationSettingsRequest { readonly metaInclude?: Array<"origin" | "page" | "all" | "ALL">; } +/** + * Request parameters for getAllEntitiesCustomGeoCollections operation in EntitiesApi. + * @export + * @interface EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest + */ +export interface EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest { + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof EntitiesApiGetAllEntitiesCustomGeoCollections + */ + readonly filter?: string; + + /** + * Zero-based page index (0..N) + * @type {number} + * @memberof EntitiesApiGetAllEntitiesCustomGeoCollections + */ + readonly page?: number; + + /** + * The size of the page to be returned + * @type {number} + * @memberof EntitiesApiGetAllEntitiesCustomGeoCollections + */ + readonly size?: number; + + /** + * Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. + * @type {Array} + * @memberof EntitiesApiGetAllEntitiesCustomGeoCollections + */ + readonly sort?: Array; + + /** + * Include Meta objects. + * @type {Array<'page' | 'all' | 'ALL'>} + * @memberof EntitiesApiGetAllEntitiesCustomGeoCollections + */ + readonly metaInclude?: Array<"page" | "all" | "ALL">; +} + /** * Request parameters for getAllEntitiesDashboardPlugins operation in EntitiesApi. * @export @@ -65090,6 +67158,27 @@ export interface EntitiesApiGetEntityCustomApplicationSettingsRequest { readonly metaInclude?: Array<"origin" | "all" | "ALL">; } +/** + * Request parameters for getEntityCustomGeoCollections operation in EntitiesApi. + * @export + * @interface EntitiesApiGetEntityCustomGeoCollectionsRequest + */ +export interface EntitiesApiGetEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof EntitiesApiGetEntityCustomGeoCollections + */ + readonly id: string; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof EntitiesApiGetEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for getEntityDashboardPlugins operation in EntitiesApi. * @export @@ -66619,6 +68708,34 @@ export interface EntitiesApiPatchEntityCustomApplicationSettingsRequest { readonly filter?: string; } +/** + * Request parameters for patchEntityCustomGeoCollections operation in EntitiesApi. + * @export + * @interface EntitiesApiPatchEntityCustomGeoCollectionsRequest + */ +export interface EntitiesApiPatchEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof EntitiesApiPatchEntityCustomGeoCollections + */ + readonly id: string; + + /** + * + * @type {JsonApiCustomGeoCollectionPatchDocument} + * @memberof EntitiesApiPatchEntityCustomGeoCollections + */ + readonly jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof EntitiesApiPatchEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for patchEntityDashboardPlugins operation in EntitiesApi. * @export @@ -68704,6 +70821,34 @@ export interface EntitiesApiUpdateEntityCustomApplicationSettingsRequest { readonly filter?: string; } +/** + * Request parameters for updateEntityCustomGeoCollections operation in EntitiesApi. + * @export + * @interface EntitiesApiUpdateEntityCustomGeoCollectionsRequest + */ +export interface EntitiesApiUpdateEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof EntitiesApiUpdateEntityCustomGeoCollections + */ + readonly id: string; + + /** + * + * @type {JsonApiCustomGeoCollectionInDocument} + * @memberof EntitiesApiUpdateEntityCustomGeoCollections + */ + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof EntitiesApiUpdateEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for updateEntityDashboardPlugins operation in EntitiesApi. * @export @@ -69804,6 +71949,26 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { ); } + /** + * + * @param {EntitiesApiCreateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApi + */ + public createEntityCustomGeoCollections( + requestParameters: EntitiesApiCreateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return EntitiesApi_CreateEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Post Plugins @@ -69890,7 +72055,7 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {EntitiesApiCreateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -70453,6 +72618,26 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { ); } + /** + * + * @param {EntitiesApiDeleteEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApi + */ + public deleteEntityCustomGeoCollections( + requestParameters: EntitiesApiDeleteEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return EntitiesApi_DeleteEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Delete a Plugin @@ -70539,7 +72724,7 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {EntitiesApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -71163,6 +73348,26 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { ); } + /** + * + * @param {EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApi + */ + public getAllEntitiesCustomGeoCollections( + requestParameters: EntitiesApiGetAllEntitiesCustomGeoCollectionsRequest = {}, + options?: AxiosRequestConfig, + ) { + return EntitiesApi_GetAllEntitiesCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Get all Plugins @@ -71333,7 +73538,7 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {EntitiesApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -72042,6 +74247,26 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { ); } + /** + * + * @param {EntitiesApiGetEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApi + */ + public getEntityCustomGeoCollections( + requestParameters: EntitiesApiGetEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return EntitiesApi_GetEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Get a Plugin @@ -72209,7 +74434,7 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {EntitiesApiGetEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -72891,6 +75116,26 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { ); } + /** + * + * @param {EntitiesApiPatchEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApi + */ + public patchEntityCustomGeoCollections( + requestParameters: EntitiesApiPatchEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return EntitiesApi_PatchEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Patch a Plugin @@ -73019,7 +75264,7 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {EntitiesApiPatchEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -74063,6 +76308,26 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { ); } + /** + * + * @param {EntitiesApiUpdateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EntitiesApi + */ + public updateEntityCustomGeoCollections( + requestParameters: EntitiesApiUpdateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return EntitiesApi_UpdateEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Put a Plugin @@ -74149,7 +76414,7 @@ export class EntitiesApi extends BaseAPI implements EntitiesApiInterface { /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {EntitiesApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -77453,11 +79718,825 @@ export async function FactsApiAxiosParamCreator_PatchEntityFacts( ...options.headers, }; const needsSerialization = - typeof jsonApiFactPatchDocument !== "string" || + typeof jsonApiFactPatchDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(jsonApiFactPatchDocument !== undefined ? jsonApiFactPatchDocument : {}) + : jsonApiFactPatchDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// FactsApi Api FP +/** + * + * @summary Get all Facts + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {FactsApiGetAllEntitiesFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FactsApi_GetAllEntitiesFacts( + axios: AxiosInstance, + basePath: string, + requestParameters: FactsApiGetAllEntitiesFactsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await FactsApiAxiosParamCreator_GetAllEntitiesFacts( + requestParameters.workspaceId, + requestParameters.origin, + requestParameters.filter, + requestParameters.include, + requestParameters.page, + requestParameters.size, + requestParameters.sort, + requestParameters.xGDCVALIDATERELATIONS, + requestParameters.metaInclude, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// FactsApi Api FP +/** + * + * @summary Get a Fact + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {FactsApiGetEntityFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FactsApi_GetEntityFacts( + axios: AxiosInstance, + basePath: string, + requestParameters: FactsApiGetEntityFactsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await FactsApiAxiosParamCreator_GetEntityFacts( + requestParameters.workspaceId, + requestParameters.objectId, + requestParameters.filter, + requestParameters.include, + requestParameters.xGDCVALIDATERELATIONS, + requestParameters.metaInclude, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// FactsApi Api FP +/** + * + * @summary Patch a Fact (beta) + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {FactsApiPatchEntityFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FactsApi_PatchEntityFacts( + axios: AxiosInstance, + basePath: string, + requestParameters: FactsApiPatchEntityFactsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await FactsApiAxiosParamCreator_PatchEntityFacts( + requestParameters.workspaceId, + requestParameters.objectId, + requestParameters.jsonApiFactPatchDocument, + requestParameters.filter, + requestParameters.include, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +/** + * FactsApi - interface + * @export + * @interface FactsApi + */ +export interface FactsApiInterface { + /** + * + * @summary Get all Facts + * @param {FactsApiGetAllEntitiesFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FactsApiInterface + */ + getAllEntitiesFacts( + requestParameters: FactsApiGetAllEntitiesFactsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * + * @summary Get a Fact + * @param {FactsApiGetEntityFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FactsApiInterface + */ + getEntityFacts( + requestParameters: FactsApiGetEntityFactsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * + * @summary Patch a Fact (beta) + * @param {FactsApiPatchEntityFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FactsApiInterface + */ + patchEntityFacts( + requestParameters: FactsApiPatchEntityFactsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; +} + +/** + * Request parameters for getAllEntitiesFacts operation in FactsApi. + * @export + * @interface FactsApiGetAllEntitiesFactsRequest + */ +export interface FactsApiGetAllEntitiesFactsRequest { + /** + * + * @type {string} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly workspaceId: string; + + /** + * + * @type {'ALL' | 'PARENTS' | 'NATIVE'} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly origin?: "ALL" | "PARENTS" | "NATIVE"; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly filter?: string; + + /** + * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @type {Array<'datasets' | 'dataset' | 'ALL'>} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly include?: Array<"datasets" | "dataset" | "ALL">; + + /** + * Zero-based page index (0..N) + * @type {number} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly page?: number; + + /** + * The size of the page to be returned + * @type {number} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly size?: number; + + /** + * Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. + * @type {Array} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly sort?: Array; + + /** + * + * @type {boolean} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly xGDCVALIDATERELATIONS?: boolean; + + /** + * Include Meta objects. + * @type {Array<'origin' | 'page' | 'all' | 'ALL'>} + * @memberof FactsApiGetAllEntitiesFacts + */ + readonly metaInclude?: Array<"origin" | "page" | "all" | "ALL">; +} + +/** + * Request parameters for getEntityFacts operation in FactsApi. + * @export + * @interface FactsApiGetEntityFactsRequest + */ +export interface FactsApiGetEntityFactsRequest { + /** + * + * @type {string} + * @memberof FactsApiGetEntityFacts + */ + readonly workspaceId: string; + + /** + * + * @type {string} + * @memberof FactsApiGetEntityFacts + */ + readonly objectId: string; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof FactsApiGetEntityFacts + */ + readonly filter?: string; + + /** + * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @type {Array<'datasets' | 'dataset' | 'ALL'>} + * @memberof FactsApiGetEntityFacts + */ + readonly include?: Array<"datasets" | "dataset" | "ALL">; + + /** + * + * @type {boolean} + * @memberof FactsApiGetEntityFacts + */ + readonly xGDCVALIDATERELATIONS?: boolean; + + /** + * Include Meta objects. + * @type {Array<'origin' | 'all' | 'ALL'>} + * @memberof FactsApiGetEntityFacts + */ + readonly metaInclude?: Array<"origin" | "all" | "ALL">; +} + +/** + * Request parameters for patchEntityFacts operation in FactsApi. + * @export + * @interface FactsApiPatchEntityFactsRequest + */ +export interface FactsApiPatchEntityFactsRequest { + /** + * + * @type {string} + * @memberof FactsApiPatchEntityFacts + */ + readonly workspaceId: string; + + /** + * + * @type {string} + * @memberof FactsApiPatchEntityFacts + */ + readonly objectId: string; + + /** + * + * @type {JsonApiFactPatchDocument} + * @memberof FactsApiPatchEntityFacts + */ + readonly jsonApiFactPatchDocument: JsonApiFactPatchDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof FactsApiPatchEntityFacts + */ + readonly filter?: string; + + /** + * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @type {Array<'datasets' | 'dataset' | 'ALL'>} + * @memberof FactsApiPatchEntityFacts + */ + readonly include?: Array<"datasets" | "dataset" | "ALL">; +} + +/** + * FactsApi - object-oriented interface + * @export + * @class FactsApi + * @extends {BaseAPI} + */ +export class FactsApi extends BaseAPI implements FactsApiInterface { + /** + * + * @summary Get all Facts + * @param {FactsApiGetAllEntitiesFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FactsApi + */ + public getAllEntitiesFacts( + requestParameters: FactsApiGetAllEntitiesFactsRequest, + options?: AxiosRequestConfig, + ) { + return FactsApi_GetAllEntitiesFacts( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * + * @summary Get a Fact + * @param {FactsApiGetEntityFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FactsApi + */ + public getEntityFacts(requestParameters: FactsApiGetEntityFactsRequest, options?: AxiosRequestConfig) { + return FactsApi_GetEntityFacts( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * + * @summary Patch a Fact (beta) + * @param {FactsApiPatchEntityFactsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FactsApi + */ + public patchEntityFacts( + requestParameters: FactsApiPatchEntityFactsRequest, + options?: AxiosRequestConfig, + ) { + return FactsApi_PatchEntityFacts( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } +} + +// FilterContextApi FP - FilterContextApiAxiosParamCreator +/** + * + * @summary Post Filter Context + * @param {string} workspaceId + * @param {JsonApiFilterContextPostOptionalIdDocument} jsonApiFilterContextPostOptionalIdDocument + * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @param {Array<'origin' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApiAxiosParamCreator_CreateEntityFilterContexts( + workspaceId: string, + jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument, + include?: Array<"attributes" | "datasets" | "labels" | "ALL">, + metaInclude?: Array<"origin" | "all" | "ALL">, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("createEntityFilterContexts", "workspaceId", workspaceId); + // verify required parameter 'jsonApiFilterContextPostOptionalIdDocument' is not null or undefined + assertParamExists( + "createEntityFilterContexts", + "jsonApiFilterContextPostOptionalIdDocument", + jsonApiFilterContextPostOptionalIdDocument, + ); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (include) { + localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); + } + + if (metaInclude) { + localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiFilterContextPostOptionalIdDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiFilterContextPostOptionalIdDocument !== undefined + ? jsonApiFilterContextPostOptionalIdDocument + : {}, + ) + : jsonApiFilterContextPostOptionalIdDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// FilterContextApi FP - FilterContextApiAxiosParamCreator +/** + * + * @summary Delete a Filter Context + * @param {string} workspaceId + * @param {string} objectId + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApiAxiosParamCreator_DeleteEntityFilterContexts( + workspaceId: string, + objectId: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("deleteEntityFilterContexts", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("deleteEntityFilterContexts", "objectId", objectId); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// FilterContextApi FP - FilterContextApiAxiosParamCreator +/** + * + * @summary Get all Filter Context + * @param {string} workspaceId + * @param {'ALL' | 'PARENTS' | 'NATIVE'} [origin] + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @param {number} [page] Zero-based page index (0..N) + * @param {number} [size] The size of the page to be returned + * @param {Array} [sort] Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. + * @param {boolean} [xGDCVALIDATERELATIONS] + * @param {Array<'origin' | 'page' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApiAxiosParamCreator_GetAllEntitiesFilterContexts( + workspaceId: string, + origin?: "ALL" | "PARENTS" | "NATIVE", + filter?: string, + include?: Array<"attributes" | "datasets" | "labels" | "ALL">, + page?: number, + size?: number, + sort?: Array, + xGDCVALIDATERELATIONS?: boolean, + metaInclude?: Array<"origin" | "page" | "all" | "ALL">, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("getAllEntitiesFilterContexts", "workspaceId", workspaceId); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts`.replace( + `{${"workspaceId"}}`, + encodeURIComponent(String(workspaceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (origin !== undefined) { + localVarQueryParameter["origin"] = origin; + } + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + if (include) { + localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); + } + + if (page !== undefined) { + localVarQueryParameter["page"] = page; + } + + if (size !== undefined) { + localVarQueryParameter["size"] = size; + } + + if (sort) { + localVarQueryParameter["sort"] = sort; + } + + if (metaInclude) { + localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); + } + + if (xGDCVALIDATERELATIONS !== undefined && xGDCVALIDATERELATIONS !== null) { + localVarHeaderParameter["X-GDC-VALIDATE-RELATIONS"] = String(JSON.stringify(xGDCVALIDATERELATIONS)); + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// FilterContextApi FP - FilterContextApiAxiosParamCreator +/** + * + * @summary Get a Filter Context + * @param {string} workspaceId + * @param {string} objectId + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @param {boolean} [xGDCVALIDATERELATIONS] + * @param {Array<'origin' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApiAxiosParamCreator_GetEntityFilterContexts( + workspaceId: string, + objectId: string, + filter?: string, + include?: Array<"attributes" | "datasets" | "labels" | "ALL">, + xGDCVALIDATERELATIONS?: boolean, + metaInclude?: Array<"origin" | "all" | "ALL">, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("getEntityFilterContexts", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("getEntityFilterContexts", "objectId", objectId); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + if (include) { + localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); + } + + if (metaInclude) { + localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); + } + + if (xGDCVALIDATERELATIONS !== undefined && xGDCVALIDATERELATIONS !== null) { + localVarHeaderParameter["X-GDC-VALIDATE-RELATIONS"] = String(JSON.stringify(xGDCVALIDATERELATIONS)); + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// FilterContextApi FP - FilterContextApiAxiosParamCreator +/** + * + * @summary Patch a Filter Context + * @param {string} workspaceId + * @param {string} objectId + * @param {JsonApiFilterContextPatchDocument} jsonApiFilterContextPatchDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApiAxiosParamCreator_PatchEntityFilterContexts( + workspaceId: string, + objectId: string, + jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument, + filter?: string, + include?: Array<"attributes" | "datasets" | "labels" | "ALL">, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("patchEntityFilterContexts", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("patchEntityFilterContexts", "objectId", objectId); + // verify required parameter 'jsonApiFilterContextPatchDocument' is not null or undefined + assertParamExists( + "patchEntityFilterContexts", + "jsonApiFilterContextPatchDocument", + jsonApiFilterContextPatchDocument, + ); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PATCH", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + if (include) { + localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiFilterContextPatchDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiFilterContextPatchDocument !== undefined ? jsonApiFilterContextPatchDocument : {}, + ) + : jsonApiFilterContextPatchDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// FilterContextApi FP - FilterContextApiAxiosParamCreator +/** + * + * @summary Put a Filter Context + * @param {string} workspaceId + * @param {string} objectId + * @param {JsonApiFilterContextInDocument} jsonApiFilterContextInDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApiAxiosParamCreator_UpdateEntityFilterContexts( + workspaceId: string, + objectId: string, + jsonApiFilterContextInDocument: JsonApiFilterContextInDocument, + filter?: string, + include?: Array<"attributes" | "datasets" | "labels" | "ALL">, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'workspaceId' is not null or undefined + assertParamExists("updateEntityFilterContexts", "workspaceId", workspaceId); + // verify required parameter 'objectId' is not null or undefined + assertParamExists("updateEntityFilterContexts", "objectId", objectId); + // verify required parameter 'jsonApiFilterContextInDocument' is not null or undefined + assertParamExists( + "updateEntityFilterContexts", + "jsonApiFilterContextInDocument", + jsonApiFilterContextInDocument, + ); + const localVarPath = `/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))) + .replace(`{${"objectId"}}`, encodeURIComponent(String(objectId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + if (include) { + localVarQueryParameter["include"] = include.join(COLLECTION_FORMATS.csv); + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiFilterContextInDocument !== "string" || localVarRequestOptions.headers["Content-Type"] === "application/json"; localVarRequestOptions.data = needsSerialization - ? JSON.stringify(jsonApiFactPatchDocument !== undefined ? jsonApiFactPatchDocument : {}) - : jsonApiFactPatchDocument || ""; + ? JSON.stringify(jsonApiFilterContextInDocument !== undefined ? jsonApiFilterContextInDocument : {}) + : jsonApiFilterContextInDocument || ""; return { url: toPathString(localVarUrlObj), @@ -77465,25 +80544,82 @@ export async function FactsApiAxiosParamCreator_PatchEntityFacts( }; } -// FactsApi Api FP +// FilterContextApi Api FP /** * - * @summary Get all Facts + * @summary Post Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. - * @param {FactsApiGetAllEntitiesFactsRequest} requestParameters Request parameters. + * @param {FilterContextApiCreateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function FactsApi_GetAllEntitiesFacts( +export async function FilterContextApi_CreateEntityFilterContexts( axios: AxiosInstance, basePath: string, - requestParameters: FactsApiGetAllEntitiesFactsRequest, + requestParameters: FilterContextApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await FactsApiAxiosParamCreator_GetAllEntitiesFacts( +): AxiosPromise { + const localVarAxiosArgs = await FilterContextApiAxiosParamCreator_CreateEntityFilterContexts( + requestParameters.workspaceId, + requestParameters.jsonApiFilterContextPostOptionalIdDocument, + requestParameters.include, + requestParameters.metaInclude, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// FilterContextApi Api FP +/** + * + * @summary Delete a Filter Context + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {FilterContextApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApi_DeleteEntityFilterContexts( + axios: AxiosInstance, + basePath: string, + requestParameters: FilterContextApiDeleteEntityFilterContextsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await FilterContextApiAxiosParamCreator_DeleteEntityFilterContexts( + requestParameters.workspaceId, + requestParameters.objectId, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +// FilterContextApi Api FP +/** + * + * @summary Get all Filter Context + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {FilterContextApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApi_GetAllEntitiesFilterContexts( + axios: AxiosInstance, + basePath: string, + requestParameters: FilterContextApiGetAllEntitiesFilterContextsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await FilterContextApiAxiosParamCreator_GetAllEntitiesFilterContexts( requestParameters.workspaceId, requestParameters.origin, requestParameters.filter, @@ -77499,25 +80635,25 @@ export async function FactsApi_GetAllEntitiesFacts( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } -// FactsApi Api FP +// FilterContextApi Api FP /** * - * @summary Get a Fact + * @summary Get a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. - * @param {FactsApiGetEntityFactsRequest} requestParameters Request parameters. + * @param {FilterContextApiGetEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function FactsApi_GetEntityFacts( +export async function FilterContextApi_GetEntityFilterContexts( axios: AxiosInstance, basePath: string, - requestParameters: FactsApiGetEntityFactsRequest, + requestParameters: FilterContextApiGetEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await FactsApiAxiosParamCreator_GetEntityFacts( +): AxiosPromise { + const localVarAxiosArgs = await FilterContextApiAxiosParamCreator_GetEntityFilterContexts( requestParameters.workspaceId, requestParameters.objectId, requestParameters.filter, @@ -77530,28 +80666,28 @@ export async function FactsApi_GetEntityFacts( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } -// FactsApi Api FP +// FilterContextApi Api FP /** * - * @summary Patch a Fact (beta) + * @summary Patch a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. - * @param {FactsApiPatchEntityFactsRequest} requestParameters Request parameters. + * @param {FilterContextApiPatchEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function FactsApi_PatchEntityFacts( +export async function FilterContextApi_PatchEntityFilterContexts( axios: AxiosInstance, basePath: string, - requestParameters: FactsApiPatchEntityFactsRequest, + requestParameters: FilterContextApiPatchEntityFilterContextsRequest, options?: AxiosRequestConfig, configuration?: Configuration, -): AxiosPromise { - const localVarAxiosArgs = await FactsApiAxiosParamCreator_PatchEntityFacts( +): AxiosPromise { + const localVarAxiosArgs = await FilterContextApiAxiosParamCreator_PatchEntityFilterContexts( requestParameters.workspaceId, requestParameters.objectId, - requestParameters.jsonApiFactPatchDocument, + requestParameters.jsonApiFilterContextPatchDocument, requestParameters.filter, requestParameters.include, options || {}, @@ -77560,233 +80696,407 @@ export async function FactsApi_PatchEntityFacts( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// FilterContextApi Api FP /** - * FactsApi - interface + * + * @summary Put a Filter Context + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {FilterContextApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function FilterContextApi_UpdateEntityFilterContexts( + axios: AxiosInstance, + basePath: string, + requestParameters: FilterContextApiUpdateEntityFilterContextsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await FilterContextApiAxiosParamCreator_UpdateEntityFilterContexts( + requestParameters.workspaceId, + requestParameters.objectId, + requestParameters.jsonApiFilterContextInDocument, + requestParameters.filter, + requestParameters.include, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + +/** + * FilterContextApi - interface * @export - * @interface FactsApi + * @interface FilterContextApi */ -export interface FactsApiInterface { +export interface FilterContextApiInterface { /** * - * @summary Get all Facts - * @param {FactsApiGetAllEntitiesFactsRequest} requestParameters Request parameters. + * @summary Post Filter Context + * @param {FilterContextApiCreateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof FactsApiInterface + * @memberof FilterContextApiInterface */ - getAllEntitiesFacts( - requestParameters: FactsApiGetAllEntitiesFactsRequest, + createEntityFilterContexts( + requestParameters: FilterContextApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig, - ): AxiosPromise; + ): AxiosPromise; /** * - * @summary Get a Fact - * @param {FactsApiGetEntityFactsRequest} requestParameters Request parameters. + * @summary Delete a Filter Context + * @param {FilterContextApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof FactsApiInterface + * @memberof FilterContextApiInterface */ - getEntityFacts( - requestParameters: FactsApiGetEntityFactsRequest, + deleteEntityFilterContexts( + requestParameters: FilterContextApiDeleteEntityFilterContextsRequest, options?: AxiosRequestConfig, - ): AxiosPromise; + ): AxiosPromise; /** * - * @summary Patch a Fact (beta) - * @param {FactsApiPatchEntityFactsRequest} requestParameters Request parameters. + * @summary Get all Filter Context + * @param {FilterContextApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof FactsApiInterface + * @memberof FilterContextApiInterface */ - patchEntityFacts( - requestParameters: FactsApiPatchEntityFactsRequest, + getAllEntitiesFilterContexts( + requestParameters: FilterContextApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig, - ): AxiosPromise; + ): AxiosPromise; + + /** + * + * @summary Get a Filter Context + * @param {FilterContextApiGetEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilterContextApiInterface + */ + getEntityFilterContexts( + requestParameters: FilterContextApiGetEntityFilterContextsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * + * @summary Patch a Filter Context + * @param {FilterContextApiPatchEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilterContextApiInterface + */ + patchEntityFilterContexts( + requestParameters: FilterContextApiPatchEntityFilterContextsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + + /** + * + * @summary Put a Filter Context + * @param {FilterContextApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilterContextApiInterface + */ + updateEntityFilterContexts( + requestParameters: FilterContextApiUpdateEntityFilterContextsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; } /** - * Request parameters for getAllEntitiesFacts operation in FactsApi. + * Request parameters for createEntityFilterContexts operation in FilterContextApi. * @export - * @interface FactsApiGetAllEntitiesFactsRequest + * @interface FilterContextApiCreateEntityFilterContextsRequest */ -export interface FactsApiGetAllEntitiesFactsRequest { +export interface FilterContextApiCreateEntityFilterContextsRequest { /** * * @type {string} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiCreateEntityFilterContexts + */ + readonly workspaceId: string; + + /** + * + * @type {JsonApiFilterContextPostOptionalIdDocument} + * @memberof FilterContextApiCreateEntityFilterContexts + */ + readonly jsonApiFilterContextPostOptionalIdDocument: JsonApiFilterContextPostOptionalIdDocument; + + /** + * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} + * @memberof FilterContextApiCreateEntityFilterContexts + */ + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; + + /** + * Include Meta objects. + * @type {Array<'origin' | 'all' | 'ALL'>} + * @memberof FilterContextApiCreateEntityFilterContexts + */ + readonly metaInclude?: Array<"origin" | "all" | "ALL">; +} + +/** + * Request parameters for deleteEntityFilterContexts operation in FilterContextApi. + * @export + * @interface FilterContextApiDeleteEntityFilterContextsRequest + */ +export interface FilterContextApiDeleteEntityFilterContextsRequest { + /** + * + * @type {string} + * @memberof FilterContextApiDeleteEntityFilterContexts + */ + readonly workspaceId: string; + + /** + * + * @type {string} + * @memberof FilterContextApiDeleteEntityFilterContexts + */ + readonly objectId: string; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof FilterContextApiDeleteEntityFilterContexts + */ + readonly filter?: string; +} + +/** + * Request parameters for getAllEntitiesFilterContexts operation in FilterContextApi. + * @export + * @interface FilterContextApiGetAllEntitiesFilterContextsRequest + */ +export interface FilterContextApiGetAllEntitiesFilterContextsRequest { + /** + * + * @type {string} + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly workspaceId: string; /** * * @type {'ALL' | 'PARENTS' | 'NATIVE'} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly origin?: "ALL" | "PARENTS" | "NATIVE"; /** * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @type {string} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly filter?: string; /** * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'datasets' | 'dataset' | 'ALL'>} - * @memberof FactsApiGetAllEntitiesFacts + * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ - readonly include?: Array<"datasets" | "dataset" | "ALL">; + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; /** * Zero-based page index (0..N) * @type {number} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly page?: number; /** * The size of the page to be returned * @type {number} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly size?: number; /** * Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. * @type {Array} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly sort?: Array; /** * * @type {boolean} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly xGDCVALIDATERELATIONS?: boolean; /** * Include Meta objects. * @type {Array<'origin' | 'page' | 'all' | 'ALL'>} - * @memberof FactsApiGetAllEntitiesFacts + * @memberof FilterContextApiGetAllEntitiesFilterContexts */ readonly metaInclude?: Array<"origin" | "page" | "all" | "ALL">; } /** - * Request parameters for getEntityFacts operation in FactsApi. + * Request parameters for getEntityFilterContexts operation in FilterContextApi. * @export - * @interface FactsApiGetEntityFactsRequest + * @interface FilterContextApiGetEntityFilterContextsRequest */ -export interface FactsApiGetEntityFactsRequest { +export interface FilterContextApiGetEntityFilterContextsRequest { /** * * @type {string} - * @memberof FactsApiGetEntityFacts + * @memberof FilterContextApiGetEntityFilterContexts */ readonly workspaceId: string; /** * * @type {string} - * @memberof FactsApiGetEntityFacts + * @memberof FilterContextApiGetEntityFilterContexts */ readonly objectId: string; /** * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @type {string} - * @memberof FactsApiGetEntityFacts + * @memberof FilterContextApiGetEntityFilterContexts */ readonly filter?: string; /** * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'datasets' | 'dataset' | 'ALL'>} - * @memberof FactsApiGetEntityFacts + * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} + * @memberof FilterContextApiGetEntityFilterContexts */ - readonly include?: Array<"datasets" | "dataset" | "ALL">; + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; /** * * @type {boolean} - * @memberof FactsApiGetEntityFacts + * @memberof FilterContextApiGetEntityFilterContexts */ readonly xGDCVALIDATERELATIONS?: boolean; /** * Include Meta objects. * @type {Array<'origin' | 'all' | 'ALL'>} - * @memberof FactsApiGetEntityFacts + * @memberof FilterContextApiGetEntityFilterContexts */ readonly metaInclude?: Array<"origin" | "all" | "ALL">; } /** - * Request parameters for patchEntityFacts operation in FactsApi. + * Request parameters for patchEntityFilterContexts operation in FilterContextApi. * @export - * @interface FactsApiPatchEntityFactsRequest + * @interface FilterContextApiPatchEntityFilterContextsRequest */ -export interface FactsApiPatchEntityFactsRequest { +export interface FilterContextApiPatchEntityFilterContextsRequest { /** * * @type {string} - * @memberof FactsApiPatchEntityFacts + * @memberof FilterContextApiPatchEntityFilterContexts */ readonly workspaceId: string; /** * * @type {string} - * @memberof FactsApiPatchEntityFacts + * @memberof FilterContextApiPatchEntityFilterContexts */ readonly objectId: string; /** * - * @type {JsonApiFactPatchDocument} - * @memberof FactsApiPatchEntityFacts + * @type {JsonApiFilterContextPatchDocument} + * @memberof FilterContextApiPatchEntityFilterContexts */ - readonly jsonApiFactPatchDocument: JsonApiFactPatchDocument; + readonly jsonApiFilterContextPatchDocument: JsonApiFilterContextPatchDocument; /** * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @type {string} - * @memberof FactsApiPatchEntityFacts + * @memberof FilterContextApiPatchEntityFilterContexts */ readonly filter?: string; /** * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. - * @type {Array<'datasets' | 'dataset' | 'ALL'>} - * @memberof FactsApiPatchEntityFacts + * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} + * @memberof FilterContextApiPatchEntityFilterContexts */ - readonly include?: Array<"datasets" | "dataset" | "ALL">; + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; } /** - * FactsApi - object-oriented interface + * Request parameters for updateEntityFilterContexts operation in FilterContextApi. * @export - * @class FactsApi + * @interface FilterContextApiUpdateEntityFilterContextsRequest + */ +export interface FilterContextApiUpdateEntityFilterContextsRequest { + /** + * + * @type {string} + * @memberof FilterContextApiUpdateEntityFilterContexts + */ + readonly workspaceId: string; + + /** + * + * @type {string} + * @memberof FilterContextApiUpdateEntityFilterContexts + */ + readonly objectId: string; + + /** + * + * @type {JsonApiFilterContextInDocument} + * @memberof FilterContextApiUpdateEntityFilterContexts + */ + readonly jsonApiFilterContextInDocument: JsonApiFilterContextInDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof FilterContextApiUpdateEntityFilterContexts + */ + readonly filter?: string; + + /** + * Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. + * @type {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} + * @memberof FilterContextApiUpdateEntityFilterContexts + */ + readonly include?: Array<"attributes" | "datasets" | "labels" | "ALL">; +} + +/** + * FilterContextApi - object-oriented interface + * @export + * @class FilterContextApi * @extends {BaseAPI} */ -export class FactsApi extends BaseAPI implements FactsApiInterface { +export class FilterContextApi extends BaseAPI implements FilterContextApiInterface { /** * - * @summary Get all Facts - * @param {FactsApiGetAllEntitiesFactsRequest} requestParameters Request parameters. + * @summary Post Filter Context + * @param {FilterContextApiCreateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof FactsApi + * @memberof FilterContextApi */ - public getAllEntitiesFacts( - requestParameters: FactsApiGetAllEntitiesFactsRequest, + public createEntityFilterContexts( + requestParameters: FilterContextApiCreateEntityFilterContextsRequest, options?: AxiosRequestConfig, ) { - return FactsApi_GetAllEntitiesFacts( + return FilterContextApi_CreateEntityFilterContexts( this.axios, this.basePath, requestParameters, @@ -77797,14 +81107,17 @@ export class FactsApi extends BaseAPI implements FactsApiInterface { /** * - * @summary Get a Fact - * @param {FactsApiGetEntityFactsRequest} requestParameters Request parameters. + * @summary Delete a Filter Context + * @param {FilterContextApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof FactsApi + * @memberof FilterContextApi */ - public getEntityFacts(requestParameters: FactsApiGetEntityFactsRequest, options?: AxiosRequestConfig) { - return FactsApi_GetEntityFacts( + public deleteEntityFilterContexts( + requestParameters: FilterContextApiDeleteEntityFilterContextsRequest, + options?: AxiosRequestConfig, + ) { + return FilterContextApi_DeleteEntityFilterContexts( this.axios, this.basePath, requestParameters, @@ -77815,17 +81128,80 @@ export class FactsApi extends BaseAPI implements FactsApiInterface { /** * - * @summary Patch a Fact (beta) - * @param {FactsApiPatchEntityFactsRequest} requestParameters Request parameters. + * @summary Get all Filter Context + * @param {FilterContextApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} - * @memberof FactsApi + * @memberof FilterContextApi */ - public patchEntityFacts( - requestParameters: FactsApiPatchEntityFactsRequest, + public getAllEntitiesFilterContexts( + requestParameters: FilterContextApiGetAllEntitiesFilterContextsRequest, options?: AxiosRequestConfig, ) { - return FactsApi_PatchEntityFacts( + return FilterContextApi_GetAllEntitiesFilterContexts( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * + * @summary Get a Filter Context + * @param {FilterContextApiGetEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilterContextApi + */ + public getEntityFilterContexts( + requestParameters: FilterContextApiGetEntityFilterContextsRequest, + options?: AxiosRequestConfig, + ) { + return FilterContextApi_GetEntityFilterContexts( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * + * @summary Patch a Filter Context + * @param {FilterContextApiPatchEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilterContextApi + */ + public patchEntityFilterContexts( + requestParameters: FilterContextApiPatchEntityFilterContextsRequest, + options?: AxiosRequestConfig, + ) { + return FilterContextApi_PatchEntityFilterContexts( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + + /** + * + * @summary Put a Filter Context + * @param {FilterContextApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilterContextApi + */ + public updateEntityFilterContexts( + requestParameters: FilterContextApiUpdateEntityFilterContextsRequest, + options?: AxiosRequestConfig, + ) { + return FilterContextApi_UpdateEntityFilterContexts( this.axios, this.basePath, requestParameters, @@ -79230,6 +82606,62 @@ export async function GenerateLogicalDataModelApiAxiosParamCreator_GenerateLogic }; } +// GenerateLogicalDataModelApi FP - GenerateLogicalDataModelApiAxiosParamCreator +/** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {string} dataSourceId + * @param {GenerateLdmRequest} generateLdmRequest + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function GenerateLogicalDataModelApiAxiosParamCreator_GenerateLogicalModelAac( + dataSourceId: string, + generateLdmRequest: GenerateLdmRequest, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'dataSourceId' is not null or undefined + assertParamExists("generateLogicalModelAac", "dataSourceId", dataSourceId); + // verify required parameter 'generateLdmRequest' is not null or undefined + assertParamExists("generateLogicalModelAac", "generateLdmRequest", generateLdmRequest); + const localVarPath = `/api/v1/actions/dataSources/{dataSourceId}/generateLogicalModelAac`.replace( + `{${"dataSourceId"}}`, + encodeURIComponent(String(dataSourceId)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof generateLdmRequest !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify(generateLdmRequest !== undefined ? generateLdmRequest : {}) + : generateLdmRequest || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // GenerateLogicalDataModelApi Api FP /** * Generate logical data model (LDM) from physical data model (PDM) stored in data source. @@ -79257,6 +82689,33 @@ export async function GenerateLogicalDataModelApi_GenerateLogicalModel( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// GenerateLogicalDataModelApi Api FP +/** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {GenerateLogicalDataModelApiGenerateLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function GenerateLogicalDataModelApi_GenerateLogicalModelAac( + axios: AxiosInstance, + basePath: string, + requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelAacRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = await GenerateLogicalDataModelApiAxiosParamCreator_GenerateLogicalModelAac( + requestParameters.dataSourceId, + requestParameters.generateLdmRequest, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + /** * GenerateLogicalDataModelApi - interface * @export @@ -79275,6 +82734,19 @@ export interface GenerateLogicalDataModelApiInterface { requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelRequest, options?: AxiosRequestConfig, ): AxiosPromise; + + /** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {GenerateLogicalDataModelApiGenerateLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof GenerateLogicalDataModelApiInterface + */ + generateLogicalModelAac( + requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelAacRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; } /** @@ -79298,6 +82770,27 @@ export interface GenerateLogicalDataModelApiGenerateLogicalModelRequest { readonly generateLdmRequest: GenerateLdmRequest; } +/** + * Request parameters for generateLogicalModelAac operation in GenerateLogicalDataModelApi. + * @export + * @interface GenerateLogicalDataModelApiGenerateLogicalModelAacRequest + */ +export interface GenerateLogicalDataModelApiGenerateLogicalModelAacRequest { + /** + * + * @type {string} + * @memberof GenerateLogicalDataModelApiGenerateLogicalModelAac + */ + readonly dataSourceId: string; + + /** + * + * @type {GenerateLdmRequest} + * @memberof GenerateLogicalDataModelApiGenerateLogicalModelAac + */ + readonly generateLdmRequest: GenerateLdmRequest; +} + /** * GenerateLogicalDataModelApi - object-oriented interface * @export @@ -79325,6 +82818,27 @@ export class GenerateLogicalDataModelApi extends BaseAPI implements GenerateLogi this.configuration, ); } + + /** + * Generate logical data model (LDM) from physical data model (PDM) stored in data source, returning the result in Analytics as Code (AAC) format compatible with the GoodData VSCode extension YAML definitions. + * @summary Generate logical data model in AAC format from physical data model (PDM) + * @param {GenerateLogicalDataModelApiGenerateLogicalModelAacRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof GenerateLogicalDataModelApi + */ + public generateLogicalModelAac( + requestParameters: GenerateLogicalDataModelApiGenerateLogicalModelAacRequest, + options?: AxiosRequestConfig, + ) { + return GenerateLogicalDataModelApi_GenerateLogicalModelAac( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } } // HierarchyApi FP - HierarchyApiAxiosParamCreator @@ -95436,6 +98950,60 @@ export async function OrganizationModelControllerApiAxiosParamCreator_CreateEnti }; } +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * + * @param {JsonApiCustomGeoCollectionInDocument} jsonApiCustomGeoCollectionInDocument + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_CreateEntityCustomGeoCollections( + jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'jsonApiCustomGeoCollectionInDocument' is not null or undefined + assertParamExists( + "createEntityCustomGeoCollections", + "jsonApiCustomGeoCollectionInDocument", + jsonApiCustomGeoCollectionInDocument, + ); + const localVarPath = `/api/v1/entities/customGeoCollections`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "POST", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCustomGeoCollectionInDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCustomGeoCollectionInDocument !== undefined ? jsonApiCustomGeoCollectionInDocument : {}, + ) + : jsonApiCustomGeoCollectionInDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** * Data Source - represents data source for the workspace @@ -96089,26 +99657,272 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * Context Security Police Directive - * @summary Delete CSP Directives + * Context Security Police Directive + * @summary Delete CSP Directives + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityCspDirectives( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("deleteEntityCspDirectives", "id", id); + const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityCustomGeoCollections( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("deleteEntityCustomGeoCollections", "id", id); + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * Data Source - represents data source for the workspace + * @summary Delete Data Source entity + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityDataSources( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("deleteEntityDataSources", "id", id); + const localVarPath = `/api/v1/entities/dataSources/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * + * @summary Delete Export Template entity + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityExportTemplates( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("deleteEntityExportTemplates", "id", id); + const localVarPath = `/api/v1/entities/exportTemplates/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * + * @summary Delete Identity Provider + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityIdentityProviders( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("deleteEntityIdentityProviders", "id", id); + const localVarPath = `/api/v1/entities/identityProviders/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * Deletes JSON web key - used to verify JSON web tokens (Jwts) + * @summary Delete Jwk * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityCspDirectives( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityJwks( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityCspDirectives", "id", id); - const localVarPath = `/api/v1/entities/cspDirectives/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); + assertParamExists("deleteEntityJwks", "id", id); + const localVarPath = `/api/v1/entities/jwks/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(id))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -96139,23 +99953,22 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * Data Source - represents data source for the workspace - * @summary Delete Data Source entity + * * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityDataSources( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityLlmEndpoints( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityDataSources", "id", id); - const localVarPath = `/api/v1/entities/dataSources/{id}`.replace( + assertParamExists("deleteEntityLlmEndpoints", "id", id); + const localVarPath = `/api/v1/entities/llmEndpoints/{id}`.replace( `{${"id"}}`, encodeURIComponent(String(id)), ); @@ -96190,22 +100003,22 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** * - * @summary Delete Export Template entity + * @summary Delete Notification Channel entity * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityExportTemplates( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityNotificationChannels( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityExportTemplates", "id", id); - const localVarPath = `/api/v1/entities/exportTemplates/{id}`.replace( + assertParamExists("deleteEntityNotificationChannels", "id", id); + const localVarPath = `/api/v1/entities/notificationChannels/{id}`.replace( `{${"id"}}`, encodeURIComponent(String(id)), ); @@ -96240,22 +100053,22 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** * - * @summary Delete Identity Provider + * @summary Delete Organization entity * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityIdentityProviders( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityOrganizationSettings( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityIdentityProviders", "id", id); - const localVarPath = `/api/v1/entities/identityProviders/{id}`.replace( + assertParamExists("deleteEntityOrganizationSettings", "id", id); + const localVarPath = `/api/v1/entities/organizationSettings/{id}`.replace( `{${"id"}}`, encodeURIComponent(String(id)), ); @@ -96289,23 +100102,23 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * Deletes JSON web key - used to verify JSON web tokens (Jwts) - * @summary Delete Jwk + * + * @summary Delete Theming * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityJwks( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityThemes( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityJwks", "id", id); - const localVarPath = `/api/v1/entities/jwks/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(id))); + assertParamExists("deleteEntityThemes", "id", id); + const localVarPath = `/api/v1/entities/themes/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(id))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -96336,22 +100149,23 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * + * User Group - creates tree-like structure for categorizing users + * @summary Delete UserGroup entity * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityLlmEndpoints( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityUserGroups( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityLlmEndpoints", "id", id); - const localVarPath = `/api/v1/entities/llmEndpoints/{id}`.replace( + assertParamExists("deleteEntityUserGroups", "id", id); + const localVarPath = `/api/v1/entities/userGroups/{id}`.replace( `{${"id"}}`, encodeURIComponent(String(id)), ); @@ -96385,26 +100199,23 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * - * @summary Delete Notification Channel entity + * User - represents entity interacting with platform + * @summary Delete User entity * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityNotificationChannels( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityUsers( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityNotificationChannels", "id", id); - const localVarPath = `/api/v1/entities/notificationChannels/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); + assertParamExists("deleteEntityUsers", "id", id); + const localVarPath = `/api/v1/entities/users/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(id))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -96435,23 +100246,23 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * - * @summary Delete Organization entity + * Space of the shared interest + * @summary Delete Workspace entity * @param {string} id * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityOrganizationSettings( +export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityWorkspaces( id: string, filter?: string, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityOrganizationSettings", "id", id); - const localVarPath = `/api/v1/entities/organizationSettings/{id}`.replace( + assertParamExists("deleteEntityWorkspaces", "id", id); + const localVarPath = `/api/v1/entities/workspaces/{id}`.replace( `{${"id"}}`, encodeURIComponent(String(id)), ); @@ -96486,79 +100297,33 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** * - * @summary Delete Theming - * @param {string} id - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityThemes( - id: string, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityThemes", "id", id); - const localVarPath = `/api/v1/entities/themes/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(id))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; - } - - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator -/** - * User Group - creates tree-like structure for categorizing users - * @summary Delete UserGroup entity - * @param {string} id + * @summary Get all Color Pallettes * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {number} [page] Zero-based page index (0..N) + * @param {number} [size] The size of the page to be returned + * @param {Array} [sort] Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. + * @param {Array<'page' | 'all' | 'ALL'>} [metaInclude] Include Meta objects. * @param {*} [options] Override http request option. * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityUserGroups( - id: string, +export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesColorPalettes( filter?: string, + page?: number, + size?: number, + sort?: Array, + metaInclude?: Array<"page" | "all" | "ALL">, options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityUserGroups", "id", id); - const localVarPath = `/api/v1/entities/userGroups/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); + const localVarPath = `/api/v1/entities/colorPalettes`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; if (configuration) { baseOptions = configuration.baseOptions; } - const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; @@ -96566,101 +100331,20 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti localVarQueryParameter["filter"] = filter; } - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator -/** - * User - represents entity interacting with platform - * @summary Delete User entity - * @param {string} id - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityUsers( - id: string, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityUsers", "id", id); - const localVarPath = `/api/v1/entities/users/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(id))); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; + if (page !== undefined) { + localVarQueryParameter["page"] = page; } - const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; + if (size !== undefined) { + localVarQueryParameter["size"] = size; } - setSearchParams(localVarUrlObj, localVarQueryParameter); - const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = { - ...localVarHeaderParameter, - ...headersFromBaseOptions, - ...options.headers, - }; - - return { - url: toPathString(localVarUrlObj), - options: localVarRequestOptions, - }; -} - -// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator -/** - * Space of the shared interest - * @summary Delete Workspace entity - * @param {string} id - * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). - * @param {*} [options] Override http request option. - * @param {Configuration} [configuration] Optional configuration. - * @throws {RequiredError} - */ -export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEntityWorkspaces( - id: string, - filter?: string, - options: AxiosRequestConfig = {}, - configuration?: Configuration, -): Promise { - // verify required parameter 'id' is not null or undefined - assertParamExists("deleteEntityWorkspaces", "id", id); - const localVarPath = `/api/v1/entities/workspaces/{id}`.replace( - `{${"id"}}`, - encodeURIComponent(String(id)), - ); - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; + if (sort) { + localVarQueryParameter["sort"] = sort; } - const localVarRequestOptions = { method: "DELETE", ...baseOptions, ...options }; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - if (filter !== undefined) { - localVarQueryParameter["filter"] = filter; + if (metaInclude) { + localVarQueryParameter["metaInclude"] = Array.from(metaInclude).join(COLLECTION_FORMATS.csv); } setSearchParams(localVarUrlObj, localVarQueryParameter); @@ -96679,8 +100363,8 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * - * @summary Get all Color Pallettes + * Context Security Police Directive + * @summary Get CSP Directives * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {number} [page] Zero-based page index (0..N) * @param {number} [size] The size of the page to be returned @@ -96690,7 +100374,7 @@ export async function OrganizationModelControllerApiAxiosParamCreator_DeleteEnti * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesColorPalettes( +export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesCspDirectives( filter?: string, page?: number, size?: number, @@ -96699,7 +100383,7 @@ export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEnti options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - const localVarPath = `/api/v1/entities/colorPalettes`; + const localVarPath = `/api/v1/entities/cspDirectives`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -96746,8 +100430,7 @@ export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEnti // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** - * Context Security Police Directive - * @summary Get CSP Directives + * * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). * @param {number} [page] Zero-based page index (0..N) * @param {number} [size] The size of the page to be returned @@ -96757,7 +100440,7 @@ export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEnti * @param {Configuration} [configuration] Optional configuration. * @throws {RequiredError} */ -export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesCspDirectives( +export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesCustomGeoCollections( filter?: string, page?: number, size?: number, @@ -96766,7 +100449,7 @@ export async function OrganizationModelControllerApiAxiosParamCreator_GetAllEnti options: AxiosRequestConfig = {}, configuration?: Configuration, ): Promise { - const localVarPath = `/api/v1/entities/cspDirectives`; + const localVarPath = `/api/v1/entities/customGeoCollections`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -97935,6 +101618,55 @@ export async function OrganizationModelControllerApiAxiosParamCreator_GetEntityC }; } +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * + * @param {string} id + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_GetEntityCustomGeoCollections( + id: string, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("getEntityCustomGeoCollections", "id", id); + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "GET", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** * @@ -98847,6 +102579,75 @@ export async function OrganizationModelControllerApiAxiosParamCreator_PatchEntit }; } +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * + * @param {string} id + * @param {JsonApiCustomGeoCollectionPatchDocument} jsonApiCustomGeoCollectionPatchDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_PatchEntityCustomGeoCollections( + id: string, + jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("patchEntityCustomGeoCollections", "id", id); + // verify required parameter 'jsonApiCustomGeoCollectionPatchDocument' is not null or undefined + assertParamExists( + "patchEntityCustomGeoCollections", + "jsonApiCustomGeoCollectionPatchDocument", + jsonApiCustomGeoCollectionPatchDocument, + ); + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PATCH", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCustomGeoCollectionPatchDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCustomGeoCollectionPatchDocument !== undefined + ? jsonApiCustomGeoCollectionPatchDocument + : {}, + ) + : jsonApiCustomGeoCollectionPatchDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** * Data Source - represents data source for the workspace @@ -99714,6 +103515,73 @@ export async function OrganizationModelControllerApiAxiosParamCreator_UpdateEnti }; } +// OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator +/** + * + * @param {string} id + * @param {JsonApiCustomGeoCollectionInDocument} jsonApiCustomGeoCollectionInDocument + * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApiAxiosParamCreator_UpdateEntityCustomGeoCollections( + id: string, + jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument, + filter?: string, + options: AxiosRequestConfig = {}, + configuration?: Configuration, +): Promise { + // verify required parameter 'id' is not null or undefined + assertParamExists("updateEntityCustomGeoCollections", "id", id); + // verify required parameter 'jsonApiCustomGeoCollectionInDocument' is not null or undefined + assertParamExists( + "updateEntityCustomGeoCollections", + "jsonApiCustomGeoCollectionInDocument", + jsonApiCustomGeoCollectionInDocument, + ); + const localVarPath = `/api/v1/entities/customGeoCollections/{id}`.replace( + `{${"id"}}`, + encodeURIComponent(String(id)), + ); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions = { method: "PUT", ...baseOptions, ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (filter !== undefined) { + localVarQueryParameter["filter"] = filter; + } + + localVarHeaderParameter["Content-Type"] = "application/vnd.gooddata.api+json"; + + setSearchParams(localVarUrlObj, localVarQueryParameter); + const headersFromBaseOptions = baseOptions?.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + const needsSerialization = + typeof jsonApiCustomGeoCollectionInDocument !== "string" || + localVarRequestOptions.headers["Content-Type"] === "application/json"; + localVarRequestOptions.data = needsSerialization + ? JSON.stringify( + jsonApiCustomGeoCollectionInDocument !== undefined ? jsonApiCustomGeoCollectionInDocument : {}, + ) + : jsonApiCustomGeoCollectionInDocument || ""; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; +} + // OrganizationModelControllerApi FP - OrganizationModelControllerApiAxiosParamCreator /** * Data Source - represents data source for the workspace @@ -100483,6 +104351,32 @@ export async function OrganizationModelControllerApi_CreateEntityCspDirectives( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// OrganizationModelControllerApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApi_CreateEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await OrganizationModelControllerApiAxiosParamCreator_CreateEntityCustomGeoCollections( + requestParameters.jsonApiCustomGeoCollectionInDocument, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // OrganizationModelControllerApi Api FP /** * Data Source - represents data source for the workspace @@ -100832,6 +104726,33 @@ export async function OrganizationModelControllerApi_DeleteEntityCspDirectives( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// OrganizationModelControllerApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApi_DeleteEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await OrganizationModelControllerApiAxiosParamCreator_DeleteEntityCustomGeoCollections( + requestParameters.id, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // OrganizationModelControllerApi Api FP /** * Data Source - represents data source for the workspace @@ -101194,6 +105115,36 @@ export async function OrganizationModelControllerApi_GetAllEntitiesCspDirectives return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// OrganizationModelControllerApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApi_GetAllEntitiesCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await OrganizationModelControllerApiAxiosParamCreator_GetAllEntitiesCustomGeoCollections( + requestParameters.filter, + requestParameters.page, + requestParameters.size, + requestParameters.sort, + requestParameters.metaInclude, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // OrganizationModelControllerApi Api FP /** * @@ -101709,6 +105660,33 @@ export async function OrganizationModelControllerApi_GetEntityCspDirectives( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// OrganizationModelControllerApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApi_GetEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await OrganizationModelControllerApiAxiosParamCreator_GetEntityCustomGeoCollections( + requestParameters.id, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // OrganizationModelControllerApi Api FP /** * @@ -102180,6 +106158,34 @@ export async function OrganizationModelControllerApi_PatchEntityCspDirectives( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// OrganizationModelControllerApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApi_PatchEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await OrganizationModelControllerApiAxiosParamCreator_PatchEntityCustomGeoCollections( + requestParameters.id, + requestParameters.jsonApiCustomGeoCollectionPatchDocument, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // OrganizationModelControllerApi Api FP /** * Data Source - represents data source for the workspace @@ -102551,6 +106557,34 @@ export async function OrganizationModelControllerApi_UpdateEntityCspDirectives( return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); } +// OrganizationModelControllerApi Api FP +/** + * + * @param {AxiosInstance} axios Axios instance. + * @param {string} basePath Base path. + * @param {OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @param {Configuration} [configuration] Optional configuration. + * @throws {RequiredError} + */ +export async function OrganizationModelControllerApi_UpdateEntityCustomGeoCollections( + axios: AxiosInstance, + basePath: string, + requestParameters: OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + configuration?: Configuration, +): AxiosPromise { + const localVarAxiosArgs = + await OrganizationModelControllerApiAxiosParamCreator_UpdateEntityCustomGeoCollections( + requestParameters.id, + requestParameters.jsonApiCustomGeoCollectionInDocument, + requestParameters.filter, + options || {}, + configuration, + ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, basePath); +} + // OrganizationModelControllerApi Api FP /** * Data Source - represents data source for the workspace @@ -102898,6 +106932,18 @@ export interface OrganizationModelControllerApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApiInterface + */ + createEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * Data Source - represents data source for the workspace * @summary Post Data Sources @@ -103067,6 +107113,18 @@ export interface OrganizationModelControllerApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApiInterface + */ + deleteEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * Data Source - represents data source for the workspace * @summary Delete Data Source entity @@ -103235,6 +107293,18 @@ export interface OrganizationModelControllerApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApiInterface + */ + getAllEntitiesCustomGeoCollections( + requestParameters: OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Get all Data Source Identifiers @@ -103455,6 +107525,18 @@ export interface OrganizationModelControllerApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApiInterface + */ + getEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * * @summary Get Data Source Identifier @@ -103675,6 +107757,18 @@ export interface OrganizationModelControllerApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApiInterface + */ + patchEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * Data Source - represents data source for the workspace * @summary Patch Data Source entity @@ -103844,6 +107938,18 @@ export interface OrganizationModelControllerApiInterface { options?: AxiosRequestConfig, ): AxiosPromise; + /** + * + * @param {OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApiInterface + */ + updateEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ): AxiosPromise; + /** * Data Source - represents data source for the workspace * @summary Put Data Source entity @@ -104016,6 +108122,20 @@ export interface OrganizationModelControllerApiCreateEntityCspDirectivesRequest readonly jsonApiCspDirectiveInDocument: JsonApiCspDirectiveInDocument; } +/** + * Request parameters for createEntityCustomGeoCollections operation in OrganizationModelControllerApi. + * @export + * @interface OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest + */ +export interface OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest { + /** + * + * @type {JsonApiCustomGeoCollectionInDocument} + * @memberof OrganizationModelControllerApiCreateEntityCustomGeoCollections + */ + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; +} + /** * Request parameters for createEntityDataSources operation in OrganizationModelControllerApi. * @export @@ -104249,6 +108369,27 @@ export interface OrganizationModelControllerApiDeleteEntityCspDirectivesRequest readonly filter?: string; } +/** + * Request parameters for deleteEntityCustomGeoCollections operation in OrganizationModelControllerApi. + * @export + * @interface OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest + */ +export interface OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof OrganizationModelControllerApiDeleteEntityCustomGeoCollections + */ + readonly id: string; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof OrganizationModelControllerApiDeleteEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for deleteEntityDataSources operation in OrganizationModelControllerApi. * @export @@ -104564,6 +108705,48 @@ export interface OrganizationModelControllerApiGetAllEntitiesCspDirectivesReques readonly metaInclude?: Array<"page" | "all" | "ALL">; } +/** + * Request parameters for getAllEntitiesCustomGeoCollections operation in OrganizationModelControllerApi. + * @export + * @interface OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest + */ +export interface OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest { + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof OrganizationModelControllerApiGetAllEntitiesCustomGeoCollections + */ + readonly filter?: string; + + /** + * Zero-based page index (0..N) + * @type {number} + * @memberof OrganizationModelControllerApiGetAllEntitiesCustomGeoCollections + */ + readonly page?: number; + + /** + * The size of the page to be returned + * @type {number} + * @memberof OrganizationModelControllerApiGetAllEntitiesCustomGeoCollections + */ + readonly size?: number; + + /** + * Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported. + * @type {Array} + * @memberof OrganizationModelControllerApiGetAllEntitiesCustomGeoCollections + */ + readonly sort?: Array; + + /** + * Include Meta objects. + * @type {Array<'page' | 'all' | 'ALL'>} + * @memberof OrganizationModelControllerApiGetAllEntitiesCustomGeoCollections + */ + readonly metaInclude?: Array<"page" | "all" | "ALL">; +} + /** * Request parameters for getAllEntitiesDataSourceIdentifiers operation in OrganizationModelControllerApi. * @export @@ -105259,6 +109442,27 @@ export interface OrganizationModelControllerApiGetEntityCspDirectivesRequest { readonly filter?: string; } +/** + * Request parameters for getEntityCustomGeoCollections operation in OrganizationModelControllerApi. + * @export + * @interface OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest + */ +export interface OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof OrganizationModelControllerApiGetEntityCustomGeoCollections + */ + readonly id: string; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof OrganizationModelControllerApiGetEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for getEntityDataSourceIdentifiers operation in OrganizationModelControllerApi. * @export @@ -105674,6 +109878,34 @@ export interface OrganizationModelControllerApiPatchEntityCspDirectivesRequest { readonly filter?: string; } +/** + * Request parameters for patchEntityCustomGeoCollections operation in OrganizationModelControllerApi. + * @export + * @interface OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest + */ +export interface OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof OrganizationModelControllerApiPatchEntityCustomGeoCollections + */ + readonly id: string; + + /** + * + * @type {JsonApiCustomGeoCollectionPatchDocument} + * @memberof OrganizationModelControllerApiPatchEntityCustomGeoCollections + */ + readonly jsonApiCustomGeoCollectionPatchDocument: JsonApiCustomGeoCollectionPatchDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof OrganizationModelControllerApiPatchEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for patchEntityDataSources operation in OrganizationModelControllerApi. * @export @@ -106059,6 +110291,34 @@ export interface OrganizationModelControllerApiUpdateEntityCspDirectivesRequest readonly filter?: string; } +/** + * Request parameters for updateEntityCustomGeoCollections operation in OrganizationModelControllerApi. + * @export + * @interface OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest + */ +export interface OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest { + /** + * + * @type {string} + * @memberof OrganizationModelControllerApiUpdateEntityCustomGeoCollections + */ + readonly id: string; + + /** + * + * @type {JsonApiCustomGeoCollectionInDocument} + * @memberof OrganizationModelControllerApiUpdateEntityCustomGeoCollections + */ + readonly jsonApiCustomGeoCollectionInDocument: JsonApiCustomGeoCollectionInDocument; + + /** + * Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). + * @type {string} + * @memberof OrganizationModelControllerApiUpdateEntityCustomGeoCollections + */ + readonly filter?: string; +} + /** * Request parameters for updateEntityDataSources operation in OrganizationModelControllerApi. * @export @@ -106440,6 +110700,26 @@ export class OrganizationModelControllerApi ); } + /** + * + * @param {OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApi + */ + public createEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiCreateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return OrganizationModelControllerApi_CreateEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * Data Source - represents data source for the workspace * @summary Post Data Sources @@ -106713,6 +110993,26 @@ export class OrganizationModelControllerApi ); } + /** + * + * @param {OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApi + */ + public deleteEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiDeleteEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return OrganizationModelControllerApi_DeleteEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * Data Source - represents data source for the workspace * @summary Delete Data Source entity @@ -106985,6 +111285,26 @@ export class OrganizationModelControllerApi ); } + /** + * + * @param {OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApi + */ + public getAllEntitiesCustomGeoCollections( + requestParameters: OrganizationModelControllerApiGetAllEntitiesCustomGeoCollectionsRequest = {}, + options?: AxiosRequestConfig, + ) { + return OrganizationModelControllerApi_GetAllEntitiesCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Get all Data Source Identifiers @@ -107341,6 +111661,26 @@ export class OrganizationModelControllerApi ); } + /** + * + * @param {OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApi + */ + public getEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiGetEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return OrganizationModelControllerApi_GetEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * * @summary Get Data Source Identifier @@ -107697,6 +112037,26 @@ export class OrganizationModelControllerApi ); } + /** + * + * @param {OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApi + */ + public patchEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiPatchEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return OrganizationModelControllerApi_PatchEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * Data Source - represents data source for the workspace * @summary Patch Data Source entity @@ -107970,6 +112330,26 @@ export class OrganizationModelControllerApi ); } + /** + * + * @param {OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationModelControllerApi + */ + public updateEntityCustomGeoCollections( + requestParameters: OrganizationModelControllerApiUpdateEntityCustomGeoCollectionsRequest, + options?: AxiosRequestConfig, + ) { + return OrganizationModelControllerApi_UpdateEntityCustomGeoCollections( + this.axios, + this.basePath, + requestParameters, + options, + this.configuration, + ); + } + /** * Data Source - represents data source for the workspace * @summary Put Data Source entity @@ -120790,7 +125170,7 @@ export async function WorkspaceObjectControllerApiAxiosParamCreator_CreateEntity // WorkspaceObjectControllerApi FP - WorkspaceObjectControllerApiAxiosParamCreator /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {string} workspaceId * @param {JsonApiFilterContextPostOptionalIdDocument} jsonApiFilterContextPostOptionalIdDocument * @param {Array<'attributes' | 'datasets' | 'labels' | 'ALL'>} [include] Array of included collections or individual relationships. Includes are separated by commas (e.g. include=entity1s,entity2s). Collection include represents the inclusion of every relationship between this entity and the given collection. Relationship include represents the inclusion of the particular relationships only. If single parameter \"ALL\" is present, all possible includes are used (include=ALL). __WARNING:__ Individual include types (collection, relationship or ALL) cannot be combined together. @@ -121873,7 +126253,7 @@ export async function WorkspaceObjectControllerApiAxiosParamCreator_DeleteEntity // WorkspaceObjectControllerApi FP - WorkspaceObjectControllerApiAxiosParamCreator /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). @@ -123358,7 +127738,7 @@ export async function WorkspaceObjectControllerApiAxiosParamCreator_GetAllEntiti // WorkspaceObjectControllerApi FP - WorkspaceObjectControllerApiAxiosParamCreator /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {string} workspaceId * @param {'ALL' | 'PARENTS' | 'NATIVE'} [origin] * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). @@ -125140,7 +129520,7 @@ export async function WorkspaceObjectControllerApiAxiosParamCreator_GetEntityFac // WorkspaceObjectControllerApi FP - WorkspaceObjectControllerApiAxiosParamCreator /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {string} [filter] Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title==\'Some Title\';description==\'desc\'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty==\'Value 123\'). @@ -126659,7 +131039,7 @@ export async function WorkspaceObjectControllerApiAxiosParamCreator_PatchEntityF // WorkspaceObjectControllerApi FP - WorkspaceObjectControllerApiAxiosParamCreator /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {JsonApiFilterContextPatchDocument} jsonApiFilterContextPatchDocument @@ -129504,7 +133884,7 @@ export async function WorkspaceObjectControllerApiAxiosParamCreator_UpdateEntity // WorkspaceObjectControllerApi FP - WorkspaceObjectControllerApiAxiosParamCreator /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {string} workspaceId * @param {string} objectId * @param {JsonApiFilterContextInDocument} jsonApiFilterContextInDocument @@ -130457,7 +134837,7 @@ export async function WorkspaceObjectControllerApi_CreateEntityExportDefinitions // WorkspaceObjectControllerApi Api FP /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {WorkspaceObjectControllerApiCreateEntityFilterContextsRequest} requestParameters Request parameters. @@ -130921,7 +135301,7 @@ export async function WorkspaceObjectControllerApi_DeleteEntityExportDefinitions // WorkspaceObjectControllerApi Api FP /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {WorkspaceObjectControllerApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. @@ -131548,7 +135928,7 @@ export async function WorkspaceObjectControllerApi_GetAllEntitiesFacts( // WorkspaceObjectControllerApi Api FP /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {WorkspaceObjectControllerApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. @@ -132237,7 +136617,7 @@ export async function WorkspaceObjectControllerApi_GetEntityFacts( // WorkspaceObjectControllerApi Api FP /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {WorkspaceObjectControllerApiGetEntityFilterContextsRequest} requestParameters Request parameters. @@ -132851,7 +137231,7 @@ export async function WorkspaceObjectControllerApi_PatchEntityFacts( // WorkspaceObjectControllerApi Api FP /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {WorkspaceObjectControllerApiPatchEntityFilterContextsRequest} requestParameters Request parameters. @@ -134017,7 +138397,7 @@ export async function WorkspaceObjectControllerApi_UpdateEntityExportDefinitions // WorkspaceObjectControllerApi Api FP /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {AxiosInstance} axios Axios instance. * @param {string} basePath Base path. * @param {WorkspaceObjectControllerApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. @@ -134402,7 +138782,7 @@ export interface WorkspaceObjectControllerApiInterface { /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {WorkspaceObjectControllerApiCreateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -134608,7 +138988,7 @@ export interface WorkspaceObjectControllerApiInterface { /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {WorkspaceObjectControllerApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -134865,7 +139245,7 @@ export interface WorkspaceObjectControllerApiInterface { /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {WorkspaceObjectControllerApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -135135,7 +139515,7 @@ export interface WorkspaceObjectControllerApiInterface { /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {WorkspaceObjectControllerApiGetEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -135393,7 +139773,7 @@ export interface WorkspaceObjectControllerApiInterface { /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {WorkspaceObjectControllerApiPatchEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -135896,7 +140276,7 @@ export interface WorkspaceObjectControllerApiInterface { /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {WorkspaceObjectControllerApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -142228,7 +146608,7 @@ export class WorkspaceObjectControllerApi extends BaseAPI implements WorkspaceOb /** * - * @summary Post Context Filters + * @summary Post Filter Context * @param {WorkspaceObjectControllerApiCreateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -142562,7 +146942,7 @@ export class WorkspaceObjectControllerApi extends BaseAPI implements WorkspaceOb /** * - * @summary Delete a Context Filter + * @summary Delete a Filter Context * @param {WorkspaceObjectControllerApiDeleteEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -142979,7 +147359,7 @@ export class WorkspaceObjectControllerApi extends BaseAPI implements WorkspaceOb /** * - * @summary Get all Context Filters + * @summary Get all Filter Context * @param {WorkspaceObjectControllerApiGetAllEntitiesFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -143417,7 +147797,7 @@ export class WorkspaceObjectControllerApi extends BaseAPI implements WorkspaceOb /** * - * @summary Get a Context Filter + * @summary Get a Filter Context * @param {WorkspaceObjectControllerApiGetEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -143835,7 +148215,7 @@ export class WorkspaceObjectControllerApi extends BaseAPI implements WorkspaceOb /** * - * @summary Patch a Context Filter + * @summary Patch a Filter Context * @param {WorkspaceObjectControllerApiPatchEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -144650,7 +149030,7 @@ export class WorkspaceObjectControllerApi extends BaseAPI implements WorkspaceOb /** * - * @summary Put a Context Filter + * @summary Put a Filter Context * @param {WorkspaceObjectControllerApiUpdateEntityFilterContextsRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. * @throws {RequiredError} diff --git a/libs/api-client-tiger/src/generated/metadata-json-api/openapi-spec.json b/libs/api-client-tiger/src/generated/metadata-json-api/openapi-spec.json index 7f6b88d9978..7eeea77cfa9 100644 --- a/libs/api-client-tiger/src/generated/metadata-json-api/openapi-spec.json +++ b/libs/api-client-tiger/src/generated/metadata-json-api/openapi-spec.json @@ -15,6 +15,10 @@ "name": "entities", "description": "| interconnected resources representing application state (JSON:API)" }, + { + "name": "aac", + "description": "| Analytics as Code APIs - YAML-compatible declarative interface" + }, { "name": "layout", "description": "| all-in-one declarative interface (set [PUT] & read [GET] over JSON)" @@ -829,11 +833,10 @@ } } }, - "/api/v1/entities/dataSourceIdentifiers": { + "/api/v1/entities/customGeoCollections": { "get": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Get all Data Source Identifiers", - "operationId": "getAllEntities@DataSourceIdentifiers", + "tags": ["entities", "organization-model-controller"], + "operationId": "getAllEntities@CustomGeoCollections", "parameters": [ { "name": "filter", @@ -842,7 +845,7 @@ "schema": { "type": "string" }, - "example": "name==someString;schema==someString" + "example": "" }, { "$ref": "#/components/parameters/page" @@ -866,127 +869,10 @@ "description": "Included meta objects", "items": { "type": "string", - "enum": ["permissions", "page", "all", "ALL"] - } - }, - "example": "metaInclude=permissions,page,all" - } - ], - "responses": { - "200": { - "description": "Request successfully processed", - "content": { - "application/vnd.gooddata.api+json": { - "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOutList" - } - } - } - } - }, - "x-gdc-security-info": { - "permissions": ["USE"], - "description": "Contains minimal permission level required to view this object type." - } - } - }, - "/api/v1/entities/dataSourceIdentifiers/{id}": { - "get": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Get Data Source Identifier", - "operationId": "getEntity@DataSourceIdentifiers", - "parameters": [ - { - "$ref": "#/components/parameters/idPathParameter" - }, - { - "name": "filter", - "in": "query", - "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", - "schema": { - "type": "string" - }, - "example": "name==someString;schema==someString" - }, - { - "name": "metaInclude", - "in": "query", - "description": "Include Meta objects.", - "required": false, - "style": "form", - "explode": false, - "schema": { - "uniqueItems": true, - "type": "array", - "description": "Included meta objects", - "items": { - "type": "string", - "enum": ["permissions", "all", "ALL"] - } - }, - "example": "metaInclude=permissions,all" - } - ], - "responses": { - "200": { - "description": "Request successfully processed", - "content": { - "application/vnd.gooddata.api+json": { - "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOutDocument" - } - } - } - } - }, - "x-gdc-security-info": { - "permissions": ["USE"], - "description": "Contains minimal permission level required to view this object type." - } - } - }, - "/api/v1/entities/dataSources": { - "get": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Get Data Source entities", - "description": "Data Source - represents data source for the workspace", - "operationId": "getAllEntities@DataSources", - "parameters": [ - { - "name": "filter", - "in": "query", - "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", - "schema": { - "type": "string" - }, - "example": "name==someString;type==DatabaseTypeValue" - }, - { - "$ref": "#/components/parameters/page" - }, - { - "$ref": "#/components/parameters/size" - }, - { - "$ref": "#/components/parameters/sort" - }, - { - "name": "metaInclude", - "in": "query", - "description": "Include Meta objects.", - "required": false, - "style": "form", - "explode": false, - "schema": { - "uniqueItems": true, - "type": "array", - "description": "Included meta objects", - "items": { - "type": "string", - "enum": ["permissions", "page", "all", "ALL"] + "enum": ["page", "all", "ALL"] } }, - "example": "metaInclude=permissions,page,all" + "example": "metaInclude=page,all" } ], "responses": { @@ -995,47 +881,21 @@ "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceOutList" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOutList" } } } } - }, - "x-gdc-security-info": { - "permissions": ["MANAGE"], - "description": "Contains minimal permission level required to view this object type." } }, "post": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Post Data Sources", - "description": "Data Source - represents data source for the workspace", - "operationId": "createEntity@DataSources", - "parameters": [ - { - "name": "metaInclude", - "in": "query", - "description": "Include Meta objects.", - "required": false, - "style": "form", - "explode": false, - "schema": { - "uniqueItems": true, - "type": "array", - "description": "Included meta objects", - "items": { - "type": "string", - "enum": ["permissions", "all", "ALL"] - } - }, - "example": "metaInclude=permissions,all" - } - ], + "tags": ["entities", "organization-model-controller"], + "operationId": "createEntity@CustomGeoCollections", "requestBody": { "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceInDocument" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionInDocument" } } }, @@ -1047,24 +907,18 @@ "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOutDocument" } } } } - }, - "x-gdc-security-info": { - "permissions": ["MANAGE"], - "description": "Contains minimal permission level required to manage this object type." } } }, - "/api/v1/entities/dataSources/{id}": { + "/api/v1/entities/customGeoCollections/{id}": { "get": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Get Data Source entity", - "description": "Data Source - represents data source for the workspace", - "operationId": "getEntity@DataSources", + "tags": ["entities", "organization-model-controller"], + "operationId": "getEntity@CustomGeoCollections", "parameters": [ { "$ref": "#/components/parameters/idPathParameter" @@ -1076,25 +930,7 @@ "schema": { "type": "string" }, - "example": "name==someString;type==DatabaseTypeValue" - }, - { - "name": "metaInclude", - "in": "query", - "description": "Include Meta objects.", - "required": false, - "style": "form", - "explode": false, - "schema": { - "uniqueItems": true, - "type": "array", - "description": "Included meta objects", - "items": { - "type": "string", - "enum": ["permissions", "all", "ALL"] - } - }, - "example": "metaInclude=permissions,all" + "example": "" } ], "responses": { @@ -1103,22 +939,16 @@ "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOutDocument" } } } } - }, - "x-gdc-security-info": { - "permissions": ["MANAGE"], - "description": "Contains minimal permission level required to view this object type." } }, "put": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Put Data Source entity", - "description": "Data Source - represents data source for the workspace", - "operationId": "updateEntity@DataSources", + "tags": ["entities", "organization-model-controller"], + "operationId": "updateEntity@CustomGeoCollections", "parameters": [ { "$ref": "#/components/parameters/idPathParameter" @@ -1130,14 +960,14 @@ "schema": { "type": "string" }, - "example": "name==someString;type==DatabaseTypeValue" + "example": "" } ], "requestBody": { "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceInDocument" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionInDocument" } } }, @@ -1149,22 +979,16 @@ "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOutDocument" } } } } - }, - "x-gdc-security-info": { - "permissions": ["MANAGE"], - "description": "Contains minimal permission level required to manage this object type." } }, "delete": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Delete Data Source entity", - "description": "Data Source - represents data source for the workspace", - "operationId": "deleteEntity@DataSources", + "tags": ["entities", "organization-model-controller"], + "operationId": "deleteEntity@CustomGeoCollections", "parameters": [ { "$ref": "#/components/parameters/idPathParameter" @@ -1176,24 +1000,18 @@ "schema": { "type": "string" }, - "example": "name==someString;type==DatabaseTypeValue" + "example": "" } ], "responses": { "204": { "$ref": "#/components/responses/Deleted" } - }, - "x-gdc-security-info": { - "permissions": ["MANAGE"], - "description": "Contains minimal permission level required to manage this object type." } }, "patch": { - "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], - "summary": "Patch Data Source entity", - "description": "Data Source - represents data source for the workspace", - "operationId": "patchEntity@DataSources", + "tags": ["entities", "organization-model-controller"], + "operationId": "patchEntity@CustomGeoCollections", "parameters": [ { "$ref": "#/components/parameters/idPathParameter" @@ -1205,14 +1023,14 @@ "schema": { "type": "string" }, - "example": "name==someString;type==DatabaseTypeValue" + "example": "" } ], "requestBody": { "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourcePatchDocument" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionPatchDocument" } } }, @@ -1224,24 +1042,19 @@ "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOutDocument" } } } } - }, - "x-gdc-security-info": { - "permissions": ["MANAGE"], - "description": "Contains minimal permission level required to manage this object type." } } }, - "/api/v1/entities/entitlements": { + "/api/v1/entities/dataSourceIdentifiers": { "get": { - "tags": ["Entitlement", "entities", "organization-model-controller"], - "summary": "Get Entitlements", - "description": "Space of the shared interest", - "operationId": "getAllEntities@Entitlements", + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Get all Data Source Identifiers", + "operationId": "getAllEntities@DataSourceIdentifiers", "parameters": [ { "name": "filter", @@ -1250,7 +1063,7 @@ "schema": { "type": "string" }, - "example": "value==someString;expiry==LocalDateValue" + "example": "name==someString;schema==someString" }, { "$ref": "#/components/parameters/page" @@ -1274,10 +1087,10 @@ "description": "Included meta objects", "items": { "type": "string", - "enum": ["page", "all", "ALL"] + "enum": ["permissions", "page", "all", "ALL"] } }, - "example": "metaInclude=page,all" + "example": "metaInclude=permissions,page,all" } ], "responses": { @@ -1286,20 +1099,23 @@ "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiEntitlementOutList" + "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOutList" } } } } + }, + "x-gdc-security-info": { + "permissions": ["USE"], + "description": "Contains minimal permission level required to view this object type." } } }, - "/api/v1/entities/entitlements/{id}": { + "/api/v1/entities/dataSourceIdentifiers/{id}": { "get": { - "tags": ["Entitlement", "entities", "organization-model-controller"], - "summary": "Get Entitlement", - "description": "Space of the shared interest", - "operationId": "getEntity@Entitlements", + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Get Data Source Identifier", + "operationId": "getEntity@DataSourceIdentifiers", "parameters": [ { "$ref": "#/components/parameters/idPathParameter" @@ -1311,7 +1127,25 @@ "schema": { "type": "string" }, - "example": "value==someString;expiry==LocalDateValue" + "example": "name==someString;schema==someString" + }, + { + "name": "metaInclude", + "in": "query", + "description": "Include Meta objects.", + "required": false, + "style": "form", + "explode": false, + "schema": { + "uniqueItems": true, + "type": "array", + "description": "Included meta objects", + "items": { + "type": "string", + "enum": ["permissions", "all", "ALL"] + } + }, + "example": "metaInclude=permissions,all" } ], "responses": { @@ -1320,19 +1154,24 @@ "content": { "application/vnd.gooddata.api+json": { "schema": { - "$ref": "#/components/schemas/JsonApiEntitlementOutDocument" + "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOutDocument" } } } } + }, + "x-gdc-security-info": { + "permissions": ["USE"], + "description": "Contains minimal permission level required to view this object type." } } }, - "/api/v1/entities/exportTemplates": { + "/api/v1/entities/dataSources": { "get": { - "tags": ["Export templates", "entities", "organization-model-controller"], - "summary": "GET all Export Template entities", - "operationId": "getAllEntities@ExportTemplates", + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Get Data Source entities", + "description": "Data Source - represents data source for the workspace", + "operationId": "getAllEntities@DataSources", "parameters": [ { "name": "filter", @@ -1341,7 +1180,389 @@ "schema": { "type": "string" }, - "example": "name==someString;dashboardSlidesTemplate==DashboardSlidesTemplateValue" + "example": "name==someString;type==DatabaseTypeValue" + }, + { + "$ref": "#/components/parameters/page" + }, + { + "$ref": "#/components/parameters/size" + }, + { + "$ref": "#/components/parameters/sort" + }, + { + "name": "metaInclude", + "in": "query", + "description": "Include Meta objects.", + "required": false, + "style": "form", + "explode": false, + "schema": { + "uniqueItems": true, + "type": "array", + "description": "Included meta objects", + "items": { + "type": "string", + "enum": ["permissions", "page", "all", "ALL"] + } + }, + "example": "metaInclude=permissions,page,all" + } + ], + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourceOutList" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Contains minimal permission level required to view this object type." + } + }, + "post": { + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Post Data Sources", + "description": "Data Source - represents data source for the workspace", + "operationId": "createEntity@DataSources", + "parameters": [ + { + "name": "metaInclude", + "in": "query", + "description": "Include Meta objects.", + "required": false, + "style": "form", + "explode": false, + "schema": { + "uniqueItems": true, + "type": "array", + "description": "Included meta objects", + "items": { + "type": "string", + "enum": ["permissions", "all", "ALL"] + } + }, + "example": "metaInclude=permissions,all" + } + ], + "requestBody": { + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourceInDocument" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Request successfully processed", + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Contains minimal permission level required to manage this object type." + } + } + }, + "/api/v1/entities/dataSources/{id}": { + "get": { + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Get Data Source entity", + "description": "Data Source - represents data source for the workspace", + "operationId": "getEntity@DataSources", + "parameters": [ + { + "$ref": "#/components/parameters/idPathParameter" + }, + { + "name": "filter", + "in": "query", + "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", + "schema": { + "type": "string" + }, + "example": "name==someString;type==DatabaseTypeValue" + }, + { + "name": "metaInclude", + "in": "query", + "description": "Include Meta objects.", + "required": false, + "style": "form", + "explode": false, + "schema": { + "uniqueItems": true, + "type": "array", + "description": "Included meta objects", + "items": { + "type": "string", + "enum": ["permissions", "all", "ALL"] + } + }, + "example": "metaInclude=permissions,all" + } + ], + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Contains minimal permission level required to view this object type." + } + }, + "put": { + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Put Data Source entity", + "description": "Data Source - represents data source for the workspace", + "operationId": "updateEntity@DataSources", + "parameters": [ + { + "$ref": "#/components/parameters/idPathParameter" + }, + { + "name": "filter", + "in": "query", + "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", + "schema": { + "type": "string" + }, + "example": "name==someString;type==DatabaseTypeValue" + } + ], + "requestBody": { + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourceInDocument" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Contains minimal permission level required to manage this object type." + } + }, + "delete": { + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Delete Data Source entity", + "description": "Data Source - represents data source for the workspace", + "operationId": "deleteEntity@DataSources", + "parameters": [ + { + "$ref": "#/components/parameters/idPathParameter" + }, + { + "name": "filter", + "in": "query", + "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", + "schema": { + "type": "string" + }, + "example": "name==someString;type==DatabaseTypeValue" + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/Deleted" + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Contains minimal permission level required to manage this object type." + } + }, + "patch": { + "tags": ["Data Source - Entity APIs", "entities", "organization-model-controller"], + "summary": "Patch Data Source entity", + "description": "Data Source - represents data source for the workspace", + "operationId": "patchEntity@DataSources", + "parameters": [ + { + "$ref": "#/components/parameters/idPathParameter" + }, + { + "name": "filter", + "in": "query", + "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", + "schema": { + "type": "string" + }, + "example": "name==someString;type==DatabaseTypeValue" + } + ], + "requestBody": { + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourcePatchDocument" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiDataSourceOutDocument" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Contains minimal permission level required to manage this object type." + } + } + }, + "/api/v1/entities/entitlements": { + "get": { + "tags": ["Entitlement", "entities", "organization-model-controller"], + "summary": "Get Entitlements", + "description": "Space of the shared interest", + "operationId": "getAllEntities@Entitlements", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", + "schema": { + "type": "string" + }, + "example": "value==someString;expiry==LocalDateValue" + }, + { + "$ref": "#/components/parameters/page" + }, + { + "$ref": "#/components/parameters/size" + }, + { + "$ref": "#/components/parameters/sort" + }, + { + "name": "metaInclude", + "in": "query", + "description": "Include Meta objects.", + "required": false, + "style": "form", + "explode": false, + "schema": { + "uniqueItems": true, + "type": "array", + "description": "Included meta objects", + "items": { + "type": "string", + "enum": ["page", "all", "ALL"] + } + }, + "example": "metaInclude=page,all" + } + ], + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiEntitlementOutList" + } + } + } + } + } + } + }, + "/api/v1/entities/entitlements/{id}": { + "get": { + "tags": ["Entitlement", "entities", "organization-model-controller"], + "summary": "Get Entitlement", + "description": "Space of the shared interest", + "operationId": "getEntity@Entitlements", + "parameters": [ + { + "$ref": "#/components/parameters/idPathParameter" + }, + { + "name": "filter", + "in": "query", + "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", + "schema": { + "type": "string" + }, + "example": "value==someString;expiry==LocalDateValue" + } + ], + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/vnd.gooddata.api+json": { + "schema": { + "$ref": "#/components/schemas/JsonApiEntitlementOutDocument" + } + } + } + } + } + } + }, + "/api/v1/entities/exportTemplates": { + "get": { + "tags": ["Export templates", "entities", "organization-model-controller"], + "summary": "GET all Export Template entities", + "operationId": "getAllEntities@ExportTemplates", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').", + "schema": { + "type": "string" + }, + "example": "name==someString;dashboardSlidesTemplate==DashboardSlidesTemplateValue" }, { "$ref": "#/components/parameters/page" @@ -9279,8 +9500,8 @@ }, "/api/v1/entities/workspaces/{workspaceId}/filterContexts": { "get": { - "tags": ["Context Filters", "entities", "workspace-object-controller"], - "summary": "Get all Context Filters", + "tags": ["Filter Context", "entities", "workspace-object-controller"], + "summary": "Get all Filter Context", "operationId": "getAllEntities@FilterContexts", "parameters": [ { @@ -9382,8 +9603,8 @@ } }, "post": { - "tags": ["Context Filters", "entities", "workspace-object-controller"], - "summary": "Post Context Filters", + "tags": ["Filter Context", "entities", "workspace-object-controller"], + "summary": "Post Filter Context", "operationId": "createEntity@FilterContexts", "parameters": [ { @@ -9523,8 +9744,8 @@ }, "/api/v1/entities/workspaces/{workspaceId}/filterContexts/{objectId}": { "get": { - "tags": ["Context Filters", "entities", "workspace-object-controller"], - "summary": "Get a Context Filter", + "tags": ["Filter Context", "entities", "workspace-object-controller"], + "summary": "Get a Filter Context", "operationId": "getEntity@FilterContexts", "parameters": [ { @@ -9614,8 +9835,8 @@ } }, "put": { - "tags": ["Context Filters", "entities", "workspace-object-controller"], - "summary": "Put a Context Filter", + "tags": ["Filter Context", "entities", "workspace-object-controller"], + "summary": "Put a Filter Context", "operationId": "updateEntity@FilterContexts", "parameters": [ { @@ -9688,8 +9909,8 @@ } }, "delete": { - "tags": ["Context Filters", "entities", "workspace-object-controller"], - "summary": "Delete a Context Filter", + "tags": ["Filter Context", "entities", "workspace-object-controller"], + "summary": "Delete a Filter Context", "operationId": "deleteEntity@FilterContexts", "parameters": [ { @@ -9729,8 +9950,8 @@ } }, "patch": { - "tags": ["Context Filters", "entities", "workspace-object-controller"], - "summary": "Patch a Context Filter", + "tags": ["Filter Context", "entities", "workspace-object-controller"], + "summary": "Patch a Filter Context", "operationId": "patchEntity@FilterContexts", "parameters": [ { @@ -16202,6 +16423,165 @@ } } }, + "/api/v1/aac/workspaces/{workspaceId}/logicalModel": { + "get": { + "tags": ["aac", "AAC - Logical Data Model"], + "summary": "Get logical model in AAC format", + "description": "\n Retrieve the logical data model of the workspace in Analytics as Code format.\n \n The returned format is compatible with the YAML definitions used by the \n GoodData Analytics as Code VSCode extension. Use this for exporting models\n that can be directly used as YAML configuration files.\n ", + "operationId": "getLogicalModelAac", + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "includeParents", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Retrieved current logical model in AAC format.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AacLogicalModel" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["VIEW"], + "description": "Permissions to read the logical model." + } + }, + "put": { + "tags": ["aac", "AAC - Logical Data Model"], + "summary": "Set logical model from AAC format", + "description": "\n Set the logical data model of the workspace using Analytics as Code format.\n \n The input format is compatible with the YAML definitions used by the \n GoodData Analytics as Code VSCode extension. This replaces the entire \n logical model with the provided definition.\n ", + "operationId": "setLogicalModelAac", + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AacLogicalModel" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Logical model successfully set." + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Permissions required to alter the logical model." + } + } + }, + "/api/v1/aac/workspaces/{workspaceId}/analyticsModel": { + "get": { + "tags": ["aac", "AAC - Analytics Model"], + "summary": "Get analytics model in AAC format", + "description": "\n Retrieve the analytics model of the workspace in Analytics as Code format.\n \n The returned format is compatible with the YAML definitions used by the \n GoodData Analytics as Code VSCode extension. This includes metrics, \n dashboards, visualizations, plugins, and attribute hierarchies.\n ", + "operationId": "getAnalyticsModelAac", + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Defines properties which should not be included in the payload.", + "enum": ["ACTIVITY_INFO"] + } + } + } + ], + "responses": { + "200": { + "description": "Retrieved current analytics model in AAC format.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AacAnalyticsModel" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["ANALYZE"], + "description": "Permissions to read the analytics layout." + } + }, + "put": { + "tags": ["aac", "AAC - Analytics Model"], + "summary": "Set analytics model from AAC format", + "description": "\n Set the analytics model of the workspace using Analytics as Code format.\n \n The input format is compatible with the YAML definitions used by the \n GoodData Analytics as Code VSCode extension. This replaces the entire \n analytics model with the provided definition, including metrics, \n dashboards, visualizations, plugins, and attribute hierarchies.\n ", + "operationId": "setAnalyticsModelAac", + "parameters": [ + { + "name": "workspaceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AacAnalyticsModel" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Analytics model successfully set." + } + }, + "x-gdc-security-info": { + "permissions": ["ANALYZE"], + "description": "Permissions to modify the analytics layout." + } + } + }, "/api/v1/actions/workspaces/{workspaceId}/translations/set": { "post": { "tags": ["Translations", "actions"], @@ -17384,6 +17764,50 @@ } } }, + "/api/v1/actions/dataSources/{dataSourceId}/generateLogicalModelAac": { + "post": { + "tags": ["Generate Logical Data Model", "actions"], + "summary": "Generate logical data model in AAC format from physical data model (PDM)", + "description": "\n Generate logical data model (LDM) from physical data model (PDM) stored in data source,\n returning the result in Analytics as Code (AAC) format compatible with the GoodData \n VSCode extension YAML definitions.\n ", + "operationId": "generateLogicalModelAac", + "parameters": [ + { + "name": "dataSourceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateLdmRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "LDM generated successfully in AAC format.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AacLogicalModel" + } + } + } + } + }, + "x-gdc-security-info": { + "permissions": ["MANAGE"], + "description": "Minimal permission required to use this endpoint." + } + } + }, "/api/v1/actions/dataSources/{dataSourceId}/generateLogicalModel": { "post": { "tags": ["Generate Logical Data Model", "actions"], @@ -18306,59 +18730,40 @@ }, "description": "Request body for entity search operations" }, - "JsonApiColorPalettePatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiColorPalettePatch" + "JsonApiColorPaletteOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiColorPaletteOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiColorPalettePatch": { - "required": ["attributes", "id", "type"], + "JsonApiColorPaletteOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "colorPalette", - "enum": ["colorPalette"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiColorPaletteOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} + "page": { + "$ref": "#/components/schemas/PageMetadata" } } } }, - "description": "JSON:API representation of patching colorPalette entity." - }, - "JsonApiColorPaletteOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiColorPaletteOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - } - } + "description": "A JSON:API document with a list of resources" }, "JsonApiColorPaletteOut": { "required": ["attributes", "id", "type"], @@ -18394,56 +18799,40 @@ }, "description": "JSON:API representation of colorPalette entity." }, - "JsonApiCspDirectivePatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiCspDirectivePatch" + "JsonApiCspDirectiveOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiCspDirectiveOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiCspDirectivePatch": { - "required": ["attributes", "id", "type"], + "JsonApiCspDirectiveOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "cspDirective", - "enum": ["cspDirective"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiCspDirectiveOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "sources": { - "type": "array", - "items": { - "type": "string" - } + "page": { + "$ref": "#/components/schemas/PageMetadata" } } } }, - "description": "JSON:API representation of patching cspDirective entity." - }, - "JsonApiCspDirectiveOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiCspDirectiveOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - } - } + "description": "A JSON:API document with a list of resources" }, "JsonApiCspDirectiveOut": { "required": ["attributes", "id", "type"], @@ -18476,24 +18865,104 @@ }, "description": "JSON:API representation of cspDirective entity." }, - "JsonApiDataSourcePatchDocument": { + "JsonApiCustomGeoCollectionOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiCustomGeoCollectionOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiDataSourcePatch" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiDataSourcePatch": { + "JsonApiCustomGeoCollectionOut": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "customGeoCollection", + "enum": ["customGeoCollection"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + } + }, + "description": "JSON:API representation of customGeoCollection entity." + }, + "JsonApiDataSourceIdentifierOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiDataSourceIdentifierOutList": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + } + }, + "description": "A JSON:API document with a list of resources" + }, + "JsonApiDataSourceIdentifierOut": { "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "dataSource", - "enum": ["dataSource"] + "example": "dataSourceIdentifier", + "enum": ["dataSourceIdentifier"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -18501,17 +18970,33 @@ "description": "API identifier of an object", "example": "id1" }, + "meta": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "description": "List of valid permissions for a logged-in user.", + "items": { + "type": "string", + "enum": ["MANAGE", "USE"] + } + } + } + }, "attributes": { + "required": ["name", "schema", "type"], "type": "object", "properties": { "name": { "maxLength": 255, - "type": "string", - "description": "User-facing name of the data source." + "type": "string" + }, + "schema": { + "maxLength": 255, + "type": "string" }, "type": { "type": "string", - "description": "Type of the database providing the data for the data source.", "enum": [ "POSTGRESQL", "REDSHIFT", @@ -18540,106 +19025,46 @@ "ATHENA", "MONGODB" ] - }, - "url": { - "maxLength": 255, - "type": "string", - "description": "The URL of the database providing the data for the data source.", - "nullable": true - }, - "schema": { - "maxLength": 255, - "type": "string", - "description": "The schema to use as the root of the data for the data source." - }, - "username": { - "maxLength": 255, - "type": "string", - "description": "The username to use to connect to the database providing the data for the data source.", - "nullable": true - }, - "password": { - "maxLength": 255, - "type": "string", - "description": "The password to use to connect to the database providing the data for the data source.", - "nullable": true - }, - "privateKey": { - "maxLength": 15000, - "type": "string", - "description": "The private key to use to connect to the database providing the data for the data source.", - "nullable": true - }, - "privateKeyPassphrase": { - "maxLength": 255, - "type": "string", - "description": "The passphrase used to encrypt the private key.", - "nullable": true - }, - "token": { - "maxLength": 10000, - "type": "string", - "description": "The token to use to connect to the database providing the data for the data source (for example a BigQuery Service Account).", - "nullable": true - }, - "clientId": { - "maxLength": 255, - "type": "string", - "description": "The client id to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", - "nullable": true - }, - "clientSecret": { - "maxLength": 255, - "type": "string", - "description": "The client secret to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", - "nullable": true - }, - "parameters": { - "type": "array", - "description": "Additional parameters to be used when connecting to the database providing the data for the data source.", - "nullable": true, - "items": { - "required": ["name", "value"], - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "cacheStrategy": { - "type": "string", - "description": "Determines how the results coming from a particular datasource should be cached.", - "nullable": true, - "enum": ["ALWAYS", "NEVER"] - }, - "alternativeDataSourceId": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", - "nullable": true, - "example": "pg_local_docker-demo2" } } } }, - "description": "JSON:API representation of patching dataSource entity." + "description": "JSON:API representation of dataSourceIdentifier entity." }, - "JsonApiDataSourceOutDocument": { + "JsonApiDataSourceOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiDataSourceOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiDataSourceOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiDataSourceOut" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiDataSourceOutWithLinks" + } }, "links": { - "$ref": "#/components/schemas/ObjectLinks" + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } } - } + }, + "description": "A JSON:API document with a list of resources" }, "JsonApiDataSourceOut": { "required": ["attributes", "id", "type"], @@ -18798,16 +19223,109 @@ }, "description": "JSON:API representation of dataSource entity." }, - "JsonApiExportTemplatePatchDocument": { + "JsonApiEntitlementOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiEntitlementOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiEntitlementOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiExportTemplatePatch" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiEntitlementOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiExportTemplatePatch": { + "JsonApiEntitlementOut": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "entitlement", + "enum": ["entitlement"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "value": { + "maxLength": 255, + "type": "string" + }, + "expiry": { + "type": "string", + "format": "date" + } + } + } + }, + "description": "JSON:API representation of entitlement entity." + }, + "JsonApiExportTemplateOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiExportTemplateOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiExportTemplateOutList": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiExportTemplateOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + } + }, + "description": "A JSON:API document with a list of resources" + }, + "JsonApiExportTemplateOut": { "required": ["attributes", "id", "type"], "type": "object", "properties": { @@ -18824,6 +19342,7 @@ "example": "id1" }, "attributes": { + "required": ["name"], "type": "object", "properties": { "name": { @@ -18885,7 +19404,7 @@ } } }, - "description": "JSON:API representation of patching exportTemplate entity." + "description": "JSON:API representation of exportTemplate entity." }, "ContentSlideTemplate": { "type": "object", @@ -18991,109 +19510,42 @@ "description": "Settings for section slide.", "nullable": true }, - "JsonApiExportTemplateOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiExportTemplateOut" + "JsonApiIdentityProviderOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiIdentityProviderOut" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiExportTemplateOut": { - "required": ["attributes", "id", "type"], + "JsonApiIdentityProviderOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "exportTemplate", - "enum": ["exportTemplate"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiIdentityProviderOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { - "required": ["name"], + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string", - "description": "User-facing name of the Slides template." - }, - "dashboardSlidesTemplate": { - "required": ["appliedOn"], - "type": "object", - "properties": { - "appliedOn": { - "minItems": 1, - "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], - "items": { - "type": "string", - "enum": ["PDF", "PPTX"] - } - }, - "coverSlide": { - "$ref": "#/components/schemas/CoverSlideTemplate" - }, - "introSlide": { - "$ref": "#/components/schemas/IntroSlideTemplate" - }, - "sectionSlide": { - "$ref": "#/components/schemas/SectionSlideTemplate" - }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" - } - }, - "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true - }, - "widgetSlidesTemplate": { - "required": ["appliedOn"], - "type": "object", - "properties": { - "appliedOn": { - "minItems": 1, - "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], - "items": { - "type": "string", - "enum": ["PDF", "PPTX"] - } - }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" - } - }, - "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true + "page": { + "$ref": "#/components/schemas/PageMetadata" } } } }, - "description": "JSON:API representation of exportTemplate entity." - }, - "JsonApiIdentityProviderPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiIdentityProviderPatch" - } - } + "description": "A JSON:API document with a list of resources" }, - "JsonApiIdentityProviderPatch": { + "JsonApiIdentityProviderOut": { "required": ["id", "type"], "type": "object", "properties": { @@ -19128,21 +19580,11 @@ }, "description": "Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute." }, - "samlMetadata": { - "maxLength": 15000, - "type": "string", - "description": "Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP." - }, "oauthClientId": { "maxLength": 255, "type": "string", "description": "The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP." }, - "oauthClientSecret": { - "maxLength": 255, - "type": "string", - "description": "The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP." - }, "oauthIssuerLocation": { "maxLength": 255, "type": "string", @@ -19185,29 +19627,52 @@ } } }, - "description": "JSON:API representation of patching identityProvider entity." + "description": "JSON:API representation of identityProvider entity." }, - "JsonApiIdentityProviderOutDocument": { + "JsonApiJwkOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiJwkOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiJwkOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiIdentityProviderOut" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiJwkOutWithLinks" + } }, "links": { - "$ref": "#/components/schemas/ObjectLinks" + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiIdentityProviderOut": { + "JsonApiJwkOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "identityProvider", - "enum": ["identityProvider"] + "example": "jwk", + "enum": ["jwk"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -19218,106 +19683,13 @@ "attributes": { "type": "object", "properties": { - "identifiers": { - "type": "array", - "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", - "example": ["gooddata.com"], - "items": { - "type": "string" - } - }, - "customClaimMapping": { - "maxLength": 10000, + "content": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute." - }, - "oauthClientId": { - "maxLength": 255, - "type": "string", - "description": "The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP." - }, - "oauthIssuerLocation": { - "maxLength": 255, - "type": "string", - "description": "The location of your OIDC provider. This field is mandatory for OIDC IdP." - }, - "oauthIssuerId": { - "maxLength": 255, - "type": "string", - "description": "Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", - "example": "myOidcProvider" - }, - "oauthSubjectIdClaim": { - "maxLength": 255, - "type": "string", - "description": "Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", - "example": "oid" - }, - "oauthCustomAuthAttributes": { - "maxLength": 10000, - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." - }, - "oauthCustomScopes": { - "type": "array", - "description": "List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", - "nullable": true, - "items": { - "maxLength": 255, - "type": "string" - } - }, - "idpType": { - "type": "string", - "description": "Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", - "enum": ["MANAGED_IDP", "FIM_IDP", "DEX_IDP", "CUSTOM_IDP"] - } - } - } - }, - "description": "JSON:API representation of identityProvider entity." - }, - "JsonApiJwkPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiJwkPatch" - } - } - }, - "JsonApiJwkPatch": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "jwk", - "enum": ["jwk"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "content": { - "type": "object", - "description": "Specification of the cryptographic key", - "example": { - "kyt": "RSA", - "alg": "RS256", - "use": "sig" + "description": "Specification of the cryptographic key", + "example": { + "kyt": "RSA", + "alg": "RS256", + "use": "sig" }, "oneOf": [ { @@ -19328,7 +19700,7 @@ } } }, - "description": "JSON:API representation of patching jwk entity." + "description": "JSON:API representation of jwk entity." }, "RsaSpecification": { "required": ["alg", "e", "kid", "kty", "n", "use"], @@ -19366,66 +19738,42 @@ } } }, - "JsonApiJwkOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiJwkOut" + "JsonApiLlmEndpointOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiLlmEndpointOut" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiJwkOut": { - "required": ["id", "type"], + "JsonApiLlmEndpointOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "jwk", - "enum": ["jwk"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiLlmEndpointOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "content": { - "type": "object", - "description": "Specification of the cryptographic key", - "example": { - "kyt": "RSA", - "alg": "RS256", - "use": "sig" - }, - "oneOf": [ - { - "$ref": "#/components/schemas/RsaSpecification" - } - ] + "page": { + "$ref": "#/components/schemas/PageMetadata" } } } }, - "description": "JSON:API representation of jwk entity." - }, - "JsonApiLlmEndpointPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLlmEndpointPatch" - } - } + "description": "A JSON:API document with a list of resources" }, - "JsonApiLlmEndpointPatch": { + "JsonApiLlmEndpointOut": { "required": ["attributes", "id", "type"], "type": "object", "properties": { @@ -19442,6 +19790,7 @@ "example": "id1" }, "attributes": { + "required": ["title"], "type": "object", "properties": { "title": { @@ -19460,11 +19809,6 @@ "description": "Custom LLM endpoint.", "nullable": true }, - "token": { - "maxLength": 10000, - "type": "string", - "description": "The token to use to connect to the LLM provider." - }, "llmOrganization": { "maxLength": 255, "type": "string", @@ -19479,29 +19823,52 @@ } } }, - "description": "JSON:API representation of patching llmEndpoint entity." + "description": "JSON:API representation of llmEndpoint entity." }, - "JsonApiLlmEndpointOutDocument": { + "JsonApiNotificationChannelIdentifierOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiNotificationChannelIdentifierOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiNotificationChannelIdentifierOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiLlmEndpointOut" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiNotificationChannelIdentifierOutWithLinks" + } }, "links": { - "$ref": "#/components/schemas/ObjectLinks" + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiLlmEndpointOut": { - "required": ["attributes", "id", "type"], + "JsonApiNotificationChannelIdentifierOut": { + "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "llmEndpoint", - "enum": ["llmEndpoint"] + "example": "notificationChannelIdentifier", + "enum": ["notificationChannelIdentifier"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -19510,51 +19877,68 @@ "example": "id1" }, "attributes": { - "required": ["title"], "type": "object", "properties": { - "title": { + "name": { "maxLength": 255, "type": "string", - "description": "User-facing title of the LLM Provider." - }, - "provider": { - "type": "string", - "description": "LLM Provider.", - "enum": ["OPENAI", "AZURE_OPENAI"] + "nullable": true }, - "baseUrl": { - "maxLength": 255, + "description": { + "maxLength": 10000, "type": "string", - "description": "Custom LLM endpoint.", "nullable": true }, - "llmOrganization": { - "maxLength": 255, + "destinationType": { "type": "string", - "description": "Organization in LLM provider.", - "nullable": true + "enum": ["WEBHOOK", "SMTP", "DEFAULT_SMTP", "IN_PLATFORM"] }, - "llmModel": { - "maxLength": 255, + "allowedRecipients": { "type": "string", - "description": "LLM Model. We provide a default model for each provider, but you can override it here." + "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", + "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] } } } }, - "description": "JSON:API representation of llmEndpoint entity." + "description": "JSON:API representation of notificationChannelIdentifier entity." }, - "JsonApiNotificationChannelPatchDocument": { + "JsonApiNotificationChannelOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiNotificationChannelOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiNotificationChannelOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiNotificationChannelPatch" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiNotificationChannelOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiNotificationChannelPatch": { + "JsonApiNotificationChannelOut": { "required": ["id", "type"], "type": "object", "properties": { @@ -19600,6 +19984,11 @@ } ] }, + "destinationType": { + "type": "string", + "nullable": true, + "enum": ["WEBHOOK", "SMTP", "DEFAULT_SMTP", "IN_PLATFORM"] + }, "customDashboardUrl": { "maxLength": 255, "type": "string", @@ -19628,7 +20017,7 @@ } } }, - "description": "JSON:API representation of patching notificationChannel entity." + "description": "JSON:API representation of notificationChannel entity." }, "DefaultSmtp": { "required": ["type"], @@ -19761,109 +20150,42 @@ } ] }, - "JsonApiNotificationChannelOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiNotificationChannelOut" + "JsonApiOrganizationSettingOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiOrganizationSettingOut" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiNotificationChannelOut": { - "required": ["id", "type"], + "JsonApiOrganizationSettingOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "notificationChannel", - "enum": ["notificationChannel"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiOrganizationSettingOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "description": { - "maxLength": 10000, - "type": "string", - "nullable": true - }, - "destination": { - "description": "The destination where the notifications are to be sent.", - "oneOf": [ - { - "$ref": "#/components/schemas/DefaultSmtp" - }, - { - "$ref": "#/components/schemas/InPlatform" - }, - { - "$ref": "#/components/schemas/Smtp" - }, - { - "$ref": "#/components/schemas/Webhook" - } - ] - }, - "destinationType": { - "type": "string", - "nullable": true, - "enum": ["WEBHOOK", "SMTP", "DEFAULT_SMTP", "IN_PLATFORM"] - }, - "customDashboardUrl": { - "maxLength": 255, - "type": "string", - "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" - }, - "dashboardLinkVisibility": { - "type": "string", - "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", - "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] - }, - "notificationSource": { - "maxLength": 10000, - "type": "string", - "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" - }, - "allowedRecipients": { - "type": "string", - "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", - "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] - }, - "inPlatformNotification": { - "type": "string", - "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", - "enum": ["DISABLED", "ENABLED"] + "page": { + "$ref": "#/components/schemas/PageMetadata" } } } }, - "description": "JSON:API representation of notificationChannel entity." - }, - "JsonApiOrganizationSettingPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiOrganizationSettingPatch" - } - } + "description": "A JSON:API document with a list of resources" }, - "JsonApiOrganizationSettingPatch": { + "JsonApiOrganizationSettingOut": { "required": ["id", "type"], "type": "object", "properties": { @@ -19937,106 +20259,44 @@ } } }, - "description": "JSON:API representation of patching organizationSetting entity." + "description": "JSON:API representation of organizationSetting entity." }, - "JsonApiOrganizationSettingOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiOrganizationSettingOut" + "JsonApiThemeOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiThemeOut" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiOrganizationSettingOut": { - "required": ["id", "type"], + "JsonApiThemeOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "organizationSetting", - "enum": ["organizationSetting"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiThemeOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} - }, - "type": { - "type": "string", - "enum": [ - "TIMEZONE", - "ACTIVE_THEME", - "ACTIVE_COLOR_PALETTE", - "ACTIVE_LLM_ENDPOINT", - "ACTIVE_CALENDARS", - "WHITE_LABELING", - "LOCALE", - "METADATA_LOCALE", - "FORMAT_LOCALE", - "MAPBOX_TOKEN", - "AG_GRID_TOKEN", - "WEEK_START", - "FISCAL_YEAR", - "SHOW_HIDDEN_CATALOG_ITEMS", - "OPERATOR_OVERRIDES", - "TIMEZONE_VALIDATION_ENABLED", - "OPENAI_CONFIG", - "ENABLE_FILE_ANALYTICS", - "ALERT", - "SEPARATORS", - "DATE_FILTER_CONFIG", - "JIT_PROVISIONING", - "JWT_JIT_PROVISIONING", - "DASHBOARD_FILTERS_APPLY_MODE", - "ENABLE_SLIDES_EXPORT", - "ENABLE_SNAPSHOT_EXPORT", - "AI_RATE_LIMIT", - "ATTACHMENT_SIZE_LIMIT", - "ATTACHMENT_LINK_TTL", - "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", - "ENABLE_DRILL_TO_URL_BY_DEFAULT", - "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", - "ENABLE_AUTOMATION_EVALUATION_MODE", - "ENABLE_ACCESSIBILITY_MODE", - "REGISTERED_PLUGGABLE_APPLICATIONS", - "DATA_LOCALE", - "LDM_DEFAULT_LOCALE", - "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", - "MAX_ZOOM_LEVEL", - "SORT_CASE_SENSITIVE", - "METRIC_FORMAT_OVERRIDE", - "ENABLE_AI_ON_DATA" - ] + "page": { + "$ref": "#/components/schemas/PageMetadata" } } } }, - "description": "JSON:API representation of organizationSetting entity." - }, - "JsonApiThemePatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiThemePatch" - } - } + "description": "A JSON:API document with a list of resources" }, - "JsonApiThemePatch": { + "JsonApiThemeOut": { "required": ["attributes", "id", "type"], "type": "object", "properties": { @@ -20053,6 +20313,7 @@ "example": "id1" }, "attributes": { + "required": ["content", "name"], "type": "object", "properties": { "name": { @@ -20067,72 +20328,27 @@ } } }, - "description": "JSON:API representation of patching theme entity." + "description": "JSON:API representation of theme entity." }, - "JsonApiThemeOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiThemeOut" + "JsonApiUserGroupOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiUserGroupOut" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiThemeOut": { - "required": ["attributes", "id", "type"], + "JsonApiUserGroupOut": { + "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "theme", - "enum": ["theme"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "required": ["content", "name"], - "type": "object", - "properties": { - "name": { - "maxLength": 255, - "type": "string" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} - } - } - } - }, - "description": "JSON:API representation of theme entity." - }, - "JsonApiUserGroupPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupPatch" - } - } - }, - "JsonApiUserGroupPatch": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "userGroup", - "enum": ["userGroup"] + "example": "userGroup", + "enum": ["userGroup"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -20164,7 +20380,7 @@ } } }, - "description": "JSON:API representation of patching userGroup entity." + "description": "JSON:API representation of userGroup entity." }, "JsonApiUserGroupLinkage": { "required": ["id", "type"], @@ -20187,96 +20403,83 @@ "$ref": "#/components/schemas/JsonApiUserGroupLinkage" } }, - "JsonApiUserGroupOut": { - "required": ["id", "type"], + "JsonApiUserGroupOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "userGroup", - "enum": ["userGroup"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string" + "page": { + "$ref": "#/components/schemas/PageMetadata" } } }, - "relationships": { - "type": "object", - "properties": { - "parents": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" - } - } - } + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" } } }, - "description": "JSON:API representation of userGroup entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiUserGroupOutWithLinks": { + "JsonApiUserIdentifierOutWithLinks": { "allOf": [ { - "$ref": "#/components/schemas/JsonApiUserGroupOut" + "$ref": "#/components/schemas/JsonApiUserIdentifierOut" }, { "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, - "JsonApiUserGroupOutDocument": { + "JsonApiUserIdentifierOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserGroupOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { "uniqueItems": true, "type": "array", - "description": "Included resources", "items": { - "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } } } - } - }, - "JsonApiUserPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserPatch" - } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiUserPatch": { + "JsonApiUserIdentifierOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "user", - "enum": ["user"] + "example": "userIdentifier", + "enum": ["userIdentifier"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -20287,10 +20490,6 @@ "attributes": { "type": "object", "properties": { - "authenticationId": { - "maxLength": 255, - "type": "string" - }, "firstname": { "maxLength": 255, "type": "string" @@ -20304,33 +20503,41 @@ "type": "string" } } - }, - "relationships": { - "type": "object", - "properties": { - "userGroups": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" - } - } - } - } } }, - "description": "JSON:API representation of patching user entity." + "description": "JSON:API representation of userIdentifier entity." }, - "JsonApiUserOutDocument": { + "JsonApiUserOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiUserOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiUserOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserOut" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiUserOutWithLinks" + } }, "links": { - "$ref": "#/components/schemas/ObjectLinks" + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } }, "included": { "uniqueItems": true, @@ -20340,7 +20547,8 @@ "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" } } - } + }, + "description": "A JSON:API document with a list of resources" }, "JsonApiUserOut": { "required": ["id", "type"], @@ -20396,131 +20604,13 @@ }, "description": "JSON:API representation of user entity." }, - "JsonApiWorkspacePatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspacePatch" - } - } - }, - "JsonApiWorkspacePatch": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "workspace", - "enum": ["workspace"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "name": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "earlyAccess": { - "maxLength": 255, - "type": "string", - "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", - "nullable": true, - "deprecated": true - }, - "earlyAccessValues": { - "type": "array", - "description": "The early access feature identifiers. They are used to enable experimental features.", - "nullable": true, - "items": { - "maxLength": 255, - "type": "string" - } - }, - "description": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "prefix": { - "maxLength": 255, - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Custom prefix of entity identifiers in workspace", - "nullable": true - }, - "cacheExtraLimit": { - "type": "integer", - "format": "int64" - }, - "dataSource": { - "required": ["id"], - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the used data source.", - "example": "snowflake.instance.1" - }, - "schemaPath": { - "type": "array", - "description": "The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", - "items": { - "type": "string", - "description": "The part of the schema path.", - "example": "subPath" - } - } - }, - "description": "The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace." - } - } - }, - "relationships": { - "type": "object", - "properties": { - "parent": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceToOneLinkage" - } - } - } - } - } - }, - "description": "JSON:API representation of patching workspace entity." - }, - "JsonApiWorkspaceLinkage": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "type": "string" + "JsonApiWorkspaceOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiWorkspaceOut" }, - "type": { - "type": "string", - "enum": ["workspace"] - } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiWorkspaceToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ { - "$ref": "#/components/schemas/JsonApiWorkspaceLinkage" + "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, @@ -20685,47 +20775,30 @@ }, "description": "JSON:API representation of workspace entity." }, - "JsonApiWorkspaceOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiWorkspaceOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiWorkspaceOutDocument": { - "required": ["data"], + "JsonApiWorkspaceLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "id": { + "type": "string" }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" - } + "type": { + "type": "string", + "enum": ["workspace"] } - } + }, + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiApiTokenOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiApiTokenOut" - }, + "JsonApiWorkspaceToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/JsonApiWorkspaceLinkage" } ] }, - "JsonApiApiTokenOutList": { + "JsonApiWorkspaceOutList": { "required": ["data"], "type": "object", "properties": { @@ -20733,7 +20806,7 @@ "uniqueItems": true, "type": "array", "items": { - "$ref": "#/components/schemas/JsonApiApiTokenOutWithLinks" + "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" } }, "links": { @@ -20746,19 +20819,36 @@ "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" + } } }, "description": "A JSON:API document with a list of resources" }, - "JsonApiApiTokenOut": { + "JsonApiUserSettingInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserSettingIn" + } + } + }, + "JsonApiUserSettingIn": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "apiToken", - "enum": ["apiToken"] + "example": "userSetting", + "enum": ["userSetting"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -20769,49 +20859,74 @@ "attributes": { "type": "object", "properties": { - "bearerToken": { + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} + }, + "type": { "type": "string", - "description": "The value of the Bearer token. It is only returned when the API token is created." + "enum": [ + "TIMEZONE", + "ACTIVE_THEME", + "ACTIVE_COLOR_PALETTE", + "ACTIVE_LLM_ENDPOINT", + "ACTIVE_CALENDARS", + "WHITE_LABELING", + "LOCALE", + "METADATA_LOCALE", + "FORMAT_LOCALE", + "MAPBOX_TOKEN", + "AG_GRID_TOKEN", + "WEEK_START", + "FISCAL_YEAR", + "SHOW_HIDDEN_CATALOG_ITEMS", + "OPERATOR_OVERRIDES", + "TIMEZONE_VALIDATION_ENABLED", + "OPENAI_CONFIG", + "ENABLE_FILE_ANALYTICS", + "ALERT", + "SEPARATORS", + "DATE_FILTER_CONFIG", + "JIT_PROVISIONING", + "JWT_JIT_PROVISIONING", + "DASHBOARD_FILTERS_APPLY_MODE", + "ENABLE_SLIDES_EXPORT", + "ENABLE_SNAPSHOT_EXPORT", + "AI_RATE_LIMIT", + "ATTACHMENT_SIZE_LIMIT", + "ATTACHMENT_LINK_TTL", + "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", + "ENABLE_DRILL_TO_URL_BY_DEFAULT", + "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", + "ENABLE_AUTOMATION_EVALUATION_MODE", + "ENABLE_ACCESSIBILITY_MODE", + "REGISTERED_PLUGGABLE_APPLICATIONS", + "DATA_LOCALE", + "LDM_DEFAULT_LOCALE", + "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", + "MAX_ZOOM_LEVEL", + "SORT_CASE_SENSITIVE", + "METRIC_FORMAT_OVERRIDE", + "ENABLE_AI_ON_DATA" + ] } } } }, - "description": "JSON:API representation of apiToken entity." - }, - "JsonApiUserSettingOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiUserSettingOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] + "description": "JSON:API representation of userSetting entity." }, - "JsonApiUserSettingOutList": { + "JsonApiUserSettingOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiUserSettingOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiUserSettingOut" }, "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "A JSON:API document with a list of resources" + } }, "JsonApiUserSettingOut": { "required": ["id", "type"], @@ -20889,48 +21004,24 @@ }, "description": "JSON:API representation of userSetting entity." }, - "JsonApiApiTokenOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiApiTokenOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - } - } - }, - "JsonApiUserSettingOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserSettingOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - } - } - }, - "JsonApiAnalyticalDashboardPatchDocument": { + "JsonApiColorPaletteInDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardPatch" + "$ref": "#/components/schemas/JsonApiColorPaletteIn" } } }, - "JsonApiAnalyticalDashboardPatch": { + "JsonApiColorPaletteIn": { "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "analyticalDashboard", - "enum": ["analyticalDashboard"] + "example": "colorPalette", + "enum": ["colorPalette"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -20939,50 +21030,53 @@ "example": "id1" }, "attributes": { + "required": ["content", "name"], "type": "object", "properties": { - "title": { + "name": { "maxLength": 255, "type": "string" }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, "content": { "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "identifier": { - "id": "label.leaf", - "type": "label" - }, - "someBoolProp": false - } + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} } } } }, - "description": "JSON:API representation of patching analyticalDashboard entity." + "description": "JSON:API representation of colorPalette entity." }, - "JsonApiUserIdentifierOut": { - "required": ["id", "type"], + "JsonApiColorPaletteOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiColorPaletteOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + } + } + }, + "JsonApiCspDirectiveInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCspDirectiveIn" + } + } + }, + "JsonApiCspDirectiveIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "userIdentifier", - "enum": ["userIdentifier"] + "example": "cspDirective", + "enum": ["cspDirective"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -20991,334 +21085,358 @@ "example": "id1" }, "attributes": { + "required": ["sources"], "type": "object", "properties": { - "firstname": { - "maxLength": 255, - "type": "string" - }, - "lastname": { - "maxLength": 255, - "type": "string" - }, - "email": { - "maxLength": 255, - "type": "string" + "sources": { + "type": "array", + "items": { + "type": "string" + } } } } }, - "description": "JSON:API representation of userIdentifier entity." + "description": "JSON:API representation of cspDirective entity." }, - "JsonApiUserIdentifierOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiUserIdentifierOut" + "JsonApiCspDirectiveOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCspDirectiveOut" }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - ] + } }, - "JsonApiVisualizationObjectOut": { - "required": ["attributes", "id", "type"], + "JsonApiCustomGeoCollectionInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionIn" + } + } + }, + "JsonApiCustomGeoCollectionIn": { + "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "visualizationObject", - "enum": ["visualizationObject"] + "example": "customGeoCollection", + "enum": ["customGeoCollection"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", "description": "API identifier of an object", "example": "id1" + } + }, + "description": "JSON:API representation of customGeoCollection entity." + }, + "JsonApiCustomGeoCollectionOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionOut" }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } + "links": { + "$ref": "#/components/schemas/ObjectLinks" + } + } + }, + "JsonApiDataSourceInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDataSourceIn" + } + } + }, + "JsonApiDataSourceIn": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "dataSource", + "enum": ["dataSource"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, "attributes": { - "required": ["content"], + "required": ["name", "schema", "type"], "type": "object", "properties": { - "title": { + "name": { "maxLength": 255, - "type": "string" + "type": "string", + "description": "User-facing name of the data source." }, - "description": { - "maxLength": 10000, - "type": "string" + "type": { + "type": "string", + "description": "Type of the database providing the data for the data source.", + "enum": [ + "POSTGRESQL", + "REDSHIFT", + "VERTICA", + "SNOWFLAKE", + "ADS", + "BIGQUERY", + "MSSQL", + "PRESTO", + "DREMIO", + "DRILL", + "GREENPLUM", + "AZURESQL", + "SYNAPSESQL", + "DATABRICKS", + "GDSTORAGE", + "CLICKHOUSE", + "MYSQL", + "MARIADB", + "ORACLE", + "PINOT", + "SINGLESTORE", + "MOTHERDUCK", + "FLEXCONNECT", + "STARROCKS", + "ATHENA", + "MONGODB" + ] }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "url": { + "maxLength": 255, + "type": "string", + "description": "The URL of the database providing the data for the data source.", + "nullable": true }, - "areRelationsValid": { - "type": "boolean" + "schema": { + "maxLength": 255, + "type": "string", + "description": "The schema to use as the root of the data for the data source." }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "identifier": { - "id": "label.leaf", - "type": "label" - }, - "someBoolProp": false - } + "username": { + "maxLength": 255, + "type": "string", + "description": "The username to use to connect to the database providing the data for the data source.", + "nullable": true }, - "createdAt": { + "password": { + "maxLength": 255, "type": "string", - "format": "date-time" + "description": "The password to use to connect to the database providing the data for the data source.", + "nullable": true }, - "modifiedAt": { + "privateKey": { + "maxLength": 15000, "type": "string", - "format": "date-time" + "description": "The private key to use to connect to the database providing the data for the data source.", + "nullable": true }, - "isHidden": { - "type": "boolean" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "createdBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } + "privateKeyPassphrase": { + "maxLength": 255, + "type": "string", + "description": "The passphrase used to encrypt the private key.", + "nullable": true }, - "modifiedBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } + "token": { + "maxLength": 10000, + "type": "string", + "description": "The token to use to connect to the database providing the data for the data source (for example a BigQuery Service Account).", + "nullable": true }, - "facts": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFactToManyLinkage" - } - } + "clientId": { + "maxLength": 255, + "type": "string", + "description": "The client id to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", + "nullable": true }, - "attributes": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" - } - } + "clientSecret": { + "maxLength": 255, + "type": "string", + "description": "The client secret to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", + "nullable": true }, - "labels": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" + "parameters": { + "type": "array", + "description": "Additional parameters to be used when connecting to the database providing the data for the data source.", + "nullable": true, + "items": { + "required": ["name", "value"], + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } } } }, - "metrics": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" - } - } + "cacheStrategy": { + "type": "string", + "description": "Determines how the results coming from a particular datasource should be cached.", + "nullable": true, + "enum": ["ALWAYS", "NEVER"] }, - "datasets": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" - } - } + "alternativeDataSourceId": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", + "nullable": true, + "example": "pg_local_docker-demo2" } } } }, - "description": "JSON:API representation of visualizationObject entity." + "description": "JSON:API representation of dataSource entity." }, - "JsonApiAttributeLinkage": { - "required": ["id", "type"], + "JsonApiDataSourceOutDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" + "data": { + "$ref": "#/components/schemas/JsonApiDataSourceOut" }, - "type": { - "type": "string", - "enum": ["attribute"] + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiAttributeToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeLinkage" } }, - "JsonApiDatasetLinkage": { - "required": ["id", "type"], + "JsonApiExportTemplatePostOptionalIdDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["dataset"] + "data": { + "$ref": "#/components/schemas/JsonApiExportTemplatePostOptionalId" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiDatasetToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiDatasetLinkage" } }, - "JsonApiFactLinkage": { - "required": ["id", "type"], + "JsonApiExportTemplatePostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { - "id": { - "type": "string" - }, "type": { "type": "string", - "enum": ["fact"] + "description": "Object type", + "example": "exportTemplate", + "enum": ["exportTemplate"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "required": ["name"], + "type": "object", + "properties": { + "name": { + "maxLength": 255, + "type": "string", + "description": "User-facing name of the Slides template." + }, + "dashboardSlidesTemplate": { + "required": ["appliedOn"], + "type": "object", + "properties": { + "appliedOn": { + "minItems": 1, + "type": "array", + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], + "items": { + "type": "string", + "enum": ["PDF", "PPTX"] + } + }, + "coverSlide": { + "$ref": "#/components/schemas/CoverSlideTemplate" + }, + "introSlide": { + "$ref": "#/components/schemas/IntroSlideTemplate" + }, + "sectionSlide": { + "$ref": "#/components/schemas/SectionSlideTemplate" + }, + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" + } + }, + "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true + }, + "widgetSlidesTemplate": { + "required": ["appliedOn"], + "type": "object", + "properties": { + "appliedOn": { + "minItems": 1, + "type": "array", + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], + "items": { + "type": "string", + "enum": ["PDF", "PPTX"] + } + }, + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" + } + }, + "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true + } + } } }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiFactToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiFactLinkage" - } + "description": "JSON:API representation of exportTemplate entity." }, - "JsonApiLabelLinkage": { - "required": ["id", "type"], + "JsonApiExportTemplateOutDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" + "data": { + "$ref": "#/components/schemas/JsonApiExportTemplateOut" }, - "type": { - "type": "string", - "enum": ["label"] + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." + } }, - "JsonApiLabelToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiLabelLinkage" + "JsonApiIdentityProviderInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiIdentityProviderIn" + } } }, - "JsonApiMetricLinkage": { + "JsonApiIdentityProviderIn": { "required": ["id", "type"], "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["metric"] - } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiMetricToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiMetricLinkage" - } - }, - "JsonApiUserIdentifierLinkage": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["userIdentifier"] - } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiUserIdentifierToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiUserIdentifierLinkage" - } - ] - }, - "JsonApiVisualizationObjectOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiVisualizationObjectOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiAnalyticalDashboardOut": { - "required": ["attributes", "id", "type"], - "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "analyticalDashboard", - "enum": ["analyticalDashboard"] + "example": "identityProvider", + "enum": ["identityProvider"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -21326,278 +21444,173 @@ "description": "API identifier of an object", "example": "id1" }, - "meta": { - "type": "object", - "properties": { - "permissions": { - "type": "array", - "description": "List of valid permissions for a logged-in user.", - "items": { - "type": "string", - "enum": ["EDIT", "SHARE", "VIEW"] - } - }, - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - }, - "accessInfo": { - "required": ["private"], - "type": "object", - "properties": { - "private": { - "type": "boolean", - "description": "is the entity private to the currently logged-in user" - } - } - } - } - }, "attributes": { - "required": ["content"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { + "identifiers": { "type": "array", + "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", + "example": ["gooddata.com"], "items": { "type": "string" } }, - "areRelationsValid": { - "type": "boolean" - }, - "content": { + "customClaimMapping": { + "maxLength": 10000, "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "identifier": { - "id": "label.leaf", - "type": "label" - }, - "someBoolProp": false - } + "additionalProperties": { + "type": "string" + }, + "description": "Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute." }, - "createdAt": { + "samlMetadata": { + "maxLength": 15000, "type": "string", - "format": "date-time" + "description": "Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP." }, - "modifiedAt": { + "oauthClientId": { + "maxLength": 255, "type": "string", - "format": "date-time" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "createdBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } - }, - "modifiedBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } + "description": "The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP." }, - "visualizationObjects": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectToManyLinkage" - } - } + "oauthClientSecret": { + "maxLength": 255, + "type": "string", + "description": "The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP." }, - "analyticalDashboards": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToManyLinkage" - } - } + "oauthIssuerLocation": { + "maxLength": 255, + "type": "string", + "description": "The location of your OIDC provider. This field is mandatory for OIDC IdP." }, - "labels": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" - } - } + "oauthIssuerId": { + "maxLength": 255, + "type": "string", + "description": "Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", + "example": "myOidcProvider" }, - "metrics": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" - } - } + "oauthSubjectIdClaim": { + "maxLength": 255, + "type": "string", + "description": "Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", + "example": "oid" }, - "datasets": { - "required": ["data"], + "oauthCustomAuthAttributes": { + "maxLength": 10000, "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" - } - } + "additionalProperties": { + "type": "string" + }, + "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." }, - "filterContexts": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFilterContextToManyLinkage" - } + "oauthCustomScopes": { + "type": "array", + "description": "List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", + "nullable": true, + "items": { + "maxLength": 255, + "type": "string" } }, - "dashboardPlugins": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDashboardPluginToManyLinkage" - } - } + "idpType": { + "type": "string", + "description": "Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", + "enum": ["MANAGED_IDP", "FIM_IDP", "DEX_IDP", "CUSTOM_IDP"] } } } }, - "description": "JSON:API representation of analyticalDashboard entity." + "description": "JSON:API representation of identityProvider entity." }, - "JsonApiAnalyticalDashboardLinkage": { - "required": ["id", "type"], + "JsonApiIdentityProviderOutDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" + "data": { + "$ref": "#/components/schemas/JsonApiIdentityProviderOut" }, - "type": { - "type": "string", - "enum": ["analyticalDashboard"] + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiAnalyticalDashboardToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardLinkage" } }, - "JsonApiDashboardPluginLinkage": { - "required": ["id", "type"], + "JsonApiJwkInDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["dashboardPlugin"] + "data": { + "$ref": "#/components/schemas/JsonApiJwkIn" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiDashboardPluginToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiDashboardPluginLinkage" } }, - "JsonApiFilterContextLinkage": { + "JsonApiJwkIn": { "required": ["id", "type"], "type": "object", "properties": { - "id": { - "type": "string" - }, "type": { "type": "string", - "enum": ["filterContext"] + "description": "Object type", + "example": "jwk", + "enum": ["jwk"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "content": { + "type": "object", + "description": "Specification of the cryptographic key", + "example": { + "kyt": "RSA", + "alg": "RS256", + "use": "sig" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/RsaSpecification" + } + ] + } + } } }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiFilterContextToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiFilterContextLinkage" - } + "description": "JSON:API representation of jwk entity." }, - "JsonApiVisualizationObjectLinkage": { - "required": ["id", "type"], + "JsonApiJwkOutDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" + "data": { + "$ref": "#/components/schemas/JsonApiJwkOut" }, - "type": { - "type": "string", - "enum": ["visualizationObject"] + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiVisualizationObjectToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectLinkage" } }, - "JsonApiAnalyticalDashboardOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "JsonApiLlmEndpointInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLlmEndpointIn" } - ] + } }, - "JsonApiLabelOut": { - "required": ["id", "type"], + "JsonApiLlmEndpointIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "label", - "enum": ["label"] + "example": "llmEndpoint", + "enum": ["llmEndpoint"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -21605,166 +21618,77 @@ "description": "API identifier of an object", "example": "id1" }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } - }, "attributes": { + "required": ["title", "token"], "type": "object", "properties": { "title": { "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "description": "User-facing title of the LLM Provider." }, - "primary": { - "type": "boolean" + "provider": { + "type": "string", + "description": "LLM Provider.", + "enum": ["OPENAI", "AZURE_OPENAI"] }, - "sourceColumn": { + "baseUrl": { "maxLength": 255, - "type": "string" - }, - "sourceColumnDataType": { "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] + "description": "Custom LLM endpoint.", + "nullable": true }, - "valueType": { + "token": { + "maxLength": 10000, "type": "string", - "enum": [ - "TEXT", - "HYPERLINK", - "GEO", - "GEO_LONGITUDE", - "GEO_LATITUDE", - "GEO_AREA", - "IMAGE" - ] - }, - "isHidden": { - "type": "boolean" - }, - "geoAreaConfig": { - "required": ["collection"], - "type": "object", - "properties": { - "collection": { - "$ref": "#/components/schemas/GeoCollection" - } - }, - "description": "Configuration specific to geo area labels." - }, - "areRelationsValid": { - "type": "boolean" + "description": "The token to use to connect to the LLM provider." }, - "locale": { - "type": "string" + "llmOrganization": { + "maxLength": 255, + "type": "string", + "description": "Organization in LLM provider.", + "nullable": true }, - "translations": { - "type": "array", - "items": { - "required": ["locale", "sourceColumn"], - "type": "object", - "properties": { - "sourceColumn": { - "type": "string" - }, - "locale": { - "type": "string" - } - } - } - } - } - }, - "relationships": { - "type": "object", - "properties": { - "attribute": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeToOneLinkage" - } - } + "llmModel": { + "maxLength": 255, + "type": "string", + "description": "LLM Model. We provide a default model for each provider, but you can override it here." } } } }, - "description": "JSON:API representation of label entity." + "description": "JSON:API representation of llmEndpoint entity." }, - "GeoCollection": { - "required": ["id"], + "JsonApiLlmEndpointOutDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "maxLength": 255, - "type": "string", - "description": "Geo collection identifier." + "data": { + "$ref": "#/components/schemas/JsonApiLlmEndpointOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" } } }, - "JsonApiAttributeToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiAttributeLinkage" - } - ] - }, - "JsonApiLabelOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiLabelOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "JsonApiNotificationChannelPostOptionalIdDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiNotificationChannelPostOptionalId" } - ] + } }, - "JsonApiMetricOut": { - "required": ["attributes", "id", "type"], + "JsonApiNotificationChannelPostOptionalId": { + "required": ["type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "metric", - "enum": ["metric"] + "example": "notificationChannel", + "enum": ["notificationChannel"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -21772,171 +21696,248 @@ "description": "API identifier of an object", "example": "id1" }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } - }, "attributes": { - "required": ["content"], "type": "object", "properties": { - "title": { + "name": { "maxLength": 255, - "type": "string" + "type": "string", + "nullable": true }, "description": { "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" + "type": "string", + "nullable": true }, - "content": { - "required": ["maql"], - "type": "object", - "properties": { - "format": { - "maxLength": 2048, - "type": "string", - "description": "Excel-like format string with optional dynamic tokens. Filter value tokens: [$FILTER:] for raw filter value passthrough. Currency tokens: [$CURRENCY:] for currency symbol, with optional forms :symbol, :narrow, :code, :name. Locale abbreviations: [$K], [$M], [$B], [$T] for locale-specific scale abbreviations. Tokens are resolved at execution time based on AFM filters and user's format locale. Single-value filters only; multi-value filters use fallback values.", - "nullable": true + "destination": { + "description": "The destination where the notifications are to be sent.", + "oneOf": [ + { + "$ref": "#/components/schemas/DefaultSmtp" }, - "maql": { - "maxLength": 10000, - "type": "string" + { + "$ref": "#/components/schemas/InPlatform" }, - "metricType": { - "type": "string", - "description": "Categorizes metric semantics (e.g., currency).", - "enum": ["UNSPECIFIED", "CURRENCY"] + { + "$ref": "#/components/schemas/Smtp" + }, + { + "$ref": "#/components/schemas/Webhook" } - } + ] }, - "createdAt": { + "customDashboardUrl": { + "maxLength": 255, "type": "string", - "format": "date-time" + "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" }, - "modifiedAt": { + "dashboardLinkVisibility": { "type": "string", - "format": "date-time" + "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", + "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] }, - "isHidden": { - "type": "boolean" + "notificationSource": { + "maxLength": 10000, + "type": "string", + "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" + }, + "allowedRecipients": { + "type": "string", + "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", + "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] + }, + "inPlatformNotification": { + "type": "string", + "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", + "enum": ["DISABLED", "ENABLED"] } } + } + }, + "description": "JSON:API representation of notificationChannel entity." + }, + "JsonApiNotificationChannelOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiNotificationChannelOut" }, - "relationships": { + "links": { + "$ref": "#/components/schemas/ObjectLinks" + } + } + }, + "JsonApiOrganizationSettingInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiOrganizationSettingIn" + } + } + }, + "JsonApiOrganizationSettingIn": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "organizationSetting", + "enum": ["organizationSetting"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { "type": "object", "properties": { - "createdBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } - }, - "modifiedBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } - }, - "facts": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFactToManyLinkage" - } - } - }, - "attributes": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" - } - } - }, - "labels": { - "required": ["data"], + "content": { "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" - } - } + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} }, - "metrics": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" - } - } + "type": { + "type": "string", + "enum": [ + "TIMEZONE", + "ACTIVE_THEME", + "ACTIVE_COLOR_PALETTE", + "ACTIVE_LLM_ENDPOINT", + "ACTIVE_CALENDARS", + "WHITE_LABELING", + "LOCALE", + "METADATA_LOCALE", + "FORMAT_LOCALE", + "MAPBOX_TOKEN", + "AG_GRID_TOKEN", + "WEEK_START", + "FISCAL_YEAR", + "SHOW_HIDDEN_CATALOG_ITEMS", + "OPERATOR_OVERRIDES", + "TIMEZONE_VALIDATION_ENABLED", + "OPENAI_CONFIG", + "ENABLE_FILE_ANALYTICS", + "ALERT", + "SEPARATORS", + "DATE_FILTER_CONFIG", + "JIT_PROVISIONING", + "JWT_JIT_PROVISIONING", + "DASHBOARD_FILTERS_APPLY_MODE", + "ENABLE_SLIDES_EXPORT", + "ENABLE_SNAPSHOT_EXPORT", + "AI_RATE_LIMIT", + "ATTACHMENT_SIZE_LIMIT", + "ATTACHMENT_LINK_TTL", + "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", + "ENABLE_DRILL_TO_URL_BY_DEFAULT", + "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", + "ENABLE_AUTOMATION_EVALUATION_MODE", + "ENABLE_ACCESSIBILITY_MODE", + "REGISTERED_PLUGGABLE_APPLICATIONS", + "DATA_LOCALE", + "LDM_DEFAULT_LOCALE", + "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", + "MAX_ZOOM_LEVEL", + "SORT_CASE_SENSITIVE", + "METRIC_FORMAT_OVERRIDE", + "ENABLE_AI_ON_DATA" + ] + } + } + } + }, + "description": "JSON:API representation of organizationSetting entity." + }, + "JsonApiOrganizationSettingOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiOrganizationSettingOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + } + } + }, + "JsonApiThemeInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiThemeIn" + } + } + }, + "JsonApiThemeIn": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "theme", + "enum": ["theme"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "required": ["content", "name"], + "type": "object", + "properties": { + "name": { + "maxLength": 255, + "type": "string" }, - "datasets": { - "required": ["data"], + "content": { "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" - } - } + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} } } } }, - "description": "JSON:API representation of metric entity." + "description": "JSON:API representation of theme entity." }, - "JsonApiMetricOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiMetricOut" + "JsonApiThemeOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiThemeOut" }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - ] + } }, - "JsonApiDatasetOut": { - "required": ["attributes", "id", "type"], + "JsonApiUserGroupInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserGroupIn" + } + } + }, + "JsonApiUserGroupIn": { + "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "dataset", - "enum": ["dataset"] + "example": "userGroup", + "enum": ["userGroup"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -21944,367 +21945,153 @@ "description": "API identifier of an object", "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "origin": { - "required": ["originId", "originType"], + "name": { + "maxLength": 255, + "type": "string" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "parents": { + "required": ["data"], "type": "object", "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" + "data": { + "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" } } } } + } + }, + "description": "JSON:API representation of userGroup entity." + }, + "JsonApiUserGroupOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserGroupOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" + } + } + } + }, + "JsonApiUserInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIn" + } + } + }, + "JsonApiUserIn": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "user", + "enum": ["user"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, "attributes": { - "required": ["type"], "type": "object", "properties": { - "title": { + "authenticationId": { "maxLength": 255, "type": "string" }, - "description": { - "maxLength": 10000, + "firstname": { + "maxLength": 255, "type": "string" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string", - "enum": ["NORMAL", "DATE"] - }, - "grain": { - "type": "array", - "items": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["attribute", "date"] - } - } - } - }, - "referenceProperties": { - "type": "array", - "items": { - "required": ["identifier", "multivalue"], - "type": "object", - "properties": { - "identifier": { - "$ref": "#/components/schemas/DatasetReferenceIdentifier" - }, - "multivalue": { - "type": "boolean" - }, - "sources": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReferenceSourceColumn" - } - }, - "sourceColumns": { - "type": "array", - "items": { - "type": "string" - } - }, - "sourceColumnDataTypes": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] - } - } - } - } - }, - "dataSourceTableId": { + "lastname": { "maxLength": 255, "type": "string" }, - "dataSourceTablePath": { - "type": "array", - "description": "Path to database table.", - "example": ["schema", "table"], - "items": { - "maxLength": 255, - "type": "string" - } - }, - "sql": { - "required": ["dataSourceId", "statement"], - "type": "object", - "properties": { - "statement": { - "type": "string" - }, - "dataSourceId": { - "type": "string" - } - } - }, - "precedence": { - "type": "integer", - "format": "int32" - }, - "areRelationsValid": { - "type": "boolean" - }, - "workspaceDataFilterColumns": { - "type": "array", - "items": { - "required": ["dataType", "name"], - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "dataType": { - "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] - } - } - } - }, - "workspaceDataFilterReferences": { - "type": "array", - "items": { - "required": ["filterColumn", "filterColumnDataType", "filterId"], - "type": "object", - "properties": { - "filterId": { - "$ref": "#/components/schemas/DatasetWorkspaceDataFilterIdentifier" - }, - "filterColumn": { - "type": "string" - }, - "filterColumnDataType": { - "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] - } - }, - "description": "Workspace data filter reference." - } + "email": { + "maxLength": 255, + "type": "string" } } }, "relationships": { "type": "object", "properties": { - "attributes": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" - } - } - }, - "facts": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFactToManyLinkage" - } - } - }, - "aggregatedFacts": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAggregatedFactToManyLinkage" - } - } - }, - "references": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" - } - } - }, - "workspaceDataFilters": { + "userGroups": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterToManyLinkage" + "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" } } } } } }, - "description": "JSON:API representation of dataset entity." + "description": "JSON:API representation of user entity." }, - "DatasetGrain": { - "required": ["id", "type"], + "JsonApiUserOutDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" + "data": { + "$ref": "#/components/schemas/JsonApiUserOut" }, - "type": { - "type": "string", - "enum": ["attribute", "date"] - } - } - }, - "DatasetReferenceIdentifier": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "type": "string" + "links": { + "$ref": "#/components/schemas/ObjectLinks" }, - "type": { - "type": "string", - "enum": ["dataset"] + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" + } } } }, - "DatasetWorkspaceDataFilterIdentifier": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Workspace Data Filters ID.", - "example": "country_id" - }, - "type": { - "type": "string", - "description": "Filter type.", - "example": "workspaceDataFilter", - "enum": ["workspaceDataFilter"] - } - }, - "description": "Identifier of a workspace data filter." - }, - "JsonApiAggregatedFactLinkage": { - "required": ["id", "type"], + "JsonApiWorkspaceInDocument": { + "required": ["data"], "type": "object", "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["aggregatedFact"] + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceIn" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiAggregatedFactToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiAggregatedFactLinkage" } }, - "JsonApiWorkspaceDataFilterLinkage": { + "JsonApiWorkspaceIn": { "required": ["id", "type"], "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["workspaceDataFilter"] - } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiWorkspaceDataFilterToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterLinkage" - } - }, - "ReferenceSourceColumn": { - "required": ["column", "target"], - "type": "object", - "properties": { - "column": { - "type": "string" - }, - "dataType": { - "type": "string", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] - }, - "target": { - "$ref": "#/components/schemas/DatasetGrain" - } - } - }, - "JsonApiDatasetOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiDatasetOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiFilterContextOut": { - "required": ["attributes", "id", "type"], - "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "filterContext", - "enum": ["filterContext"] + "example": "workspace", + "enum": ["workspace"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -22312,248 +22099,92 @@ "description": "API identifier of an object", "example": "id1" }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } - }, "attributes": { - "required": ["content"], "type": "object", "properties": { - "title": { + "name": { "maxLength": 255, - "type": "string" + "type": "string", + "nullable": true }, - "description": { - "maxLength": 10000, - "type": "string" + "earlyAccess": { + "maxLength": 255, + "type": "string", + "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", + "nullable": true, + "deprecated": true }, - "tags": { + "earlyAccessValues": { "type": "array", + "description": "The early access feature identifiers. They are used to enable experimental features.", + "nullable": true, "items": { + "maxLength": 255, "type": "string" } }, - "areRelationsValid": { - "type": "boolean" + "description": { + "maxLength": 255, + "type": "string", + "nullable": true }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "identifier": { - "id": "label.leaf", - "type": "label" - }, - "someBoolProp": false - } - } - } - }, - "relationships": { - "type": "object", - "properties": { - "attributes": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" - } - } + "prefix": { + "maxLength": 255, + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Custom prefix of entity identifiers in workspace", + "nullable": true }, - "datasets": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" - } - } + "cacheExtraLimit": { + "type": "integer", + "format": "int64" }, - "labels": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" - } - } - } - } - } - }, - "description": "JSON:API representation of filterContext entity." - }, - "JsonApiFilterContextOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiFilterContextOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiDashboardPluginOut": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "dashboardPlugin", - "enum": ["dashboardPlugin"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], + "dataSource": { + "required": ["id"], "type": "object", "properties": { - "originType": { + "id": { "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] + "description": "The ID of the used data source.", + "example": "snowflake.instance.1" }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" + "schemaPath": { + "type": "array", + "description": "The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", + "items": { + "type": "string", + "description": "The part of the schema path.", + "example": "subPath" + } } - } - } - } - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "modifiedAt": { - "type": "string", - "format": "date-time" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "url": "" - } + }, + "description": "The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace." } } }, "relationships": { "type": "object", "properties": { - "createdBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } - }, - "modifiedBy": { + "parent": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + "$ref": "#/components/schemas/JsonApiWorkspaceToOneLinkage" } } } } } }, - "description": "JSON:API representation of dashboardPlugin entity." - }, - "JsonApiDashboardPluginOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiDashboardPluginOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiAnalyticalDashboardOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiVisualizationObjectOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiFilterContextOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiDashboardPluginOutWithLinks" - } - ] + "description": "JSON:API representation of workspace entity." }, - "JsonApiAnalyticalDashboardOutDocument": { + "JsonApiWorkspaceOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOut" + "$ref": "#/components/schemas/JsonApiWorkspaceOut" }, "links": { "$ref": "#/components/schemas/ObjectLinks" @@ -22563,29 +22194,29 @@ "type": "array", "description": "Included resources", "items": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutIncludes" + "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" } } } }, - "JsonApiAttributeHierarchyPatchDocument": { + "JsonApiExportTemplateInDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyPatch" + "$ref": "#/components/schemas/JsonApiExportTemplateIn" } } }, - "JsonApiAttributeHierarchyPatch": { - "required": ["id", "type"], + "JsonApiExportTemplateIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "attributeHierarchy", - "enum": ["attributeHierarchy"] + "example": "exportTemplate", + "enum": ["exportTemplate"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -22594,59 +22225,88 @@ "example": "id1" }, "attributes": { + "required": ["name"], "type": "object", "properties": { - "title": { + "name": { "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "type": "string", + "description": "User-facing name of the Slides template." }, - "areRelationsValid": { - "type": "boolean" + "dashboardSlidesTemplate": { + "required": ["appliedOn"], + "type": "object", + "properties": { + "appliedOn": { + "minItems": 1, + "type": "array", + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], + "items": { + "type": "string", + "enum": ["PDF", "PPTX"] + } + }, + "coverSlide": { + "$ref": "#/components/schemas/CoverSlideTemplate" + }, + "introSlide": { + "$ref": "#/components/schemas/IntroSlideTemplate" + }, + "sectionSlide": { + "$ref": "#/components/schemas/SectionSlideTemplate" + }, + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" + } + }, + "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true }, - "content": { + "widgetSlidesTemplate": { + "required": ["appliedOn"], "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": { - "attributes": [ - { - "identifier": { - "type": "attribute", - "id": "country" - } - }, - { - "identifier": { - "type": "attribute", - "id": "city" - } + "properties": { + "appliedOn": { + "minItems": 1, + "type": "array", + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], + "items": { + "type": "string", + "enum": ["PDF", "PPTX"] } - ] - } + }, + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" + } + }, + "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true } } } }, - "description": "JSON:API representation of patching attributeHierarchy entity." + "description": "JSON:API representation of exportTemplate entity." }, - "JsonApiAttributeOut": { + "JsonApiNotificationChannelInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiNotificationChannelIn" + } + } + }, + "JsonApiNotificationChannelIn": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "attribute", - "enum": ["attribute"] + "example": "notificationChannel", + "enum": ["notificationChannel"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -22654,147 +22314,232 @@ "description": "API identifier of an object", "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] + "name": { + "maxLength": 255, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 10000, + "type": "string", + "nullable": true + }, + "destination": { + "description": "The destination where the notifications are to be sent.", + "oneOf": [ + { + "$ref": "#/components/schemas/DefaultSmtp" }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" + { + "$ref": "#/components/schemas/InPlatform" + }, + { + "$ref": "#/components/schemas/Smtp" + }, + { + "$ref": "#/components/schemas/Webhook" } - } + ] + }, + "customDashboardUrl": { + "maxLength": 255, + "type": "string", + "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" + }, + "dashboardLinkVisibility": { + "type": "string", + "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", + "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] + }, + "notificationSource": { + "maxLength": 10000, + "type": "string", + "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" + }, + "allowedRecipients": { + "type": "string", + "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", + "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] + }, + "inPlatformNotification": { + "type": "string", + "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", + "enum": ["DISABLED", "ENABLED"] } } + } + }, + "description": "JSON:API representation of notificationChannel entity." + }, + "JsonApiCookieSecurityConfigurationPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCookieSecurityConfigurationPatch" + } + } + }, + "JsonApiCookieSecurityConfigurationPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "cookieSecurityConfiguration", + "enum": ["cookieSecurityConfiguration"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, "attributes": { "type": "object", "properties": { - "title": { + "lastRotation": { + "type": "string", + "format": "date-time" + }, + "rotationInterval": { + "type": "string", + "description": "Length of interval between automatic rotations expressed in format of ISO 8601 duration", + "example": "P30D" + } + } + } + }, + "description": "JSON:API representation of patching cookieSecurityConfiguration entity." + }, + "JsonApiCookieSecurityConfigurationOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCookieSecurityConfigurationOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + } + } + }, + "JsonApiCookieSecurityConfigurationOut": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "cookieSecurityConfiguration", + "enum": ["cookieSecurityConfiguration"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "lastRotation": { + "type": "string", + "format": "date-time" + }, + "rotationInterval": { + "type": "string", + "description": "Length of interval between automatic rotations expressed in format of ISO 8601 duration", + "example": "P30D" + } + } + } + }, + "description": "JSON:API representation of cookieSecurityConfiguration entity." + }, + "JsonApiOrganizationPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiOrganizationPatch" + } + } + }, + "JsonApiOrganizationPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "organization", + "enum": ["organization"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "name": { "maxLength": 255, - "type": "string" + "type": "string", + "nullable": true }, - "description": { - "maxLength": 10000, + "hostname": { + "maxLength": 255, "type": "string" }, - "tags": { + "allowedOrigins": { "type": "array", "items": { "type": "string" } }, - "granularity": { - "type": "string", - "enum": [ - "MINUTE", - "HOUR", - "DAY", - "WEEK", - "MONTH", - "QUARTER", - "YEAR", - "MINUTE_OF_HOUR", - "HOUR_OF_DAY", - "DAY_OF_WEEK", - "DAY_OF_MONTH", - "DAY_OF_QUARTER", - "DAY_OF_YEAR", - "WEEK_OF_YEAR", - "MONTH_OF_YEAR", - "QUARTER_OF_YEAR", - "FISCAL_MONTH", - "FISCAL_QUARTER", - "FISCAL_YEAR" - ] - }, - "areRelationsValid": { - "type": "boolean" - }, - "sortColumn": { - "maxLength": 255, - "type": "string" - }, - "sortDirection": { - "type": "string", - "enum": ["ASC", "DESC"] - }, - "sourceColumn": { + "earlyAccess": { "maxLength": 255, - "type": "string" - }, - "sourceColumnDataType": { "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] - }, - "isHidden": { - "type": "boolean" + "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", + "nullable": true, + "deprecated": true }, - "locale": { - "type": "string" + "earlyAccessValues": { + "type": "array", + "description": "The early access feature identifiers. They are used to enable experimental features.", + "nullable": true, + "items": { + "maxLength": 255, + "type": "string" + } } } }, "relationships": { "type": "object", "properties": { - "dataset": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToOneLinkage" - } - } - }, - "defaultView": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToOneLinkage" - } - } - }, - "labels": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" - } - } - }, - "attributeHierarchies": { + "identityProvider": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyToManyLinkage" + "$ref": "#/components/schemas/JsonApiIdentityProviderToOneLinkage" } } } } } }, - "description": "JSON:API representation of attribute entity." + "description": "JSON:API representation of patching organization entity." }, - "JsonApiAttributeHierarchyLinkage": { + "JsonApiIdentityProviderLinkage": { "required": ["id", "type"], "type": "object", "properties": { @@ -22803,62 +22548,39 @@ }, "type": { "type": "string", - "enum": ["attributeHierarchy"] + "enum": ["identityProvider"] } }, "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiAttributeHierarchyToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyLinkage" - } - }, - "JsonApiDatasetToOneLinkage": { + "JsonApiIdentityProviderToOneLinkage": { "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", "nullable": true, "oneOf": [ { - "$ref": "#/components/schemas/JsonApiDatasetLinkage" + "$ref": "#/components/schemas/JsonApiIdentityProviderLinkage" } ] }, - "JsonApiLabelToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, + "JsonApiOrganizationOutIncludes": { "oneOf": [ { - "$ref": "#/components/schemas/JsonApiLabelLinkage" - } - ] - }, - "JsonApiAttributeOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiAttributeOut" + "$ref": "#/components/schemas/JsonApiUserOutWithLinks" }, { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiAttributeHierarchyOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" }, { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + "$ref": "#/components/schemas/JsonApiIdentityProviderOutWithLinks" } ] }, - "JsonApiAttributeHierarchyOutDocument": { + "JsonApiOrganizationOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyOut" + "$ref": "#/components/schemas/JsonApiOrganizationOut" }, "links": { "$ref": "#/components/schemas/ObjectLinks" @@ -22868,20 +22590,20 @@ "type": "array", "description": "Included resources", "items": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutIncludes" + "$ref": "#/components/schemas/JsonApiOrganizationOutIncludes" } } } }, - "JsonApiAttributeHierarchyOut": { + "JsonApiOrganizationOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "attributeHierarchy", - "enum": ["attributeHierarchy"] + "example": "organization", + "enum": ["organization"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -22892,19 +22614,12 @@ "meta": { "type": "object", "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } + "permissions": { + "type": "array", + "description": "List of valid permissions for a logged-in user.", + "items": { + "type": "string", + "enum": ["MANAGE", "SELF_CREATE_TOKEN"] } } } @@ -22912,210 +22627,139 @@ "attributes": { "type": "object", "properties": { - "title": { + "name": { "maxLength": 255, - "type": "string" + "type": "string", + "nullable": true }, - "description": { - "maxLength": 10000, + "hostname": { + "maxLength": 255, "type": "string" }, - "tags": { + "allowedOrigins": { "type": "array", "items": { "type": "string" } }, - "areRelationsValid": { - "type": "boolean" + "earlyAccess": { + "maxLength": 255, + "type": "string", + "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", + "nullable": true, + "deprecated": true }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": { - "attributes": [ - { - "identifier": { - "type": "attribute", - "id": "country" - } - }, - { - "identifier": { - "type": "attribute", - "id": "city" - } - } - ] + "earlyAccessValues": { + "type": "array", + "description": "The early access feature identifiers. They are used to enable experimental features.", + "nullable": true, + "items": { + "maxLength": 255, + "type": "string" } }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "modifiedAt": { - "type": "string", - "format": "date-time" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "createdBy": { + "cacheSettings": { + "type": "object", + "properties": { + "extraCacheBudget": { + "type": "integer", + "format": "int64" + }, + "cacheStrategy": { + "maxLength": 255, + "type": "string", + "enum": ["DURABLE", "EPHEMERAL"] + } + } + } + } + }, + "relationships": { + "type": "object", + "properties": { + "bootstrapUser": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + "$ref": "#/components/schemas/JsonApiUserToOneLinkage" } } }, - "modifiedBy": { + "bootstrapUserGroup": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + "$ref": "#/components/schemas/JsonApiUserGroupToOneLinkage" } } }, - "attributes": { + "identityProvider": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" + "$ref": "#/components/schemas/JsonApiIdentityProviderToOneLinkage" } } } } } }, - "description": "JSON:API representation of attributeHierarchy entity." + "description": "JSON:API representation of organization entity." }, - "JsonApiAttributePatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributePatch" + "JsonApiUserGroupToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiUserGroupLinkage" } - } + ] }, - "JsonApiAttributePatch": { + "JsonApiUserLinkage": { "required": ["id", "type"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "attribute", - "enum": ["attribute"] - }, "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } + "type": "string" }, - "relationships": { - "type": "object", - "properties": { - "defaultView": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToOneLinkage" - } - } - } - } + "type": { + "type": "string", + "enum": ["user"] } }, - "description": "JSON:API representation of patching attribute entity." + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiAttributeHierarchyOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyOut" - }, + "JsonApiUserToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/JsonApiUserLinkage" } ] }, - "JsonApiAttributeOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" - }, + "JsonApiAggregatedFactOutWithLinks": { + "allOf": [ { - "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" + "$ref": "#/components/schemas/JsonApiAggregatedFactOut" }, { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutWithLinks" + "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, - "JsonApiAttributeOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeOutIncludes" - } - } - } - }, - "JsonApiAutomationPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAutomationPatch" - } - } - }, - "JsonApiAutomationPatch": { - "required": ["id", "type"], + "JsonApiDatasetOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "automation", - "enum": ["automation"] + "example": "dataset", + "enum": ["dataset"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -23123,7 +22767,28 @@ "description": "API identifier of an object", "example": "id1" }, + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } + }, "attributes": { + "required": ["type"], "type": "object", "properties": { "title": { @@ -23140,174 +22805,150 @@ "type": "string" } }, - "areRelationsValid": { - "type": "boolean" - }, - "details": { - "maxLength": 10000, - "type": "object", - "description": "Additional details to be included in the automated message." - }, - "metadata": { - "maxLength": 250000, - "type": "object", - "properties": { - "widget": { - "type": "string" - }, - "visibleFilters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VisibleFilter" - } - } - }, - "additionalProperties": true, - "description": "Additional information for the automation.", - "nullable": true - }, - "state": { - "type": "string", - "description": "Current state of the automation.", - "enum": ["ACTIVE", "PAUSED"] - }, - "evaluationMode": { + "type": { "type": "string", - "description": "Specify automation evaluation mode.", - "enum": ["SHARED", "PER_RECIPIENT"] - }, - "schedule": { - "required": ["cron", "timezone"], - "type": "object", - "properties": { - "cron": { - "maxLength": 255, - "type": "string", - "description": "Cron expression defining the schedule of the automation. The format is SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK (YEAR). The example expression signifies an action every 30 minutes from 9:00 to 17:00 on workdays.", - "example": "0 */30 9-17 ? * MON-FRI" - }, - "cronDescription": { - "type": "string", - "description": "Human-readable description of the cron expression.", - "readOnly": true - }, - "timezone": { - "maxLength": 255, - "type": "string", - "description": "Timezone in which the schedule is defined.", - "example": "Europe/Prague" - }, - "firstRun": { - "type": "string", - "description": "Timestamp of the first scheduled action. If not provided default to the next scheduled time.", - "format": "date-time", - "example": "2025-01-01T12:00:00Z" - } - } - }, - "alert": { - "required": ["condition", "execution"], - "type": "object", - "properties": { - "execution": { - "$ref": "#/components/schemas/AlertAfm" - }, - "condition": { - "$ref": "#/components/schemas/AlertCondition" - }, - "trigger": { - "type": "string", - "description": "Trigger behavior for the alert.\nALWAYS - alert is triggered every time the condition is met.\nONCE - alert is triggered only once when the condition is met.\n", - "default": "ALWAYS", - "enum": ["ALWAYS", "ONCE"] - } - } + "enum": ["NORMAL", "DATE"] }, - "tabularExports": { + "grain": { "type": "array", "items": { - "required": ["requestPayload"], + "required": ["id", "type"], "type": "object", "properties": { - "requestPayload": { - "$ref": "#/components/schemas/TabularExportRequest" + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["attribute", "date"] } } } }, - "visualExports": { + "referenceProperties": { "type": "array", "items": { - "required": ["requestPayload"], + "required": ["identifier", "multivalue"], "type": "object", "properties": { - "requestPayload": { - "$ref": "#/components/schemas/VisualExportRequest" + "identifier": { + "$ref": "#/components/schemas/DatasetReferenceIdentifier" + }, + "multivalue": { + "type": "boolean" + }, + "sources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReferenceSourceColumn" + } + }, + "sourceColumns": { + "type": "array", + "items": { + "type": "string" + } + }, + "sourceColumnDataTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" + ] + } } } } }, - "imageExports": { - "type": "array", - "items": { - "required": ["requestPayload"], - "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/ImageExportRequest" - } - } - } + "dataSourceTableId": { + "maxLength": 255, + "type": "string" }, - "rawExports": { + "dataSourceTablePath": { "type": "array", + "description": "Path to database table.", + "example": ["schema", "table"], "items": { - "required": ["requestPayload"], - "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/RawExportAutomationRequest" - } - } + "maxLength": 255, + "type": "string" } }, - "slidesExports": { - "type": "array", - "items": { - "required": ["requestPayload"], - "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/SlidesExportRequest" - } + "sql": { + "required": ["dataSourceId", "statement"], + "type": "object", + "properties": { + "statement": { + "type": "string" + }, + "dataSourceId": { + "type": "string" } } }, - "dashboardTabularExports": { + "precedence": { + "type": "integer", + "format": "int32" + }, + "areRelationsValid": { + "type": "boolean" + }, + "workspaceDataFilterColumns": { "type": "array", "items": { - "required": ["requestPayload"], + "required": ["dataType", "name"], "type": "object", "properties": { - "requestPayload": { - "$ref": "#/components/schemas/DashboardTabularExportRequestV2" + "name": { + "type": "string" + }, + "dataType": { + "type": "string", + "enum": [ + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" + ] } } } }, - "externalRecipients": { + "workspaceDataFilterReferences": { "type": "array", - "description": "External recipients of the automation action results.", "items": { - "required": ["email"], + "required": ["filterColumn", "filterColumnDataType", "filterId"], "type": "object", "properties": { - "email": { + "filterId": { + "$ref": "#/components/schemas/DatasetWorkspaceDataFilterIdentifier" + }, + "filterColumn": { + "type": "string" + }, + "filterColumnDataType": { "type": "string", - "description": "E-mail address to send notifications from.", - "format": "email" + "enum": [ + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" + ] } - } + }, + "description": "Workspace data filter reference." } } } @@ -23315,1136 +22956,921 @@ "relationships": { "type": "object", "properties": { - "notificationChannel": { + "attributes": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiNotificationChannelToOneLinkage" + "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" } } }, - "analyticalDashboard": { + "facts": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" + "$ref": "#/components/schemas/JsonApiFactToManyLinkage" } } }, - "exportDefinitions": { + "aggregatedFacts": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiExportDefinitionToManyLinkage" + "$ref": "#/components/schemas/JsonApiAggregatedFactToManyLinkage" } } }, - "recipients": { + "references": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserToManyLinkage" + "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" + } + } + }, + "workspaceDataFilters": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterToManyLinkage" } } } } } }, - "description": "JSON:API representation of patching automation entity." + "description": "JSON:API representation of dataset entity." }, - "AFM": { - "required": ["attributes", "filters", "measures"], + "DatasetGrain": { + "required": ["id", "type"], "type": "object", "properties": { - "attributes": { - "type": "array", - "description": "Attributes to be used in the computation.", - "items": { - "$ref": "#/components/schemas/AttributeItem" - } + "id": { + "type": "string" }, - "filters": { - "type": "array", - "description": "Various filter types to filter the execution result.", - "items": { - "$ref": "#/components/schemas/FilterDefinition" - } + "type": { + "type": "string", + "enum": ["attribute", "date"] + } + } + }, + "DatasetReferenceIdentifier": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "type": "string" }, - "measures": { - "type": "array", - "description": "Metrics to be computed.", - "items": { - "$ref": "#/components/schemas/MeasureItem" - } + "type": { + "type": "string", + "enum": ["dataset"] + } + } + }, + "DatasetWorkspaceDataFilterIdentifier": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Workspace Data Filters ID.", + "example": "country_id" }, - "auxMeasures": { - "type": "array", - "description": "Metrics to be referenced from other AFM objects (e.g. filters) but not included in the result.", - "items": { - "$ref": "#/components/schemas/MeasureItem" - } + "type": { + "type": "string", + "description": "Filter type.", + "example": "workspaceDataFilter", + "enum": ["workspaceDataFilter"] } }, - "description": "Top level executable entity. Combination of [A]ttributes, [F]ilters & [M]etrics." + "description": "Identifier of a workspace data filter." }, - "AbsoluteDateFilter": { - "required": ["absoluteDateFilter"], + "JsonApiAggregatedFactLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "absoluteDateFilter": { - "required": ["from", "to", "dataset"], - "type": "object", - "properties": { - "from": { - "pattern": "^\\d{4}-\\d{1,2}-\\d{1,2}( \\d{1,2}:\\d{1,2})?$", - "type": "string", - "example": "2020-07-01 18:23" - }, - "to": { - "pattern": "^\\d{4}-\\d{1,2}-\\d{1,2}( \\d{1,2}:\\d{1,2})?$", - "type": "string", - "example": "2020-07-16 23:59" - }, - "localIdentifier": { - "type": "string" - }, - "applyOnResult": { - "type": "boolean" - }, - "dataset": { - "$ref": "#/components/schemas/AfmObjectIdentifierDataset" - } - } - } - }, - "description": "A datetime filter specifying exact from and to values." - }, - "AbstractMeasureValueFilter": { - "type": "object", - "oneOf": [ - { - "$ref": "#/components/schemas/ComparisonMeasureValueFilter" - }, - { - "$ref": "#/components/schemas/RangeMeasureValueFilter" + "id": { + "type": "string" }, - { - "$ref": "#/components/schemas/RankingFilter" + "type": { + "type": "string", + "enum": ["aggregatedFact"] } - ] + }, + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "AfmIdentifier": { - "type": "object", - "description": "Reference to the attribute label to which the filter should be applied.", - "oneOf": [ - { - "$ref": "#/components/schemas/AfmObjectIdentifier" - }, - { - "$ref": "#/components/schemas/AfmLocalIdentifier" - } - ] + "JsonApiAggregatedFactToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiAggregatedFactLinkage" + } }, - "AfmLocalIdentifier": { - "required": ["localIdentifier"], + "JsonApiAttributeLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "localIdentifier": { - "pattern": "^[.a-zA-Z0-9_-]+$", + "id": { + "type": "string" + }, + "type": { "type": "string", - "example": "sampleAutoGenerated0123_ID" + "enum": ["attribute"] } + }, + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." + }, + "JsonApiAttributeToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeLinkage" } }, - "AfmObjectIdentifier": { - "required": ["identifier"], + "JsonApiDatasetLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "identifier": { - "required": ["type", "id"], - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "fact", - "enum": [ - "analyticalDashboard", - "attribute", - "dashboardPlugin", - "dataset", - "fact", - "label", - "metric", - "prompt", - "visualizationObject", - "filterContext" - ] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "example": "sample_item.price" - } - } + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["dataset"] } }, - "description": "ObjectIdentifier with `identifier` wrapper. This serves to distinguish MD object identifiers in AFM request from local identifiers." + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "AfmObjectIdentifierAttribute": { - "required": ["identifier"], - "type": "object", - "properties": { - "identifier": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "example": "sample_item.price" - }, - "type": { - "type": "string", - "enum": ["attribute"] - } - } - } - }, - "description": "Reference to the date attribute to use." + "JsonApiDatasetToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiDatasetLinkage" + } }, - "AfmObjectIdentifierCore": { - "required": ["identifier"], + "JsonApiFactLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "identifier": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "example": "sample_item.price" - }, - "type": { - "type": "string", - "enum": ["attribute", "label", "fact", "metric"] - } - } + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["fact"] } }, - "description": "Reference to the metric, fact or attribute object to use for the metric." + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "AfmObjectIdentifierDataset": { - "required": ["identifier"], + "JsonApiFactToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiFactLinkage" + } + }, + "JsonApiWorkspaceDataFilterLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "identifier": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "example": "sample_item.price" - }, - "type": { - "type": "string", - "enum": ["dataset"] - } - } + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["workspaceDataFilter"] } }, - "description": "Reference to the date dataset to which the filter should be applied." + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "AfmObjectIdentifierLabel": { - "required": ["identifier"], - "type": "object", - "properties": { - "identifier": { - "required": ["type", "id"], - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["label"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "example": "sample_item.price" - } - } - } + "JsonApiWorkspaceDataFilterToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterLinkage" } }, - "AlertAfm": { - "required": ["filters", "measures"], + "ReferenceSourceColumn": { + "required": ["column", "target"], "type": "object", "properties": { - "attributes": { - "maximum": 1, - "type": "array", - "description": "Attributes to be used in the computation.", - "items": { - "$ref": "#/components/schemas/AttributeItem" - } - }, - "filters": { - "type": "array", - "description": "Various filter types to filter execution result. For anomaly detection, exactly one dataset is specified in the condition. The AFM may contain multiple date filters for different datasets, but only the date filter matching the dataset from the condition is used for anomaly detection.", - "items": { - "$ref": "#/components/schemas/FilterDefinition" - } + "column": { + "type": "string" }, - "measures": { - "maximum": 2, - "minimum": 1, - "type": "array", - "description": "Metrics to be computed. One metric if the alert condition is evaluated to a scalar. Two metrics when they should be evaluated to each other.", - "items": { - "$ref": "#/components/schemas/MeasureItem" - } + "dataType": { + "type": "string", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] }, - "auxMeasures": { - "type": "array", - "description": "Metrics to be referenced from other AFM objects (e.g. filters) but not included in the result.", - "items": { - "$ref": "#/components/schemas/MeasureItem" - } + "target": { + "$ref": "#/components/schemas/DatasetGrain" } } }, - "AlertCondition": { - "type": "object", - "description": "Alert trigger condition.", - "oneOf": [ - { - "$ref": "#/components/schemas/ComparisonWrapper" - }, - { - "$ref": "#/components/schemas/RangeWrapper" - }, - { - "$ref": "#/components/schemas/RelativeWrapper" - }, - { - "$ref": "#/components/schemas/AnomalyDetectionWrapper" - } - ] - }, - "AlertConditionOperand": { - "type": "object", - "description": "Operand of the alert condition.", - "oneOf": [ + "JsonApiDatasetOutWithLinks": { + "allOf": [ { - "$ref": "#/components/schemas/LocalIdentifier" + "$ref": "#/components/schemas/JsonApiDatasetOut" }, { - "$ref": "#/components/schemas/Value" + "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, - "AnomalyDetection": { - "required": ["dataset", "granularity", "measure", "sensitivity"], + "JsonApiFactOut": { + "required": ["id", "type"], "type": "object", "properties": { - "measure": { - "$ref": "#/components/schemas/LocalIdentifier" - }, - "sensitivity": { - "type": "string", - "description": "Sensitivity level for anomaly detection", - "enum": ["LOW", "MEDIUM", "HIGH"] - }, - "granularity": { + "type": { "type": "string", - "description": "Date granularity for anomaly detection. Only time-based granularities are supported (HOUR, DAY, WEEK, MONTH, QUARTER, YEAR).", - "enum": ["HOUR", "DAY", "WEEK", "MONTH", "QUARTER", "YEAR"] + "description": "Object type", + "example": "fact", + "enum": ["fact"] }, - "dataset": { - "$ref": "#/components/schemas/AfmObjectIdentifierDataset" - } - } - }, - "AnomalyDetectionWrapper": { - "required": ["anomaly"], - "type": "object", - "properties": { - "anomaly": { - "$ref": "#/components/schemas/AnomalyDetection" - } - } - }, - "ArithmeticMeasure": { - "required": ["left", "operator", "right"], - "type": "object", - "properties": { - "operator": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Arithmetic operator.\nDIFFERENCE - m₁−m₂ - the difference between two metrics.\nCHANGE - (m₁−m₂)÷m₂ - the relative difference between two metrics.\n", - "enum": ["DIFFERENCE", "CHANGE"] + "description": "API identifier of an object", + "example": "id1" }, - "left": { - "$ref": "#/components/schemas/LocalIdentifier" + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } }, - "right": { - "$ref": "#/components/schemas/LocalIdentifier" - } - } - }, - "ArithmeticMeasureDefinition": { - "required": ["arithmeticMeasure"], - "type": "object", - "properties": { - "arithmeticMeasure": { - "required": ["measureIdentifiers", "operator"], + "attributes": { "type": "object", "properties": { - "measureIdentifiers": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { "type": "array", - "description": "List of metrics to apply arithmetic operation by chosen operator.", "items": { - "$ref": "#/components/schemas/AfmLocalIdentifier" + "type": "string" } }, - "operator": { + "sourceColumn": { + "maxLength": 255, + "type": "string" + }, + "sourceColumnDataType": { "type": "string", - "description": "Arithmetic operator describing operation between metrics.", - "example": "SUM", - "enum": ["SUM", "DIFFERENCE", "MULTIPLICATION", "RATIO", "CHANGE"] + "enum": [ + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" + ] + }, + "areRelationsValid": { + "type": "boolean" + }, + "isHidden": { + "type": "boolean" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "dataset": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToOneLinkage" + } + } } } } }, - "description": "Metric representing arithmetics between other metrics." + "description": "JSON:API representation of fact entity." }, - "AttributeElements": { - "type": "object", + "JsonApiDatasetToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, "oneOf": [ { - "$ref": "#/components/schemas/AttributeElementsByRef" - }, - { - "$ref": "#/components/schemas/AttributeElementsByValue" + "$ref": "#/components/schemas/JsonApiDatasetLinkage" } ] }, - "AttributeElementsByRef": { - "required": ["uris"], - "type": "object", - "properties": { - "uris": { - "type": "array", - "description": "List of attribute elements by reference", - "items": { - "type": "string", - "nullable": true - } - } - } - }, - "AttributeElementsByValue": { - "required": ["values"], - "type": "object", - "properties": { - "values": { - "type": "array", - "description": "List of attribute elements by value", - "items": { - "type": "string", - "nullable": true - } + "JsonApiFactOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiFactOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "AttributeFilter": { - "type": "object", - "description": "Abstract filter definition type attributes", + "JsonApiAggregatedFactOutIncludes": { "oneOf": [ { - "$ref": "#/components/schemas/NegativeAttributeFilter" + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" }, { - "$ref": "#/components/schemas/PositiveAttributeFilter" + "$ref": "#/components/schemas/JsonApiFactOutWithLinks" } ] }, - "AttributeFilterByDate": { - "required": ["filterLocalIdentifier", "isCommonDate"], + "JsonApiAggregatedFactOutList": { + "required": ["data"], "type": "object", "properties": { - "filterLocalIdentifier": { - "type": "string" + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiAggregatedFactOutWithLinks" + } }, - "isCommonDate": { - "type": "boolean" - } - } - }, - "AttributeFilterElements": { - "required": ["values"], - "type": "object", - "properties": { - "values": { + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { "uniqueItems": true, "type": "array", - "description": "Set of label values.", - "example": ["value1", "value2"], + "description": "Included resources", "items": { - "type": "string", - "nullable": true + "$ref": "#/components/schemas/JsonApiAggregatedFactOutIncludes" } } }, - "description": "Filter on specific set of label values." - }, - "AttributeFilterParent": { - "required": ["filterLocalIdentifier", "over"], - "type": "object", - "properties": { - "filterLocalIdentifier": { - "type": "string" - }, - "over": { - "$ref": "#/components/schemas/Over" - } - } - }, - "AttributeItem": { - "required": ["label", "localIdentifier"], - "type": "object", - "properties": { - "localIdentifier": { - "pattern": "^[.a-zA-Z0-9_-]+$", - "type": "string", - "description": "Local identifier of the attribute. This can be used to reference the attribute in other parts of the execution definition.", - "example": "attribute_1" - }, - "label": { - "$ref": "#/components/schemas/AfmObjectIdentifierLabel" - }, - "showAllValues": { - "type": "boolean", - "description": "Indicates whether to show all values of given attribute even if the data bound to those values is not available.", - "default": false - } - } + "description": "A JSON:API document with a list of resources" }, - "BoundedFilter": { - "required": ["granularity"], + "JsonApiAggregatedFactOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "granularity": { + "type": { "type": "string", - "description": "Date granularity specifying particular date attribute in given dimension.", - "example": "DAY", - "enum": [ - "MINUTE", - "HOUR", - "DAY", - "WEEK", - "MONTH", - "QUARTER", - "YEAR", - "MINUTE_OF_HOUR", - "HOUR_OF_DAY", - "DAY_OF_WEEK", - "DAY_OF_MONTH", - "DAY_OF_QUARTER", - "DAY_OF_YEAR", - "WEEK_OF_YEAR", - "MONTH_OF_YEAR", - "QUARTER_OF_YEAR", - "FISCAL_MONTH", - "FISCAL_QUARTER", - "FISCAL_YEAR" - ] - }, - "from": { - "type": "integer", - "description": "Start of the filtering interval. Specified by number of periods (with respect to given granularity). Typically negative (historical time interval like -2 for '2 days/weeks, ... ago'). If null, then start of the range is unbounded.", - "format": "int32", - "nullable": true, - "example": -6 + "description": "Object type", + "example": "aggregatedFact", + "enum": ["aggregatedFact"] }, - "to": { - "type": "integer", - "description": "End of the filtering interval. Specified by number of periods (with respect to given granularity). Value 'O' is representing current time-interval (current day, week, ...). If null, then end of the range is unbounded.", - "format": "int32", - "nullable": true, - "example": 0 - } - }, - "description": "Bounding filter for this relative date filter. This can be used to limit the range of the relative date filter to a specific date range." - }, - "Comparison": { - "required": ["left", "operator", "right"], - "type": "object", - "properties": { - "operator": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "enum": [ - "GREATER_THAN", - "GREATER_THAN_OR_EQUAL_TO", - "LESS_THAN", - "LESS_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO" - ] + "description": "API identifier of an object", + "example": "id1" }, - "left": { - "$ref": "#/components/schemas/LocalIdentifier" + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } }, - "right": { - "$ref": "#/components/schemas/AlertConditionOperand" - } - } - }, - "ComparisonMeasureValueFilter": { - "required": ["comparisonMeasureValueFilter"], - "type": "object", - "properties": { - "comparisonMeasureValueFilter": { - "required": ["operator", "value", "measure"], + "attributes": { + "required": ["operation"], "type": "object", "properties": { - "dimensionality": { + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { "type": "array", - "description": "References to the attributes to be used when filtering.", "items": { - "$ref": "#/components/schemas/AfmIdentifier" + "type": "string" } }, - "treatNullValuesAs": { - "type": "number", - "description": "A value that will be substituted for null values in the metric for the comparisons.", - "example": 0 + "sourceColumn": { + "maxLength": 255, + "type": "string" }, - "operator": { + "sourceColumnDataType": { "type": "string", - "example": "GREATER_THAN", "enum": [ - "GREATER_THAN", - "GREATER_THAN_OR_EQUAL_TO", - "LESS_THAN", - "LESS_THAN_OR_EQUAL_TO", - "EQUAL_TO", - "NOT_EQUAL_TO" + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" ] }, - "value": { - "type": "number", - "example": 1327 - }, - "localIdentifier": { - "type": "string" - }, - "applyOnResult": { + "areRelationsValid": { "type": "boolean" }, - "measure": { - "$ref": "#/components/schemas/AfmIdentifier" + "operation": { + "type": "string", + "enum": ["SUM", "MIN", "MAX"] + } + } + }, + "relationships": { + "type": "object", + "properties": { + "dataset": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToOneLinkage" + } + } + }, + "sourceFact": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFactToOneLinkage" + } + } } } } }, - "description": "Filter the result by comparing specified metric to given constant value, using given comparison operator." + "description": "JSON:API representation of aggregatedFact entity." }, - "ComparisonWrapper": { - "required": ["comparison"], - "type": "object", - "properties": { - "comparison": { - "$ref": "#/components/schemas/Comparison" + "JsonApiFactToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiFactLinkage" } - } + ] }, - "CustomLabel": { - "required": ["title"], - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "Override value." + "JsonApiAnalyticalDashboardOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - }, - "description": "Custom label object override." + ] }, - "CustomMetric": { - "required": ["format", "title"], + "JsonApiVisualizationObjectOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "title": { + "type": { "type": "string", - "description": "Metric title override." + "description": "Object type", + "example": "visualizationObject", + "enum": ["visualizationObject"] }, - "format": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Format override." - } - }, - "description": "Custom metric object override." - }, - "CustomOverride": { - "type": "object", - "properties": { - "labels": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/CustomLabel" - }, - "description": "Map of CustomLabels with keys used as placeholders in document." + "description": "API identifier of an object", + "example": "id1" }, - "metrics": { + "meta": { "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/CustomMetric" - }, - "description": "Map of CustomMetrics with keys used as placeholders in document." - } - }, - "description": "Custom cell value overrides (IDs will be replaced with specified values)." - }, - "DashboardAttributeFilter": { - "required": ["attributeFilter"], - "type": "object", - "properties": { - "attributeFilter": { - "required": ["attributeElements", "displayForm", "negativeSelection"], + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } + }, + "attributes": { + "required": ["content"], "type": "object", "properties": { - "displayForm": { - "$ref": "#/components/schemas/IdentifierRef" - }, - "negativeSelection": { - "type": "boolean" + "title": { + "maxLength": 255, + "type": "string" }, - "attributeElements": { - "$ref": "#/components/schemas/AttributeElements" + "description": { + "maxLength": 10000, + "type": "string" }, - "filterElementsBy": { + "tags": { "type": "array", "items": { - "$ref": "#/components/schemas/AttributeFilterParent" + "type": "string" } }, - "filterElementsByDate": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttributeFilterByDate" - } + "areRelationsValid": { + "type": "boolean" }, - "validateElementsBy": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IdentifierRef" + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "identifier": { + "id": "label.leaf", + "type": "label" + }, + "someBoolProp": false } }, - "title": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time" }, - "selectionMode": { + "modifiedAt": { "type": "string", - "enum": ["single", "multi"] + "format": "date-time" }, - "localIdentifier": { - "type": "string" + "isHidden": { + "type": "boolean" } } - } - } - }, - "DashboardDateFilter": { - "required": ["dateFilter"], - "type": "object", - "properties": { - "dateFilter": { - "required": ["granularity", "type"], + }, + "relationships": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": ["relative", "absolute"] - }, - "granularity": { - "type": "string", - "enum": [ - "ALL_TIME_GRANULARITY", - "GDC.time.year", - "GDC.time.week_us", - "GDC.time.week_in_year", - "GDC.time.week_in_quarter", - "GDC.time.week", - "GDC.time.euweek_in_year", - "GDC.time.euweek_in_quarter", - "GDC.time.quarter", - "GDC.time.quarter_in_year", - "GDC.time.month", - "GDC.time.month_in_quarter", - "GDC.time.month_in_year", - "GDC.time.day_in_year", - "GDC.time.day_in_quarter", - "GDC.time.day_in_month", - "GDC.time.day_in_week", - "GDC.time.day_in_euweek", - "GDC.time.date", - "GDC.time.hour", - "GDC.time.hour_in_day", - "GDC.time.minute", - "GDC.time.minute_in_hour", - "GDC.time.fiscal_month", - "GDC.time.fiscal_quarter", - "GDC.time.fiscal_year" - ] + "createdBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } }, - "from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer", - "format": "int32" + "modifiedBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" } - ] + } }, - "to": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer", - "format": "int32" + "facts": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFactToManyLinkage" } - ] + } }, - "dataSet": { - "$ref": "#/components/schemas/IdentifierRef" + "attributes": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" + } + } }, - "attribute": { - "$ref": "#/components/schemas/IdentifierRef" + "labels": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" + } + } }, - "boundedFilter": { - "$ref": "#/components/schemas/RelativeBoundedDateFilter" + "metrics": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" + } + } }, - "localIdentifier": { - "type": "string" + "datasets": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" + } + } } } } - } + }, + "description": "JSON:API representation of visualizationObject entity." }, - "DashboardExportSettings": { + "JsonApiLabelLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "exportInfo": { - "type": "boolean", - "description": "If true, the export will contain the information about the export – exported date, dashboard filters, etc.", - "example": true, - "default": false - }, - "mergeHeaders": { - "type": "boolean", - "description": "Merge equal headers in neighbouring cells. Used for [XLSX] format only.", - "example": true, - "default": false - }, - "pageSize": { - "type": "string", - "description": "Set page size. (PDF)", - "default": "A4", - "enum": ["A3", "A4", "LETTER"] + "id": { + "type": "string" }, - "pageOrientation": { + "type": { "type": "string", - "description": "Set page orientation. (PDF)", - "default": "PORTRAIT", - "enum": ["PORTRAIT", "LANDSCAPE"] + "enum": ["label"] } }, - "description": "Additional settings." + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "DashboardFilter": { - "type": "object", - "oneOf": [ - { - "$ref": "#/components/schemas/DashboardAttributeFilter" - }, - { - "$ref": "#/components/schemas/DashboardDateFilter" - } - ] + "JsonApiLabelToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiLabelLinkage" + } }, - "DashboardTabularExportRequestV2": { - "required": ["dashboardId", "fileName", "format"], + "JsonApiMetricLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "format": { - "type": "string", - "description": "Requested tabular export type.", - "example": "XLSX", - "enum": ["XLSX", "PDF"] - }, - "fileName": { - "type": "string", - "description": "Filename of downloaded file without extension.", - "example": "result" - }, - "dashboardFiltersOverride": { - "type": "array", - "description": "List of filters that will be used instead of the default dashboard filters.", - "items": { - "$ref": "#/components/schemas/DashboardFilter" - } - }, - "dashboardTabsFiltersOverrides": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DashboardFilter" - } - }, - "description": "Map of tab-specific filter overrides. Key is tabId, value is list of filters for that tab." + "id": { + "type": "string" }, - "dashboardId": { + "type": { "type": "string", - "description": "Dashboard identifier", - "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" - }, - "widgetIds": { - "maxItems": 1, - "uniqueItems": true, - "type": "array", - "description": "List of widget identifiers to be exported. Note that only one widget is currently supported.", - "items": { - "type": "string" - } - }, - "settings": { - "$ref": "#/components/schemas/DashboardExportSettings" + "enum": ["metric"] } }, - "description": "Export request object describing the export properties for dashboard tabular exports (v2 with dashboardId)." - }, - "DateFilter": { - "type": "object", - "description": "Abstract filter definition type for dates.", - "oneOf": [ - { - "$ref": "#/components/schemas/AbsoluteDateFilter" - }, - { - "$ref": "#/components/schemas/RelativeDateFilter" - } - ] + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "DateValue": { - "required": ["value"], - "type": "object", - "properties": { - "value": { - "type": "string" - } + "JsonApiMetricToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiMetricLinkage" } }, - "ExecutionSettings": { + "JsonApiUserIdentifierLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "dataSamplingPercentage": { - "maximum": 100, - "exclusiveMaximum": true, - "minimum": 0, - "exclusiveMinimum": true, - "type": "number", - "description": "Specifies the percentage of rows from fact datasets to use during computation. This feature is available only for workspaces that use a Vertica Data Source without table views.", - "format": "float" + "id": { + "type": "string" }, - "timestamp": { + "type": { "type": "string", - "description": "Specifies the timestamp of the execution from which relative filters are resolved. If not set, the current time is used.", - "format": "date-time" + "enum": ["userIdentifier"] } }, - "description": "Various settings affecting the process of AFM execution or its result" + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "FilterDefinition": { - "type": "object", - "description": "Abstract filter definition type", + "JsonApiUserIdentifierToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, "oneOf": [ { - "$ref": "#/components/schemas/InlineFilterDefinition" - }, - { - "$ref": "#/components/schemas/RankingFilter" - }, - { - "$ref": "#/components/schemas/ComparisonMeasureValueFilter" - }, - { - "$ref": "#/components/schemas/RangeMeasureValueFilter" - }, - { - "$ref": "#/components/schemas/AbsoluteDateFilter" - }, - { - "$ref": "#/components/schemas/RelativeDateFilter" - }, - { - "$ref": "#/components/schemas/NegativeAttributeFilter" - }, - { - "$ref": "#/components/schemas/PositiveAttributeFilter" + "$ref": "#/components/schemas/JsonApiUserIdentifierLinkage" } ] }, - "FilterDefinitionForSimpleMeasure": { - "type": "object", - "description": "Abstract filter definition type for simple metric.", - "oneOf": [ + "JsonApiVisualizationObjectOutWithLinks": { + "allOf": [ { - "$ref": "#/components/schemas/DateFilter" + "$ref": "#/components/schemas/JsonApiVisualizationObjectOut" }, { - "$ref": "#/components/schemas/AttributeFilter" + "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, - "IdentifierRef": { - "type": "object", - "properties": { - "identifier": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "analyticalDashboard", - "attribute", - "attributeHierarchy", - "dashboardPlugin", - "dataset", - "fact", - "aggregatedFact", - "label", - "metric", - "userDataFilter", - "exportDefinition", - "automation", - "automationResult", - "memoryItem", - "knowledgeRecommendation", - "prompt", - "visualizationObject", - "filterContext", - "workspaceSettings", - "customApplicationSetting", - "workspaceDataFilter", - "workspaceDataFilterSetting", - "filterView" - ] - } - } - } - } - }, - "ImageExportRequest": { - "required": ["dashboardId", "fileName", "format", "widgetIds"], + "JsonApiAnalyticalDashboardOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "format": { - "type": "string", - "description": "Requested resulting file type.", - "example": "PNG", - "enum": ["PNG"] - }, - "fileName": { + "type": { "type": "string", - "description": "File name to be used for retrieving the image document.", - "example": "filename" + "description": "Object type", + "example": "analyticalDashboard", + "enum": ["analyticalDashboard"] }, - "dashboardId": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Dashboard identifier", - "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + "description": "API identifier of an object", + "example": "id1" }, - "widgetIds": { - "maxItems": 1, - "minItems": 1, - "uniqueItems": true, - "type": "array", - "description": "List of widget identifiers to be exported. Note that only one widget is currently supported.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "meta": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "description": "List of valid permissions for a logged-in user.", + "items": { + "type": "string", + "enum": ["EDIT", "SHARE", "VIEW"] + } + }, + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + }, + "accessInfo": { + "required": ["private"], + "type": "object", + "properties": { + "private": { + "type": "boolean", + "description": "is the entity private to the currently logged-in user" + } + } + } } }, - "metadata": { - "$ref": "#/components/schemas/JsonNode" - } - }, - "description": "Export request object describing the export properties and metadata for image exports." - }, - "InlineFilterDefinition": { - "required": ["inline"], - "type": "object", - "properties": { - "inline": { - "required": ["filter"], + "attributes": { + "required": ["content"], "type": "object", "properties": { - "filter": { - "type": "string", - "description": "MAQL query representing the filter." + "title": { + "maxLength": 255, + "type": "string" }, - "localIdentifier": { + "description": { + "maxLength": 10000, "type": "string" }, - "applyOnResult": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { "type": "boolean" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "identifier": { + "id": "label.leaf", + "type": "label" + }, + "someBoolProp": false + } + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "modifiedAt": { + "type": "string", + "format": "date-time" } } - } - }, - "description": "Filter in form of direct MAQL query." - }, - "InlineMeasureDefinition": { - "required": ["inline"], - "type": "object", - "properties": { - "inline": { - "required": ["maql"], + }, + "relationships": { "type": "object", "properties": { - "maql": { - "type": "string", - "description": "MAQL query defining the metric." + "createdBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } + }, + "modifiedBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } + }, + "visualizationObjects": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiVisualizationObjectToManyLinkage" + } + } + }, + "analyticalDashboards": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToManyLinkage" + } + } + }, + "labels": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" + } + } + }, + "metrics": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" + } + } + }, + "datasets": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" + } + } + }, + "filterContexts": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFilterContextToManyLinkage" + } + } + }, + "dashboardPlugins": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDashboardPluginToManyLinkage" + } + } } } } }, - "description": "Metric defined by the raw MAQL query." - }, - "JsonApiAnalyticalDashboardToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardLinkage" - } - ] + "description": "JSON:API representation of analyticalDashboard entity." }, - "JsonApiExportDefinitionLinkage": { + "JsonApiAnalyticalDashboardLinkage": { "required": ["id", "type"], "type": "object", "properties": { @@ -24453,19 +23879,19 @@ }, "type": { "type": "string", - "enum": ["exportDefinition"] + "enum": ["analyticalDashboard"] } }, "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiExportDefinitionToManyLinkage": { + "JsonApiAnalyticalDashboardToManyLinkage": { "type": "array", "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", "items": { - "$ref": "#/components/schemas/JsonApiExportDefinitionLinkage" + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardLinkage" } }, - "JsonApiNotificationChannelLinkage": { + "JsonApiDashboardPluginLinkage": { "required": ["id", "type"], "type": "object", "properties": { @@ -24474,21 +23900,19 @@ }, "type": { "type": "string", - "enum": ["notificationChannel"] + "enum": ["dashboardPlugin"] } }, "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiNotificationChannelToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiNotificationChannelLinkage" - } - ] + "JsonApiDashboardPluginToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiDashboardPluginLinkage" + } }, - "JsonApiUserLinkage": { + "JsonApiFilterContextLinkage": { "required": ["id", "type"], "type": "object", "properties": { @@ -24497,558 +23921,734 @@ }, "type": { "type": "string", - "enum": ["user"] + "enum": ["filterContext"] } }, "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiUserToManyLinkage": { + "JsonApiFilterContextToManyLinkage": { "type": "array", "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", "items": { - "$ref": "#/components/schemas/JsonApiUserLinkage" + "$ref": "#/components/schemas/JsonApiFilterContextLinkage" } }, - "JsonNode": { - "maxLength": 15000, - "type": "object", - "description": "Free-form JSON object", - "nullable": true, - "example": {} - }, - "LocalIdentifier": { - "required": ["localIdentifier"], + "JsonApiVisualizationObjectLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "localIdentifier": { - "type": "string", - "description": "Local identifier of the metric to be compared.", - "example": "m1" - }, - "format": { - "maxLength": 2048, - "type": "string", - "description": "Metric format.", - "nullable": true, - "example": "#,##0", - "default": "#,##0.00" + "id": { + "type": "string" }, - "title": { - "maxLength": 255, + "type": { "type": "string", - "description": "Metric title.", - "nullable": true, - "example": "Revenue" + "enum": ["visualizationObject"] } + }, + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." + }, + "JsonApiVisualizationObjectToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiVisualizationObjectLinkage" } }, - "MeasureDefinition": { + "JsonApiLabelOut": { + "required": ["id", "type"], "type": "object", - "description": "Abstract metric definition type", - "oneOf": [ - { - "$ref": "#/components/schemas/InlineMeasureDefinition" - }, - { - "$ref": "#/components/schemas/ArithmeticMeasureDefinition" + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "label", + "enum": ["label"] }, - { - "$ref": "#/components/schemas/SimpleMeasureDefinition" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - { - "$ref": "#/components/schemas/PopMeasureDefinition" - } - ] - }, - "MeasureItem": { - "required": ["definition", "localIdentifier"], - "type": "object", - "properties": { - "localIdentifier": { - "pattern": "^[.a-zA-Z0-9_-]+$", - "type": "string", - "description": "Local identifier of the metric. This can be used to reference the metric in other parts of the execution definition.", - "example": "metric_1" - }, - "definition": { - "$ref": "#/components/schemas/MeasureDefinition" - } - }, - "description": "Metric is a quantity that is calculated from the data." - }, - "MeasureValueFilter": { - "type": "object", - "description": "Abstract filter definition type filtering by the value of the metric.", - "oneOf": [ - { - "$ref": "#/components/schemas/ComparisonMeasureValueFilter" + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } }, - { - "$ref": "#/components/schemas/RangeMeasureValueFilter" - } - ] - }, - "NegativeAttributeFilter": { - "required": ["negativeAttributeFilter"], - "type": "object", - "properties": { - "negativeAttributeFilter": { - "required": ["notIn", "label"], + "attributes": { "type": "object", "properties": { - "notIn": { - "$ref": "#/components/schemas/AttributeFilterElements" + "title": { + "maxLength": 255, + "type": "string" }, - "localIdentifier": { + "description": { + "maxLength": 10000, "type": "string" }, - "applyOnResult": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "primary": { "type": "boolean" }, - "label": { - "$ref": "#/components/schemas/AfmIdentifier" + "sourceColumn": { + "maxLength": 255, + "type": "string" + }, + "sourceColumnDataType": { + "type": "string", + "enum": [ + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" + ] + }, + "valueType": { + "type": "string", + "enum": [ + "TEXT", + "HYPERLINK", + "GEO", + "GEO_LONGITUDE", + "GEO_LATITUDE", + "GEO_AREA", + "IMAGE" + ] + }, + "isHidden": { + "type": "boolean" + }, + "geoAreaConfig": { + "required": ["collection"], + "type": "object", + "properties": { + "collection": { + "$ref": "#/components/schemas/GeoCollectionIdentifier" + } + }, + "description": "Configuration specific to geo area labels." + }, + "areRelationsValid": { + "type": "boolean" + }, + "locale": { + "type": "string" + }, + "translations": { + "type": "array", + "items": { + "required": ["locale", "sourceColumn"], + "type": "object", + "properties": { + "sourceColumn": { + "type": "string" + }, + "locale": { + "type": "string" + } + } + } + } + } + }, + "relationships": { + "type": "object", + "properties": { + "attribute": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAttributeToOneLinkage" + } + } } } } }, - "description": "Filter able to limit element values by label and related selected negated elements." + "description": "JSON:API representation of label entity." }, - "Over": { - "required": ["attributes"], + "GeoCollectionIdentifier": { + "required": ["id"], "type": "object", "properties": { - "attributes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IdentifierRef" - } + "id": { + "maxLength": 255, + "type": "string", + "description": "Geo collection identifier." + }, + "kind": { + "type": "string", + "description": "Type of geo collection.", + "default": "STATIC", + "enum": ["STATIC", "CUSTOM"] } } }, - "PdfTableStyle": { - "required": ["selector"], - "type": "object", - "properties": { - "selector": { - "type": "string", - "description": "CSS selector where to apply given properties." - }, - "properties": { - "type": "array", - "description": "List of CSS properties.", - "items": { - "$ref": "#/components/schemas/PdfTableStyleProperty" - } + "JsonApiAttributeToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiAttributeLinkage" } - }, - "description": "Custom CSS styles for the table. (PDF, HTML)", - "example": [ + ] + }, + "JsonApiLabelOutWithLinks": { + "allOf": [ { - "selector": "th", - "properties": [ - { - "key": "font-size", - "value": "30px" - } - ] + "$ref": "#/components/schemas/JsonApiLabelOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - ], - "deprecated": true + ] }, - "PdfTableStyleProperty": { - "required": ["key", "value"], + "JsonApiMetricOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "key": { + "type": { "type": "string", - "description": "CSS property key." + "description": "Object type", + "example": "metric", + "enum": ["metric"] }, - "value": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "CSS property value." - } - }, - "description": "CSS property." - }, - "PopDataset": { - "required": ["dataset", "periodsAgo"], - "type": "object", - "properties": { - "dataset": { - "$ref": "#/components/schemas/AfmObjectIdentifierDataset" + "description": "API identifier of an object", + "example": "id1" }, - "periodsAgo": { - "type": "integer", - "description": "Number of periods ago to calculate the previous period for.", - "format": "int32", - "example": 1 - } - }, - "description": "Combination of the date data set to use and how many periods ago to calculate the previous period for." - }, - "PopDatasetMeasureDefinition": { - "required": ["previousPeriodMeasure"], - "type": "object", - "properties": { - "previousPeriodMeasure": { - "required": ["dateDatasets", "measureIdentifier"], + "meta": { "type": "object", "properties": { - "measureIdentifier": { - "$ref": "#/components/schemas/AfmLocalIdentifier" - }, - "dateDatasets": { - "type": "array", - "description": "Specification of which date data sets to use for determining the period to calculate the previous period for.", - "items": { - "$ref": "#/components/schemas/PopDataset" + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } } } } - } - }, - "description": "Previous period type of metric." - }, - "PopDate": { - "required": ["attribute", "periodsAgo"], - "type": "object", - "properties": { - "attribute": { - "$ref": "#/components/schemas/AfmObjectIdentifierAttribute" }, - "periodsAgo": { - "type": "integer", - "description": "Number of periods ago to calculate the previous period for.", - "format": "int32", - "example": 1 - } - }, - "description": "Combination of the date attribute to use and how many periods ago to calculate the PoP for." - }, - "PopDateMeasureDefinition": { - "required": ["overPeriodMeasure"], - "type": "object", - "properties": { - "overPeriodMeasure": { - "required": ["dateAttributes", "measureIdentifier"], + "attributes": { + "required": ["content"], "type": "object", "properties": { - "measureIdentifier": { - "$ref": "#/components/schemas/AfmLocalIdentifier" + "title": { + "maxLength": 255, + "type": "string" }, - "dateAttributes": { + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { "type": "array", - "description": "Attributes to use for determining the period to calculate the PoP for.", "items": { - "$ref": "#/components/schemas/PopDate" + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "content": { + "required": ["maql"], + "type": "object", + "properties": { + "format": { + "maxLength": 2048, + "type": "string", + "description": "Excel-like format string with optional dynamic tokens. Filter value tokens: [$FILTER:] for raw filter value passthrough. Currency tokens: [$CURRENCY:] for currency symbol, with optional forms :symbol, :narrow, :code, :name. Locale abbreviations: [$K], [$M], [$B], [$T] for locale-specific scale abbreviations. Tokens are resolved at execution time based on AFM filters and user's format locale. Single-value filters only; multi-value filters use fallback values.", + "nullable": true + }, + "maql": { + "maxLength": 10000, + "type": "string" + }, + "metricType": { + "type": "string", + "description": "Categorizes metric semantics (e.g., currency).", + "enum": ["UNSPECIFIED", "CURRENCY"] + } } + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "modifiedAt": { + "type": "string", + "format": "date-time" + }, + "isHidden": { + "type": "boolean" } } - } - }, - "description": "Period over period type of metric." - }, - "PopMeasureDefinition": { - "type": "object", - "oneOf": [ - { - "$ref": "#/components/schemas/PopDatasetMeasureDefinition" }, - { - "$ref": "#/components/schemas/PopDateMeasureDefinition" - } - ] - }, - "PositiveAttributeFilter": { - "required": ["positiveAttributeFilter"], - "type": "object", - "properties": { - "positiveAttributeFilter": { - "required": ["in", "label"], + "relationships": { "type": "object", "properties": { - "in": { - "$ref": "#/components/schemas/AttributeFilterElements" + "createdBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } }, - "localIdentifier": { - "type": "string" + "modifiedBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } }, - "applyOnResult": { - "type": "boolean" + "facts": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFactToManyLinkage" + } + } }, - "label": { - "$ref": "#/components/schemas/AfmIdentifier" + "attributes": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" + } + } + }, + "labels": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" + } + } + }, + "metrics": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" + } + } + }, + "datasets": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" + } + } } } } }, - "description": "Filter able to limit element values by label and related selected elements." + "description": "JSON:API representation of metric entity." }, - "Range": { - "required": ["from", "measure", "operator", "to"], + "JsonApiMetricOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiMetricOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiFilterContextOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "operator": { + "type": { "type": "string", - "enum": ["BETWEEN", "NOT_BETWEEN"] + "description": "Object type", + "example": "filterContext", + "enum": ["filterContext"] }, - "measure": { - "$ref": "#/components/schemas/LocalIdentifier" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "from": { - "$ref": "#/components/schemas/Value" + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } }, - "to": { - "$ref": "#/components/schemas/Value" - } - } - }, - "RangeMeasureValueFilter": { - "required": ["rangeMeasureValueFilter"], - "type": "object", - "properties": { - "rangeMeasureValueFilter": { - "required": ["from", "operator", "to", "measure"], + "attributes": { + "required": ["content"], "type": "object", "properties": { - "dimensionality": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { "type": "array", - "description": "References to the attributes to be used when filtering.", "items": { - "$ref": "#/components/schemas/AfmIdentifier" + "type": "string" } }, - "treatNullValuesAs": { - "type": "number", - "description": "A value that will be substituted for null values in the metric for the comparisons.", - "example": 0 - }, - "operator": { - "type": "string", - "example": "BETWEEN", - "enum": ["BETWEEN", "NOT_BETWEEN"] - }, - "from": { - "type": "number", - "example": 100 - }, - "to": { - "type": "number", - "example": 999 + "areRelationsValid": { + "type": "boolean" }, - "localIdentifier": { - "type": "string" + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "identifier": { + "id": "label.leaf", + "type": "label" + }, + "someBoolProp": false + } + } + } + }, + "relationships": { + "type": "object", + "properties": { + "attributes": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" + } + } }, - "applyOnResult": { - "type": "boolean" + "datasets": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" + } + } }, - "measure": { - "$ref": "#/components/schemas/AfmIdentifier" + "labels": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" + } + } } } } }, - "description": "Filter the result by comparing specified metric to given range of values." + "description": "JSON:API representation of filterContext entity." }, - "RangeWrapper": { - "required": ["range"], - "type": "object", - "properties": { - "range": { - "$ref": "#/components/schemas/Range" + "JsonApiFilterContextOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiFilterContextOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "RankingFilter": { - "required": ["rankingFilter"], + "JsonApiDashboardPluginOut": { + "required": ["id", "type"], "type": "object", "properties": { - "rankingFilter": { - "required": ["measures", "operator", "value"], + "type": { + "type": "string", + "description": "Object type", + "example": "dashboardPlugin", + "enum": ["dashboardPlugin"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "meta": { "type": "object", "properties": { - "dimensionality": { - "type": "array", - "description": "References to the attributes to be used when filtering.", - "items": { - "$ref": "#/components/schemas/AfmIdentifier" + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } } + } + } + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" }, - "measures": { + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { "type": "array", - "description": "References to the metrics to be used when filtering.", "items": { - "$ref": "#/components/schemas/AfmIdentifier" + "type": "string" } }, - "operator": { + "areRelationsValid": { + "type": "boolean" + }, + "createdAt": { "type": "string", - "description": "The type of ranking to use, TOP or BOTTOM.", - "enum": ["TOP", "BOTTOM"] + "format": "date-time" }, - "value": { - "type": "integer", - "description": "Number of top/bottom values to filter.", - "format": "int32", - "example": 5 + "modifiedAt": { + "type": "string", + "format": "date-time" }, - "localIdentifier": { - "type": "string" + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "url": "" + } + } + } + }, + "relationships": { + "type": "object", + "properties": { + "createdBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } }, - "applyOnResult": { - "type": "boolean" + "modifiedBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } } } } }, - "description": "Filter the result on top/bottom N values according to given metric(s)." - }, - "RawCustomLabel": { - "required": ["title"], - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "Override value." - } - }, - "description": "Custom label object override." - }, - "RawCustomMetric": { - "required": ["title"], - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "Metric title override." - } - }, - "description": "Custom metric object override." + "description": "JSON:API representation of dashboardPlugin entity." }, - "RawCustomOverride": { - "type": "object", - "properties": { - "labels": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/RawCustomLabel" - }, - "description": "Map of CustomLabels with keys used as placeholders in export result." + "JsonApiDashboardPluginOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiDashboardPluginOut" }, - "metrics": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/RawCustomMetric" - }, - "description": "Map of CustomMetrics with keys used as placeholders in export result." + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - }, - "description": "Custom cell value overrides (IDs will be replaced with specified values)." + ] }, - "RawExportAutomationRequest": { - "required": ["execution", "fileName", "format"], - "type": "object", - "properties": { - "format": { - "type": "string", - "description": "Requested resulting file type.", - "example": "CSV", - "enum": ["ARROW_FILE", "ARROW_STREAM", "CSV"] + "JsonApiAnalyticalDashboardOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" }, - "execution": { - "$ref": "#/components/schemas/AFM" + { + "$ref": "#/components/schemas/JsonApiVisualizationObjectOutWithLinks" }, - "fileName": { - "type": "string", - "description": "Filename of downloaded file without extension.", - "example": "result" + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" }, - "customOverride": { - "$ref": "#/components/schemas/RawCustomOverride" + { + "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" }, - "executionSettings": { - "$ref": "#/components/schemas/ExecutionSettings" + { + "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" }, - "metadata": { - "$ref": "#/components/schemas/JsonNode" + { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiFilterContextOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiDashboardPluginOutWithLinks" } - }, - "description": "Export request object describing the export properties and overrides for raw exports." + ] }, - "Relative": { - "required": ["measure", "operator", "threshold"], + "JsonApiAnalyticalDashboardOutList": { + "required": ["data"], "type": "object", "properties": { - "operator": { - "type": "string", - "description": "Relative condition operator.\nINCREASES_BY - the metric increases by the specified value.\nDECREASES_BY - the metric decreases by the specified value.\nCHANGES_BY - the metric increases or decreases by the specified value.\n", - "enum": ["INCREASES_BY", "DECREASES_BY", "CHANGES_BY"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + } }, - "measure": { - "$ref": "#/components/schemas/ArithmeticMeasure" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "threshold": { - "$ref": "#/components/schemas/Value" + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutIncludes" + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "RelativeBoundedDateFilter": { - "required": ["granularity"], - "type": "object", - "properties": { - "granularity": { - "type": "string", - "enum": [ - "ALL_TIME_GRANULARITY", - "GDC.time.year", - "GDC.time.week_us", - "GDC.time.week_in_year", - "GDC.time.week_in_quarter", - "GDC.time.week", - "GDC.time.euweek_in_year", - "GDC.time.euweek_in_quarter", - "GDC.time.quarter", - "GDC.time.quarter_in_year", - "GDC.time.month", - "GDC.time.month_in_quarter", - "GDC.time.month_in_year", - "GDC.time.day_in_year", - "GDC.time.day_in_quarter", - "GDC.time.day_in_month", - "GDC.time.day_in_week", - "GDC.time.day_in_euweek", - "GDC.time.date", - "GDC.time.hour", - "GDC.time.hour_in_day", - "GDC.time.minute", - "GDC.time.minute_in_hour", - "GDC.time.fiscal_month", - "GDC.time.fiscal_quarter", - "GDC.time.fiscal_year" - ] - }, - "from": { - "type": "integer", - "format": "int32" + "JsonApiAttributeHierarchyOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyOut" }, - "to": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "RelativeDateFilter": { - "required": ["relativeDateFilter"], + "JsonApiAttributeOut": { + "required": ["id", "type"], "type": "object", "properties": { - "relativeDateFilter": { - "required": ["from", "granularity", "to", "dataset"], + "type": { + "type": "string", + "description": "Object type", + "example": "attribute", + "enum": ["attribute"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } + }, + "attributes": { "type": "object", "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, "granularity": { "type": "string", - "description": "Date granularity specifying particular date attribute in given dimension.", - "example": "DAY", "enum": [ "MINUTE", "HOUR", @@ -25071,332 +24671,177 @@ "FISCAL_YEAR" ] }, - "from": { - "type": "integer", - "description": "Start of the filtering interval. Specified by number of periods (with respect to given granularity). Typically negative (historical time interval like -2 for '2 days/weeks, ... ago').", - "format": "int32", - "example": -6 + "areRelationsValid": { + "type": "boolean" }, - "to": { - "type": "integer", - "description": "End of the filtering interval. Specified by number of periods (with respect to given granularity). Value 'O' is representing current time-interval (current day, week, ...).", - "format": "int32", - "example": 0 + "sortColumn": { + "maxLength": 255, + "type": "string" }, - "localIdentifier": { + "sortDirection": { + "type": "string", + "enum": ["ASC", "DESC"] + }, + "sourceColumn": { + "maxLength": 255, "type": "string" }, - "applyOnResult": { - "type": "boolean" + "sourceColumnDataType": { + "type": "string", + "enum": [ + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" + ] }, - "boundedFilter": { - "$ref": "#/components/schemas/BoundedFilter" + "isHidden": { + "type": "boolean" }, + "locale": { + "type": "string" + } + } + }, + "relationships": { + "type": "object", + "properties": { "dataset": { - "$ref": "#/components/schemas/AfmObjectIdentifierDataset" + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToOneLinkage" + } + } + }, + "defaultView": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToOneLinkage" + } + } + }, + "labels": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" + } + } + }, + "attributeHierarchies": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyToManyLinkage" + } + } } } } }, - "description": "A date filter specifying a time interval that is relative to the current date. For example, last week, next month, and so on. Field dataset is representing qualifier of date dimension. The 'from' and 'to' properties mark the boundaries of the interval. If 'from' is omitted, all values earlier than 'to' are included. If 'to' is omitted, all values later than 'from' are included. It is not allowed to omit both." + "description": "JSON:API representation of attribute entity." }, - "RelativeWrapper": { - "required": ["relative"], + "JsonApiAttributeHierarchyLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "relative": { - "$ref": "#/components/schemas/Relative" - } - } - }, - "Settings": { - "type": "object", - "properties": { - "exportInfo": { - "type": "boolean", - "description": "If true, the export will contain the information about the export – exported date, filters, etc. Works only with `visualizationObject`. (XLSX, PDF)", - "example": true, - "default": false - }, - "mergeHeaders": { - "type": "boolean", - "description": "Merge equal headers in neighbouring cells. (XLSX)", - "example": true - }, - "showFilters": { - "type": "boolean", - "description": "Print applied filters on top of the document. (PDF/HTML when visualizationObject is given)", - "example": false, - "deprecated": true - }, - "pdfPageSize": { - "type": "string", - "description": "Page size and orientation. (PDF)", - "example": "a4 landscape", - "deprecated": true - }, - "pdfTableStyle": { - "type": "array", - "description": "Custom CSS styles for the table. (PDF, HTML)", - "example": [ - { - "selector": "th", - "properties": [ - { - "key": "font-size", - "value": "30px" - } - ] - } - ], - "deprecated": true, - "items": { - "$ref": "#/components/schemas/PdfTableStyle" - } - }, - "pdfTopLeftContent": { - "type": "string", - "description": "Top left header content. (PDF)", - "example": "Good", - "deprecated": true - }, - "pdfTopRightContent": { - "type": "string", - "description": "Top right header content. (PDF)", - "example": "Morning", - "deprecated": true - }, - "pageSize": { - "type": "string", - "description": "Set page size. (PDF)", - "default": "A4", - "enum": ["A3", "A4", "LETTER"] + "id": { + "type": "string" }, - "pageOrientation": { + "type": { "type": "string", - "description": "Set page orientation. (PDF)", - "default": "PORTRAIT", - "enum": ["PORTRAIT", "LANDSCAPE"] + "enum": ["attributeHierarchy"] } }, - "description": "Additional settings." + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "SimpleMeasureDefinition": { - "required": ["measure"], - "type": "object", - "properties": { - "measure": { - "required": ["item"], - "type": "object", - "properties": { - "item": { - "$ref": "#/components/schemas/AfmObjectIdentifierCore" - }, - "aggregation": { - "type": "string", - "description": "Definition of aggregation type of the metric.", - "example": "SUM", - "enum": [ - "SUM", - "COUNT", - "AVG", - "MIN", - "MAX", - "MEDIAN", - "RUNSUM", - "APPROXIMATE_COUNT" - ] - }, - "computeRatio": { - "type": "boolean", - "description": "If true, compute the percentage of given metric values (broken down by AFM attributes) to the total (not broken down).", - "example": true, - "default": false - }, - "filters": { - "type": "array", - "description": "Metrics can be filtered by attribute filters with the same interface as ones for global AFM. Note that only one DateFilter is allowed.", - "items": { - "$ref": "#/components/schemas/FilterDefinitionForSimpleMeasure" - } - } - } - } - }, - "description": "Metric defined by referencing a MAQL metric or an LDM fact object with aggregation." + "JsonApiAttributeHierarchyToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyLinkage" + } }, - "SlidesExportRequest": { - "required": ["fileName", "format"], - "type": "object", - "properties": { - "format": { - "type": "string", - "description": "Requested resulting file type.", - "example": "PDF", - "enum": ["PDF", "PPTX"] - }, - "fileName": { - "type": "string", - "description": "File name to be used for retrieving the pdf document.", - "example": "filename" - }, - "dashboardId": { - "type": "string", - "description": "Dashboard identifier", - "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" - }, - "widgetIds": { - "maxItems": 1, - "uniqueItems": true, - "type": "array", - "description": "List of widget identifiers to be exported. Note that only one widget is currently supported.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "visualizationIds": { - "maxItems": 1, - "uniqueItems": true, - "type": "array", - "description": "List of visualization ids to be exported. Note that only one visualization is currently supported.", - "items": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "metadata": { - "$ref": "#/components/schemas/JsonNode" - }, - "templateId": { - "maxLength": 255, - "type": "string", - "description": "Export template identifier.", - "nullable": true + "JsonApiLabelToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiLabelLinkage" } - }, - "description": "Export request object describing the export properties and metadata for slides exports." + ] }, - "TabularExportRequest": { - "required": ["fileName", "format"], - "type": "object", - "properties": { - "format": { - "type": "string", - "description": "Expected file format.", - "example": "CSV", - "enum": ["CSV", "XLSX", "HTML", "PDF"] - }, - "executionResult": { - "type": "string", - "description": "Execution result identifier.", - "example": "ff483727196c9dc862c7fd3a5a84df55c96d61a4" - }, - "fileName": { - "type": "string", - "description": "Filename of downloaded file without extension.", - "example": "result" - }, - "settings": { - "$ref": "#/components/schemas/Settings" - }, - "customOverride": { - "$ref": "#/components/schemas/CustomOverride" - }, - "visualizationObject": { - "type": "string", - "description": "Visualization object identifier. Alternative to executionResult property.", - "example": "f7c359bc-c230-4487-b15b-ad9685bcb537" - }, - "visualizationObjectCustomFilters": { - "type": "array", - "description": "Optional custom filters (as array of IFilter objects defined in UI SDK) to be applied when visualizationObject is given. Those filters override the original filters defined in the visualization.", - "example": "[{\"negativeAttributeFilter\":{\"displayForm\":{\"identifier\":{\"id\":\"products.category\",\"type\":\"label\"}},\"notIn\":{\"values\":[\"Books\"]}}}]", - "items": { - "type": "object" - } - }, - "relatedDashboardId": { - "type": "string", - "description": "Analytical dashboard identifier. Optional identifier, which informs the system that the export is related to a specific dashboard.", - "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + "JsonApiAttributeOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiAttributeOut" }, - "metadata": { - "$ref": "#/components/schemas/JsonNode" - } - }, - "description": "Export request object describing the export properties and overrides for tabular exports." - }, - "Value": { - "required": ["value"], - "type": "object", - "properties": { - "value": { - "type": "number", - "description": "Value of the alert threshold to compare the metric to.", - "example": 1000 + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "VisibleFilter": { - "type": "object", - "properties": { - "localIdentifier": { - "type": "string" - }, - "title": { - "type": "string" + "JsonApiAttributeHierarchyOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" }, - "isAllTimeDateFilter": { - "type": "boolean", - "description": "Indicates if the filter is an all-time date filter. Such a filter is not included in report computation, so there is no filter with the same 'localIdentifier' to be found. In such cases, this flag is used to inform the server to not search for the filter in the definitions and include it anyways.", - "default": false + { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" } - } + ] }, - "VisualExportRequest": { - "required": ["dashboardId", "fileName"], + "JsonApiAttributeHierarchyOutList": { + "required": ["data"], "type": "object", "properties": { - "fileName": { - "type": "string", - "description": "File name to be used for retrieving the pdf document.", - "example": "filename" + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutWithLinks" + } }, - "dashboardId": { - "type": "string", - "description": "Dashboard identifier", - "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "metadata": { + "meta": { "type": "object", - "description": "Metadata definition in free-form JSON format.", - "example": "{}" - } - }, - "description": "Export request object describing the export properties and metadata for dashboard PDF exports." - }, - "JsonApiNotificationChannelOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiNotificationChannelOut" + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutIncludes" + } } - ] + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiExportDefinitionOut": { + "JsonApiAttributeHierarchyOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "exportDefinition", - "enum": ["exportDefinition"] + "example": "attributeHierarchy", + "enum": ["attributeHierarchy"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -25441,21 +24886,29 @@ "type": "string" } }, - "requestPayload": { - "type": "object", - "description": "JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. ", - "oneOf": [ - { - "$ref": "#/components/schemas/VisualExportRequest" - }, - { - "$ref": "#/components/schemas/TabularExportRequest" - } - ] - }, "areRelationsValid": { "type": "boolean" }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": { + "attributes": [ + { + "identifier": { + "type": "attribute", + "id": "country" + } + }, + { + "identifier": { + "type": "attribute", + "id": "city" + } + } + ] + } + }, "createdAt": { "type": "string", "format": "date-time" @@ -25469,34 +24922,16 @@ "relationships": { "type": "object", "properties": { - "visualizationObject": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectToOneLinkage" - } - } - }, - "analyticalDashboard": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" - } - } - }, - "automation": { + "createdBy": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAutomationToOneLinkage" + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" } } }, - "createdBy": { + "modifiedBy": { "required": ["data"], "type": "object", "properties": { @@ -25505,81 +24940,85 @@ } } }, - "modifiedBy": { + "attributes": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" } } } } } }, - "description": "JSON:API representation of exportDefinition entity." - }, - "JsonApiAutomationLinkage": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": ["automation"] - } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." + "description": "JSON:API representation of attributeHierarchy entity." }, - "JsonApiAutomationToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, + "JsonApiAttributeOutIncludes": { "oneOf": [ { - "$ref": "#/components/schemas/JsonApiAutomationLinkage" - } - ] - }, - "JsonApiVisualizationObjectToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + }, { - "$ref": "#/components/schemas/JsonApiVisualizationObjectLinkage" + "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutWithLinks" } ] }, - "JsonApiExportDefinitionOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiExportDefinitionOut" + "JsonApiAttributeOutList": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + } }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeOutIncludes" + } } - ] + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiUserOutWithLinks": { + "JsonApiAutomationResultOutWithLinks": { "allOf": [ { - "$ref": "#/components/schemas/JsonApiUserOut" + "$ref": "#/components/schemas/JsonApiAutomationResultOut" }, { "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, - "JsonApiAutomationResultOut": { - "required": ["attributes", "id", "type"], + "JsonApiAutomationOut": { + "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "automationResult", - "enum": ["automationResult"] + "example": "automation", + "enum": ["automation"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -25587,130 +25026,21 @@ "description": "API identifier of an object", "example": "id1" }, - "attributes": { - "required": ["executedAt", "status"], - "type": "object", - "properties": { - "status": { - "type": "string", - "description": "Status of the last automation run.", - "enum": ["SUCCESS", "FAILED"] - }, - "executedAt": { - "type": "string", - "description": "Timestamp of the last automation run.", - "format": "date-time" - }, - "traceId": { - "maxLength": 255, - "type": "string" - }, - "errorMessage": { - "maxLength": 10000, - "type": "string" - } - } - }, - "relationships": { + "meta": { "type": "object", "properties": { - "automation": { - "required": ["data"], + "origin": { + "required": ["originId", "originType"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAutomationToOneLinkage" - } - } - } - } - } - }, - "description": "JSON:API representation of automationResult entity." - }, - "JsonApiAutomationResultOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiAutomationResultOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiAutomationOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiNotificationChannelOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiExportDefinitionOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiUserOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAutomationResultOutWithLinks" - } - ] - }, - "JsonApiAutomationOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAutomationOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAutomationOutIncludes" - } - } - } - }, - "JsonApiAutomationOut": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "automation", - "enum": ["automation"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" } } } @@ -25984,2158 +25314,2204 @@ }, "description": "JSON:API representation of automation entity." }, - "JsonApiAutomationResultLinkage": { - "required": ["id", "type"], + "AFM": { + "required": ["attributes", "filters", "measures"], "type": "object", "properties": { - "id": { - "type": "string" + "attributes": { + "type": "array", + "description": "Attributes to be used in the computation.", + "items": { + "$ref": "#/components/schemas/AttributeItem" + } }, - "type": { - "type": "string", - "enum": ["automationResult"] + "filters": { + "type": "array", + "description": "Various filter types to filter the execution result.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + } + }, + "measures": { + "type": "array", + "description": "Metrics to be computed.", + "items": { + "$ref": "#/components/schemas/MeasureItem" + } + }, + "auxMeasures": { + "type": "array", + "description": "Metrics to be referenced from other AFM objects (e.g. filters) but not included in the result.", + "items": { + "$ref": "#/components/schemas/MeasureItem" + } } }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiAutomationResultToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiAutomationResultLinkage" - } - }, - "JsonApiCustomApplicationSettingPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiCustomApplicationSettingPatch" - } - } + "description": "Top level executable entity. Combination of [A]ttributes, [F]ilters & [M]etrics." }, - "JsonApiCustomApplicationSettingPatch": { - "required": ["attributes", "id", "type"], + "AbsoluteDateFilter": { + "required": ["absoluteDateFilter"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "customApplicationSetting", - "enum": ["customApplicationSetting"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { + "absoluteDateFilter": { + "required": ["from", "to", "dataset"], "type": "object", "properties": { - "applicationName": { - "maxLength": 255, + "from": { + "pattern": "^\\d{4}-\\d{1,2}-\\d{1,2}( \\d{1,2}:\\d{1,2})?$", + "type": "string", + "example": "2020-07-01 18:23" + }, + "to": { + "pattern": "^\\d{4}-\\d{1,2}-\\d{1,2}( \\d{1,2}:\\d{1,2})?$", + "type": "string", + "example": "2020-07-16 23:59" + }, + "localIdentifier": { "type": "string" }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} + "applyOnResult": { + "type": "boolean" + }, + "dataset": { + "$ref": "#/components/schemas/AfmObjectIdentifierDataset" } } } }, - "description": "JSON:API representation of patching customApplicationSetting entity." + "description": "A datetime filter specifying exact from and to values." }, - "JsonApiCustomApplicationSettingOutDocument": { - "required": ["data"], + "AbstractMeasureValueFilter": { "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiCustomApplicationSettingOut" + "oneOf": [ + { + "$ref": "#/components/schemas/ComparisonMeasureValueFilter" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/RangeMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/RankingFilter" } - } + ] }, - "JsonApiCustomApplicationSettingOut": { - "required": ["attributes", "id", "type"], + "AfmIdentifier": { "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "customApplicationSetting", - "enum": ["customApplicationSetting"] + "description": "Reference to the attribute label to which the filter should be applied.", + "oneOf": [ + { + "$ref": "#/components/schemas/AfmObjectIdentifier" }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + { + "$ref": "#/components/schemas/AfmLocalIdentifier" + } + ] + }, + "AfmLocalIdentifier": { + "required": ["localIdentifier"], + "type": "object", + "properties": { + "localIdentifier": { + "pattern": "^[.a-zA-Z0-9_-]+$", "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "meta": { + "example": "sampleAutoGenerated0123_ID" + } + } + }, + "AfmObjectIdentifier": { + "required": ["identifier"], + "type": "object", + "properties": { + "identifier": { + "required": ["type", "id"], "type": "object", "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } + "type": { + "type": "string", + "example": "fact", + "enum": [ + "analyticalDashboard", + "attribute", + "dashboardPlugin", + "dataset", + "fact", + "label", + "metric", + "prompt", + "visualizationObject", + "filterContext" + ] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "example": "sample_item.price" } } - }, - "attributes": { - "required": ["applicationName", "content"], + } + }, + "description": "ObjectIdentifier with `identifier` wrapper. This serves to distinguish MD object identifiers in AFM request from local identifiers." + }, + "AfmObjectIdentifierAttribute": { + "required": ["identifier"], + "type": "object", + "properties": { + "identifier": { + "required": ["id", "type"], "type": "object", "properties": { - "applicationName": { - "maxLength": 255, - "type": "string" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "example": "sample_item.price" }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} + "type": { + "type": "string", + "enum": ["attribute"] } } } }, - "description": "JSON:API representation of customApplicationSetting entity." + "description": "Reference to the date attribute to use." }, - "JsonApiDashboardPluginPatchDocument": { - "required": ["data"], + "AfmObjectIdentifierCore": { + "required": ["identifier"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDashboardPluginPatch" + "identifier": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "example": "sample_item.price" + }, + "type": { + "type": "string", + "enum": ["attribute", "label", "fact", "metric"] + } + } } - } + }, + "description": "Reference to the metric, fact or attribute object to use for the metric." }, - "JsonApiDashboardPluginPatch": { - "required": ["id", "type"], + "AfmObjectIdentifierDataset": { + "required": ["identifier"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "dashboardPlugin", - "enum": ["dashboardPlugin"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { + "identifier": { + "required": ["id", "type"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "example": "sample_item.price" }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "url": "" - } + "type": { + "type": "string", + "enum": ["dataset"] } } } }, - "description": "JSON:API representation of patching dashboardPlugin entity." + "description": "Reference to the date dataset to which the filter should be applied." }, - "JsonApiDashboardPluginOutDocument": { - "required": ["data"], + "AfmObjectIdentifierLabel": { + "required": ["identifier"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDashboardPluginOut" + "identifier": { + "required": ["type", "id"], + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["label"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "example": "sample_item.price" + } + } + } + } + }, + "AlertAfm": { + "required": ["filters", "measures"], + "type": "object", + "properties": { + "attributes": { + "maximum": 1, + "type": "array", + "description": "Attributes to be used in the computation.", + "items": { + "$ref": "#/components/schemas/AttributeItem" + } }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "filters": { + "type": "array", + "description": "Various filter types to filter execution result. For anomaly detection, exactly one dataset is specified in the condition. The AFM may contain multiple date filters for different datasets, but only the date filter matching the dataset from the condition is used for anomaly detection.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + } }, - "included": { - "uniqueItems": true, + "measures": { + "maximum": 2, + "minimum": 1, "type": "array", - "description": "Included resources", + "description": "Metrics to be computed. One metric if the alert condition is evaluated to a scalar. Two metrics when they should be evaluated to each other.", "items": { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + "$ref": "#/components/schemas/MeasureItem" + } + }, + "auxMeasures": { + "type": "array", + "description": "Metrics to be referenced from other AFM objects (e.g. filters) but not included in the result.", + "items": { + "$ref": "#/components/schemas/MeasureItem" } } } }, - "JsonApiDatasetPatchDocument": { - "required": ["data"], + "AlertCondition": { "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetPatch" + "description": "Alert trigger condition.", + "oneOf": [ + { + "$ref": "#/components/schemas/ComparisonWrapper" + }, + { + "$ref": "#/components/schemas/RangeWrapper" + }, + { + "$ref": "#/components/schemas/RelativeWrapper" + }, + { + "$ref": "#/components/schemas/AnomalyDetectionWrapper" } - } + ] }, - "JsonApiDatasetPatch": { - "required": ["id", "type"], + "AlertConditionOperand": { + "type": "object", + "description": "Operand of the alert condition.", + "oneOf": [ + { + "$ref": "#/components/schemas/LocalIdentifier" + }, + { + "$ref": "#/components/schemas/Value" + } + ] + }, + "AnomalyDetection": { + "required": ["dataset", "granularity", "measure", "sensitivity"], "type": "object", "properties": { - "type": { + "measure": { + "$ref": "#/components/schemas/LocalIdentifier" + }, + "sensitivity": { "type": "string", - "description": "Object type", - "example": "dataset", - "enum": ["dataset"] + "description": "Sensitivity level for anomaly detection", + "enum": ["LOW", "MEDIUM", "HIGH"] }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "granularity": { "type": "string", - "description": "API identifier of an object", - "example": "id1" + "description": "Date granularity for anomaly detection. Only time-based granularities are supported (HOUR, DAY, WEEK, MONTH, QUARTER, YEAR).", + "enum": ["HOUR", "DAY", "WEEK", "MONTH", "QUARTER", "YEAR"] }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } + "dataset": { + "$ref": "#/components/schemas/AfmObjectIdentifierDataset" } - }, - "description": "JSON:API representation of patching dataset entity." + } }, - "JsonApiFactOut": { - "required": ["id", "type"], + "AnomalyDetectionWrapper": { + "required": ["anomaly"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "fact", - "enum": ["fact"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "anomaly": { + "$ref": "#/components/schemas/AnomalyDetection" + } + } + }, + "ArithmeticMeasure": { + "required": ["left", "operator", "right"], + "type": "object", + "properties": { + "operator": { "type": "string", - "description": "API identifier of an object", - "example": "id1" + "description": "Arithmetic operator.\nDIFFERENCE - m₁−m₂ - the difference between two metrics.\nCHANGE - (m₁−m₂)÷m₂ - the relative difference between two metrics.\n", + "enum": ["DIFFERENCE", "CHANGE"] }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } + "left": { + "$ref": "#/components/schemas/LocalIdentifier" }, - "attributes": { + "right": { + "$ref": "#/components/schemas/LocalIdentifier" + } + } + }, + "ArithmeticMeasureDefinition": { + "required": ["arithmeticMeasure"], + "type": "object", + "properties": { + "arithmeticMeasure": { + "required": ["measureIdentifiers", "operator"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { + "measureIdentifiers": { "type": "array", + "description": "List of metrics to apply arithmetic operation by chosen operator.", "items": { - "type": "string" + "$ref": "#/components/schemas/AfmLocalIdentifier" } }, - "sourceColumn": { - "maxLength": 255, - "type": "string" - }, - "sourceColumnDataType": { + "operator": { "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] - }, - "areRelationsValid": { - "type": "boolean" - }, - "isHidden": { - "type": "boolean" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "dataset": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToOneLinkage" - } - } + "description": "Arithmetic operator describing operation between metrics.", + "example": "SUM", + "enum": ["SUM", "DIFFERENCE", "MULTIPLICATION", "RATIO", "CHANGE"] } } } }, - "description": "JSON:API representation of fact entity." + "description": "Metric representing arithmetics between other metrics." }, - "JsonApiFactOutWithLinks": { - "allOf": [ + "AttributeElements": { + "type": "object", + "oneOf": [ { - "$ref": "#/components/schemas/JsonApiFactOut" + "$ref": "#/components/schemas/AttributeElementsByRef" }, { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/AttributeElementsByValue" } ] }, - "JsonApiAggregatedFactOut": { - "required": ["attributes", "id", "type"], + "AttributeElementsByRef": { + "required": ["uris"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "aggregatedFact", - "enum": ["aggregatedFact"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } - }, - "attributes": { - "required": ["operation"], - "type": "object", - "properties": { - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "sourceColumn": { - "maxLength": 255, - "type": "string" - }, - "sourceColumnDataType": { - "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] - }, - "areRelationsValid": { - "type": "boolean" - }, - "operation": { - "type": "string", - "enum": ["SUM", "MIN", "MAX"] - } - } - }, - "relationships": { - "type": "object", - "properties": { - "dataset": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToOneLinkage" - } - } - }, - "sourceFact": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFactToOneLinkage" - } - } - } + "uris": { + "type": "array", + "description": "List of attribute elements by reference", + "items": { + "type": "string", + "nullable": true } } - }, - "description": "JSON:API representation of aggregatedFact entity." + } }, - "JsonApiFactToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiFactLinkage" + "AttributeElementsByValue": { + "required": ["values"], + "type": "object", + "properties": { + "values": { + "type": "array", + "description": "List of attribute elements by value", + "items": { + "type": "string", + "nullable": true + } } - ] + } }, - "JsonApiAggregatedFactOutWithLinks": { - "allOf": [ + "AttributeFilter": { + "type": "object", + "description": "Abstract filter definition type attributes", + "oneOf": [ { - "$ref": "#/components/schemas/JsonApiAggregatedFactOut" + "$ref": "#/components/schemas/NegativeAttributeFilter" }, { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/PositiveAttributeFilter" } ] }, - "JsonApiWorkspaceDataFilterOut": { - "required": ["id", "type"], + "AttributeFilterByDate": { + "required": ["filterLocalIdentifier", "isCommonDate"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "workspaceDataFilter", - "enum": ["workspaceDataFilter"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "columnName": { - "maxLength": 255, - "type": "string" - } - } + "filterLocalIdentifier": { + "type": "string" }, - "relationships": { - "type": "object", - "properties": { - "filterSettings": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingToManyLinkage" - } - } - } + "isCommonDate": { + "type": "boolean" + } + } + }, + "AttributeFilterElements": { + "required": ["values"], + "type": "object", + "properties": { + "values": { + "uniqueItems": true, + "type": "array", + "description": "Set of label values.", + "example": ["value1", "value2"], + "items": { + "type": "string", + "nullable": true } } }, - "description": "JSON:API representation of workspaceDataFilter entity." + "description": "Filter on specific set of label values." }, - "JsonApiWorkspaceDataFilterSettingLinkage": { - "required": ["id", "type"], + "AttributeFilterParent": { + "required": ["filterLocalIdentifier", "over"], "type": "object", "properties": { - "id": { + "filterLocalIdentifier": { "type": "string" }, - "type": { - "type": "string", - "enum": ["workspaceDataFilterSetting"] + "over": { + "$ref": "#/components/schemas/Over" } - }, - "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." - }, - "JsonApiWorkspaceDataFilterSettingToManyLinkage": { - "type": "array", - "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingLinkage" } }, - "JsonApiWorkspaceDataFilterOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOut" + "AttributeItem": { + "required": ["label", "localIdentifier"], + "type": "object", + "properties": { + "localIdentifier": { + "pattern": "^[.a-zA-Z0-9_-]+$", + "type": "string", + "description": "Local identifier of the attribute. This can be used to reference the attribute in other parts of the execution definition.", + "example": "attribute_1" }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "label": { + "$ref": "#/components/schemas/AfmObjectIdentifierLabel" + }, + "showAllValues": { + "type": "boolean", + "description": "Indicates whether to show all values of given attribute even if the data bound to those values is not available.", + "default": false } - ] + } }, - "JsonApiDatasetOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiFactOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAggregatedFactOutWithLinks" + "BoundedFilter": { + "required": ["granularity"], + "type": "object", + "properties": { + "granularity": { + "type": "string", + "description": "Date granularity specifying particular date attribute in given dimension.", + "example": "DAY", + "enum": [ + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "MONTH", + "QUARTER", + "YEAR", + "MINUTE_OF_HOUR", + "HOUR_OF_DAY", + "DAY_OF_WEEK", + "DAY_OF_MONTH", + "DAY_OF_QUARTER", + "DAY_OF_YEAR", + "WEEK_OF_YEAR", + "MONTH_OF_YEAR", + "QUARTER_OF_YEAR", + "FISCAL_MONTH", + "FISCAL_QUARTER", + "FISCAL_YEAR" + ] }, - { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + "from": { + "type": "integer", + "description": "Start of the filtering interval. Specified by number of periods (with respect to given granularity). Typically negative (historical time interval like -2 for '2 days/weeks, ... ago'). If null, then start of the range is unbounded.", + "format": "int32", + "nullable": true, + "example": -6 }, - { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" + "to": { + "type": "integer", + "description": "End of the filtering interval. Specified by number of periods (with respect to given granularity). Value 'O' is representing current time-interval (current day, week, ...). If null, then end of the range is unbounded.", + "format": "int32", + "nullable": true, + "example": 0 } - ] + }, + "description": "Bounding filter for this relative date filter. This can be used to limit the range of the relative date filter to a specific date range." }, - "JsonApiDatasetOutDocument": { - "required": ["data"], + "Comparison": { + "required": ["left", "operator", "right"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetOut" + "operator": { + "type": "string", + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL_TO", + "LESS_THAN", + "LESS_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO" + ] }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "left": { + "$ref": "#/components/schemas/LocalIdentifier" }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiDatasetOutIncludes" - } + "right": { + "$ref": "#/components/schemas/AlertConditionOperand" } } }, - "JsonApiExportDefinitionPatchDocument": { - "required": ["data"], + "ComparisonCondition": { + "required": ["comparison"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiExportDefinitionPatch" + "comparison": { + "required": ["operator", "value"], + "type": "object", + "properties": { + "operator": { + "type": "string", + "example": "GREATER_THAN", + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL_TO", + "LESS_THAN", + "LESS_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO" + ] + }, + "value": { + "type": "number", + "example": 100 + } + } } - } + }, + "description": "Condition that compares the metric value to a given constant value using a comparison operator." }, - "JsonApiExportDefinitionPatch": { - "required": ["id", "type"], + "ComparisonMeasureValueFilter": { + "required": ["comparisonMeasureValueFilter"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "exportDefinition", - "enum": ["exportDefinition"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { + "comparisonMeasureValueFilter": { + "required": ["operator", "value", "measure"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { + "dimensionality": { "type": "array", + "description": "References to the attributes to be used when filtering.", "items": { - "type": "string" + "$ref": "#/components/schemas/AfmIdentifier" } }, - "requestPayload": { - "type": "object", - "description": "JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. ", - "oneOf": [ - { - "$ref": "#/components/schemas/VisualExportRequest" - }, - { - "$ref": "#/components/schemas/TabularExportRequest" - } + "treatNullValuesAs": { + "type": "number", + "description": "A value that will be substituted for null values in the metric for the comparisons.", + "example": 0 + }, + "operator": { + "type": "string", + "example": "GREATER_THAN", + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL_TO", + "LESS_THAN", + "LESS_THAN_OR_EQUAL_TO", + "EQUAL_TO", + "NOT_EQUAL_TO" ] }, - "areRelationsValid": { + "value": { + "type": "number", + "example": 1327 + }, + "localIdentifier": { + "type": "string" + }, + "applyOnResult": { "type": "boolean" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "visualizationObject": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectToOneLinkage" - } - } }, - "analyticalDashboard": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" - } - } + "measure": { + "$ref": "#/components/schemas/AfmIdentifier" } } } }, - "description": "JSON:API representation of patching exportDefinition entity." - }, - "JsonApiAutomationOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiAutomationOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiExportDefinitionOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiVisualizationObjectOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAutomationOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - } - ] - }, - "JsonApiExportDefinitionOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiExportDefinitionOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiExportDefinitionOutIncludes" - } - } - } + "description": "Filter the result by comparing specified metric to given constant value, using given comparison operator." }, - "JsonApiFactPatchDocument": { - "required": ["data"], + "ComparisonWrapper": { + "required": ["comparison"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFactPatch" + "comparison": { + "$ref": "#/components/schemas/Comparison" } } }, - "JsonApiFactPatch": { - "required": ["id", "type"], + "CompoundMeasureValueFilter": { + "required": ["compoundMeasureValueFilter"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "fact", - "enum": ["fact"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { + "compoundMeasureValueFilter": { + "required": ["conditions", "measure"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" + "dimensionality": { + "type": "array", + "description": "References to the attributes to be used when filtering.", + "items": { + "$ref": "#/components/schemas/AfmIdentifier" + } }, - "description": { - "maxLength": 10000, - "type": "string" + "treatNullValuesAs": { + "type": "number", + "description": "A value that will be substituted for null values in the metric for the comparisons.", + "example": 0 }, - "tags": { + "conditions": { "type": "array", + "description": "List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned.", "items": { - "type": "string" + "$ref": "#/components/schemas/MeasureValueCondition" } + }, + "localIdentifier": { + "type": "string" + }, + "applyOnResult": { + "type": "boolean" + }, + "measure": { + "$ref": "#/components/schemas/AfmIdentifier" } } } }, - "description": "JSON:API representation of patching fact entity." + "description": "Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned)." }, - "JsonApiFactOutDocument": { - "required": ["data"], + "CustomLabel": { + "required": ["title"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFactOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" - } + "title": { + "type": "string", + "description": "Override value." } - } + }, + "description": "Custom label object override." }, - "JsonApiFilterContextPatchDocument": { - "required": ["data"], + "CustomMetric": { + "required": ["format", "title"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFilterContextPatch" + "title": { + "type": "string", + "description": "Metric title override." + }, + "format": { + "type": "string", + "description": "Format override." } - } + }, + "description": "Custom metric object override." }, - "JsonApiFilterContextPatch": { - "required": ["attributes", "id", "type"], + "CustomOverride": { "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "filterContext", - "enum": ["filterContext"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "labels": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/CustomLabel" + }, + "description": "Map of CustomLabels with keys used as placeholders in document." }, - "attributes": { + "metrics": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/CustomMetric" + }, + "description": "Map of CustomMetrics with keys used as placeholders in document." + } + }, + "description": "Custom cell value overrides (IDs will be replaced with specified values)." + }, + "DashboardAttributeFilter": { + "required": ["attributeFilter"], + "type": "object", + "properties": { + "attributeFilter": { + "required": ["attributeElements", "displayForm", "negativeSelection"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" + "displayForm": { + "$ref": "#/components/schemas/IdentifierRef" }, - "description": { - "maxLength": 10000, - "type": "string" + "negativeSelection": { + "type": "boolean" }, - "tags": { + "attributeElements": { + "$ref": "#/components/schemas/AttributeElements" + }, + "filterElementsBy": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/AttributeFilterParent" } }, - "areRelationsValid": { - "type": "boolean" + "filterElementsByDate": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributeFilterByDate" + } }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "identifier": { - "id": "label.leaf", - "type": "label" - }, - "someBoolProp": false + "validateElementsBy": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IdentifierRef" } + }, + "title": { + "type": "string" + }, + "selectionMode": { + "type": "string", + "enum": ["single", "multi"] + }, + "localIdentifier": { + "type": "string" + } + } + } + } + }, + "DashboardDateFilter": { + "required": ["dateFilter"], + "type": "object", + "properties": { + "dateFilter": { + "required": ["granularity", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["relative", "absolute"] + }, + "granularity": { + "type": "string", + "enum": [ + "ALL_TIME_GRANULARITY", + "GDC.time.year", + "GDC.time.week_us", + "GDC.time.week_in_year", + "GDC.time.week_in_quarter", + "GDC.time.week", + "GDC.time.euweek_in_year", + "GDC.time.euweek_in_quarter", + "GDC.time.quarter", + "GDC.time.quarter_in_year", + "GDC.time.month", + "GDC.time.month_in_quarter", + "GDC.time.month_in_year", + "GDC.time.day_in_year", + "GDC.time.day_in_quarter", + "GDC.time.day_in_month", + "GDC.time.day_in_week", + "GDC.time.day_in_euweek", + "GDC.time.date", + "GDC.time.hour", + "GDC.time.hour_in_day", + "GDC.time.minute", + "GDC.time.minute_in_hour", + "GDC.time.fiscal_month", + "GDC.time.fiscal_quarter", + "GDC.time.fiscal_year" + ] + }, + "from": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer", + "format": "int32" + } + ] + }, + "to": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer", + "format": "int32" + } + ] + }, + "dataSet": { + "$ref": "#/components/schemas/IdentifierRef" + }, + "attribute": { + "$ref": "#/components/schemas/IdentifierRef" + }, + "boundedFilter": { + "$ref": "#/components/schemas/RelativeBoundedDateFilter" + }, + "localIdentifier": { + "type": "string" } } } + } + }, + "DashboardExportSettings": { + "type": "object", + "properties": { + "exportInfo": { + "type": "boolean", + "description": "If true, the export will contain the information about the export – exported date, dashboard filters, etc.", + "example": true, + "default": false + }, + "mergeHeaders": { + "type": "boolean", + "description": "Merge equal headers in neighbouring cells. Used for [XLSX] format only.", + "example": true, + "default": false + }, + "pageSize": { + "type": "string", + "description": "Set page size. (PDF)", + "default": "A4", + "enum": ["A3", "A4", "LETTER"] + }, + "pageOrientation": { + "type": "string", + "description": "Set page orientation. (PDF)", + "default": "PORTRAIT", + "enum": ["PORTRAIT", "LANDSCAPE"] + } }, - "description": "JSON:API representation of patching filterContext entity." + "description": "Additional settings." }, - "JsonApiFilterContextOutIncludes": { + "DashboardFilter": { + "type": "object", "oneOf": [ { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + "$ref": "#/components/schemas/DashboardAttributeFilter" }, { - "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" + "$ref": "#/components/schemas/DashboardDateFilter" } ] }, - "JsonApiFilterContextOutDocument": { - "required": ["data"], + "DashboardTabularExportRequestV2": { + "required": ["dashboardId", "fileName", "format"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFilterContextOut" + "format": { + "type": "string", + "description": "Requested tabular export type.", + "example": "XLSX", + "enum": ["XLSX", "PDF"] }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "fileName": { + "type": "string", + "description": "Filename of downloaded file without extension.", + "example": "result" }, - "included": { + "dashboardFiltersOverride": { + "type": "array", + "description": "List of filters that will be used instead of the default dashboard filters.", + "items": { + "$ref": "#/components/schemas/DashboardFilter" + } + }, + "dashboardTabsFiltersOverrides": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DashboardFilter" + } + }, + "description": "Map of tab-specific filter overrides. Key is tabId, value is list of filters for that tab." + }, + "dashboardId": { + "type": "string", + "description": "Dashboard identifier", + "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + }, + "widgetIds": { + "maxItems": 1, "uniqueItems": true, "type": "array", - "description": "Included resources", + "description": "List of widget identifiers to be exported. Note that only one widget is currently supported.", "items": { - "$ref": "#/components/schemas/JsonApiFilterContextOutIncludes" + "type": "string" } + }, + "settings": { + "$ref": "#/components/schemas/DashboardExportSettings" } - } + }, + "description": "Export request object describing the export properties for dashboard tabular exports (v2 with dashboardId)." }, - "JsonApiFilterViewPatchDocument": { - "required": ["data"], + "DateFilter": { + "type": "object", + "description": "Abstract filter definition type for dates.", + "oneOf": [ + { + "$ref": "#/components/schemas/AbsoluteDateFilter" + }, + { + "$ref": "#/components/schemas/RelativeDateFilter" + } + ] + }, + "DateValue": { + "required": ["value"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFilterViewPatch" + "value": { + "type": "string" } } }, - "JsonApiFilterViewPatch": { - "required": ["attributes", "id", "type"], + "ExecutionSettings": { "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "filterView", - "enum": ["filterView"] + "dataSamplingPercentage": { + "maximum": 100, + "exclusiveMaximum": true, + "minimum": 0, + "exclusiveMinimum": true, + "type": "number", + "description": "Specifies the percentage of rows from fact datasets to use during computation. This feature is available only for workspaces that use a Vertica Data Source without table views.", + "format": "float" }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "timestamp": { "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, - "isDefault": { - "type": "boolean", - "description": "Indicator whether the filter view should by applied by default." - }, - "content": { - "type": "object", - "description": "The respective filter context." - } - } - }, - "relationships": { - "type": "object", - "properties": { - "analyticalDashboard": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" - } - } - }, - "user": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserToOneLinkage" - } - } - } - } + "description": "Specifies the timestamp of the execution from which relative filters are resolved. If not set, the current time is used.", + "format": "date-time" } }, - "description": "JSON:API representation of patching filterView entity." + "description": "Various settings affecting the process of AFM execution or its result" }, - "JsonApiUserToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, + "FilterDefinition": { + "type": "object", + "description": "Abstract filter definition type", "oneOf": [ { - "$ref": "#/components/schemas/JsonApiUserLinkage" + "$ref": "#/components/schemas/InlineFilterDefinition" + }, + { + "$ref": "#/components/schemas/RankingFilter" + }, + { + "$ref": "#/components/schemas/ComparisonMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/RangeMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/AbsoluteDateFilter" + }, + { + "$ref": "#/components/schemas/RelativeDateFilter" + }, + { + "$ref": "#/components/schemas/NegativeAttributeFilter" + }, + { + "$ref": "#/components/schemas/PositiveAttributeFilter" } ] }, - "JsonApiFilterViewOutIncludes": { + "FilterDefinitionForSimpleMeasure": { + "type": "object", + "description": "Abstract filter definition type for simple metric.", "oneOf": [ { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + "$ref": "#/components/schemas/DateFilter" }, { - "$ref": "#/components/schemas/JsonApiUserOutWithLinks" + "$ref": "#/components/schemas/AttributeFilter" } ] }, - "JsonApiFilterViewOutDocument": { - "required": ["data"], + "IdentifierRef": { "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFilterViewOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiFilterViewOutIncludes" + "identifier": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "analyticalDashboard", + "attribute", + "attributeHierarchy", + "dashboardPlugin", + "dataset", + "fact", + "aggregatedFact", + "label", + "metric", + "userDataFilter", + "exportDefinition", + "automation", + "automationResult", + "memoryItem", + "knowledgeRecommendation", + "prompt", + "visualizationObject", + "filterContext", + "workspaceSettings", + "customApplicationSetting", + "workspaceDataFilter", + "workspaceDataFilterSetting", + "filterView" + ] + } } } } }, - "JsonApiFilterViewOut": { - "required": ["attributes", "id", "type"], + "ImageExportRequest": { + "required": ["dashboardId", "fileName", "format", "widgetIds"], "type": "object", "properties": { - "type": { + "format": { "type": "string", - "description": "Object type", - "example": "filterView", - "enum": ["filterView"] + "description": "Requested resulting file type.", + "example": "PNG", + "enum": ["PNG"] }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "fileName": { "type": "string", - "description": "API identifier of an object", - "example": "id1" + "description": "File name to be used for retrieving the image document.", + "example": "filename" }, - "attributes": { - "required": ["content", "title"], + "dashboardId": { + "type": "string", + "description": "Dashboard identifier", + "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + }, + "widgetIds": { + "maxItems": 1, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "description": "List of widget identifiers to be exported. Note that only one widget is currently supported.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "metadata": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "description": "Export request object describing the export properties and metadata for image exports." + }, + "InlineFilterDefinition": { + "required": ["inline"], + "type": "object", + "properties": { + "inline": { + "required": ["filter"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" + "filter": { + "type": "string", + "description": "MAQL query representing the filter." }, - "description": { - "maxLength": 10000, + "localIdentifier": { "type": "string" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { + "applyOnResult": { "type": "boolean" - }, - "isDefault": { - "type": "boolean", - "description": "Indicator whether the filter view should by applied by default." - }, - "content": { - "type": "object", - "description": "The respective filter context." } } - }, - "relationships": { + } + }, + "description": "Filter in form of direct MAQL query." + }, + "InlineMeasureDefinition": { + "required": ["inline"], + "type": "object", + "properties": { + "inline": { + "required": ["maql"], "type": "object", "properties": { - "analyticalDashboard": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" - } - } - }, - "user": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserToOneLinkage" - } - } + "maql": { + "type": "string", + "description": "MAQL query defining the metric." } } } }, - "description": "JSON:API representation of filterView entity." + "description": "Metric defined by the raw MAQL query." }, - "JsonApiKnowledgeRecommendationPatchDocument": { - "required": ["data"], + "JsonApiAnalyticalDashboardToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardLinkage" + } + ] + }, + "JsonApiAutomationResultLinkage": { + "required": ["id", "type"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationPatch" + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["automationResult"] } + }, + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." + }, + "JsonApiAutomationResultToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiAutomationResultLinkage" } }, - "JsonApiKnowledgeRecommendationPatch": { - "required": ["attributes", "id", "relationships", "type"], + "JsonApiExportDefinitionLinkage": { + "required": ["id", "type"], "type": "object", "properties": { + "id": { + "type": "string" + }, "type": { "type": "string", - "description": "Object type", - "example": "knowledgeRecommendation", - "enum": ["knowledgeRecommendation"] - }, + "enum": ["exportDefinition"] + } + }, + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." + }, + "JsonApiExportDefinitionToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiExportDefinitionLinkage" + } + }, + "JsonApiNotificationChannelLinkage": { + "required": ["id", "type"], + "type": "object", + "properties": { "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string", - "description": "Human-readable title for the recommendation, e.g. 'Revenue decreased vs last month'" - }, - "description": { - "maxLength": 10000, - "type": "string", - "description": "Description of the recommendation" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, - "metricTitle": { - "maxLength": 255, - "type": "string", - "description": "Human-readable title of the metric (denormalized for display)", - "example": "Revenue" - }, - "direction": { - "type": "string", - "description": "Direction of the metric change", - "example": "DECREASED", - "enum": ["INCREASED", "DECREASED"] - }, - "comparisonType": { - "type": "string", - "description": "Time period for comparison", - "example": "MONTH", - "enum": ["MONTH", "QUARTER", "YEAR"] - }, - "widgetId": { - "maxLength": 255, - "type": "string", - "description": "ID of the widget where the anomaly was detected", - "example": "widget-123" - }, - "widgetName": { - "maxLength": 255, - "type": "string", - "description": "Name of the widget where the anomaly was detected", - "example": "Revenue Trend" - }, - "confidence": { - "description": "Confidence score (0.0 to 1.0)", - "example": 0.62 - }, - "recommendations": { - "type": "object", - "description": "Structured recommendations data as JSON", - "example": "{\"summary\": \"...\", \"recommendations\": [...], \"key_metrics\": [...]}" - }, - "sourceCount": { - "type": "integer", - "description": "Number of source documents used for generation", - "format": "int32", - "example": 2 - } - } + "type": "string" }, - "relationships": { - "type": "object", - "properties": { - "metric": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricToOneLinkage" - } - } - }, - "analyticalDashboard": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" - } - } - } - } + "type": { + "type": "string", + "enum": ["notificationChannel"] } }, - "description": "JSON:API representation of patching knowledgeRecommendation entity." + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiMetricToOneLinkage": { + "JsonApiNotificationChannelToOneLinkage": { "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", "nullable": true, "oneOf": [ { - "$ref": "#/components/schemas/JsonApiMetricLinkage" + "$ref": "#/components/schemas/JsonApiNotificationChannelLinkage" } ] }, - "JsonApiKnowledgeRecommendationOutIncludes": { + "JsonApiUserToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiUserLinkage" + } + }, + "JsonNode": { + "maxLength": 15000, + "type": "object", + "description": "Free-form JSON object", + "nullable": true, + "example": {} + }, + "LocalIdentifier": { + "required": ["localIdentifier"], + "type": "object", + "properties": { + "localIdentifier": { + "type": "string", + "description": "Local identifier of the metric to be compared.", + "example": "m1" + }, + "format": { + "maxLength": 2048, + "type": "string", + "description": "Metric format.", + "nullable": true, + "example": "#,##0", + "default": "#,##0.00" + }, + "title": { + "maxLength": 255, + "type": "string", + "description": "Metric title.", + "nullable": true, + "example": "Revenue" + } + } + }, + "MeasureDefinition": { + "type": "object", + "description": "Abstract metric definition type", "oneOf": [ { - "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" + "$ref": "#/components/schemas/InlineMeasureDefinition" }, { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + "$ref": "#/components/schemas/ArithmeticMeasureDefinition" + }, + { + "$ref": "#/components/schemas/SimpleMeasureDefinition" + }, + { + "$ref": "#/components/schemas/PopMeasureDefinition" } ] }, - "JsonApiKnowledgeRecommendationOutDocument": { - "required": ["data"], + "MeasureItem": { + "required": ["definition", "localIdentifier"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOut" + "localIdentifier": { + "pattern": "^[.a-zA-Z0-9_-]+$", + "type": "string", + "description": "Local identifier of the metric. This can be used to reference the metric in other parts of the execution definition.", + "example": "metric_1" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "definition": { + "$ref": "#/components/schemas/MeasureDefinition" + } + }, + "description": "Metric is a quantity that is calculated from the data." + }, + "MeasureValueCondition": { + "type": "object", + "description": "A condition for filtering by measure value. Can be either a comparison or a range condition.", + "oneOf": [ + { + "$ref": "#/components/schemas/ComparisonCondition" }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOutIncludes" - } + { + "$ref": "#/components/schemas/RangeCondition" } - } + ] }, - "JsonApiKnowledgeRecommendationOut": { - "required": ["attributes", "id", "type"], + "MeasureValueFilter": { "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "knowledgeRecommendation", - "enum": ["knowledgeRecommendation"] + "description": "Abstract filter definition type filtering by the value of the metric.", + "oneOf": [ + { + "$ref": "#/components/schemas/ComparisonMeasureValueFilter" }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } + { + "$ref": "#/components/schemas/RangeMeasureValueFilter" }, - "attributes": { - "required": ["comparisonType", "direction", "title"], + { + "$ref": "#/components/schemas/CompoundMeasureValueFilter" + } + ] + }, + "NegativeAttributeFilter": { + "required": ["negativeAttributeFilter"], + "type": "object", + "properties": { + "negativeAttributeFilter": { + "required": ["notIn", "label"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string", - "description": "Human-readable title for the recommendation, e.g. 'Revenue decreased vs last month'" - }, - "description": { - "maxLength": 10000, - "type": "string", - "description": "Description of the recommendation" + "notIn": { + "$ref": "#/components/schemas/AttributeFilterElements" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "localIdentifier": { + "type": "string" }, - "areRelationsValid": { + "applyOnResult": { "type": "boolean" }, - "metricTitle": { - "maxLength": 255, - "type": "string", - "description": "Human-readable title of the metric (denormalized for display)", - "example": "Revenue" - }, - "direction": { - "type": "string", - "description": "Direction of the metric change", - "example": "DECREASED", - "enum": ["INCREASED", "DECREASED"] - }, - "comparisonType": { - "type": "string", - "description": "Time period for comparison", - "example": "MONTH", - "enum": ["MONTH", "QUARTER", "YEAR"] - }, - "widgetId": { - "maxLength": 255, - "type": "string", - "description": "ID of the widget where the anomaly was detected", - "example": "widget-123" - }, - "widgetName": { - "maxLength": 255, - "type": "string", - "description": "Name of the widget where the anomaly was detected", - "example": "Revenue Trend" - }, - "confidence": { - "description": "Confidence score (0.0 to 1.0)", - "example": 0.62 - }, - "recommendations": { - "type": "object", - "description": "Structured recommendations data as JSON", - "example": "{\"summary\": \"...\", \"recommendations\": [...], \"key_metrics\": [...]}" - }, - "sourceCount": { - "type": "integer", - "description": "Number of source documents used for generation", - "format": "int32", - "example": 2 - }, - "createdAt": { - "type": "string", - "format": "date-time" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "metric": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricToOneLinkage" - } - } - }, - "analyticalDashboard": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" - } - } + "label": { + "$ref": "#/components/schemas/AfmIdentifier" } } } }, - "description": "JSON:API representation of knowledgeRecommendation entity." + "description": "Filter able to limit element values by label and related selected negated elements." }, - "JsonApiLabelPatchDocument": { - "required": ["data"], + "Over": { + "required": ["attributes"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelPatch" + "attributes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IdentifierRef" + } } } }, - "JsonApiLabelPatch": { - "required": ["id", "type"], + "PdfTableStyle": { + "required": ["selector"], "type": "object", "properties": { - "type": { + "selector": { "type": "string", - "description": "Object type", - "example": "label", - "enum": ["label"] + "description": "CSS selector where to apply given properties." }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "properties": { + "type": "array", + "description": "List of CSS properties.", + "items": { + "$ref": "#/components/schemas/PdfTableStyleProperty" + } + } + }, + "description": "Custom CSS styles for the table. (PDF, HTML)", + "example": [ + { + "selector": "th", + "properties": [ + { + "key": "font-size", + "value": "30px" + } + ] + } + ], + "deprecated": true + }, + "PdfTableStyleProperty": { + "required": ["key", "value"], + "type": "object", + "properties": { + "key": { "type": "string", - "description": "API identifier of an object", - "example": "id1" + "description": "CSS property key." }, - "attributes": { + "value": { + "type": "string", + "description": "CSS property value." + } + }, + "description": "CSS property." + }, + "PopDataset": { + "required": ["dataset", "periodsAgo"], + "type": "object", + "properties": { + "dataset": { + "$ref": "#/components/schemas/AfmObjectIdentifierDataset" + }, + "periodsAgo": { + "type": "integer", + "description": "Number of periods ago to calculate the previous period for.", + "format": "int32", + "example": 1 + } + }, + "description": "Combination of the date data set to use and how many periods ago to calculate the previous period for." + }, + "PopDatasetMeasureDefinition": { + "required": ["previousPeriodMeasure"], + "type": "object", + "properties": { + "previousPeriodMeasure": { + "required": ["dateDatasets", "measureIdentifier"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" + "measureIdentifier": { + "$ref": "#/components/schemas/AfmLocalIdentifier" }, - "tags": { + "dateDatasets": { "type": "array", + "description": "Specification of which date data sets to use for determining the period to calculate the previous period for.", "items": { - "type": "string" + "$ref": "#/components/schemas/PopDataset" } } } } }, - "description": "JSON:API representation of patching label entity." + "description": "Previous period type of metric." }, - "JsonApiLabelOutDocument": { - "required": ["data"], + "PopDate": { + "required": ["attribute", "periodsAgo"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "attribute": { + "$ref": "#/components/schemas/AfmObjectIdentifierAttribute" }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" - } + "periodsAgo": { + "type": "integer", + "description": "Number of periods ago to calculate the previous period for.", + "format": "int32", + "example": 1 } - } + }, + "description": "Combination of the date attribute to use and how many periods ago to calculate the PoP for." }, - "JsonApiMemoryItemPatchDocument": { - "required": ["data"], + "PopDateMeasureDefinition": { + "required": ["overPeriodMeasure"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMemoryItemPatch" + "overPeriodMeasure": { + "required": ["dateAttributes", "measureIdentifier"], + "type": "object", + "properties": { + "measureIdentifier": { + "$ref": "#/components/schemas/AfmLocalIdentifier" + }, + "dateAttributes": { + "type": "array", + "description": "Attributes to use for determining the period to calculate the PoP for.", + "items": { + "$ref": "#/components/schemas/PopDate" + } + } + } } - } + }, + "description": "Period over period type of metric." }, - "JsonApiMemoryItemPatch": { - "required": ["attributes", "id", "type"], + "PopMeasureDefinition": { "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "memoryItem", - "enum": ["memoryItem"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "oneOf": [ + { + "$ref": "#/components/schemas/PopDatasetMeasureDefinition" }, - "attributes": { + { + "$ref": "#/components/schemas/PopDateMeasureDefinition" + } + ] + }, + "PositiveAttributeFilter": { + "required": ["positiveAttributeFilter"], + "type": "object", + "properties": { + "positiveAttributeFilter": { + "required": ["in", "label"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" + "in": { + "$ref": "#/components/schemas/AttributeFilterElements" }, - "description": { - "maxLength": 10000, + "localIdentifier": { "type": "string" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { + "applyOnResult": { "type": "boolean" }, - "strategy": { - "type": "string", - "description": "Strategy defining when the memory item should be applied", - "enum": ["ALWAYS", "AUTO"] - }, - "instruction": { - "maxLength": 255, - "type": "string", - "description": "The text that will be injected into the system prompt" - }, - "keywords": { - "type": "array", - "description": "Set of unique strings used for semantic similarity filtering", - "items": { - "type": "string" - } - }, - "isDisabled": { - "type": "boolean", - "description": "Whether memory item is disabled" + "label": { + "$ref": "#/components/schemas/AfmIdentifier" } } } }, - "description": "JSON:API representation of patching memoryItem entity." + "description": "Filter able to limit element values by label and related selected elements." }, - "JsonApiMemoryItemOutDocument": { - "required": ["data"], + "Range": { + "required": ["from", "measure", "operator", "to"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMemoryItemOut" + "operator": { + "type": "string", + "enum": ["BETWEEN", "NOT_BETWEEN"] }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "measure": { + "$ref": "#/components/schemas/LocalIdentifier" }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - } + "from": { + "$ref": "#/components/schemas/Value" + }, + "to": { + "$ref": "#/components/schemas/Value" } } }, - "JsonApiMemoryItemOut": { - "required": ["attributes", "id", "type"], + "RangeCondition": { + "required": ["range"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "memoryItem", - "enum": ["memoryItem"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "meta": { + "range": { + "required": ["from", "operator", "to"], "type": "object", "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } + "operator": { + "type": "string", + "example": "BETWEEN", + "enum": ["BETWEEN", "NOT_BETWEEN"] + }, + "from": { + "type": "number", + "example": 100 + }, + "to": { + "type": "number", + "example": 999 } } - }, - "attributes": { - "required": ["instruction", "strategy"], + } + }, + "description": "Condition that checks if the metric value is within a given range." + }, + "RangeMeasureValueFilter": { + "required": ["rangeMeasureValueFilter"], + "type": "object", + "properties": { + "rangeMeasureValueFilter": { + "required": ["from", "operator", "to", "measure"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { + "dimensionality": { "type": "array", + "description": "References to the attributes to be used when filtering.", "items": { - "type": "string" + "$ref": "#/components/schemas/AfmIdentifier" } }, - "areRelationsValid": { - "type": "boolean" - }, - "strategy": { - "type": "string", - "description": "Strategy defining when the memory item should be applied", - "enum": ["ALWAYS", "AUTO"] + "treatNullValuesAs": { + "type": "number", + "description": "A value that will be substituted for null values in the metric for the comparisons.", + "example": 0 }, - "instruction": { - "maxLength": 255, + "operator": { "type": "string", - "description": "The text that will be injected into the system prompt" + "example": "BETWEEN", + "enum": ["BETWEEN", "NOT_BETWEEN"] }, - "keywords": { - "type": "array", - "description": "Set of unique strings used for semantic similarity filtering", - "items": { - "type": "string" - } + "from": { + "type": "number", + "example": 100 }, - "isDisabled": { - "type": "boolean", - "description": "Whether memory item is disabled" + "to": { + "type": "number", + "example": 999 }, - "createdAt": { - "type": "string", - "format": "date-time" + "localIdentifier": { + "type": "string" }, - "modifiedAt": { - "type": "string", - "format": "date-time" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "createdBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } + "applyOnResult": { + "type": "boolean" }, - "modifiedBy": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" - } - } + "measure": { + "$ref": "#/components/schemas/AfmIdentifier" } } } }, - "description": "JSON:API representation of memoryItem entity." + "description": "Filter the result by comparing specified metric to given range of values." }, - "JsonApiMetricPatchDocument": { - "required": ["data"], + "RangeWrapper": { + "required": ["range"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricPatch" + "range": { + "$ref": "#/components/schemas/Range" } } }, - "JsonApiMetricPatch": { - "required": ["attributes", "id", "type"], + "RankingFilter": { + "required": ["rankingFilter"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "metric", - "enum": ["metric"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { + "rankingFilter": { + "required": ["measures", "operator", "value"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" + "dimensionality": { + "type": "array", + "description": "References to the attributes to be used when filtering.", + "items": { + "$ref": "#/components/schemas/AfmIdentifier" + } }, - "tags": { + "measures": { "type": "array", + "description": "References to the metrics to be used when filtering.", "items": { - "type": "string" + "$ref": "#/components/schemas/AfmIdentifier" } }, - "areRelationsValid": { - "type": "boolean" + "operator": { + "type": "string", + "description": "The type of ranking to use, TOP or BOTTOM.", + "enum": ["TOP", "BOTTOM"] }, - "content": { - "required": ["maql"], - "type": "object", - "properties": { - "format": { - "maxLength": 2048, - "type": "string", - "description": "Excel-like format string with optional dynamic tokens. Filter value tokens: [$FILTER:] for raw filter value passthrough. Currency tokens: [$CURRENCY:] for currency symbol, with optional forms :symbol, :narrow, :code, :name. Locale abbreviations: [$K], [$M], [$B], [$T] for locale-specific scale abbreviations. Tokens are resolved at execution time based on AFM filters and user's format locale. Single-value filters only; multi-value filters use fallback values.", - "nullable": true - }, - "maql": { - "maxLength": 10000, - "type": "string" - }, - "metricType": { - "type": "string", - "description": "Categorizes metric semantics (e.g., currency).", - "enum": ["UNSPECIFIED", "CURRENCY"] - } - } + "value": { + "type": "integer", + "description": "Number of top/bottom values to filter.", + "format": "int32", + "example": 5 }, - "isHidden": { + "localIdentifier": { + "type": "string" + }, + "applyOnResult": { "type": "boolean" } } } }, - "description": "JSON:API representation of patching metric entity." - }, - "JsonApiMetricOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiFactOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" - } - ] + "description": "Filter the result on top/bottom N values according to given metric(s)." }, - "JsonApiMetricOutDocument": { - "required": ["data"], + "RawCustomLabel": { + "required": ["title"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiMetricOutIncludes" - } + "title": { + "type": "string", + "description": "Override value." } - } + }, + "description": "Custom label object override." }, - "JsonApiUserDataFilterPatchDocument": { - "required": ["data"], + "RawCustomMetric": { + "required": ["title"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserDataFilterPatch" + "title": { + "type": "string", + "description": "Metric title override." } - } + }, + "description": "Custom metric object override." }, - "JsonApiUserDataFilterPatch": { - "required": ["attributes", "id", "type"], + "RawCustomOverride": { "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "userDataFilter", - "enum": ["userDataFilter"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { + "labels": { "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, - "maql": { - "maxLength": 10000, - "type": "string" - } - } + "additionalProperties": { + "$ref": "#/components/schemas/RawCustomLabel" + }, + "description": "Map of CustomLabels with keys used as placeholders in export result." }, - "relationships": { + "metrics": { "type": "object", - "properties": { - "user": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserToOneLinkage" - } - } - }, - "userGroup": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupToOneLinkage" - } - } - } - } + "additionalProperties": { + "$ref": "#/components/schemas/RawCustomMetric" + }, + "description": "Map of CustomMetrics with keys used as placeholders in export result." } }, - "description": "JSON:API representation of patching userDataFilter entity." - }, - "JsonApiUserGroupToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiUserGroupLinkage" - } - ] + "description": "Custom cell value overrides (IDs will be replaced with specified values)." }, - "JsonApiUserDataFilterOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiUserOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" + "RawExportAutomationRequest": { + "required": ["execution", "fileName", "format"], + "type": "object", + "properties": { + "format": { + "type": "string", + "description": "Requested resulting file type.", + "example": "CSV", + "enum": ["ARROW_FILE", "ARROW_STREAM", "CSV"] }, - { - "$ref": "#/components/schemas/JsonApiFactOutWithLinks" + "execution": { + "$ref": "#/components/schemas/AFM" }, - { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + "fileName": { + "type": "string", + "description": "Filename of downloaded file without extension.", + "example": "result" }, - { - "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" + "customOverride": { + "$ref": "#/components/schemas/RawCustomOverride" }, - { - "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" + "executionSettings": { + "$ref": "#/components/schemas/ExecutionSettings" }, - { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + "metadata": { + "$ref": "#/components/schemas/JsonNode" } - ] + }, + "description": "Export request object describing the export properties and overrides for raw exports." }, - "JsonApiUserDataFilterOutDocument": { - "required": ["data"], + "Relative": { + "required": ["measure", "operator", "threshold"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserDataFilterOut" + "operator": { + "type": "string", + "description": "Relative condition operator.\nINCREASES_BY - the metric increases by the specified value.\nDECREASES_BY - the metric decreases by the specified value.\nCHANGES_BY - the metric increases or decreases by the specified value.\n", + "enum": ["INCREASES_BY", "DECREASES_BY", "CHANGES_BY"] }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "measure": { + "$ref": "#/components/schemas/ArithmeticMeasure" }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiUserDataFilterOutIncludes" - } + "threshold": { + "$ref": "#/components/schemas/Value" } } }, - "JsonApiUserDataFilterOut": { - "required": ["attributes", "id", "type"], + "RelativeBoundedDateFilter": { + "required": ["granularity"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "userDataFilter", - "enum": ["userDataFilter"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "granularity": { "type": "string", - "description": "API identifier of an object", - "example": "id1" + "enum": [ + "ALL_TIME_GRANULARITY", + "GDC.time.year", + "GDC.time.week_us", + "GDC.time.week_in_year", + "GDC.time.week_in_quarter", + "GDC.time.week", + "GDC.time.euweek_in_year", + "GDC.time.euweek_in_quarter", + "GDC.time.quarter", + "GDC.time.quarter_in_year", + "GDC.time.month", + "GDC.time.month_in_quarter", + "GDC.time.month_in_year", + "GDC.time.day_in_year", + "GDC.time.day_in_quarter", + "GDC.time.day_in_month", + "GDC.time.day_in_week", + "GDC.time.day_in_euweek", + "GDC.time.date", + "GDC.time.hour", + "GDC.time.hour_in_day", + "GDC.time.minute", + "GDC.time.minute_in_hour", + "GDC.time.fiscal_month", + "GDC.time.fiscal_quarter", + "GDC.time.fiscal_year" + ] }, - "meta": { - "type": "object", - "properties": { - "origin": { - "required": ["originId", "originType"], - "type": "object", - "properties": { - "originType": { - "type": "string", - "description": "defines type of the origin of the entity", - "enum": ["NATIVE", "PARENT"] - }, - "originId": { - "type": "string", - "description": "defines id of the workspace where the entity comes from" - } - } - } - } + "from": { + "type": "integer", + "format": "int32" }, - "attributes": { - "required": ["maql"], + "to": { + "type": "integer", + "format": "int32" + } + } + }, + "RelativeDateFilter": { + "required": ["relativeDateFilter"], + "type": "object", + "properties": { + "relativeDateFilter": { + "required": ["from", "granularity", "to", "dataset"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" + "granularity": { + "type": "string", + "description": "Date granularity specifying particular date attribute in given dimension.", + "example": "DAY", + "enum": [ + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "MONTH", + "QUARTER", + "YEAR", + "MINUTE_OF_HOUR", + "HOUR_OF_DAY", + "DAY_OF_WEEK", + "DAY_OF_MONTH", + "DAY_OF_QUARTER", + "DAY_OF_YEAR", + "WEEK_OF_YEAR", + "MONTH_OF_YEAR", + "QUARTER_OF_YEAR", + "FISCAL_MONTH", + "FISCAL_QUARTER", + "FISCAL_YEAR" + ] }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "from": { + "type": "integer", + "description": "Start of the filtering interval. Specified by number of periods (with respect to given granularity). Typically negative (historical time interval like -2 for '2 days/weeks, ... ago').", + "format": "int32", + "example": -6 }, - "areRelationsValid": { - "type": "boolean" + "to": { + "type": "integer", + "description": "End of the filtering interval. Specified by number of periods (with respect to given granularity). Value 'O' is representing current time-interval (current day, week, ...).", + "format": "int32", + "example": 0 }, - "maql": { - "maxLength": 10000, + "localIdentifier": { "type": "string" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "user": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserToOneLinkage" - } - } - }, - "userGroup": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupToOneLinkage" - } - } - }, - "facts": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiFactToManyLinkage" - } - } - }, - "attributes": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" - } - } }, - "labels": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" - } - } + "applyOnResult": { + "type": "boolean" }, - "metrics": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" - } - } + "boundedFilter": { + "$ref": "#/components/schemas/BoundedFilter" }, - "datasets": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" - } - } + "dataset": { + "$ref": "#/components/schemas/AfmObjectIdentifierDataset" } } } }, - "description": "JSON:API representation of userDataFilter entity." + "description": "A date filter specifying a time interval that is relative to the current date. For example, last week, next month, and so on. Field dataset is representing qualifier of date dimension. The 'from' and 'to' properties mark the boundaries of the interval. If 'from' is omitted, all values earlier than 'to' are included. If 'to' is omitted, all values later than 'from' are included. It is not allowed to omit both." }, - "JsonApiVisualizationObjectPatchDocument": { - "required": ["data"], + "RelativeWrapper": { + "required": ["relative"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectPatch" + "relative": { + "$ref": "#/components/schemas/Relative" } } }, - "JsonApiVisualizationObjectPatch": { - "required": ["attributes", "id", "type"], + "Settings": { "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "visualizationObject", - "enum": ["visualizationObject"] + "exportInfo": { + "type": "boolean", + "description": "If true, the export will contain the information about the export – exported date, filters, etc. Works only with `visualizationObject`. (XLSX, PDF)", + "example": true, + "default": false }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "mergeHeaders": { + "type": "boolean", + "description": "Merge equal headers in neighbouring cells. (XLSX)", + "example": true + }, + "showFilters": { + "type": "boolean", + "description": "Print applied filters on top of the document. (PDF/HTML when visualizationObject is given)", + "example": false, + "deprecated": true + }, + "pdfPageSize": { "type": "string", - "description": "API identifier of an object", - "example": "id1" + "description": "Page size and orientation. (PDF)", + "example": "a4 landscape", + "deprecated": true }, - "attributes": { + "pdfTableStyle": { + "type": "array", + "description": "Custom CSS styles for the table. (PDF, HTML)", + "example": [ + { + "selector": "th", + "properties": [ + { + "key": "font-size", + "value": "30px" + } + ] + } + ], + "deprecated": true, + "items": { + "$ref": "#/components/schemas/PdfTableStyle" + } + }, + "pdfTopLeftContent": { + "type": "string", + "description": "Top left header content. (PDF)", + "example": "Good", + "deprecated": true + }, + "pdfTopRightContent": { + "type": "string", + "description": "Top right header content. (PDF)", + "example": "Morning", + "deprecated": true + }, + "pageSize": { + "type": "string", + "description": "Set page size. (PDF)", + "default": "A4", + "enum": ["A3", "A4", "LETTER"] + }, + "pageOrientation": { + "type": "string", + "description": "Set page orientation. (PDF)", + "default": "PORTRAIT", + "enum": ["PORTRAIT", "LANDSCAPE"] + } + }, + "description": "Additional settings." + }, + "SimpleMeasureDefinition": { + "required": ["measure"], + "type": "object", + "properties": { + "measure": { + "required": ["item"], "type": "object", "properties": { - "title": { - "maxLength": 255, - "type": "string" + "item": { + "$ref": "#/components/schemas/AfmObjectIdentifierCore" }, - "description": { - "maxLength": 10000, - "type": "string" + "aggregation": { + "type": "string", + "description": "Definition of aggregation type of the metric.", + "example": "SUM", + "enum": [ + "SUM", + "COUNT", + "AVG", + "MIN", + "MAX", + "MEDIAN", + "RUNSUM", + "APPROXIMATE_COUNT" + ] }, - "tags": { + "computeRatio": { + "type": "boolean", + "description": "If true, compute the percentage of given metric values (broken down by AFM attributes) to the total (not broken down).", + "example": true, + "default": false + }, + "filters": { "type": "array", + "description": "Metrics can be filtered by attribute filters with the same interface as ones for global AFM. Note that only one DateFilter is allowed.", "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "identifier": { - "id": "label.leaf", - "type": "label" - }, - "someBoolProp": false + "$ref": "#/components/schemas/FilterDefinitionForSimpleMeasure" } - }, - "isHidden": { - "type": "boolean" } } } }, - "description": "JSON:API representation of patching visualizationObject entity." + "description": "Metric defined by referencing a MAQL metric or an LDM fact object with aggregation." }, - "JsonApiVisualizationObjectOutDocument": { - "required": ["data"], + "SlidesExportRequest": { + "required": ["fileName", "format"], "type": "object", "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectOut" + "format": { + "type": "string", + "description": "Requested resulting file type.", + "example": "PDF", + "enum": ["PDF", "PPTX"] }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + "fileName": { + "type": "string", + "description": "File name to be used for retrieving the pdf document.", + "example": "filename" }, - "included": { + "dashboardId": { + "type": "string", + "description": "Dashboard identifier", + "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + }, + "widgetIds": { + "maxItems": 1, "uniqueItems": true, "type": "array", - "description": "Included resources", + "description": "List of widget identifiers to be exported. Note that only one widget is currently supported.", "items": { - "$ref": "#/components/schemas/JsonApiMetricOutIncludes" + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "visualizationIds": { + "maxItems": 1, + "uniqueItems": true, + "type": "array", + "description": "List of visualization ids to be exported. Note that only one visualization is currently supported.", + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "metadata": { + "$ref": "#/components/schemas/JsonNode" + }, + "templateId": { + "maxLength": 255, + "type": "string", + "description": "Export template identifier.", + "nullable": true + } + }, + "description": "Export request object describing the export properties and metadata for slides exports." + }, + "TabularExportRequest": { + "required": ["fileName", "format"], + "type": "object", + "properties": { + "format": { + "type": "string", + "description": "Expected file format.", + "example": "CSV", + "enum": ["CSV", "XLSX", "HTML", "PDF"] + }, + "executionResult": { + "type": "string", + "description": "Execution result identifier.", + "example": "ff483727196c9dc862c7fd3a5a84df55c96d61a4" + }, + "fileName": { + "type": "string", + "description": "Filename of downloaded file without extension.", + "example": "result" + }, + "settings": { + "$ref": "#/components/schemas/Settings" + }, + "customOverride": { + "$ref": "#/components/schemas/CustomOverride" + }, + "visualizationObject": { + "type": "string", + "description": "Visualization object identifier. Alternative to executionResult property.", + "example": "f7c359bc-c230-4487-b15b-ad9685bcb537" + }, + "visualizationObjectCustomFilters": { + "type": "array", + "description": "Optional custom filters (as array of IFilter objects defined in UI SDK) to be applied when visualizationObject is given. Those filters override the original filters defined in the visualization.", + "example": "[{\"negativeAttributeFilter\":{\"displayForm\":{\"identifier\":{\"id\":\"products.category\",\"type\":\"label\"}},\"notIn\":{\"values\":[\"Books\"]}}}]", + "items": { + "type": "object" } + }, + "relatedDashboardId": { + "type": "string", + "description": "Analytical dashboard identifier. Optional identifier, which informs the system that the export is related to a specific dashboard.", + "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + }, + "metadata": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "description": "Export request object describing the export properties and overrides for tabular exports." + }, + "Value": { + "required": ["value"], + "type": "object", + "properties": { + "value": { + "type": "number", + "description": "Value of the alert threshold to compare the metric to.", + "example": 1000 } } }, - "JsonApiWorkspaceDataFilterSettingPatchDocument": { + "VisibleFilter": { + "type": "object", + "properties": { + "localIdentifier": { + "type": "string" + }, + "title": { + "type": "string" + }, + "isAllTimeDateFilter": { + "type": "boolean", + "description": "Indicates if the filter is an all-time date filter. Such a filter is not included in report computation, so there is no filter with the same 'localIdentifier' to be found. In such cases, this flag is used to inform the server to not search for the filter in the definitions and include it anyways.", + "default": false + } + } + }, + "VisualExportRequest": { + "required": ["dashboardId", "fileName"], + "type": "object", + "properties": { + "fileName": { + "type": "string", + "description": "File name to be used for retrieving the pdf document.", + "example": "filename" + }, + "dashboardId": { + "type": "string", + "description": "Dashboard identifier", + "example": "761cd28b-3f57-4ac9-bbdc-1c552cc0d1d0" + }, + "metadata": { + "type": "object", + "description": "Metadata definition in free-form JSON format.", + "example": "{}" + } + }, + "description": "Export request object describing the export properties and metadata for dashboard PDF exports." + }, + "JsonApiAutomationOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiAutomationOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiAutomationResultOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingPatch" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiAutomationResultOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAutomationOutWithLinks" + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiWorkspaceDataFilterSettingPatch": { - "required": ["id", "type"], + "JsonApiAutomationResultOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "workspaceDataFilterSetting", - "enum": ["workspaceDataFilterSetting"] + "example": "automationResult", + "enum": ["automationResult"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -28144,79 +27520,78 @@ "example": "id1" }, "attributes": { + "required": ["executedAt", "status"], "type": "object", "properties": { - "title": { + "status": { + "type": "string", + "description": "Status of the last automation run.", + "enum": ["SUCCESS", "FAILED"] + }, + "executedAt": { + "type": "string", + "description": "Timestamp of the last automation run.", + "format": "date-time" + }, + "traceId": { "maxLength": 255, "type": "string" }, - "description": { + "errorMessage": { "maxLength": 10000, "type": "string" - }, - "filterValues": { - "type": "array", - "items": { - "type": "string" - } } } }, "relationships": { "type": "object", "properties": { - "workspaceDataFilter": { + "automation": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterToOneLinkage" + "$ref": "#/components/schemas/JsonApiAutomationToOneLinkage" } } } } } }, - "description": "JSON:API representation of patching workspaceDataFilterSetting entity." + "description": "JSON:API representation of automationResult entity." }, - "JsonApiWorkspaceDataFilterToOneLinkage": { + "JsonApiAutomationLinkage": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["automation"] + } + }, + "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." + }, + "JsonApiAutomationToOneLinkage": { "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", "nullable": true, "oneOf": [ { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterLinkage" + "$ref": "#/components/schemas/JsonApiAutomationLinkage" } ] }, - "JsonApiWorkspaceDataFilterSettingOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" - } - } - } - }, - "JsonApiWorkspaceDataFilterSettingOut": { + "JsonApiExportDefinitionOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "workspaceDataFilterSetting", - "enum": ["workspaceDataFilterSetting"] + "example": "exportDefinition", + "enum": ["exportDefinition"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -28255,226 +27630,208 @@ "maxLength": 10000, "type": "string" }, - "filterValues": { + "tags": { "type": "array", "items": { "type": "string" } + }, + "requestPayload": { + "type": "object", + "description": "JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. ", + "oneOf": [ + { + "$ref": "#/components/schemas/VisualExportRequest" + }, + { + "$ref": "#/components/schemas/TabularExportRequest" + } + ] + }, + "areRelationsValid": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "modifiedAt": { + "type": "string", + "format": "date-time" } } }, "relationships": { "type": "object", "properties": { - "workspaceDataFilter": { + "visualizationObject": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterToOneLinkage" + "$ref": "#/components/schemas/JsonApiVisualizationObjectToOneLinkage" } } - } - } - } - }, - "description": "JSON:API representation of workspaceDataFilterSetting entity." - }, - "JsonApiWorkspaceDataFilterPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterPatch" - } - } - }, - "JsonApiWorkspaceDataFilterPatch": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "workspaceDataFilter", - "enum": ["workspaceDataFilter"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" }, - "description": { - "maxLength": 10000, - "type": "string" + "analyticalDashboard": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" + } + } }, - "columnName": { - "maxLength": 255, - "type": "string" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "filterSettings": { + "automation": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingToManyLinkage" + "$ref": "#/components/schemas/JsonApiAutomationToOneLinkage" + } + } + }, + "createdBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } + }, + "modifiedBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" } } } } } }, - "description": "JSON:API representation of patching workspaceDataFilter entity." + "description": "JSON:API representation of exportDefinition entity." }, - "JsonApiWorkspaceDataFilterSettingOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOut" - }, + "JsonApiVisualizationObjectToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiVisualizationObjectLinkage" + } + ] + }, + "JsonApiExportDefinitionOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiExportDefinitionOut" + }, { "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, - "JsonApiWorkspaceDataFilterOutDocument": { + "JsonApiAutomationOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiNotificationChannelOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiExportDefinitionOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiUserOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAutomationResultOutWithLinks" + } + ] + }, + "JsonApiAutomationOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOut" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiAutomationOutWithLinks" + } }, "links": { - "$ref": "#/components/schemas/ObjectLinks" + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } }, "included": { "uniqueItems": true, "type": "array", "description": "Included resources", "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOutWithLinks" + "$ref": "#/components/schemas/JsonApiAutomationOutIncludes" } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiWorkspaceSettingPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceSettingPatch" + "JsonApiCustomApplicationSettingOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiCustomApplicationSettingOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiWorkspaceSettingPatch": { - "required": ["id", "type"], + "JsonApiCustomApplicationSettingOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "workspaceSetting", - "enum": ["workspaceSetting"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiCustomApplicationSettingOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} - }, - "type": { - "type": "string", - "enum": [ - "TIMEZONE", - "ACTIVE_THEME", - "ACTIVE_COLOR_PALETTE", - "ACTIVE_LLM_ENDPOINT", - "ACTIVE_CALENDARS", - "WHITE_LABELING", - "LOCALE", - "METADATA_LOCALE", - "FORMAT_LOCALE", - "MAPBOX_TOKEN", - "AG_GRID_TOKEN", - "WEEK_START", - "FISCAL_YEAR", - "SHOW_HIDDEN_CATALOG_ITEMS", - "OPERATOR_OVERRIDES", - "TIMEZONE_VALIDATION_ENABLED", - "OPENAI_CONFIG", - "ENABLE_FILE_ANALYTICS", - "ALERT", - "SEPARATORS", - "DATE_FILTER_CONFIG", - "JIT_PROVISIONING", - "JWT_JIT_PROVISIONING", - "DASHBOARD_FILTERS_APPLY_MODE", - "ENABLE_SLIDES_EXPORT", - "ENABLE_SNAPSHOT_EXPORT", - "AI_RATE_LIMIT", - "ATTACHMENT_SIZE_LIMIT", - "ATTACHMENT_LINK_TTL", - "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", - "ENABLE_DRILL_TO_URL_BY_DEFAULT", - "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", - "ENABLE_AUTOMATION_EVALUATION_MODE", - "ENABLE_ACCESSIBILITY_MODE", - "REGISTERED_PLUGGABLE_APPLICATIONS", - "DATA_LOCALE", - "LDM_DEFAULT_LOCALE", - "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", - "MAX_ZOOM_LEVEL", - "SORT_CASE_SENSITIVE", - "METRIC_FORMAT_OVERRIDE", - "ENABLE_AI_ON_DATA" - ] + "page": { + "$ref": "#/components/schemas/PageMetadata" } } } }, - "description": "JSON:API representation of patching workspaceSetting entity." - }, - "JsonApiWorkspaceSettingOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceSettingOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" - } - } + "description": "A JSON:API document with a list of resources" }, - "JsonApiWorkspaceSettingOut": { - "required": ["id", "type"], + "JsonApiCustomApplicationSettingOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "workspaceSetting", - "enum": ["workspaceSetting"] + "example": "customApplicationSetting", + "enum": ["customApplicationSetting"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -28503,247 +27860,65 @@ } }, "attributes": { + "required": ["applicationName", "content"], "type": "object", "properties": { - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} + "applicationName": { + "maxLength": 255, + "type": "string" }, - "type": { - "type": "string", - "enum": [ - "TIMEZONE", - "ACTIVE_THEME", - "ACTIVE_COLOR_PALETTE", - "ACTIVE_LLM_ENDPOINT", - "ACTIVE_CALENDARS", - "WHITE_LABELING", - "LOCALE", - "METADATA_LOCALE", - "FORMAT_LOCALE", - "MAPBOX_TOKEN", - "AG_GRID_TOKEN", - "WEEK_START", - "FISCAL_YEAR", - "SHOW_HIDDEN_CATALOG_ITEMS", - "OPERATOR_OVERRIDES", - "TIMEZONE_VALIDATION_ENABLED", - "OPENAI_CONFIG", - "ENABLE_FILE_ANALYTICS", - "ALERT", - "SEPARATORS", - "DATE_FILTER_CONFIG", - "JIT_PROVISIONING", - "JWT_JIT_PROVISIONING", - "DASHBOARD_FILTERS_APPLY_MODE", - "ENABLE_SLIDES_EXPORT", - "ENABLE_SNAPSHOT_EXPORT", - "AI_RATE_LIMIT", - "ATTACHMENT_SIZE_LIMIT", - "ATTACHMENT_LINK_TTL", - "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", - "ENABLE_DRILL_TO_URL_BY_DEFAULT", - "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", - "ENABLE_AUTOMATION_EVALUATION_MODE", - "ENABLE_ACCESSIBILITY_MODE", - "REGISTERED_PLUGGABLE_APPLICATIONS", - "DATA_LOCALE", - "LDM_DEFAULT_LOCALE", - "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", - "MAX_ZOOM_LEVEL", - "SORT_CASE_SENSITIVE", - "METRIC_FORMAT_OVERRIDE", - "ENABLE_AI_ON_DATA" - ] - } - } - } - }, - "description": "JSON:API representation of workspaceSetting entity." - }, - "JsonApiUserSettingInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserSettingIn" - } - } - }, - "JsonApiUserSettingIn": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "userSetting", - "enum": ["userSetting"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { "content": { "type": "object", "description": "Free-form JSON content. Maximum supported length is 15000 characters.", "example": {} - }, - "type": { - "type": "string", - "enum": [ - "TIMEZONE", - "ACTIVE_THEME", - "ACTIVE_COLOR_PALETTE", - "ACTIVE_LLM_ENDPOINT", - "ACTIVE_CALENDARS", - "WHITE_LABELING", - "LOCALE", - "METADATA_LOCALE", - "FORMAT_LOCALE", - "MAPBOX_TOKEN", - "AG_GRID_TOKEN", - "WEEK_START", - "FISCAL_YEAR", - "SHOW_HIDDEN_CATALOG_ITEMS", - "OPERATOR_OVERRIDES", - "TIMEZONE_VALIDATION_ENABLED", - "OPENAI_CONFIG", - "ENABLE_FILE_ANALYTICS", - "ALERT", - "SEPARATORS", - "DATE_FILTER_CONFIG", - "JIT_PROVISIONING", - "JWT_JIT_PROVISIONING", - "DASHBOARD_FILTERS_APPLY_MODE", - "ENABLE_SLIDES_EXPORT", - "ENABLE_SNAPSHOT_EXPORT", - "AI_RATE_LIMIT", - "ATTACHMENT_SIZE_LIMIT", - "ATTACHMENT_LINK_TTL", - "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", - "ENABLE_DRILL_TO_URL_BY_DEFAULT", - "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", - "ENABLE_AUTOMATION_EVALUATION_MODE", - "ENABLE_ACCESSIBILITY_MODE", - "REGISTERED_PLUGGABLE_APPLICATIONS", - "DATA_LOCALE", - "LDM_DEFAULT_LOCALE", - "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", - "MAX_ZOOM_LEVEL", - "SORT_CASE_SENSITIVE", - "METRIC_FORMAT_OVERRIDE", - "ENABLE_AI_ON_DATA" - ] } } } }, - "description": "JSON:API representation of userSetting entity." + "description": "JSON:API representation of customApplicationSetting entity." }, - "JsonApiCookieSecurityConfigurationOutDocument": { + "JsonApiDashboardPluginOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiCookieSecurityConfigurationOut" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiDashboardPluginOutWithLinks" + } }, "links": { - "$ref": "#/components/schemas/ObjectLinks" - } - } - }, - "JsonApiCookieSecurityConfigurationOut": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "cookieSecurityConfiguration", - "enum": ["cookieSecurityConfiguration"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "lastRotation": { - "type": "string", - "format": "date-time" - }, - "rotationInterval": { - "type": "string", - "description": "Length of interval between automatic rotations expressed in format of ISO 8601 duration", - "example": "P30D" + "page": { + "$ref": "#/components/schemas/PageMetadata" } } - } - }, - "description": "JSON:API representation of cookieSecurityConfiguration entity." - }, - "JsonApiIdentityProviderOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiIdentityProviderOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiOrganizationOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiUserOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiIdentityProviderOutWithLinks" - } - ] - }, - "JsonApiOrganizationOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiOrganizationOut" - }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" }, "included": { "uniqueItems": true, "type": "array", "description": "Included resources", "items": { - "$ref": "#/components/schemas/JsonApiOrganizationOutIncludes" + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiOrganizationOut": { + "JsonApiWorkspaceDataFilterOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "organization", - "enum": ["organization"] + "example": "workspaceDataFilter", + "enum": ["workspaceDataFilter"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -28754,12 +27929,19 @@ "meta": { "type": "object", "properties": { - "permissions": { - "type": "array", - "description": "List of valid permissions for a logged-in user.", - "items": { - "type": "string", - "enum": ["MANAGE", "SELF_CREATE_TOKEN"] + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } } } } @@ -28767,89 +27949,38 @@ "attributes": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "hostname": { + "title": { "maxLength": 255, "type": "string" }, - "allowedOrigins": { - "type": "array", - "items": { - "type": "string" - } + "description": { + "maxLength": 10000, + "type": "string" }, - "earlyAccess": { + "columnName": { "maxLength": 255, - "type": "string", - "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", - "nullable": true, - "deprecated": true - }, - "earlyAccessValues": { - "type": "array", - "description": "The early access feature identifiers. They are used to enable experimental features.", - "nullable": true, - "items": { - "maxLength": 255, - "type": "string" - } - }, - "cacheSettings": { - "type": "object", - "properties": { - "extraCacheBudget": { - "type": "integer", - "format": "int64" - }, - "cacheStrategy": { - "maxLength": 255, - "type": "string", - "enum": ["DURABLE", "EPHEMERAL"] - } - } + "type": "string" } } }, "relationships": { "type": "object", "properties": { - "bootstrapUser": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserToOneLinkage" - } - } - }, - "bootstrapUserGroup": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupToOneLinkage" - } - } - }, - "identityProvider": { + "filterSettings": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiIdentityProviderToOneLinkage" + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingToManyLinkage" } } } } } }, - "description": "JSON:API representation of organization entity." + "description": "JSON:API representation of workspaceDataFilter entity." }, - "JsonApiIdentityProviderLinkage": { + "JsonApiWorkspaceDataFilterSettingLinkage": { "required": ["id", "type"], "type": "object", "properties": { @@ -28858,400 +27989,270 @@ }, "type": { "type": "string", - "enum": ["identityProvider"] + "enum": ["workspaceDataFilterSetting"] } }, "description": "The \\\"type\\\" and \\\"id\\\" to non-empty members." }, - "JsonApiIdentityProviderToOneLinkage": { - "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", - "nullable": true, - "oneOf": [ + "JsonApiWorkspaceDataFilterSettingToManyLinkage": { + "type": "array", + "description": "References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingLinkage" + } + }, + "JsonApiWorkspaceDataFilterOutWithLinks": { + "allOf": [ { - "$ref": "#/components/schemas/JsonApiIdentityProviderLinkage" + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } ] }, - "JsonApiCookieSecurityConfigurationPatchDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiCookieSecurityConfigurationPatch" - } - } - }, - "JsonApiCookieSecurityConfigurationPatch": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "cookieSecurityConfiguration", - "enum": ["cookieSecurityConfiguration"] + "JsonApiDatasetOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + { + "$ref": "#/components/schemas/JsonApiFactOutWithLinks" }, - "attributes": { - "type": "object", - "properties": { - "lastRotation": { - "type": "string", - "format": "date-time" - }, - "rotationInterval": { - "type": "string", - "description": "Length of interval between automatic rotations expressed in format of ISO 8601 duration", - "example": "P30D" - } - } + { + "$ref": "#/components/schemas/JsonApiAggregatedFactOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" } - }, - "description": "JSON:API representation of patching cookieSecurityConfiguration entity." + ] }, - "JsonApiOrganizationPatchDocument": { + "JsonApiDatasetOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiOrganizationPatch" - } - } - }, - "JsonApiOrganizationPatch": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "organization", - "enum": ["organization"] + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "hostname": { - "maxLength": 255, - "type": "string" - }, - "allowedOrigins": { - "type": "array", - "items": { - "type": "string" - } - }, - "earlyAccess": { - "maxLength": 255, - "type": "string", - "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", - "nullable": true, - "deprecated": true - }, - "earlyAccessValues": { - "type": "array", - "description": "The early access feature identifiers. They are used to enable experimental features.", - "nullable": true, - "items": { - "maxLength": 255, - "type": "string" - } + "page": { + "$ref": "#/components/schemas/PageMetadata" } } }, - "relationships": { - "type": "object", - "properties": { - "identityProvider": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiIdentityProviderToOneLinkage" - } - } - } + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiDatasetOutIncludes" } } }, - "description": "JSON:API representation of patching organization entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiDataSourceIdentifierOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOut" + "JsonApiExportDefinitionOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiVisualizationObjectOutWithLinks" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAutomationOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" } - } + ] }, - "JsonApiDataSourceIdentifierOut": { - "required": ["attributes", "id", "type"], + "JsonApiExportDefinitionOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "dataSourceIdentifier", - "enum": ["dataSourceIdentifier"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiExportDefinitionOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, "meta": { "type": "object", "properties": { - "permissions": { - "type": "array", - "description": "List of valid permissions for a logged-in user.", - "items": { - "type": "string", - "enum": ["MANAGE", "USE"] - } + "page": { + "$ref": "#/components/schemas/PageMetadata" } } }, - "attributes": { - "required": ["name", "schema", "type"], - "type": "object", - "properties": { - "name": { - "maxLength": 255, - "type": "string" - }, - "schema": { - "maxLength": 255, - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "POSTGRESQL", - "REDSHIFT", - "VERTICA", - "SNOWFLAKE", - "ADS", - "BIGQUERY", - "MSSQL", - "PRESTO", - "DREMIO", - "DRILL", - "GREENPLUM", - "AZURESQL", - "SYNAPSESQL", - "DATABRICKS", - "GDSTORAGE", - "CLICKHOUSE", - "MYSQL", - "MARIADB", - "ORACLE", - "PINOT", - "SINGLESTORE", - "MOTHERDUCK", - "FLEXCONNECT", - "STARROCKS", - "ATHENA", - "MONGODB" - ] - } + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiExportDefinitionOutIncludes" } } }, - "description": "JSON:API representation of dataSourceIdentifier entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiEntitlementOutDocument": { + "JsonApiFactOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiEntitlementOut" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiFactOutWithLinks" + } }, "links": { - "$ref": "#/components/schemas/ObjectLinks" - } - } - }, - "JsonApiEntitlementOut": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "entitlement", - "enum": ["entitlement"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "value": { - "maxLength": 255, - "type": "string" - }, - "expiry": { - "type": "string", - "format": "date" + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + } } }, - "description": "JSON:API representation of entitlement entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiNotificationChannelIdentifierOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiNotificationChannelIdentifierOut" + "JsonApiFilterContextOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" } - } + ] }, - "JsonApiNotificationChannelIdentifierOut": { - "required": ["id", "type"], + "JsonApiFilterContextOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "notificationChannelIdentifier", - "enum": ["notificationChannelIdentifier"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiFilterContextOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "description": { - "maxLength": 10000, - "type": "string", - "nullable": true - }, - "destinationType": { - "type": "string", - "enum": ["WEBHOOK", "SMTP", "DEFAULT_SMTP", "IN_PLATFORM"] - }, - "allowedRecipients": { - "type": "string", - "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", - "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiFilterContextOutIncludes" + } } }, - "description": "JSON:API representation of notificationChannelIdentifier entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiUserIdentifierOutDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierOut" + "JsonApiFilterViewOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiFilterViewOut" }, - "links": { - "$ref": "#/components/schemas/ObjectLinks" + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiCookieSecurityConfigurationInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiCookieSecurityConfigurationIn" + "JsonApiFilterViewOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiUserOutWithLinks" } - } + ] }, - "JsonApiCookieSecurityConfigurationIn": { - "required": ["id", "type"], + "JsonApiFilterViewOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "cookieSecurityConfiguration", - "enum": ["cookieSecurityConfiguration"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiFilterViewOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "lastRotation": { - "type": "string", - "format": "date-time" - }, - "rotationInterval": { - "type": "string", - "description": "Length of interval between automatic rotations expressed in format of ISO 8601 duration", - "example": "P30D" + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiFilterViewOutIncludes" + } } }, - "description": "JSON:API representation of cookieSecurityConfiguration entity." - }, - "JsonApiOrganizationInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiOrganizationIn" - } - } + "description": "A JSON:API document with a list of resources" }, - "JsonApiOrganizationIn": { - "required": ["id", "type"], + "JsonApiFilterViewOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "organization", - "enum": ["organization"] + "example": "filterView", + "enum": ["filterView"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -29260,159 +28261,124 @@ "example": "id1" }, "attributes": { + "required": ["content", "title"], "type": "object", "properties": { - "name": { + "title": { "maxLength": 255, - "type": "string", - "nullable": true + "type": "string" }, - "hostname": { - "maxLength": 255, + "description": { + "maxLength": 10000, "type": "string" }, - "allowedOrigins": { + "tags": { "type": "array", "items": { "type": "string" } }, - "earlyAccess": { - "maxLength": 255, - "type": "string", - "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", - "nullable": true, - "deprecated": true + "areRelationsValid": { + "type": "boolean" }, - "earlyAccessValues": { - "type": "array", - "description": "The early access feature identifiers. They are used to enable experimental features.", - "nullable": true, - "items": { - "maxLength": 255, - "type": "string" - } + "isDefault": { + "type": "boolean", + "description": "Indicator whether the filter view should by applied by default." + }, + "content": { + "type": "object", + "description": "The respective filter context." } } }, "relationships": { "type": "object", "properties": { - "identityProvider": { + "analyticalDashboard": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiIdentityProviderToOneLinkage" + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" + } + } + }, + "user": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserToOneLinkage" } } } } } }, - "description": "JSON:API representation of organization entity." + "description": "JSON:API representation of filterView entity." }, - "JsonApiColorPaletteInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiColorPaletteIn" + "JsonApiKnowledgeRecommendationOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - } + ] }, - "JsonApiColorPaletteIn": { - "required": ["attributes", "id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "colorPalette", - "enum": ["colorPalette"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "JsonApiKnowledgeRecommendationOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" }, - "attributes": { - "required": ["content", "name"], - "type": "object", - "properties": { - "name": { - "maxLength": 255, - "type": "string" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} - } - } + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" } - }, - "description": "JSON:API representation of colorPalette entity." + ] }, - "JsonApiCspDirectiveInDocument": { + "JsonApiKnowledgeRecommendationOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiCspDirectiveIn" - } - } - }, - "JsonApiCspDirectiveIn": { - "required": ["attributes", "id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "cspDirective", - "enum": ["cspDirective"] + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { - "required": ["sources"], + "meta": { "type": "object", "properties": { - "sources": { - "type": "array", - "items": { - "type": "string" - } + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOutIncludes" + } } }, - "description": "JSON:API representation of cspDirective entity." - }, - "JsonApiDataSourceInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiDataSourceIn" - } - } + "description": "A JSON:API document with a list of resources" }, - "JsonApiDataSourceIn": { + "JsonApiKnowledgeRecommendationOut": { "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "dataSource", - "enum": ["dataSource"] + "example": "knowledgeRecommendation", + "enum": ["knowledgeRecommendation"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -29420,243 +28386,246 @@ "description": "API identifier of an object", "example": "id1" }, + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } + }, "attributes": { - "required": ["name", "schema", "type"], + "required": ["comparisonType", "direction", "title"], "type": "object", "properties": { - "name": { + "title": { "maxLength": 255, "type": "string", - "description": "User-facing name of the data source." + "description": "Human-readable title for the recommendation, e.g. 'Revenue decreased vs last month'" }, - "type": { + "description": { + "maxLength": 10000, "type": "string", - "description": "Type of the database providing the data for the data source.", - "enum": [ - "POSTGRESQL", - "REDSHIFT", - "VERTICA", - "SNOWFLAKE", - "ADS", - "BIGQUERY", - "MSSQL", - "PRESTO", - "DREMIO", - "DRILL", - "GREENPLUM", - "AZURESQL", - "SYNAPSESQL", - "DATABRICKS", - "GDSTORAGE", - "CLICKHOUSE", - "MYSQL", - "MARIADB", - "ORACLE", - "PINOT", - "SINGLESTORE", - "MOTHERDUCK", - "FLEXCONNECT", - "STARROCKS", - "ATHENA", - "MONGODB" - ] + "description": "Description of the recommendation" }, - "url": { - "maxLength": 255, - "type": "string", - "description": "The URL of the database providing the data for the data source.", - "nullable": true + "tags": { + "type": "array", + "items": { + "type": "string" + } }, - "schema": { - "maxLength": 255, - "type": "string", - "description": "The schema to use as the root of the data for the data source." + "areRelationsValid": { + "type": "boolean" }, - "username": { + "metricTitle": { "maxLength": 255, "type": "string", - "description": "The username to use to connect to the database providing the data for the data source.", - "nullable": true + "description": "Human-readable title of the metric (denormalized for display)", + "example": "Revenue" }, - "password": { - "maxLength": 255, + "direction": { "type": "string", - "description": "The password to use to connect to the database providing the data for the data source.", - "nullable": true + "description": "Direction of the metric change", + "example": "DECREASED", + "enum": ["INCREASED", "DECREASED"] }, - "privateKey": { - "maxLength": 15000, + "comparisonType": { "type": "string", - "description": "The private key to use to connect to the database providing the data for the data source.", - "nullable": true + "description": "Time period for comparison", + "example": "MONTH", + "enum": ["MONTH", "QUARTER", "YEAR"] }, - "privateKeyPassphrase": { + "widgetId": { "maxLength": 255, "type": "string", - "description": "The passphrase used to encrypt the private key.", - "nullable": true + "description": "ID of the widget where the anomaly was detected", + "example": "widget-123" }, - "token": { - "maxLength": 10000, + "widgetName": { + "maxLength": 255, "type": "string", - "description": "The token to use to connect to the database providing the data for the data source (for example a BigQuery Service Account).", - "nullable": true + "description": "Name of the widget where the anomaly was detected", + "example": "Revenue Trend" }, - "clientId": { + "confidence": { + "description": "Confidence score (0.0 to 1.0)", + "example": 0.62 + }, + "recommendations": { + "type": "object", + "description": "Structured recommendations data as JSON", + "example": "{\"summary\": \"...\", \"recommendations\": [...], \"key_metrics\": [...]}" + }, + "sourceCount": { + "type": "integer", + "description": "Number of source documents used for generation", + "format": "int32", + "example": 2 + }, + "referencePeriod": { "maxLength": 255, "type": "string", - "description": "The client id to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", - "nullable": true + "description": "Reference time period for comparison (e.g., '2023-06' or 'Jun 2023')", + "example": "2023-06" }, - "clientSecret": { + "analyzedPeriod": { "maxLength": 255, "type": "string", - "description": "The client secret to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", - "nullable": true + "description": "Analyzed time period (e.g., '2023-07' or 'July 2023')", + "example": "2023-07" }, - "parameters": { - "type": "array", - "description": "Additional parameters to be used when connecting to the database providing the data for the data source.", - "nullable": true, - "items": { - "required": ["name", "value"], - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } + "referenceValue": { + "description": "Metric value in the reference period", + "example": 2400000000 }, - "cacheStrategy": { + "analyzedValue": { + "description": "Metric value in the analyzed period (the observed value that triggered the anomaly)", + "example": 2600000000 + }, + "analyticalDashboardTitle": { + "maxLength": 255, "type": "string", - "description": "Determines how the results coming from a particular datasource should be cached.", - "nullable": true, - "enum": ["ALWAYS", "NEVER"] + "description": "Human-readable title of the analytical dashboard (denormalized for display)", + "example": "Portfolio Health Insights" }, - "alternativeDataSourceId": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "createdAt": { "type": "string", - "description": "Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", - "nullable": true, - "example": "pg_local_docker-demo2" + "format": "date-time" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "metric": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricToOneLinkage" + } + } + }, + "analyticalDashboard": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" + } + } } } } }, - "description": "JSON:API representation of dataSource entity." + "description": "JSON:API representation of knowledgeRecommendation entity." }, - "JsonApiExportTemplatePostOptionalIdDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiExportTemplatePostOptionalId" + "JsonApiMetricToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiMetricLinkage" } - } + ] }, - "JsonApiExportTemplatePostOptionalId": { - "required": ["attributes", "type"], + "JsonApiLabelOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "exportTemplate", - "enum": ["exportTemplate"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { - "required": ["name"], + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string", - "description": "User-facing name of the Slides template." - }, - "dashboardSlidesTemplate": { - "required": ["appliedOn"], - "type": "object", - "properties": { - "appliedOn": { - "minItems": 1, - "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], - "items": { - "type": "string", - "enum": ["PDF", "PPTX"] - } - }, - "coverSlide": { - "$ref": "#/components/schemas/CoverSlideTemplate" - }, - "introSlide": { - "$ref": "#/components/schemas/IntroSlideTemplate" - }, - "sectionSlide": { - "$ref": "#/components/schemas/SectionSlideTemplate" - }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" - } - }, - "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true - }, - "widgetSlidesTemplate": { - "required": ["appliedOn"], - "type": "object", - "properties": { - "appliedOn": { - "minItems": 1, - "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], - "items": { - "type": "string", - "enum": ["PDF", "PPTX"] - } - }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" - } - }, - "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + } } }, - "description": "JSON:API representation of exportTemplate entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiIdentityProviderInDocument": { + "JsonApiMemoryItemOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiMemoryItemOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiMemoryItemOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiIdentityProviderIn" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiMemoryItemOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiIdentityProviderIn": { - "required": ["id", "type"], + "JsonApiMemoryItemOut": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "identityProvider", - "enum": ["identityProvider"] + "example": "memoryItem", + "enum": ["memoryItem"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -29664,149 +28633,236 @@ "description": "API identifier of an object", "example": "id1" }, + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } + }, "attributes": { + "required": ["instruction", "strategy"], "type": "object", "properties": { - "identifiers": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { "type": "array", - "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", - "example": ["gooddata.com"], "items": { "type": "string" } }, - "customClaimMapping": { - "maxLength": 10000, - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute." + "areRelationsValid": { + "type": "boolean" }, - "samlMetadata": { - "maxLength": 15000, + "strategy": { "type": "string", - "description": "Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP." + "description": "Strategy defining when the memory item should be applied", + "enum": ["ALWAYS", "AUTO"] }, - "oauthClientId": { + "instruction": { "maxLength": 255, "type": "string", - "description": "The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP." + "description": "The text that will be injected into the system prompt" }, - "oauthClientSecret": { - "maxLength": 255, - "type": "string", - "description": "The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP." + "keywords": { + "type": "array", + "description": "Set of unique strings used for semantic similarity filtering", + "items": { + "type": "string" + } }, - "oauthIssuerLocation": { - "maxLength": 255, - "type": "string", - "description": "The location of your OIDC provider. This field is mandatory for OIDC IdP." + "isDisabled": { + "type": "boolean", + "description": "Whether memory item is disabled" }, - "oauthIssuerId": { - "maxLength": 255, + "createdAt": { "type": "string", - "description": "Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", - "example": "myOidcProvider" + "format": "date-time" }, - "oauthSubjectIdClaim": { - "maxLength": 255, + "modifiedAt": { "type": "string", - "description": "Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", - "example": "oid" - }, - "oauthCustomAuthAttributes": { - "maxLength": 10000, + "format": "date-time" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "createdBy": { + "required": ["data"], "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." - }, - "oauthCustomScopes": { - "type": "array", - "description": "List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", - "nullable": true, - "items": { - "maxLength": 255, - "type": "string" + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } } }, - "idpType": { - "type": "string", - "description": "Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", - "enum": ["MANAGED_IDP", "FIM_IDP", "DEX_IDP", "CUSTOM_IDP"] + "modifiedBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } } } } }, - "description": "JSON:API representation of identityProvider entity." + "description": "JSON:API representation of memoryItem entity." }, - "JsonApiJwkInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiJwkIn" + "JsonApiMetricOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiFactOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" } - } + ] }, - "JsonApiJwkIn": { - "required": ["id", "type"], + "JsonApiMetricOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "jwk", - "enum": ["jwk"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "content": { - "type": "object", - "description": "Specification of the cryptographic key", - "example": { - "kyt": "RSA", - "alg": "RS256", - "use": "sig" - }, - "oneOf": [ - { - "$ref": "#/components/schemas/RsaSpecification" - } - ] + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiMetricOutIncludes" + } } }, - "description": "JSON:API representation of jwk entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiLlmEndpointInDocument": { + "JsonApiUserDataFilterOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiUserDataFilterOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiUserDataFilterOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiUserOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiFactOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + } + ] + }, + "JsonApiUserDataFilterOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiLlmEndpointIn" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiUserDataFilterOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserDataFilterOutIncludes" + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiLlmEndpointIn": { + "JsonApiUserDataFilterOut": { "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "llmEndpoint", - "enum": ["llmEndpoint"] + "example": "userDataFilter", + "enum": ["userDataFilter"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -29814,150 +28870,209 @@ "description": "API identifier of an object", "example": "id1" }, + "meta": { + "type": "object", + "properties": { + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } + }, "attributes": { - "required": ["title", "token"], + "required": ["maql"], "type": "object", "properties": { "title": { "maxLength": 255, - "type": "string", - "description": "User-facing title of the LLM Provider." + "type": "string" }, - "provider": { - "type": "string", - "description": "LLM Provider.", - "enum": ["OPENAI", "AZURE_OPENAI"] + "description": { + "maxLength": 10000, + "type": "string" }, - "baseUrl": { - "maxLength": 255, - "type": "string", - "description": "Custom LLM endpoint.", - "nullable": true + "tags": { + "type": "array", + "items": { + "type": "string" + } }, - "token": { + "areRelationsValid": { + "type": "boolean" + }, + "maql": { "maxLength": 10000, - "type": "string", - "description": "The token to use to connect to the LLM provider." + "type": "string" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "user": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserToOneLinkage" + } + } }, - "llmOrganization": { - "maxLength": 255, - "type": "string", - "description": "Organization in LLM provider.", - "nullable": true + "userGroup": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserGroupToOneLinkage" + } + } }, - "llmModel": { - "maxLength": 255, - "type": "string", - "description": "LLM Model. We provide a default model for each provider, but you can override it here." + "facts": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFactToManyLinkage" + } + } + }, + "attributes": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAttributeToManyLinkage" + } + } + }, + "labels": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToManyLinkage" + } + } + }, + "metrics": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricToManyLinkage" + } + } + }, + "datasets": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetToManyLinkage" + } + } } } } }, - "description": "JSON:API representation of llmEndpoint entity." + "description": "JSON:API representation of userDataFilter entity." }, - "JsonApiNotificationChannelPostOptionalIdDocument": { + "JsonApiVisualizationObjectOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiNotificationChannelPostOptionalId" - } - } - }, - "JsonApiNotificationChannelPostOptionalId": { - "required": ["type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "notificationChannel", - "enum": ["notificationChannel"] + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiVisualizationObjectOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "description": { - "maxLength": 10000, - "type": "string", - "nullable": true - }, - "destination": { - "description": "The destination where the notifications are to be sent.", - "oneOf": [ - { - "$ref": "#/components/schemas/DefaultSmtp" - }, - { - "$ref": "#/components/schemas/InPlatform" - }, - { - "$ref": "#/components/schemas/Smtp" - }, - { - "$ref": "#/components/schemas/Webhook" - } - ] - }, - "customDashboardUrl": { - "maxLength": 255, - "type": "string", - "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" - }, - "dashboardLinkVisibility": { - "type": "string", - "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", - "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] - }, - "notificationSource": { - "maxLength": 10000, - "type": "string", - "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" - }, - "allowedRecipients": { - "type": "string", - "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", - "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] - }, - "inPlatformNotification": { - "type": "string", - "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", - "enum": ["DISABLED", "ENABLED"] + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiMetricOutIncludes" + } } }, - "description": "JSON:API representation of notificationChannel entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiOrganizationSettingInDocument": { + "JsonApiWorkspaceDataFilterSettingOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiWorkspaceDataFilterSettingOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiOrganizationSettingIn" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiOrganizationSettingIn": { + "JsonApiWorkspaceDataFilterSettingOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "organizationSetting", - "enum": ["organizationSetting"] + "example": "workspaceDataFilterSetting", + "enum": ["workspaceDataFilterSetting"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -29965,127 +29080,148 @@ "description": "API identifier of an object", "example": "id1" }, - "attributes": { + "meta": { "type": "object", "properties": { - "content": { + "origin": { + "required": ["originId", "originType"], "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } + } + } + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" }, - "type": { - "type": "string", - "enum": [ - "TIMEZONE", - "ACTIVE_THEME", - "ACTIVE_COLOR_PALETTE", - "ACTIVE_LLM_ENDPOINT", - "ACTIVE_CALENDARS", - "WHITE_LABELING", - "LOCALE", - "METADATA_LOCALE", - "FORMAT_LOCALE", - "MAPBOX_TOKEN", - "AG_GRID_TOKEN", - "WEEK_START", - "FISCAL_YEAR", - "SHOW_HIDDEN_CATALOG_ITEMS", - "OPERATOR_OVERRIDES", - "TIMEZONE_VALIDATION_ENABLED", - "OPENAI_CONFIG", - "ENABLE_FILE_ANALYTICS", - "ALERT", - "SEPARATORS", - "DATE_FILTER_CONFIG", - "JIT_PROVISIONING", - "JWT_JIT_PROVISIONING", - "DASHBOARD_FILTERS_APPLY_MODE", - "ENABLE_SLIDES_EXPORT", - "ENABLE_SNAPSHOT_EXPORT", - "AI_RATE_LIMIT", - "ATTACHMENT_SIZE_LIMIT", - "ATTACHMENT_LINK_TTL", - "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", - "ENABLE_DRILL_TO_URL_BY_DEFAULT", - "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", - "ENABLE_AUTOMATION_EVALUATION_MODE", - "ENABLE_ACCESSIBILITY_MODE", - "REGISTERED_PLUGGABLE_APPLICATIONS", - "DATA_LOCALE", - "LDM_DEFAULT_LOCALE", - "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", - "MAX_ZOOM_LEVEL", - "SORT_CASE_SENSITIVE", - "METRIC_FORMAT_OVERRIDE", - "ENABLE_AI_ON_DATA" - ] + "description": { + "maxLength": 10000, + "type": "string" + }, + "filterValues": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "relationships": { + "type": "object", + "properties": { + "workspaceDataFilter": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterToOneLinkage" + } + } } } } }, - "description": "JSON:API representation of organizationSetting entity." + "description": "JSON:API representation of workspaceDataFilterSetting entity." }, - "JsonApiThemeInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiThemeIn" + "JsonApiWorkspaceDataFilterToOneLinkage": { + "description": "References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterLinkage" } - } + ] }, - "JsonApiThemeIn": { - "required": ["attributes", "id", "type"], + "JsonApiWorkspaceDataFilterOutList": { + "required": ["data"], "type": "object", "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "theme", - "enum": ["theme"] + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" + } }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ListLinks" }, - "attributes": { - "required": ["content", "name"], + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": {} + "page": { + "$ref": "#/components/schemas/PageMetadata" } } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOutWithLinks" + } } }, - "description": "JSON:API representation of theme entity." + "description": "A JSON:API document with a list of resources" }, - "JsonApiUserGroupInDocument": { + "JsonApiWorkspaceSettingOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiWorkspaceSettingOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiWorkspaceSettingOutList": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserGroupIn" + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceSettingOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } } - } + }, + "description": "A JSON:API document with a list of resources" }, - "JsonApiUserGroupIn": { + "JsonApiWorkspaceSettingOut": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "userGroup", - "enum": ["userGroup"] + "example": "workspaceSetting", + "enum": ["workspaceSetting"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -30093,50 +29229,104 @@ "description": "API identifier of an object", "example": "id1" }, - "attributes": { + "meta": { "type": "object", "properties": { - "name": { - "maxLength": 255, - "type": "string" + "origin": { + "required": ["originId", "originType"], + "type": "object", + "properties": { + "originType": { + "type": "string", + "description": "defines type of the origin of the entity", + "enum": ["NATIVE", "PARENT"] + }, + "originId": { + "type": "string", + "description": "defines id of the workspace where the entity comes from" + } + } } } }, - "relationships": { + "attributes": { "type": "object", "properties": { - "parents": { - "required": ["data"], + "content": { "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" - } - } + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} + }, + "type": { + "type": "string", + "enum": [ + "TIMEZONE", + "ACTIVE_THEME", + "ACTIVE_COLOR_PALETTE", + "ACTIVE_LLM_ENDPOINT", + "ACTIVE_CALENDARS", + "WHITE_LABELING", + "LOCALE", + "METADATA_LOCALE", + "FORMAT_LOCALE", + "MAPBOX_TOKEN", + "AG_GRID_TOKEN", + "WEEK_START", + "FISCAL_YEAR", + "SHOW_HIDDEN_CATALOG_ITEMS", + "OPERATOR_OVERRIDES", + "TIMEZONE_VALIDATION_ENABLED", + "OPENAI_CONFIG", + "ENABLE_FILE_ANALYTICS", + "ALERT", + "SEPARATORS", + "DATE_FILTER_CONFIG", + "JIT_PROVISIONING", + "JWT_JIT_PROVISIONING", + "DASHBOARD_FILTERS_APPLY_MODE", + "ENABLE_SLIDES_EXPORT", + "ENABLE_SNAPSHOT_EXPORT", + "AI_RATE_LIMIT", + "ATTACHMENT_SIZE_LIMIT", + "ATTACHMENT_LINK_TTL", + "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", + "ENABLE_DRILL_TO_URL_BY_DEFAULT", + "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", + "ENABLE_AUTOMATION_EVALUATION_MODE", + "ENABLE_ACCESSIBILITY_MODE", + "REGISTERED_PLUGGABLE_APPLICATIONS", + "DATA_LOCALE", + "LDM_DEFAULT_LOCALE", + "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", + "MAX_ZOOM_LEVEL", + "SORT_CASE_SENSITIVE", + "METRIC_FORMAT_OVERRIDE", + "ENABLE_AI_ON_DATA" + ] } } } }, - "description": "JSON:API representation of userGroup entity." + "description": "JSON:API representation of workspaceSetting entity." }, - "JsonApiUserInDocument": { + "JsonApiAnalyticalDashboardInDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserIn" + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardIn" } } }, - "JsonApiUserIn": { - "required": ["id", "type"], + "JsonApiAnalyticalDashboardIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "user", - "enum": ["user"] + "example": "analyticalDashboard", + "enum": ["analyticalDashboard"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -30145,61 +29335,80 @@ "example": "id1" }, "attributes": { + "required": ["content"], "type": "object", "properties": { - "authenticationId": { + "title": { "maxLength": 255, "type": "string" }, - "firstname": { - "maxLength": 255, + "description": { + "maxLength": 10000, "type": "string" }, - "lastname": { - "maxLength": 255, - "type": "string" + "tags": { + "type": "array", + "items": { + "type": "string" + } }, - "email": { - "maxLength": 255, - "type": "string" - } - } - }, - "relationships": { - "type": "object", - "properties": { - "userGroups": { - "required": ["data"], + "areRelationsValid": { + "type": "boolean" + }, + "content": { "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" - } + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "identifier": { + "id": "label.leaf", + "type": "label" + }, + "someBoolProp": false } } } } }, - "description": "JSON:API representation of user entity." + "description": "JSON:API representation of analyticalDashboard entity." }, - "JsonApiWorkspaceInDocument": { + "JsonApiAnalyticalDashboardOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceIn" + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutIncludes" + } } } }, - "JsonApiWorkspaceIn": { + "JsonApiAttributeHierarchyInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyIn" + } + } + }, + "JsonApiAttributeHierarchyIn": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "workspace", - "enum": ["workspace"] + "example": "attributeHierarchy", + "enum": ["attributeHierarchy"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -30210,191 +29419,86 @@ "attributes": { "type": "object", "properties": { - "name": { + "title": { "maxLength": 255, - "type": "string", - "nullable": true + "type": "string" }, - "earlyAccess": { - "maxLength": 255, - "type": "string", - "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", - "nullable": true, - "deprecated": true + "description": { + "maxLength": 10000, + "type": "string" }, - "earlyAccessValues": { + "tags": { "type": "array", - "description": "The early access feature identifiers. They are used to enable experimental features.", - "nullable": true, "items": { - "maxLength": 255, "type": "string" } }, - "description": { - "maxLength": 255, - "type": "string", - "nullable": true - }, - "prefix": { - "maxLength": 255, - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Custom prefix of entity identifiers in workspace", - "nullable": true - }, - "cacheExtraLimit": { - "type": "integer", - "format": "int64" + "areRelationsValid": { + "type": "boolean" }, - "dataSource": { - "required": ["id"], + "content": { "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the used data source.", - "example": "snowflake.instance.1" - }, - "schemaPath": { - "type": "array", - "description": "The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", - "items": { - "type": "string", - "description": "The part of the schema path.", - "example": "subPath" + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": { + "attributes": [ + { + "identifier": { + "type": "attribute", + "id": "country" + } + }, + { + "identifier": { + "type": "attribute", + "id": "city" + } } - } - }, - "description": "The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace." - } - } - }, - "relationships": { - "type": "object", - "properties": { - "parent": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceToOneLinkage" - } + ] } } } } }, - "description": "JSON:API representation of workspace entity." + "description": "JSON:API representation of attributeHierarchy entity." }, - "JsonApiExportTemplateInDocument": { + "JsonApiAttributeHierarchyOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiExportTemplateIn" - } - } - }, - "JsonApiExportTemplateIn": { - "required": ["attributes", "id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "exportTemplate", - "enum": ["exportTemplate"] + "$ref": "#/components/schemas/JsonApiAttributeHierarchyOut" }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" + "links": { + "$ref": "#/components/schemas/ObjectLinks" }, - "attributes": { - "required": ["name"], - "type": "object", - "properties": { - "name": { - "maxLength": 255, - "type": "string", - "description": "User-facing name of the Slides template." - }, - "dashboardSlidesTemplate": { - "required": ["appliedOn"], - "type": "object", - "properties": { - "appliedOn": { - "minItems": 1, - "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], - "items": { - "type": "string", - "enum": ["PDF", "PPTX"] - } - }, - "coverSlide": { - "$ref": "#/components/schemas/CoverSlideTemplate" - }, - "introSlide": { - "$ref": "#/components/schemas/IntroSlideTemplate" - }, - "sectionSlide": { - "$ref": "#/components/schemas/SectionSlideTemplate" - }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" - } - }, - "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true - }, - "widgetSlidesTemplate": { - "required": ["appliedOn"], - "type": "object", - "properties": { - "appliedOn": { - "minItems": 1, - "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], - "items": { - "type": "string", - "enum": ["PDF", "PPTX"] - } - }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" - } - }, - "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true - } + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutIncludes" } } - }, - "description": "JSON:API representation of exportTemplate entity." + } }, - "JsonApiNotificationChannelInDocument": { + "JsonApiAutomationInDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiNotificationChannelIn" + "$ref": "#/components/schemas/JsonApiAutomationIn" } } }, - "JsonApiNotificationChannelIn": { + "JsonApiAutomationIn": { "required": ["id", "type"], "type": "object", "properties": { "type": { "type": "string", "description": "Object type", - "example": "notificationChannel", - "enum": ["notificationChannel"] + "example": "automation", + "enum": ["automation"] }, "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", @@ -30405,230 +29509,13 @@ "attributes": { "type": "object", "properties": { - "name": { + "title": { "maxLength": 255, - "type": "string", - "nullable": true + "type": "string" }, "description": { "maxLength": 10000, - "type": "string", - "nullable": true - }, - "destination": { - "description": "The destination where the notifications are to be sent.", - "oneOf": [ - { - "$ref": "#/components/schemas/DefaultSmtp" - }, - { - "$ref": "#/components/schemas/InPlatform" - }, - { - "$ref": "#/components/schemas/Smtp" - }, - { - "$ref": "#/components/schemas/Webhook" - } - ] - }, - "customDashboardUrl": { - "maxLength": 255, - "type": "string", - "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" - }, - "dashboardLinkVisibility": { - "type": "string", - "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", - "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] - }, - "notificationSource": { - "maxLength": 10000, - "type": "string", - "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" - }, - "allowedRecipients": { - "type": "string", - "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", - "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] - }, - "inPlatformNotification": { - "type": "string", - "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", - "enum": ["DISABLED", "ENABLED"] - } - } - } - }, - "description": "JSON:API representation of notificationChannel entity." - }, - "JsonApiAnalyticalDashboardPostOptionalIdDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardPostOptionalId" - } - } - }, - "JsonApiAnalyticalDashboardPostOptionalId": { - "required": ["attributes", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "analyticalDashboard", - "enum": ["analyticalDashboard"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "required": ["content"], - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 250000 characters.", - "example": { - "identifier": { - "id": "label.leaf", - "type": "label" - }, - "someBoolProp": false - } - } - } - } - }, - "description": "JSON:API representation of analyticalDashboard entity." - }, - "JsonApiAttributeHierarchyInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyIn" - } - } - }, - "JsonApiAttributeHierarchyIn": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "attributeHierarchy", - "enum": ["attributeHierarchy"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "areRelationsValid": { - "type": "boolean" - }, - "content": { - "type": "object", - "description": "Free-form JSON content. Maximum supported length is 15000 characters.", - "example": { - "attributes": [ - { - "identifier": { - "type": "attribute", - "id": "country" - } - }, - { - "identifier": { - "type": "attribute", - "id": "city" - } - } - ] - } - } - } - } - }, - "description": "JSON:API representation of attributeHierarchy entity." - }, - "JsonApiAutomationInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiAutomationIn" - } - } - }, - "JsonApiAutomationIn": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "automation", - "enum": ["automation"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { - "type": "object", - "properties": { - "title": { - "maxLength": 255, - "type": "string" - }, - "description": { - "maxLength": 10000, - "type": "string" + "type": "string" }, "tags": { "type": "array", @@ -30852,17 +29739,37 @@ }, "description": "JSON:API representation of automation entity." }, - "JsonApiCustomApplicationSettingPostOptionalIdDocument": { + "JsonApiAutomationOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiCustomApplicationSettingPostOptionalId" + "$ref": "#/components/schemas/JsonApiAutomationOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAutomationOutIncludes" + } } } }, - "JsonApiCustomApplicationSettingPostOptionalId": { - "required": ["attributes", "type"], + "JsonApiCustomApplicationSettingInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCustomApplicationSettingIn" + } + } + }, + "JsonApiCustomApplicationSettingIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { @@ -30895,17 +29802,29 @@ }, "description": "JSON:API representation of customApplicationSetting entity." }, - "JsonApiDashboardPluginPostOptionalIdDocument": { + "JsonApiCustomApplicationSettingOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiDashboardPluginPostOptionalId" + "$ref": "#/components/schemas/JsonApiCustomApplicationSettingOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" } } }, - "JsonApiDashboardPluginPostOptionalId": { - "required": ["type"], + "JsonApiDashboardPluginInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDashboardPluginIn" + } + } + }, + "JsonApiDashboardPluginIn": { + "required": ["id", "type"], "type": "object", "properties": { "type": { @@ -30952,17 +29871,37 @@ }, "description": "JSON:API representation of dashboardPlugin entity." }, - "JsonApiExportDefinitionPostOptionalIdDocument": { + "JsonApiDashboardPluginOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiExportDefinitionPostOptionalId" + "$ref": "#/components/schemas/JsonApiDashboardPluginOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + } } } }, - "JsonApiExportDefinitionPostOptionalId": { - "required": ["type"], + "JsonApiExportDefinitionInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiExportDefinitionIn" + } + } + }, + "JsonApiExportDefinitionIn": { + "required": ["id", "type"], "type": "object", "properties": { "type": { @@ -31037,17 +29976,37 @@ }, "description": "JSON:API representation of exportDefinition entity." }, - "JsonApiFilterContextPostOptionalIdDocument": { + "JsonApiExportDefinitionOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiFilterContextPostOptionalId" + "$ref": "#/components/schemas/JsonApiExportDefinitionOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiExportDefinitionOutIncludes" + } } } }, - "JsonApiFilterContextPostOptionalId": { - "required": ["attributes", "type"], + "JsonApiFilterContextInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFilterContextIn" + } + } + }, + "JsonApiFilterContextIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { @@ -31099,6 +30058,26 @@ }, "description": "JSON:API representation of filterContext entity." }, + "JsonApiFilterContextOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFilterContextOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiFilterContextOutIncludes" + } + } + } + }, "JsonApiFilterViewInDocument": { "required": ["data"], "type": "object", @@ -31181,17 +30160,37 @@ }, "description": "JSON:API representation of filterView entity." }, - "JsonApiKnowledgeRecommendationPostOptionalIdDocument": { + "JsonApiFilterViewOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationPostOptionalId" + "$ref": "#/components/schemas/JsonApiFilterViewOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiFilterViewOutIncludes" + } } } }, - "JsonApiKnowledgeRecommendationPostOptionalId": { - "required": ["attributes", "relationships", "type"], + "JsonApiKnowledgeRecommendationInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationIn" + } + } + }, + "JsonApiKnowledgeRecommendationIn": { + "required": ["attributes", "id", "relationships", "type"], "type": "object", "properties": { "type": { @@ -31273,6 +30272,32 @@ "description": "Number of source documents used for generation", "format": "int32", "example": 2 + }, + "referencePeriod": { + "maxLength": 255, + "type": "string", + "description": "Reference time period for comparison (e.g., '2023-06' or 'Jun 2023')", + "example": "2023-06" + }, + "analyzedPeriod": { + "maxLength": 255, + "type": "string", + "description": "Analyzed time period (e.g., '2023-07' or 'July 2023')", + "example": "2023-07" + }, + "referenceValue": { + "description": "Metric value in the reference period", + "example": 2400000000 + }, + "analyzedValue": { + "description": "Metric value in the analyzed period (the observed value that triggered the anomaly)", + "example": 2600000000 + }, + "analyticalDashboardTitle": { + "maxLength": 255, + "type": "string", + "description": "Human-readable title of the analytical dashboard (denormalized for display)", + "example": "Portfolio Health Insights" } } }, @@ -31303,17 +30328,37 @@ }, "description": "JSON:API representation of knowledgeRecommendation entity." }, - "JsonApiMemoryItemPostOptionalIdDocument": { + "JsonApiKnowledgeRecommendationOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiMemoryItemPostOptionalId" + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOutIncludes" + } } } }, - "JsonApiMemoryItemPostOptionalId": { - "required": ["attributes", "type"], + "JsonApiMemoryItemInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMemoryItemIn" + } + } + }, + "JsonApiMemoryItemIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { @@ -31375,17 +30420,37 @@ }, "description": "JSON:API representation of memoryItem entity." }, - "JsonApiMetricPostOptionalIdDocument": { + "JsonApiMemoryItemOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiMetricPostOptionalId" + "$ref": "#/components/schemas/JsonApiMemoryItemOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + } } } }, - "JsonApiMetricPostOptionalId": { - "required": ["attributes", "type"], + "JsonApiMetricInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricIn" + } + } + }, + "JsonApiMetricIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { @@ -31450,17 +30515,37 @@ }, "description": "JSON:API representation of metric entity." }, - "JsonApiUserDataFilterPostOptionalIdDocument": { + "JsonApiMetricOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserDataFilterPostOptionalId" + "$ref": "#/components/schemas/JsonApiMetricOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiMetricOutIncludes" + } } } }, - "JsonApiUserDataFilterPostOptionalId": { - "required": ["attributes", "type"], + "JsonApiUserDataFilterInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserDataFilterIn" + } + } + }, + "JsonApiUserDataFilterIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { @@ -31528,17 +30613,37 @@ }, "description": "JSON:API representation of userDataFilter entity." }, - "JsonApiVisualizationObjectPostOptionalIdDocument": { + "JsonApiUserDataFilterOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectPostOptionalId" + "$ref": "#/components/schemas/JsonApiUserDataFilterOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiUserDataFilterOutIncludes" + } } } }, - "JsonApiVisualizationObjectPostOptionalId": { - "required": ["attributes", "type"], + "JsonApiVisualizationObjectInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiVisualizationObjectIn" + } + } + }, + "JsonApiVisualizationObjectIn": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "type": { @@ -31593,6 +30698,26 @@ }, "description": "JSON:API representation of visualizationObject entity." }, + "JsonApiVisualizationObjectOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiVisualizationObjectOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiMetricOutIncludes" + } + } + } + }, "JsonApiWorkspaceDataFilterSettingInDocument": { "required": ["data"], "type": "object", @@ -31654,6 +30779,26 @@ }, "description": "JSON:API representation of workspaceDataFilterSetting entity." }, + "JsonApiWorkspaceDataFilterSettingOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" + } + } + } + }, "JsonApiWorkspaceDataFilterInDocument": { "required": ["data"], "type": "object", @@ -31713,17 +30858,37 @@ }, "description": "JSON:API representation of workspaceDataFilter entity." }, - "JsonApiWorkspaceSettingPostOptionalIdDocument": { + "JsonApiWorkspaceDataFilterOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceSettingPostOptionalId" + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOutWithLinks" + } } } }, - "JsonApiWorkspaceSettingPostOptionalId": { - "required": ["type"], + "JsonApiWorkspaceSettingInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceSettingIn" + } + } + }, + "JsonApiWorkspaceSettingIn": { + "required": ["id", "type"], "type": "object", "properties": { "type": { @@ -31798,47 +30963,29 @@ }, "description": "JSON:API representation of workspaceSetting entity." }, - "JsonApiAggregatedFactOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiFactOutWithLinks" - } - ] - }, - "JsonApiAggregatedFactOutDocument": { + "JsonApiWorkspaceSettingOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAggregatedFactOut" + "$ref": "#/components/schemas/JsonApiWorkspaceSettingOut" }, "links": { "$ref": "#/components/schemas/ObjectLinks" - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAggregatedFactOutIncludes" - } } } }, - "JsonApiAnalyticalDashboardInDocument": { + "JsonApiAnalyticalDashboardPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardIn" + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardPostOptionalId" } } }, - "JsonApiAnalyticalDashboardIn": { - "required": ["attributes", "id", "type"], + "JsonApiAnalyticalDashboardPostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { "type": { @@ -31890,17 +31037,17 @@ }, "description": "JSON:API representation of analyticalDashboard entity." }, - "JsonApiCustomApplicationSettingInDocument": { + "JsonApiCustomApplicationSettingPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiCustomApplicationSettingIn" + "$ref": "#/components/schemas/JsonApiCustomApplicationSettingPostOptionalId" } } }, - "JsonApiCustomApplicationSettingIn": { - "required": ["attributes", "id", "type"], + "JsonApiCustomApplicationSettingPostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { "type": { @@ -31933,17 +31080,17 @@ }, "description": "JSON:API representation of customApplicationSetting entity." }, - "JsonApiDashboardPluginInDocument": { + "JsonApiDashboardPluginPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiDashboardPluginIn" + "$ref": "#/components/schemas/JsonApiDashboardPluginPostOptionalId" } } }, - "JsonApiDashboardPluginIn": { - "required": ["id", "type"], + "JsonApiDashboardPluginPostOptionalId": { + "required": ["type"], "type": "object", "properties": { "type": { @@ -31990,17 +31137,17 @@ }, "description": "JSON:API representation of dashboardPlugin entity." }, - "JsonApiExportDefinitionInDocument": { + "JsonApiExportDefinitionPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiExportDefinitionIn" + "$ref": "#/components/schemas/JsonApiExportDefinitionPostOptionalId" } } }, - "JsonApiExportDefinitionIn": { - "required": ["id", "type"], + "JsonApiExportDefinitionPostOptionalId": { + "required": ["type"], "type": "object", "properties": { "type": { @@ -32075,17 +31222,17 @@ }, "description": "JSON:API representation of exportDefinition entity." }, - "JsonApiFilterContextInDocument": { + "JsonApiFilterContextPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiFilterContextIn" + "$ref": "#/components/schemas/JsonApiFilterContextPostOptionalId" } } }, - "JsonApiFilterContextIn": { - "required": ["attributes", "id", "type"], + "JsonApiFilterContextPostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { "type": { @@ -32137,17 +31284,17 @@ }, "description": "JSON:API representation of filterContext entity." }, - "JsonApiKnowledgeRecommendationInDocument": { + "JsonApiKnowledgeRecommendationPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationIn" + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationPostOptionalId" } } }, - "JsonApiKnowledgeRecommendationIn": { - "required": ["attributes", "id", "relationships", "type"], + "JsonApiKnowledgeRecommendationPostOptionalId": { + "required": ["attributes", "relationships", "type"], "type": "object", "properties": { "type": { @@ -32229,6 +31376,32 @@ "description": "Number of source documents used for generation", "format": "int32", "example": 2 + }, + "referencePeriod": { + "maxLength": 255, + "type": "string", + "description": "Reference time period for comparison (e.g., '2023-06' or 'Jun 2023')", + "example": "2023-06" + }, + "analyzedPeriod": { + "maxLength": 255, + "type": "string", + "description": "Analyzed time period (e.g., '2023-07' or 'July 2023')", + "example": "2023-07" + }, + "referenceValue": { + "description": "Metric value in the reference period", + "example": 2400000000 + }, + "analyzedValue": { + "description": "Metric value in the analyzed period (the observed value that triggered the anomaly)", + "example": 2600000000 + }, + "analyticalDashboardTitle": { + "maxLength": 255, + "type": "string", + "description": "Human-readable title of the analytical dashboard (denormalized for display)", + "example": "Portfolio Health Insights" } } }, @@ -32259,17 +31432,17 @@ }, "description": "JSON:API representation of knowledgeRecommendation entity." }, - "JsonApiMemoryItemInDocument": { + "JsonApiMemoryItemPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiMemoryItemIn" + "$ref": "#/components/schemas/JsonApiMemoryItemPostOptionalId" } } }, - "JsonApiMemoryItemIn": { - "required": ["attributes", "id", "type"], + "JsonApiMemoryItemPostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { "type": { @@ -32331,17 +31504,17 @@ }, "description": "JSON:API representation of memoryItem entity." }, - "JsonApiMetricInDocument": { + "JsonApiMetricPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiMetricIn" + "$ref": "#/components/schemas/JsonApiMetricPostOptionalId" } } }, - "JsonApiMetricIn": { - "required": ["attributes", "id", "type"], + "JsonApiMetricPostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { "type": { @@ -32406,17 +31579,17 @@ }, "description": "JSON:API representation of metric entity." }, - "JsonApiUserDataFilterInDocument": { + "JsonApiUserDataFilterPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserDataFilterIn" + "$ref": "#/components/schemas/JsonApiUserDataFilterPostOptionalId" } } }, - "JsonApiUserDataFilterIn": { - "required": ["attributes", "id", "type"], + "JsonApiUserDataFilterPostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { "type": { @@ -32484,17 +31657,17 @@ }, "description": "JSON:API representation of userDataFilter entity." }, - "JsonApiVisualizationObjectInDocument": { + "JsonApiVisualizationObjectPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectIn" + "$ref": "#/components/schemas/JsonApiVisualizationObjectPostOptionalId" } } }, - "JsonApiVisualizationObjectIn": { - "required": ["attributes", "id", "type"], + "JsonApiVisualizationObjectPostOptionalId": { + "required": ["attributes", "type"], "type": "object", "properties": { "type": { @@ -32549,17 +31722,17 @@ }, "description": "JSON:API representation of visualizationObject entity." }, - "JsonApiWorkspaceSettingInDocument": { + "JsonApiWorkspaceSettingPostOptionalIdDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceSettingIn" + "$ref": "#/components/schemas/JsonApiWorkspaceSettingPostOptionalId" } } }, - "JsonApiWorkspaceSettingIn": { - "required": ["id", "type"], + "JsonApiWorkspaceSettingPostOptionalId": { + "required": ["type"], "type": "object", "properties": { "type": { @@ -32634,40 +31807,17 @@ }, "description": "JSON:API representation of workspaceSetting entity." }, - "JsonApiAggregatedFactOutList": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiAggregatedFactOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } + "JsonApiApiTokenOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiApiTokenOut" }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAggregatedFactOutIncludes" - } + { + "$ref": "#/components/schemas/ObjectLinksContainer" } - }, - "description": "A JSON:API document with a list of resources" + ] }, - "JsonApiAnalyticalDashboardOutList": { + "JsonApiApiTokenOutList": { "required": ["data"], "type": "object", "properties": { @@ -32675,7 +31825,7 @@ "uniqueItems": true, "type": "array", "items": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + "$ref": "#/components/schemas/JsonApiApiTokenOutWithLinks" } }, "links": { @@ -32688,52 +31838,49 @@ "$ref": "#/components/schemas/PageMetadata" } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutIncludes" - } } }, "description": "A JSON:API document with a list of resources" }, - "JsonApiAttributeHierarchyOutList": { - "required": ["data"], + "JsonApiApiTokenOut": { + "required": ["id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutWithLinks" - } + "type": { + "type": "string", + "description": "Object type", + "example": "apiToken", + "enum": ["apiToken"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "bearerToken": { + "type": "string", + "description": "The value of the Bearer token. It is only returned when the API token is created." } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeHierarchyOutIncludes" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of apiToken entity." }, - "JsonApiAttributeOutList": { + "JsonApiUserSettingOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiUserSettingOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiUserSettingOutList": { "required": ["data"], "type": "object", "properties": { @@ -32741,7 +31888,7 @@ "uniqueItems": true, "type": "array", "items": { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + "$ref": "#/components/schemas/JsonApiUserSettingOutWithLinks" } }, "links": { @@ -32754,1328 +31901,1333 @@ "$ref": "#/components/schemas/PageMetadata" } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeOutIncludes" - } } }, "description": "A JSON:API document with a list of resources" }, - "JsonApiAutomationResultOutList": { + "JsonApiApiTokenOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiAutomationResultOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiApiTokenOut" }, "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAutomationOutWithLinks" - } + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiAutomationOutList": { + "JsonApiApiTokenInDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiAutomationOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAutomationOutIncludes" - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiCustomApplicationSettingOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiCustomApplicationSettingOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/JsonApiApiTokenIn" } - ] + } }, - "JsonApiCustomApplicationSettingOutList": { - "required": ["data"], + "JsonApiApiTokenIn": { + "required": ["id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiCustomApplicationSettingOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "type": { + "type": "string", + "description": "Object type", + "example": "apiToken", + "enum": ["apiToken"] }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of apiToken entity." }, - "JsonApiDashboardPluginOutList": { + "JsonApiColorPalettePatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiDashboardPluginOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiColorPalettePatch" } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiDatasetOutList": { - "required": ["data"], + "JsonApiColorPalettePatch": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" - } + "type": { + "type": "string", + "description": "Object type", + "example": "colorPalette", + "enum": ["colorPalette"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "name": { + "maxLength": 255, + "type": "string" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiDatasetOutIncludes" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching colorPalette entity." }, - "JsonApiExportDefinitionOutList": { + "JsonApiCspDirectivePatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiExportDefinitionOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiExportDefinitionOutIncludes" - } + "$ref": "#/components/schemas/JsonApiCspDirectivePatch" } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiFactOutList": { - "required": ["data"], + "JsonApiCspDirectivePatch": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiFactOutWithLinks" - } + "type": { + "type": "string", + "description": "Object type", + "example": "cspDirective", + "enum": ["cspDirective"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "sources": { + "type": "array", + "items": { + "type": "string" + } } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching cspDirective entity." }, - "JsonApiFilterContextOutList": { + "JsonApiCustomGeoCollectionPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiFilterContextOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiFilterContextOutIncludes" - } + "$ref": "#/components/schemas/JsonApiCustomGeoCollectionPatch" } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiFilterViewOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiFilterViewOut" + "JsonApiCustomGeoCollectionPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "customGeoCollection", + "enum": ["customGeoCollection"] }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" } - ] + }, + "description": "JSON:API representation of patching customGeoCollection entity." }, - "JsonApiFilterViewOutList": { + "JsonApiDataSourcePatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiFilterViewOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiFilterViewOutIncludes" - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiKnowledgeRecommendationOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/JsonApiDataSourcePatch" } - ] + } }, - "JsonApiKnowledgeRecommendationOutList": { - "required": ["data"], + "JsonApiDataSourcePatch": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "type": { + "type": "string", + "description": "Object type", + "example": "dataSource", + "enum": ["dataSource"] }, - "meta": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "name": { + "maxLength": 255, + "type": "string", + "description": "User-facing name of the data source." + }, + "type": { + "type": "string", + "description": "Type of the database providing the data for the data source.", + "enum": [ + "POSTGRESQL", + "REDSHIFT", + "VERTICA", + "SNOWFLAKE", + "ADS", + "BIGQUERY", + "MSSQL", + "PRESTO", + "DREMIO", + "DRILL", + "GREENPLUM", + "AZURESQL", + "SYNAPSESQL", + "DATABRICKS", + "GDSTORAGE", + "CLICKHOUSE", + "MYSQL", + "MARIADB", + "ORACLE", + "PINOT", + "SINGLESTORE", + "MOTHERDUCK", + "FLEXCONNECT", + "STARROCKS", + "ATHENA", + "MONGODB" + ] + }, + "url": { + "maxLength": 255, + "type": "string", + "description": "The URL of the database providing the data for the data source.", + "nullable": true + }, + "schema": { + "maxLength": 255, + "type": "string", + "description": "The schema to use as the root of the data for the data source." + }, + "username": { + "maxLength": 255, + "type": "string", + "description": "The username to use to connect to the database providing the data for the data source.", + "nullable": true + }, + "password": { + "maxLength": 255, + "type": "string", + "description": "The password to use to connect to the database providing the data for the data source.", + "nullable": true + }, + "privateKey": { + "maxLength": 15000, + "type": "string", + "description": "The private key to use to connect to the database providing the data for the data source.", + "nullable": true + }, + "privateKeyPassphrase": { + "maxLength": 255, + "type": "string", + "description": "The passphrase used to encrypt the private key.", + "nullable": true + }, + "token": { + "maxLength": 10000, + "type": "string", + "description": "The token to use to connect to the database providing the data for the data source (for example a BigQuery Service Account).", + "nullable": true + }, + "clientId": { + "maxLength": 255, + "type": "string", + "description": "The client id to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", + "nullable": true + }, + "clientSecret": { + "maxLength": 255, + "type": "string", + "description": "The client secret to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", + "nullable": true + }, + "parameters": { + "type": "array", + "description": "Additional parameters to be used when connecting to the database providing the data for the data source.", + "nullable": true, + "items": { + "required": ["name", "value"], + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + }, + "cacheStrategy": { + "type": "string", + "description": "Determines how the results coming from a particular datasource should be cached.", + "nullable": true, + "enum": ["ALWAYS", "NEVER"] + }, + "alternativeDataSourceId": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", + "nullable": true, + "example": "pg_local_docker-demo2" } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationOutIncludes" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching dataSource entity." }, - "JsonApiLabelOutList": { + "JsonApiExportTemplatePatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiLabelOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiExportTemplatePatch" + } + } + }, + "JsonApiExportTemplatePatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "exportTemplate", + "enum": ["exportTemplate"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "name": { + "maxLength": 255, + "type": "string", + "description": "User-facing name of the Slides template." + }, + "dashboardSlidesTemplate": { + "required": ["appliedOn"], + "type": "object", + "properties": { + "appliedOn": { + "minItems": 1, + "type": "array", + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], + "items": { + "type": "string", + "enum": ["PDF", "PPTX"] + } + }, + "coverSlide": { + "$ref": "#/components/schemas/CoverSlideTemplate" + }, + "introSlide": { + "$ref": "#/components/schemas/IntroSlideTemplate" + }, + "sectionSlide": { + "$ref": "#/components/schemas/SectionSlideTemplate" + }, + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" + } + }, + "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true + }, + "widgetSlidesTemplate": { + "required": ["appliedOn"], + "type": "object", + "properties": { + "appliedOn": { + "minItems": 1, + "type": "array", + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], + "items": { + "type": "string", + "enum": ["PDF", "PPTX"] + } + }, + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" + } + }, + "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" - } } }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiMemoryItemOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiMemoryItemOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] + "description": "JSON:API representation of patching exportTemplate entity." }, - "JsonApiMemoryItemOutList": { + "JsonApiIdentityProviderPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiMemoryItemOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiIdentityProviderPatch" + } + } + }, + "JsonApiIdentityProviderPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "identityProvider", + "enum": ["identityProvider"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "identifiers": { + "type": "array", + "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", + "example": ["gooddata.com"], + "items": { + "type": "string" + } + }, + "customClaimMapping": { + "maxLength": 10000, + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute." + }, + "samlMetadata": { + "maxLength": 15000, + "type": "string", + "description": "Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP." + }, + "oauthClientId": { + "maxLength": 255, + "type": "string", + "description": "The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP." + }, + "oauthClientSecret": { + "maxLength": 255, + "type": "string", + "description": "The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP." + }, + "oauthIssuerLocation": { + "maxLength": 255, + "type": "string", + "description": "The location of your OIDC provider. This field is mandatory for OIDC IdP." + }, + "oauthIssuerId": { + "maxLength": 255, + "type": "string", + "description": "Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", + "example": "myOidcProvider" + }, + "oauthSubjectIdClaim": { + "maxLength": 255, + "type": "string", + "description": "Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", + "example": "oid" + }, + "oauthCustomAuthAttributes": { + "maxLength": 10000, + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." + }, + "oauthCustomScopes": { + "type": "array", + "description": "List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", + "nullable": true, + "items": { + "maxLength": 255, + "type": "string" + } + }, + "idpType": { + "type": "string", + "description": "Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", + "enum": ["MANAGED_IDP", "FIM_IDP", "DEX_IDP", "CUSTOM_IDP"] } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching identityProvider entity." }, - "JsonApiMetricOutList": { + "JsonApiJwkPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiMetricOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiJwkPatch" + } + } + }, + "JsonApiJwkPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "jwk", + "enum": ["jwk"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "content": { + "type": "object", + "description": "Specification of the cryptographic key", + "example": { + "kyt": "RSA", + "alg": "RS256", + "use": "sig" + }, + "oneOf": [ + { + "$ref": "#/components/schemas/RsaSpecification" + } + ] } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiMetricOutIncludes" - } } }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiUserDataFilterOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiUserDataFilterOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] + "description": "JSON:API representation of patching jwk entity." }, - "JsonApiUserDataFilterOutList": { + "JsonApiLlmEndpointPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiUserDataFilterOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiLlmEndpointPatch" + } + } + }, + "JsonApiLlmEndpointPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "llmEndpoint", + "enum": ["llmEndpoint"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "title": { + "maxLength": 255, + "type": "string", + "description": "User-facing title of the LLM Provider." + }, + "provider": { + "type": "string", + "description": "LLM Provider.", + "enum": ["OPENAI", "AZURE_OPENAI"] + }, + "baseUrl": { + "maxLength": 255, + "type": "string", + "description": "Custom LLM endpoint.", + "nullable": true + }, + "token": { + "maxLength": 10000, + "type": "string", + "description": "The token to use to connect to the LLM provider." + }, + "llmOrganization": { + "maxLength": 255, + "type": "string", + "description": "Organization in LLM provider.", + "nullable": true + }, + "llmModel": { + "maxLength": 255, + "type": "string", + "description": "LLM Model. We provide a default model for each provider, but you can override it here." } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiUserDataFilterOutIncludes" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching llmEndpoint entity." }, - "JsonApiVisualizationObjectOutList": { + "JsonApiNotificationChannelPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiVisualizationObjectOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiNotificationChannelPatch" + } + } + }, + "JsonApiNotificationChannelPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "notificationChannel", + "enum": ["notificationChannel"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "name": { + "maxLength": 255, + "type": "string", + "nullable": true + }, + "description": { + "maxLength": 10000, + "type": "string", + "nullable": true + }, + "destination": { + "description": "The destination where the notifications are to be sent.", + "oneOf": [ + { + "$ref": "#/components/schemas/DefaultSmtp" + }, + { + "$ref": "#/components/schemas/InPlatform" + }, + { + "$ref": "#/components/schemas/Smtp" + }, + { + "$ref": "#/components/schemas/Webhook" + } + ] + }, + "customDashboardUrl": { + "maxLength": 255, + "type": "string", + "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" + }, + "dashboardLinkVisibility": { + "type": "string", + "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", + "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] + }, + "notificationSource": { + "maxLength": 10000, + "type": "string", + "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" + }, + "allowedRecipients": { + "type": "string", + "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", + "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] + }, + "inPlatformNotification": { + "type": "string", + "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", + "enum": ["DISABLED", "ENABLED"] } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiMetricOutIncludes" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching notificationChannel entity." }, - "JsonApiWorkspaceDataFilterSettingOutList": { + "JsonApiOrganizationSettingPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiOrganizationSettingPatch" + } + } + }, + "JsonApiOrganizationSettingPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "organizationSetting", + "enum": ["organizationSetting"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} + }, + "type": { + "type": "string", + "enum": [ + "TIMEZONE", + "ACTIVE_THEME", + "ACTIVE_COLOR_PALETTE", + "ACTIVE_LLM_ENDPOINT", + "ACTIVE_CALENDARS", + "WHITE_LABELING", + "LOCALE", + "METADATA_LOCALE", + "FORMAT_LOCALE", + "MAPBOX_TOKEN", + "AG_GRID_TOKEN", + "WEEK_START", + "FISCAL_YEAR", + "SHOW_HIDDEN_CATALOG_ITEMS", + "OPERATOR_OVERRIDES", + "TIMEZONE_VALIDATION_ENABLED", + "OPENAI_CONFIG", + "ENABLE_FILE_ANALYTICS", + "ALERT", + "SEPARATORS", + "DATE_FILTER_CONFIG", + "JIT_PROVISIONING", + "JWT_JIT_PROVISIONING", + "DASHBOARD_FILTERS_APPLY_MODE", + "ENABLE_SLIDES_EXPORT", + "ENABLE_SNAPSHOT_EXPORT", + "AI_RATE_LIMIT", + "ATTACHMENT_SIZE_LIMIT", + "ATTACHMENT_LINK_TTL", + "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", + "ENABLE_DRILL_TO_URL_BY_DEFAULT", + "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", + "ENABLE_AUTOMATION_EVALUATION_MODE", + "ENABLE_ACCESSIBILITY_MODE", + "REGISTERED_PLUGGABLE_APPLICATIONS", + "DATA_LOCALE", + "LDM_DEFAULT_LOCALE", + "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", + "MAX_ZOOM_LEVEL", + "SORT_CASE_SENSITIVE", + "METRIC_FORMAT_OVERRIDE", + "ENABLE_AI_ON_DATA" + ] } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" - } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching organizationSetting entity." }, - "JsonApiWorkspaceDataFilterOutList": { + "JsonApiThemePatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiThemePatch" + } + } + }, + "JsonApiThemePatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "theme", + "enum": ["theme"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "name": { + "maxLength": 255, + "type": "string" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} } } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingOutWithLinks" - } } }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiWorkspaceSettingOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiWorkspaceSettingOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] + "description": "JSON:API representation of patching theme entity." }, - "JsonApiWorkspaceSettingOutList": { + "JsonApiUserGroupPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceSettingOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiUserGroupPatch" + } + } + }, + "JsonApiUserGroupPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "userGroup", + "enum": ["userGroup"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "name": { + "maxLength": 255, + "type": "string" } } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiColorPaletteOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiColorPaletteOut" }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "relationships": { + "type": "object", + "properties": { + "parents": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" + } + } + } + } } - ] + }, + "description": "JSON:API representation of patching userGroup entity." }, - "JsonApiColorPaletteOutList": { + "JsonApiUserPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiColorPaletteOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiUserPatch" + } + } + }, + "JsonApiUserPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "user", + "enum": ["user"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "authenticationId": { + "maxLength": 255, + "type": "string" + }, + "firstname": { + "maxLength": 255, + "type": "string" + }, + "lastname": { + "maxLength": 255, + "type": "string" + }, + "email": { + "maxLength": 255, + "type": "string" } } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiCspDirectiveOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiCspDirectiveOut" }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "relationships": { + "type": "object", + "properties": { + "userGroups": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserGroupToManyLinkage" + } + } + } + } } - ] + }, + "description": "JSON:API representation of patching user entity." }, - "JsonApiCspDirectiveOutList": { + "JsonApiWorkspacePatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiCspDirectiveOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiWorkspacePatch" + } + } + }, + "JsonApiWorkspacePatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "workspace", + "enum": ["workspace"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "name": { + "maxLength": 255, + "type": "string", + "nullable": true + }, + "earlyAccess": { + "maxLength": 255, + "type": "string", + "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", + "nullable": true, + "deprecated": true + }, + "earlyAccessValues": { + "type": "array", + "description": "The early access feature identifiers. They are used to enable experimental features.", + "nullable": true, + "items": { + "maxLength": 255, + "type": "string" + } + }, + "description": { + "maxLength": 255, + "type": "string", + "nullable": true + }, + "prefix": { + "maxLength": 255, + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Custom prefix of entity identifiers in workspace", + "nullable": true + }, + "cacheExtraLimit": { + "type": "integer", + "format": "int64" + }, + "dataSource": { + "required": ["id"], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the used data source.", + "example": "snowflake.instance.1" + }, + "schemaPath": { + "type": "array", + "description": "The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", + "items": { + "type": "string", + "description": "The part of the schema path.", + "example": "subPath" + } + } + }, + "description": "The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace." + } + } + }, + "relationships": { + "type": "object", + "properties": { + "parent": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceToOneLinkage" + } + } } } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching workspace entity." }, - "JsonApiDataSourceIdentifierOutWithLinks": { - "allOf": [ - { + "JsonApiDataSourceIdentifierOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOut" }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - ] + } }, - "JsonApiDataSourceIdentifierOutList": { + "JsonApiEntitlementOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiDataSourceIdentifierOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiEntitlementOut" }, "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiDataSourceOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiDataSourceOut" + "JsonApiNotificationChannelIdentifierOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiNotificationChannelIdentifierOut" }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "links": { + "$ref": "#/components/schemas/ObjectLinks" } - ] + } }, - "JsonApiDataSourceOutList": { + "JsonApiUserIdentifierOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiDataSourceOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiEntitlementOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiEntitlementOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiEntitlementOutList": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiEntitlementOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiExportTemplateOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiExportTemplateOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiExportTemplateOutList": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiExportTemplateOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiUserIdentifierOut" }, "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } + "$ref": "#/components/schemas/ObjectLinks" } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiIdentityProviderOutList": { + "JsonApiAnalyticalDashboardPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiIdentityProviderOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiJwkOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiJwkOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardPatch" } - ] + } }, - "JsonApiJwkOutList": { - "required": ["data"], + "JsonApiAnalyticalDashboardPatch": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiJwkOutWithLinks" - } + "type": { + "type": "string", + "description": "Object type", + "example": "analyticalDashboard", + "enum": ["analyticalDashboard"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "identifier": { + "id": "label.leaf", + "type": "label" + }, + "someBoolProp": false + } } } } }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiLlmEndpointOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiLlmEndpointOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] + "description": "JSON:API representation of patching analyticalDashboard entity." }, - "JsonApiLlmEndpointOutList": { + "JsonApiAttributeHierarchyPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiLlmEndpointOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiNotificationChannelIdentifierOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiNotificationChannelIdentifierOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/JsonApiAttributeHierarchyPatch" } - ] + } }, - "JsonApiNotificationChannelIdentifierOutList": { - "required": ["data"], + "JsonApiAttributeHierarchyPatch": { + "required": ["id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiNotificationChannelIdentifierOutWithLinks" - } + "type": { + "type": "string", + "description": "Object type", + "example": "attributeHierarchy", + "enum": ["attributeHierarchy"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": { + "attributes": [ + { + "identifier": { + "type": "attribute", + "id": "country" + } + }, + { + "identifier": { + "type": "attribute", + "id": "city" + } + } + ] + } } } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching attributeHierarchy entity." }, - "JsonApiNotificationChannelOutList": { + "JsonApiAttributePatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiNotificationChannelOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiOrganizationSettingOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiOrganizationSettingOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" + "$ref": "#/components/schemas/JsonApiAttributePatch" } - ] + } }, - "JsonApiOrganizationSettingOutList": { - "required": ["data"], + "JsonApiAttributePatch": { + "required": ["id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiOrganizationSettingOutWithLinks" - } + "type": { + "type": "string", + "description": "Object type", + "example": "attribute", + "enum": ["attribute"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { + "attributes": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } } } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiThemeOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiThemeOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiThemeOutList": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiThemeOutWithLinks" - } }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { + "relationships": { "type": "object", "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" + "defaultView": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelToOneLinkage" + } + } } } } }, - "description": "A JSON:API document with a list of resources" + "description": "JSON:API representation of patching attribute entity." }, - "JsonApiUserGroupOutList": { + "JsonApiAttributeOutDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiAttributeOut" }, "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } + "$ref": "#/components/schemas/ObjectLinks" }, "included": { "uniqueItems": true, "type": "array", "description": "Included resources", "items": { - "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiUserIdentifierOutList": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } + "$ref": "#/components/schemas/JsonApiAttributeOutIncludes" } } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiUserOutList": { + "JsonApiAutomationPatchDocument": { "required": ["data"], "type": "object", "properties": { "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiUserOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiUserGroupOutWithLinks" - } + "$ref": "#/components/schemas/JsonApiAutomationPatch" } - }, - "description": "A JSON:API document with a list of resources" + } }, - "JsonApiWorkspaceOutList": { - "required": ["data"], + "JsonApiAutomationPatch": { + "required": ["id", "type"], "type": "object", "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" - } + "type": { + "type": "string", + "description": "Object type", + "example": "automation", + "enum": ["automation"] }, - "links": { - "$ref": "#/components/schemas/ListLinks" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiApiTokenInDocument": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiApiTokenIn" - } - } - }, - "JsonApiApiTokenIn": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "apiToken", - "enum": ["apiToken"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - } - }, - "description": "JSON:API representation of apiToken entity." - }, - "JsonApiWorkspaceAutomationOutWithLinks": { - "allOf": [ - { - "$ref": "#/components/schemas/JsonApiWorkspaceAutomationOut" - }, - { - "$ref": "#/components/schemas/ObjectLinksContainer" - } - ] - }, - "JsonApiWorkspaceAutomationOutIncludes": { - "oneOf": [ - { - "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiNotificationChannelOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiExportDefinitionOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiUserOutWithLinks" - }, - { - "$ref": "#/components/schemas/JsonApiAutomationResultOutWithLinks" - } - ] - }, - "JsonApiWorkspaceAutomationOutList": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceAutomationOutWithLinks" - } - }, - "links": { - "$ref": "#/components/schemas/ListLinks" - }, - "meta": { - "type": "object", - "properties": { - "page": { - "$ref": "#/components/schemas/PageMetadata" - } - } - }, - "included": { - "uniqueItems": true, - "type": "array", - "description": "Included resources", - "items": { - "$ref": "#/components/schemas/JsonApiWorkspaceAutomationOutIncludes" - } - } - }, - "description": "A JSON:API document with a list of resources" - }, - "JsonApiWorkspaceAutomationOut": { - "required": ["id", "type"], - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Object type", - "example": "workspaceAutomation", - "enum": ["workspaceAutomation"] - }, - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "API identifier of an object", - "example": "id1" - }, - "attributes": { + "attributes": { "type": "object", "properties": { "title": { @@ -34261,29 +33413,12 @@ } } } - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "modifiedAt": { - "type": "string", - "format": "date-time" } } }, "relationships": { "type": "object", "properties": { - "workspace": { - "required": ["data"], - "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiWorkspaceToOneLinkage" - } - } - }, "notificationChannel": { "required": ["data"], "type": "object", @@ -34302,3337 +33437,6278 @@ } } }, - "createdBy": { + "exportDefinitions": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + "$ref": "#/components/schemas/JsonApiExportDefinitionToManyLinkage" } } }, - "modifiedBy": { + "recipients": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + "$ref": "#/components/schemas/JsonApiUserToManyLinkage" } } + } + } + } + }, + "description": "JSON:API representation of patching automation entity." + }, + "JsonApiCustomApplicationSettingPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCustomApplicationSettingPatch" + } + } + }, + "JsonApiCustomApplicationSettingPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "customApplicationSetting", + "enum": ["customApplicationSetting"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "applicationName": { + "maxLength": 255, + "type": "string" }, - "exportDefinitions": { - "required": ["data"], + "content": { "type": "object", - "properties": { - "data": { - "$ref": "#/components/schemas/JsonApiExportDefinitionToManyLinkage" - } + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} + } + } + } + }, + "description": "JSON:API representation of patching customApplicationSetting entity." + }, + "JsonApiDashboardPluginPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDashboardPluginPatch" + } + } + }, + "JsonApiDashboardPluginPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "dashboardPlugin", + "enum": ["dashboardPlugin"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" } }, - "recipients": { + "areRelationsValid": { + "type": "boolean" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "url": "" + } + } + } + } + }, + "description": "JSON:API representation of patching dashboardPlugin entity." + }, + "JsonApiDatasetPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetPatch" + } + } + }, + "JsonApiDatasetPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "dataset", + "enum": ["dataset"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "description": "JSON:API representation of patching dataset entity." + }, + "JsonApiDatasetOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiDatasetOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiDatasetOutIncludes" + } + } + } + }, + "JsonApiExportDefinitionPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiExportDefinitionPatch" + } + } + }, + "JsonApiExportDefinitionPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "exportDefinition", + "enum": ["exportDefinition"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "requestPayload": { + "type": "object", + "description": "JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. ", + "oneOf": [ + { + "$ref": "#/components/schemas/VisualExportRequest" + }, + { + "$ref": "#/components/schemas/TabularExportRequest" + } + ] + }, + "areRelationsValid": { + "type": "boolean" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "visualizationObject": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiUserToManyLinkage" + "$ref": "#/components/schemas/JsonApiVisualizationObjectToOneLinkage" } } }, - "automationResults": { + "analyticalDashboard": { "required": ["data"], "type": "object", "properties": { "data": { - "$ref": "#/components/schemas/JsonApiAutomationResultToManyLinkage" + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" } } } } } }, - "description": "JSON:API representation of workspaceAutomation entity." + "description": "JSON:API representation of patching exportDefinition entity." + }, + "JsonApiFactPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFactPatch" + } + } + }, + "JsonApiFactPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "fact", + "enum": ["fact"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "description": "JSON:API representation of patching fact entity." + }, + "JsonApiFactOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFactOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiDatasetOutWithLinks" + } + } + } + }, + "JsonApiFilterContextPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFilterContextPatch" + } + } + }, + "JsonApiFilterContextPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "filterContext", + "enum": ["filterContext"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "identifier": { + "id": "label.leaf", + "type": "label" + }, + "someBoolProp": false + } + } + } + } + }, + "description": "JSON:API representation of patching filterContext entity." + }, + "JsonApiFilterViewPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiFilterViewPatch" + } + } + }, + "JsonApiFilterViewPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "filterView", + "enum": ["filterView"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "isDefault": { + "type": "boolean", + "description": "Indicator whether the filter view should by applied by default." + }, + "content": { + "type": "object", + "description": "The respective filter context." + } + } + }, + "relationships": { + "type": "object", + "properties": { + "analyticalDashboard": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" + } + } + }, + "user": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserToOneLinkage" + } + } + } + } + } + }, + "description": "JSON:API representation of patching filterView entity." + }, + "JsonApiKnowledgeRecommendationPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiKnowledgeRecommendationPatch" + } + } + }, + "JsonApiKnowledgeRecommendationPatch": { + "required": ["attributes", "id", "relationships", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "knowledgeRecommendation", + "enum": ["knowledgeRecommendation"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string", + "description": "Human-readable title for the recommendation, e.g. 'Revenue decreased vs last month'" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Description of the recommendation" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "metricTitle": { + "maxLength": 255, + "type": "string", + "description": "Human-readable title of the metric (denormalized for display)", + "example": "Revenue" + }, + "direction": { + "type": "string", + "description": "Direction of the metric change", + "example": "DECREASED", + "enum": ["INCREASED", "DECREASED"] + }, + "comparisonType": { + "type": "string", + "description": "Time period for comparison", + "example": "MONTH", + "enum": ["MONTH", "QUARTER", "YEAR"] + }, + "widgetId": { + "maxLength": 255, + "type": "string", + "description": "ID of the widget where the anomaly was detected", + "example": "widget-123" + }, + "widgetName": { + "maxLength": 255, + "type": "string", + "description": "Name of the widget where the anomaly was detected", + "example": "Revenue Trend" + }, + "confidence": { + "description": "Confidence score (0.0 to 1.0)", + "example": 0.62 + }, + "recommendations": { + "type": "object", + "description": "Structured recommendations data as JSON", + "example": "{\"summary\": \"...\", \"recommendations\": [...], \"key_metrics\": [...]}" + }, + "sourceCount": { + "type": "integer", + "description": "Number of source documents used for generation", + "format": "int32", + "example": 2 + }, + "referencePeriod": { + "maxLength": 255, + "type": "string", + "description": "Reference time period for comparison (e.g., '2023-06' or 'Jun 2023')", + "example": "2023-06" + }, + "analyzedPeriod": { + "maxLength": 255, + "type": "string", + "description": "Analyzed time period (e.g., '2023-07' or 'July 2023')", + "example": "2023-07" + }, + "referenceValue": { + "description": "Metric value in the reference period", + "example": 2400000000 + }, + "analyzedValue": { + "description": "Metric value in the analyzed period (the observed value that triggered the anomaly)", + "example": 2600000000 + }, + "analyticalDashboardTitle": { + "maxLength": 255, + "type": "string", + "description": "Human-readable title of the analytical dashboard (denormalized for display)", + "example": "Portfolio Health Insights" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "metric": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricToOneLinkage" + } + } + }, + "analyticalDashboard": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" + } + } + } + } + } + }, + "description": "JSON:API representation of patching knowledgeRecommendation entity." + }, + "JsonApiLabelPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelPatch" + } + } + }, + "JsonApiLabelPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "label", + "enum": ["label"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "description": "JSON:API representation of patching label entity." + }, + "JsonApiLabelOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiLabelOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAttributeOutWithLinks" + } + } + } + }, + "JsonApiMemoryItemPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMemoryItemPatch" + } + } + }, + "JsonApiMemoryItemPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "memoryItem", + "enum": ["memoryItem"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "strategy": { + "type": "string", + "description": "Strategy defining when the memory item should be applied", + "enum": ["ALWAYS", "AUTO"] + }, + "instruction": { + "maxLength": 255, + "type": "string", + "description": "The text that will be injected into the system prompt" + }, + "keywords": { + "type": "array", + "description": "Set of unique strings used for semantic similarity filtering", + "items": { + "type": "string" + } + }, + "isDisabled": { + "type": "boolean", + "description": "Whether memory item is disabled" + } + } + } + }, + "description": "JSON:API representation of patching memoryItem entity." + }, + "JsonApiMetricPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiMetricPatch" + } + } + }, + "JsonApiMetricPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "metric", + "enum": ["metric"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "content": { + "required": ["maql"], + "type": "object", + "properties": { + "format": { + "maxLength": 2048, + "type": "string", + "description": "Excel-like format string with optional dynamic tokens. Filter value tokens: [$FILTER:] for raw filter value passthrough. Currency tokens: [$CURRENCY:] for currency symbol, with optional forms :symbol, :narrow, :code, :name. Locale abbreviations: [$K], [$M], [$B], [$T] for locale-specific scale abbreviations. Tokens are resolved at execution time based on AFM filters and user's format locale. Single-value filters only; multi-value filters use fallback values.", + "nullable": true + }, + "maql": { + "maxLength": 10000, + "type": "string" + }, + "metricType": { + "type": "string", + "description": "Categorizes metric semantics (e.g., currency).", + "enum": ["UNSPECIFIED", "CURRENCY"] + } + } + }, + "isHidden": { + "type": "boolean" + } + } + } + }, + "description": "JSON:API representation of patching metric entity." + }, + "JsonApiUserDataFilterPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserDataFilterPatch" + } + } + }, + "JsonApiUserDataFilterPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "userDataFilter", + "enum": ["userDataFilter"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "maql": { + "maxLength": 10000, + "type": "string" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "user": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserToOneLinkage" + } + } + }, + "userGroup": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserGroupToOneLinkage" + } + } + } + } + } + }, + "description": "JSON:API representation of patching userDataFilter entity." + }, + "JsonApiVisualizationObjectPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiVisualizationObjectPatch" + } + } + }, + "JsonApiVisualizationObjectPatch": { + "required": ["attributes", "id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "visualizationObject", + "enum": ["visualizationObject"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 250000 characters.", + "example": { + "identifier": { + "id": "label.leaf", + "type": "label" + }, + "someBoolProp": false + } + }, + "isHidden": { + "type": "boolean" + } + } + } + }, + "description": "JSON:API representation of patching visualizationObject entity." + }, + "JsonApiWorkspaceDataFilterSettingPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingPatch" + } + } + }, + "JsonApiWorkspaceDataFilterSettingPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "workspaceDataFilterSetting", + "enum": ["workspaceDataFilterSetting"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "filterValues": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "relationships": { + "type": "object", + "properties": { + "workspaceDataFilter": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterToOneLinkage" + } + } + } + } + } + }, + "description": "JSON:API representation of patching workspaceDataFilterSetting entity." + }, + "JsonApiWorkspaceDataFilterPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterPatch" + } + } + }, + "JsonApiWorkspaceDataFilterPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "workspaceDataFilter", + "enum": ["workspaceDataFilter"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "columnName": { + "maxLength": 255, + "type": "string" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "filterSettings": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceDataFilterSettingToManyLinkage" + } + } + } + } + } + }, + "description": "JSON:API representation of patching workspaceDataFilter entity." + }, + "JsonApiWorkspaceSettingPatchDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceSettingPatch" + } + } + }, + "JsonApiWorkspaceSettingPatch": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "workspaceSetting", + "enum": ["workspaceSetting"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "content": { + "type": "object", + "description": "Free-form JSON content. Maximum supported length is 15000 characters.", + "example": {} + }, + "type": { + "type": "string", + "enum": [ + "TIMEZONE", + "ACTIVE_THEME", + "ACTIVE_COLOR_PALETTE", + "ACTIVE_LLM_ENDPOINT", + "ACTIVE_CALENDARS", + "WHITE_LABELING", + "LOCALE", + "METADATA_LOCALE", + "FORMAT_LOCALE", + "MAPBOX_TOKEN", + "AG_GRID_TOKEN", + "WEEK_START", + "FISCAL_YEAR", + "SHOW_HIDDEN_CATALOG_ITEMS", + "OPERATOR_OVERRIDES", + "TIMEZONE_VALIDATION_ENABLED", + "OPENAI_CONFIG", + "ENABLE_FILE_ANALYTICS", + "ALERT", + "SEPARATORS", + "DATE_FILTER_CONFIG", + "JIT_PROVISIONING", + "JWT_JIT_PROVISIONING", + "DASHBOARD_FILTERS_APPLY_MODE", + "ENABLE_SLIDES_EXPORT", + "ENABLE_SNAPSHOT_EXPORT", + "AI_RATE_LIMIT", + "ATTACHMENT_SIZE_LIMIT", + "ATTACHMENT_LINK_TTL", + "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", + "ENABLE_DRILL_TO_URL_BY_DEFAULT", + "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", + "ENABLE_AUTOMATION_EVALUATION_MODE", + "ENABLE_ACCESSIBILITY_MODE", + "REGISTERED_PLUGGABLE_APPLICATIONS", + "DATA_LOCALE", + "LDM_DEFAULT_LOCALE", + "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", + "MAX_ZOOM_LEVEL", + "SORT_CASE_SENSITIVE", + "METRIC_FORMAT_OVERRIDE", + "ENABLE_AI_ON_DATA" + ] + } + } + } + }, + "description": "JSON:API representation of patching workspaceSetting entity." + }, + "JsonApiAggregatedFactOutDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAggregatedFactOut" + }, + "links": { + "$ref": "#/components/schemas/ObjectLinks" + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiAggregatedFactOutIncludes" + } + } + } + }, + "JsonApiWorkspaceAutomationOutWithLinks": { + "allOf": [ + { + "$ref": "#/components/schemas/JsonApiWorkspaceAutomationOut" + }, + { + "$ref": "#/components/schemas/ObjectLinksContainer" + } + ] + }, + "JsonApiWorkspaceAutomationOutIncludes": { + "oneOf": [ + { + "$ref": "#/components/schemas/JsonApiWorkspaceOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiNotificationChannelOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiUserIdentifierOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiExportDefinitionOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiUserOutWithLinks" + }, + { + "$ref": "#/components/schemas/JsonApiAutomationResultOutWithLinks" + } + ] + }, + "JsonApiWorkspaceAutomationOutList": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "uniqueItems": true, + "type": "array", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceAutomationOutWithLinks" + } + }, + "links": { + "$ref": "#/components/schemas/ListLinks" + }, + "meta": { + "type": "object", + "properties": { + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "included": { + "uniqueItems": true, + "type": "array", + "description": "Included resources", + "items": { + "$ref": "#/components/schemas/JsonApiWorkspaceAutomationOutIncludes" + } + } + }, + "description": "A JSON:API document with a list of resources" + }, + "JsonApiWorkspaceAutomationOut": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "workspaceAutomation", + "enum": ["workspaceAutomation"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 10000, + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "areRelationsValid": { + "type": "boolean" + }, + "details": { + "maxLength": 10000, + "type": "object", + "description": "Additional details to be included in the automated message." + }, + "metadata": { + "maxLength": 250000, + "type": "object", + "properties": { + "widget": { + "type": "string" + }, + "visibleFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VisibleFilter" + } + } + }, + "additionalProperties": true, + "description": "Additional information for the automation.", + "nullable": true + }, + "state": { + "type": "string", + "description": "Current state of the automation.", + "enum": ["ACTIVE", "PAUSED"] + }, + "evaluationMode": { + "type": "string", + "description": "Specify automation evaluation mode.", + "enum": ["SHARED", "PER_RECIPIENT"] + }, + "schedule": { + "required": ["cron", "timezone"], + "type": "object", + "properties": { + "cron": { + "maxLength": 255, + "type": "string", + "description": "Cron expression defining the schedule of the automation. The format is SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK (YEAR). The example expression signifies an action every 30 minutes from 9:00 to 17:00 on workdays.", + "example": "0 */30 9-17 ? * MON-FRI" + }, + "cronDescription": { + "type": "string", + "description": "Human-readable description of the cron expression.", + "readOnly": true + }, + "timezone": { + "maxLength": 255, + "type": "string", + "description": "Timezone in which the schedule is defined.", + "example": "Europe/Prague" + }, + "firstRun": { + "type": "string", + "description": "Timestamp of the first scheduled action. If not provided default to the next scheduled time.", + "format": "date-time", + "example": "2025-01-01T12:00:00Z" + } + } + }, + "alert": { + "required": ["condition", "execution"], + "type": "object", + "properties": { + "execution": { + "$ref": "#/components/schemas/AlertAfm" + }, + "condition": { + "$ref": "#/components/schemas/AlertCondition" + }, + "trigger": { + "type": "string", + "description": "Trigger behavior for the alert.\nALWAYS - alert is triggered every time the condition is met.\nONCE - alert is triggered only once when the condition is met.\n", + "default": "ALWAYS", + "enum": ["ALWAYS", "ONCE"] + } + } + }, + "tabularExports": { + "type": "array", + "items": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/TabularExportRequest" + } + } + } + }, + "visualExports": { + "type": "array", + "items": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/VisualExportRequest" + } + } + } + }, + "imageExports": { + "type": "array", + "items": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/ImageExportRequest" + } + } + } + }, + "rawExports": { + "type": "array", + "items": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/RawExportAutomationRequest" + } + } + } + }, + "slidesExports": { + "type": "array", + "items": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/SlidesExportRequest" + } + } + } + }, + "dashboardTabularExports": { + "type": "array", + "items": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/DashboardTabularExportRequestV2" + } + } + } + }, + "externalRecipients": { + "type": "array", + "description": "External recipients of the automation action results.", + "items": { + "required": ["email"], + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "E-mail address to send notifications from.", + "format": "email" + } + } + } + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "modifiedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "relationships": { + "type": "object", + "properties": { + "workspace": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiWorkspaceToOneLinkage" + } + } + }, + "notificationChannel": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiNotificationChannelToOneLinkage" + } + } + }, + "analyticalDashboard": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAnalyticalDashboardToOneLinkage" + } + } + }, + "createdBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } + }, + "modifiedBy": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserIdentifierToOneLinkage" + } + } + }, + "exportDefinitions": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiExportDefinitionToManyLinkage" + } + } + }, + "recipients": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiUserToManyLinkage" + } + } + }, + "automationResults": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiAutomationResultToManyLinkage" + } + } + } + } + } + }, + "description": "JSON:API representation of workspaceAutomation entity." + }, + "JsonApiCookieSecurityConfigurationInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiCookieSecurityConfigurationIn" + } + } + }, + "JsonApiCookieSecurityConfigurationIn": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "cookieSecurityConfiguration", + "enum": ["cookieSecurityConfiguration"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "lastRotation": { + "type": "string", + "format": "date-time" + }, + "rotationInterval": { + "type": "string", + "description": "Length of interval between automatic rotations expressed in format of ISO 8601 duration", + "example": "P30D" + } + } + } + }, + "description": "JSON:API representation of cookieSecurityConfiguration entity." + }, + "JsonApiOrganizationInDocument": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiOrganizationIn" + } + } + }, + "JsonApiOrganizationIn": { + "required": ["id", "type"], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Object type", + "example": "organization", + "enum": ["organization"] + }, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "API identifier of an object", + "example": "id1" + }, + "attributes": { + "type": "object", + "properties": { + "name": { + "maxLength": 255, + "type": "string", + "nullable": true + }, + "hostname": { + "maxLength": 255, + "type": "string" + }, + "allowedOrigins": { + "type": "array", + "items": { + "type": "string" + } + }, + "earlyAccess": { + "maxLength": 255, + "type": "string", + "description": "The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", + "nullable": true, + "deprecated": true + }, + "earlyAccessValues": { + "type": "array", + "description": "The early access feature identifiers. They are used to enable experimental features.", + "nullable": true, + "items": { + "maxLength": 255, + "type": "string" + } + } + } + }, + "relationships": { + "type": "object", + "properties": { + "identityProvider": { + "required": ["data"], + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/JsonApiIdentityProviderToOneLinkage" + } + } + } + } + } + }, + "description": "JSON:API representation of organization entity." + }, + "DeclarativeUserDataFilter": { + "required": ["id", "maql", "title"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "User Data Filters ID. This ID is further used to refer to this instance.", + "example": "country_id_setting" + }, + "title": { + "maxLength": 255, + "type": "string", + "description": "User Data Filters setting title.", + "example": "Country ID setting" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "User Data Filters setting description.", + "example": "ID of country setting" + }, + "maql": { + "maxLength": 10000, + "type": "string", + "description": "Expression in MAQL specifying the User Data Filter", + "example": "{label/country} = \"USA\" AND {label/date.year} = THIS(YEAR)" + }, + "user": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "userGroup": { + "$ref": "#/components/schemas/DeclarativeUserGroupIdentifier" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Revenues"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Revenues\"]" + } + } + }, + "description": "User Data Filters serving the filtering of what data users can see in workspaces." + }, + "DeclarativeUserDataFilters": { + "required": ["userDataFilters"], + "type": "object", + "properties": { + "userDataFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUserDataFilter" + } + } + }, + "description": "Declarative form of user data filters." + }, + "DeclarativeUserGroupIdentifier": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Identifier of the user group.", + "example": "group.admins" + }, + "type": { + "type": "string", + "description": "A type.", + "example": "userGroup", + "enum": ["userGroup"] + } + }, + "description": "A user group identifier.", + "example": { + "id": "admins", + "type": "userGroup" + } + }, + "DeclarativeUserIdentifier": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "User identifier.", + "example": "employee123" + }, + "type": { + "type": "string", + "description": "A type.", + "example": "user", + "enum": ["user"] + } + }, + "description": "A user identifier.", + "example": { + "id": "example123", + "type": "user" + } + }, + "AssigneeIdentifier": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["user", "userGroup"] + } + }, + "description": "Identifier of a user or user-group." + }, + "DeclarativeSingleWorkspacePermission": { + "required": ["assignee", "name"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Permission name.", + "enum": [ + "MANAGE", + "ANALYZE", + "EXPORT", + "EXPORT_TABULAR", + "EXPORT_PDF", + "CREATE_AUTOMATION", + "USE_AI_ASSISTANT", + "CREATE_FILTER_VIEW", + "VIEW" + ] + }, + "assignee": { + "$ref": "#/components/schemas/AssigneeIdentifier" + } + } + }, + "DeclarativeWorkspaceHierarchyPermission": { + "required": ["assignee", "name"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Permission name.", + "enum": [ + "MANAGE", + "ANALYZE", + "EXPORT", + "EXPORT_TABULAR", + "EXPORT_PDF", + "CREATE_AUTOMATION", + "USE_AI_ASSISTANT", + "CREATE_FILTER_VIEW", + "VIEW" + ] + }, + "assignee": { + "$ref": "#/components/schemas/AssigneeIdentifier" + } + } + }, + "DeclarativeWorkspacePermissions": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeSingleWorkspacePermission" + } + }, + "hierarchyPermissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspaceHierarchyPermission" + } + } + }, + "description": "Definition of permissions associated with a workspace." + }, + "DataSourceTableIdentifier": { + "required": ["dataSourceId", "id", "type"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "ID of table.", + "example": "customers" + }, + "dataSourceId": { + "maxLength": 255, + "type": "string", + "description": "Data source ID.", + "example": "my-postgres" + }, + "type": { + "type": "string", + "description": "Data source entity type.", + "example": "dataSource", + "enum": ["dataSource"] + }, + "path": { + "type": "array", + "description": "Path to table.", + "nullable": true, + "example": ["table_schema", "table_name"], + "items": { + "type": "string", + "example": "table_name" + } + } + }, + "description": "An id of the table. Including ID of data source.", + "example": { + "id": "customers", + "dataSourceId": "my-postgres", + "type": "DATA_SOURCE" + } + }, + "DeclarativeAggregatedFact": { + "required": ["id", "sourceColumn", "sourceFactReference"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Fact ID.", + "example": "fact.customer_order_count" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Fact description.", + "example": "A number of orders created by the customer - including all orders, even the non-delivered ones." + }, + "sourceColumn": { + "maxLength": 255, + "type": "string", + "description": "A name of the source column in the table.", + "example": "customer_order_count" + }, + "sourceColumnDataType": { + "maxLength": 255, + "type": "string", + "description": "A type of the source column", + "example": "NUMERIC", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Customers"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Customers\"]" + } + }, + "sourceFactReference": { + "$ref": "#/components/schemas/DeclarativeSourceFactReference" + } + }, + "description": "A dataset fact." + }, + "DeclarativeAttribute": { + "required": ["id", "labels", "sourceColumn", "title"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Attribute ID.", + "example": "attr.customers.customer_name" + }, + "title": { + "maxLength": 255, + "type": "string", + "description": "Attribute title.", + "example": "Customer Name" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Attribute description.", + "example": "Customer name including first and last name." + }, + "labels": { + "type": "array", + "description": "An array of attribute labels.", + "items": { + "$ref": "#/components/schemas/DeclarativeLabel" + } + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Customers"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Customers\"]" + } + }, + "sortColumn": { + "maxLength": 255, + "type": "string", + "description": "Attribute sort column.", + "example": "customer_name" + }, + "sortDirection": { + "type": "string", + "description": "Attribute sort direction.", + "example": "\"ASC\" | \"DESC\"", + "enum": ["ASC", "DESC"] + }, + "defaultView": { + "$ref": "#/components/schemas/LabelIdentifier" + }, + "sourceColumn": { + "maxLength": 255, + "type": "string", + "description": "A name of the source column that is the primary label", + "example": "customer_name" + }, + "sourceColumnDataType": { + "maxLength": 255, + "type": "string", + "description": "A type of the source column", + "example": "STRING", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + }, + "isHidden": { + "type": "boolean", + "description": "If true, this attribute is hidden from AI search results.", + "example": false + }, + "locale": { + "type": "string", + "description": "Default locale for primary label.", + "example": "en-US" + } + }, + "description": "A dataset attribute." + }, + "DeclarativeDataset": { + "required": ["grain", "id", "references", "title"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "The Dataset ID. This ID is further used to refer to this instance of dataset.", + "example": "customers" + }, + "title": { + "maxLength": 255, + "type": "string", + "description": "A dataset title.", + "example": "Customers" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "A dataset description.", + "example": "The customers of ours." + }, + "grain": { + "type": "array", + "description": "An array of grain identifiers.", + "items": { + "$ref": "#/components/schemas/GrainIdentifier" + } + }, + "attributes": { + "type": "array", + "description": "An array of attributes.", + "items": { + "$ref": "#/components/schemas/DeclarativeAttribute" + } + }, + "facts": { + "type": "array", + "description": "An array of facts.", + "items": { + "$ref": "#/components/schemas/DeclarativeFact" + } + }, + "aggregatedFacts": { + "type": "array", + "description": "An array of aggregated facts.", + "items": { + "$ref": "#/components/schemas/DeclarativeAggregatedFact" + } + }, + "references": { + "type": "array", + "description": "An array of references.", + "items": { + "$ref": "#/components/schemas/DeclarativeReference" + } + }, + "dataSourceTableId": { + "$ref": "#/components/schemas/DataSourceTableIdentifier" + }, + "sql": { + "$ref": "#/components/schemas/DeclarativeDatasetSql" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Customers"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Customers\"]" + } + }, + "workspaceDataFilterColumns": { + "type": "array", + "description": "An array of columns which are available for match to implicit workspace data filters.", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterColumn" + } + }, + "workspaceDataFilterReferences": { + "type": "array", + "description": "An array of explicit workspace data filters.", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterReferences" + } + }, + "precedence": { + "minimum": 0, + "type": "integer", + "description": "Precedence used in aggregate awareness.", + "format": "int32", + "example": 0 + } + }, + "description": "A dataset defined by its properties." + }, + "DeclarativeDatasetExtension": { + "required": ["id"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "The Dataset ID. This ID is further used to refer to this instance of dataset.", + "example": "customers" + }, + "workspaceDataFilterReferences": { + "type": "array", + "description": "An array of explicit workspace data filters.", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterReferences" + } + } + }, + "description": "A dataset extension properties." + }, + "DeclarativeDatasetSql": { + "required": ["dataSourceId", "statement"], + "type": "object", + "properties": { + "statement": { + "type": "string", + "description": "SQL statement.", + "example": "SELECT * FROM some_table" + }, + "dataSourceId": { + "type": "string", + "description": "Data source ID.", + "example": "my-postgres" + } + }, + "description": "SQL defining this dataset.", + "example": { + "statement": "SELECT * FROM some_table", + "dataSourceId": "my-postgres" + } + }, + "DeclarativeDateDataset": { + "required": ["granularities", "granularitiesFormatting", "id", "title"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Date dataset ID.", + "example": "date" + }, + "title": { + "maxLength": 255, + "type": "string", + "description": "Date dataset title.", + "example": "Date" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Date dataset description.", + "example": "A customer order date" + }, + "granularitiesFormatting": { + "$ref": "#/components/schemas/GranularitiesFormatting" + }, + "granularities": { + "type": "array", + "description": "An array of date granularities. All listed granularities will be available for date dataset.", + "items": { + "type": "string", + "enum": [ + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "MONTH", + "QUARTER", + "YEAR", + "MINUTE_OF_HOUR", + "HOUR_OF_DAY", + "DAY_OF_WEEK", + "DAY_OF_MONTH", + "DAY_OF_QUARTER", + "DAY_OF_YEAR", + "WEEK_OF_YEAR", + "MONTH_OF_YEAR", + "QUARTER_OF_YEAR", + "FISCAL_MONTH", + "FISCAL_QUARTER", + "FISCAL_YEAR" + ] + } + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Customer dates"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Customer dates\"]" + } + } + }, + "description": "A date dataset." + }, + "DeclarativeFact": { + "required": ["id", "sourceColumn", "title"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Fact ID.", + "example": "fact.customer_order_count" + }, + "title": { + "maxLength": 255, + "type": "string", + "description": "Fact title.", + "example": "Customer order count" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Fact description.", + "example": "A number of orders created by the customer - including all orders, even the non-delivered ones." + }, + "sourceColumn": { + "maxLength": 255, + "type": "string", + "description": "A name of the source column in the table.", + "example": "customer_order_count" + }, + "sourceColumnDataType": { + "maxLength": 255, + "type": "string", + "description": "A type of the source column", + "example": "NUMERIC", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Customers"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Customers\"]" + } + }, + "isHidden": { + "type": "boolean", + "description": "If true, this fact is hidden from AI search results.", + "example": false + } + }, + "description": "A dataset fact." }, - "DeclarativeUserDataFilter": { - "required": ["id", "maql", "title"], + "DeclarativeLabel": { + "required": ["id", "sourceColumn", "title"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "User Data Filters ID. This ID is further used to refer to this instance.", - "example": "country_id_setting" + "description": "Label ID.", + "example": "label.customer_name" }, "title": { "maxLength": 255, "type": "string", - "description": "User Data Filters setting title.", - "example": "Country ID setting" + "description": "Label title.", + "example": "Customer name" }, "description": { "maxLength": 10000, "type": "string", - "description": "User Data Filters setting description.", - "example": "ID of country setting" + "description": "Label description.", + "example": "Customer name" }, - "maql": { - "maxLength": 10000, + "sourceColumn": { + "maxLength": 255, "type": "string", - "description": "Expression in MAQL specifying the User Data Filter", - "example": "{label/country} = \"USA\" AND {label/date.year} = THIS(YEAR)" - }, - "user": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "description": "A name of the source column in the table.", + "example": "customer_name" }, - "userGroup": { - "$ref": "#/components/schemas/DeclarativeUserGroupIdentifier" + "sourceColumnDataType": { + "maxLength": 255, + "type": "string", + "description": "A type of the source column", + "example": "STRING", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] }, "tags": { "uniqueItems": true, "type": "array", "description": "A list of tags.", - "example": ["Revenues"], + "example": ["Customers"], "items": { "type": "string", "description": "A list of tags.", - "example": "[\"Revenues\"]" + "example": "[\"Customers\"]" + } + }, + "valueType": { + "type": "string", + "description": "Specific type of label", + "enum": [ + "TEXT", + "HYPERLINK", + "GEO", + "GEO_LONGITUDE", + "GEO_LATITUDE", + "GEO_AREA", + "IMAGE" + ] + }, + "isHidden": { + "type": "boolean", + "description": "Determines if the label is hidden from AI features.", + "example": false + }, + "geoAreaConfig": { + "$ref": "#/components/schemas/GeoAreaConfig" + }, + "locale": { + "type": "string", + "description": "Default label locale.", + "example": "en-US" + }, + "translations": { + "type": "array", + "description": "Other translations.", + "items": { + "$ref": "#/components/schemas/DeclarativeLabelTranslation" } } }, - "description": "User Data Filters serving the filtering of what data users can see in workspaces." + "description": "A attribute label." }, - "DeclarativeUserDataFilters": { - "required": ["userDataFilters"], + "DeclarativeLabelTranslation": { + "required": ["locale", "sourceColumn"], "type": "object", "properties": { - "userDataFilters": { + "locale": { + "type": "string", + "description": "Translation locale.", + "example": "en-US" + }, + "sourceColumn": { + "type": "string", + "description": "Translation source column.", + "example": "customer_name_en" + } + }, + "description": "A label translation." + }, + "DeclarativeLdm": { + "type": "object", + "properties": { + "datasets": { "type": "array", + "description": "An array containing datasets.", "items": { - "$ref": "#/components/schemas/DeclarativeUserDataFilter" + "$ref": "#/components/schemas/DeclarativeDataset" + } + }, + "dateInstances": { + "type": "array", + "description": "An array containing date-related datasets.", + "items": { + "$ref": "#/components/schemas/DeclarativeDateDataset" + } + }, + "datasetExtensions": { + "type": "array", + "description": "An array containing extensions for datasets defined in parent workspaces.", + "items": { + "$ref": "#/components/schemas/DeclarativeDatasetExtension" } } }, - "description": "Declarative form of user data filters." + "description": "A logical data model (LDM) representation." }, - "DeclarativeUserGroupIdentifier": { + "DeclarativeModel": { + "type": "object", + "properties": { + "ldm": { + "$ref": "#/components/schemas/DeclarativeLdm" + } + }, + "description": "A data model structured as a set of its attributes." + }, + "DeclarativeReference": { + "required": ["identifier", "multivalue"], + "type": "object", + "properties": { + "identifier": { + "$ref": "#/components/schemas/ReferenceIdentifier" + }, + "multivalue": { + "type": "boolean", + "description": "The multi-value flag enables many-to-many cardinality for references.", + "example": false + }, + "sourceColumns": { + "type": "array", + "description": "An array of source column names for a given reference. Deprecated, use 'sources' instead.", + "example": ["customer_id"], + "deprecated": true, + "items": { + "type": "string" + } + }, + "sourceColumnDataTypes": { + "type": "array", + "description": "An array of source column data types for a given reference. Deprecated, use 'sources' instead.", + "deprecated": true, + "items": { + "type": "string", + "enum": [ + "INT", + "STRING", + "DATE", + "NUMERIC", + "TIMESTAMP", + "TIMESTAMP_TZ", + "BOOLEAN" + ] + } + }, + "sources": { + "type": "array", + "description": "An array of source columns for a given reference.", + "items": { + "$ref": "#/components/schemas/DeclarativeReferenceSource" + } + } + }, + "description": "A dataset reference." + }, + "DeclarativeReferenceSource": { + "required": ["column", "target"], + "type": "object", + "properties": { + "column": { + "maxLength": 255, + "type": "string", + "description": "A name of the source column in the table.", + "example": "customer_id" + }, + "dataType": { + "maxLength": 255, + "type": "string", + "description": "A type of the source column.", + "example": "STRING", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + }, + "target": { + "$ref": "#/components/schemas/GrainIdentifier" + } + }, + "description": "A dataset reference source column description." + }, + "DeclarativeSourceFactReference": { + "required": ["operation", "reference"], + "type": "object", + "properties": { + "reference": { + "$ref": "#/components/schemas/FactIdentifier" + }, + "operation": { + "type": "string", + "description": "Aggregation operation.", + "example": "SUM", + "enum": ["SUM", "MIN", "MAX"] + } + }, + "description": "Aggregated awareness source fact reference." + }, + "DeclarativeWorkspaceDataFilterColumn": { + "required": ["dataType", "name"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the column", + "example": "customer_id" + }, + "dataType": { + "type": "string", + "description": "Data type of the column", + "example": "INT", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + } + } + }, + "DeclarativeWorkspaceDataFilterReferences": { + "required": ["filterColumn", "filterColumnDataType", "filterId"], + "type": "object", + "properties": { + "filterId": { + "$ref": "#/components/schemas/DatasetWorkspaceDataFilterIdentifier" + }, + "filterColumn": { + "type": "string", + "description": "Filter column name", + "example": "filter_id" + }, + "filterColumnDataType": { + "type": "string", + "description": "Filter column data type", + "example": "INT", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + } + } + }, + "FactIdentifier": { "required": ["id", "type"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Identifier of the user group.", - "example": "group.admins" + "description": "Fact ID.", + "example": "fact_id" }, "type": { "type": "string", - "description": "A type.", - "example": "userGroup", - "enum": ["userGroup"] + "description": "A type of the fact.", + "example": "fact", + "enum": ["fact"] } }, - "description": "A user group identifier.", - "example": { - "id": "admins", - "type": "userGroup" - } + "description": "A fact identifier." }, - "DeclarativeUserIdentifier": { + "GeoAreaConfig": { + "required": ["collection"], + "type": "object", + "properties": { + "collection": { + "$ref": "#/components/schemas/GeoCollectionIdentifier" + } + }, + "description": "Configuration specific to geo area labels." + }, + "GrainIdentifier": { + "maxLength": 255, "required": ["id", "type"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "User identifier.", - "example": "employee123" + "description": "Grain ID.", + "example": "attr.customers.customer_name" }, "type": { "type": "string", - "description": "A type.", - "example": "user", - "enum": ["user"] + "description": "A type of the grain.", + "example": "ATTRIBUTE", + "enum": ["attribute", "date"] } }, - "description": "A user identifier.", + "description": "A grain identifier.", "example": { - "id": "example123", - "type": "user" + "id": "customer_id", + "type": "attribute" } }, - "AssigneeIdentifier": { + "GranularitiesFormatting": { + "required": ["titleBase", "titlePattern"], + "type": "object", + "properties": { + "titleBase": { + "maxLength": 255, + "type": "string", + "description": "Title base is used as a token in title pattern. If left empty, it is replaced by date dataset title." + }, + "titlePattern": { + "maxLength": 255, + "type": "string", + "description": "This pattern is used to generate the title of attributes and labels that result from the granularities.\nThere are two tokens available: \n* `%titleBase` - represents shared part by all titles, or title of Date Dataset if left empty\n* `%granularityTitle` - represents `DateGranularity` built-in title", + "example": "%titleBase - %granularityTitle" + } + }, + "description": "A date dataset granularities title formatting rules." + }, + "LabelIdentifier": { "required": ["id", "type"], "type": "object", "properties": { "id": { - "type": "string" + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Label ID.", + "example": "label_id" }, "type": { "type": "string", - "enum": ["user", "userGroup"] + "description": "A type of the label.", + "example": "label", + "enum": ["label"] } }, - "description": "Identifier of a user or user-group." + "description": "A label identifier." }, - "DeclarativeSingleWorkspacePermission": { - "required": ["assignee", "name"], + "ReferenceIdentifier": { + "required": ["id", "type"], "type": "object", "properties": { - "name": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Permission name.", - "enum": [ - "MANAGE", - "ANALYZE", - "EXPORT", - "EXPORT_TABULAR", - "EXPORT_PDF", - "CREATE_AUTOMATION", - "USE_AI_ASSISTANT", - "CREATE_FILTER_VIEW", - "VIEW" - ] + "description": "Reference ID.", + "example": "customers" }, - "assignee": { - "$ref": "#/components/schemas/AssigneeIdentifier" + "type": { + "type": "string", + "description": "A type of the reference.", + "example": "DATASET", + "enum": ["dataset"] } - } + }, + "description": "A reference identifier." }, - "DeclarativeWorkspaceHierarchyPermission": { - "required": ["assignee", "name"], + "DeclarativeAnalyticalDashboardIdentifier": { + "required": ["id", "type"], "type": "object", "properties": { - "name": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Permission name.", - "enum": [ - "MANAGE", - "ANALYZE", - "EXPORT", - "EXPORT_TABULAR", - "EXPORT_PDF", - "CREATE_AUTOMATION", - "USE_AI_ASSISTANT", - "CREATE_FILTER_VIEW", - "VIEW" + "description": "Identifier of the analytical dashboard.", + "example": "dashboard123" + }, + "type": { + "type": "string", + "description": "A type.", + "example": "analyticalDashboard", + "enum": ["analyticalDashboard"] + } + }, + "description": "An analytical dashboard identifier." + }, + "DeclarativeFilterView": { + "required": ["id", "title"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "FilterView object ID.", + "example": "filterView-1" + }, + "title": { + "maxLength": 255, + "type": "string" + }, + "description": { + "maxLength": 255, + "type": "string" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Revenue\",\"Sales\"]" + } + }, + "isDefault": { + "type": "boolean", + "description": "Indicator whether the filter view should by applied by default." + }, + "analyticalDashboard": { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardIdentifier" + }, + "user": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "content": { + "$ref": "#/components/schemas/JsonNode" + } + } + }, + "AutomationAlert": { + "required": ["condition", "execution"], + "type": "object", + "properties": { + "execution": { + "$ref": "#/components/schemas/AlertAfm" + }, + "condition": { + "oneOf": [ + { + "$ref": "#/components/schemas/AnomalyDetectionWrapper" + }, + { + "$ref": "#/components/schemas/ComparisonWrapper" + }, + { + "$ref": "#/components/schemas/RangeWrapper" + }, + { + "$ref": "#/components/schemas/RelativeWrapper" + } ] }, - "assignee": { - "$ref": "#/components/schemas/AssigneeIdentifier" + "trigger": { + "type": "string", + "description": "Trigger behavior for the alert.\nALWAYS - alert is triggered every time the condition is met.\nONCE - alert is triggered only once when the condition is met.\n", + "default": "ALWAYS", + "enum": ["ALWAYS", "ONCE"] } } }, - "DeclarativeWorkspacePermissions": { + "AutomationDashboardTabularExport": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/DashboardTabularExportRequestV2" + } + } + }, + "AutomationExternalRecipient": { + "required": ["email"], + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "E-mail address to send notifications from.", + "format": "email" + } + } + }, + "AutomationImageExport": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/ImageExportRequest" + } + } + }, + "AutomationMetadata": { + "maxLength": 250000, "type": "object", "properties": { - "permissions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeSingleWorkspacePermission" - } + "widget": { + "type": "string" }, - "hierarchyPermissions": { + "visibleFilters": { "type": "array", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceHierarchyPermission" + "$ref": "#/components/schemas/VisibleFilter" } } }, - "description": "Definition of permissions associated with a workspace." + "additionalProperties": true, + "description": "Additional information for the automation.", + "nullable": true }, - "DataSourceTableIdentifier": { - "required": ["dataSourceId", "id", "type"], + "AutomationRawExport": { + "required": ["requestPayload"], "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "ID of table.", - "example": "customers" - }, - "dataSourceId": { - "maxLength": 255, - "type": "string", - "description": "Data source ID.", - "example": "my-postgres" - }, - "type": { - "type": "string", - "description": "Data source entity type.", - "example": "dataSource", - "enum": ["dataSource"] - }, - "path": { - "type": "array", - "description": "Path to table.", - "nullable": true, - "example": ["table_schema", "table_name"], - "items": { - "type": "string", - "example": "table_name" - } + "requestPayload": { + "$ref": "#/components/schemas/RawExportAutomationRequest" } - }, - "description": "An id of the table. Including ID of data source.", - "example": { - "id": "customers", - "dataSourceId": "my-postgres", - "type": "DATA_SOURCE" } }, - "DeclarativeAggregatedFact": { - "required": ["id", "sourceColumn", "sourceFactReference"], + "AutomationSchedule": { + "required": ["cron", "timezone"], "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "cron": { + "maxLength": 255, "type": "string", - "description": "Fact ID.", - "example": "fact.customer_order_count" + "description": "Cron expression defining the schedule of the automation. The format is SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK (YEAR). The example expression signifies an action every 30 minutes from 9:00 to 17:00 on workdays.", + "example": "0 */30 9-17 ? * MON-FRI" }, - "description": { - "maxLength": 10000, + "cronDescription": { "type": "string", - "description": "Fact description.", - "example": "A number of orders created by the customer - including all orders, even the non-delivered ones." + "description": "Human-readable description of the cron expression.", + "readOnly": true }, - "sourceColumn": { + "timezone": { "maxLength": 255, "type": "string", - "description": "A name of the source column in the table.", - "example": "customer_order_count" + "description": "Timezone in which the schedule is defined.", + "example": "Europe/Prague" }, - "sourceColumnDataType": { - "maxLength": 255, + "firstRun": { "type": "string", - "description": "A type of the source column", - "example": "NUMERIC", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] - }, - "tags": { - "uniqueItems": true, - "type": "array", - "description": "A list of tags.", - "example": ["Customers"], - "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Customers\"]" - } - }, - "sourceFactReference": { - "$ref": "#/components/schemas/DeclarativeSourceFactReference" + "description": "Timestamp of the first scheduled action. If not provided default to the next scheduled time.", + "format": "date-time", + "example": "2025-01-01T12:00:00Z" } - }, - "description": "A dataset fact." + } }, - "DeclarativeAttribute": { - "required": ["id", "labels", "sourceColumn", "title"], + "AutomationSlidesExport": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/SlidesExportRequest" + } + } + }, + "AutomationTabularExport": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/TabularExportRequest" + } + } + }, + "AutomationVisualExport": { + "required": ["requestPayload"], + "type": "object", + "properties": { + "requestPayload": { + "$ref": "#/components/schemas/VisualExportRequest" + } + } + }, + "DeclarativeAutomation": { + "required": ["id"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Attribute ID.", - "example": "attr.customers.customer_name" + "type": "string" }, "title": { "maxLength": 255, - "type": "string", - "description": "Attribute title.", - "example": "Customer Name" + "type": "string" }, "description": { - "maxLength": 10000, - "type": "string", - "description": "Attribute description.", - "example": "Customer name including first and last name." - }, - "labels": { - "type": "array", - "description": "An array of attribute labels.", - "items": { - "$ref": "#/components/schemas/DeclarativeLabel" - } + "maxLength": 255, + "type": "string" }, "tags": { "uniqueItems": true, "type": "array", - "description": "A list of tags.", - "example": ["Customers"], "items": { "type": "string", "description": "A list of tags.", - "example": "[\"Customers\"]" + "example": "[\"Revenue\",\"Sales\"]" } }, - "sortColumn": { - "maxLength": 255, - "type": "string", - "description": "Attribute sort column.", - "example": "customer_name" - }, - "sortDirection": { - "type": "string", - "description": "Attribute sort direction.", - "example": "\"ASC\" | \"DESC\"", - "enum": ["ASC", "DESC"] - }, - "defaultView": { - "$ref": "#/components/schemas/LabelIdentifier" + "details": { + "maxLength": 10000, + "type": "object", + "additionalProperties": { + "maxLength": 10000, + "type": "string", + "description": "TODO" + }, + "description": "TODO" }, - "sourceColumn": { - "maxLength": 255, - "type": "string", - "description": "A name of the source column that is the primary label", - "example": "customer_name" + "metadata": { + "$ref": "#/components/schemas/AutomationMetadata" }, - "sourceColumnDataType": { - "maxLength": 255, + "state": { "type": "string", - "description": "A type of the source column", - "example": "STRING", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] - }, - "isHidden": { - "type": "boolean", - "description": "If true, this attribute is hidden from AI search results.", - "example": false + "description": "Current state of the automation.", + "default": "ACTIVE", + "enum": ["ACTIVE", "PAUSED"] }, - "locale": { - "type": "string", - "description": "Default locale for primary label.", - "example": "en-US" - } - }, - "description": "A dataset attribute." - }, - "DeclarativeDataset": { - "required": ["grain", "id", "references", "title"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "evaluationMode": { "type": "string", - "description": "The Dataset ID. This ID is further used to refer to this instance of dataset.", - "example": "customers" + "description": "Specify automation evaluation mode.", + "default": "PER_RECIPIENT", + "enum": ["SHARED", "PER_RECIPIENT"] }, - "title": { - "maxLength": 255, - "type": "string", - "description": "A dataset title.", - "example": "Customers" + "schedule": { + "$ref": "#/components/schemas/AutomationSchedule" }, - "description": { - "maxLength": 10000, - "type": "string", - "description": "A dataset description.", - "example": "The customers of ours." + "alert": { + "$ref": "#/components/schemas/AutomationAlert" }, - "grain": { + "tabularExports": { + "uniqueItems": true, "type": "array", - "description": "An array of grain identifiers.", "items": { - "$ref": "#/components/schemas/GrainIdentifier" + "$ref": "#/components/schemas/AutomationTabularExport" } }, - "attributes": { + "visualExports": { + "uniqueItems": true, "type": "array", - "description": "An array of attributes.", "items": { - "$ref": "#/components/schemas/DeclarativeAttribute" + "$ref": "#/components/schemas/AutomationVisualExport" } }, - "facts": { + "imageExports": { + "uniqueItems": true, "type": "array", - "description": "An array of facts.", "items": { - "$ref": "#/components/schemas/DeclarativeFact" + "$ref": "#/components/schemas/AutomationImageExport" } }, - "aggregatedFacts": { + "rawExports": { + "uniqueItems": true, "type": "array", - "description": "An array of aggregated facts.", "items": { - "$ref": "#/components/schemas/DeclarativeAggregatedFact" + "$ref": "#/components/schemas/AutomationRawExport" } }, - "references": { + "slidesExports": { + "uniqueItems": true, "type": "array", - "description": "An array of references.", "items": { - "$ref": "#/components/schemas/DeclarativeReference" + "$ref": "#/components/schemas/AutomationSlidesExport" } }, - "dataSourceTableId": { - "$ref": "#/components/schemas/DataSourceTableIdentifier" - }, - "sql": { - "$ref": "#/components/schemas/DeclarativeDatasetSql" - }, - "tags": { + "dashboardTabularExports": { "uniqueItems": true, "type": "array", - "description": "A list of tags.", - "example": ["Customers"], "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Customers\"]" + "$ref": "#/components/schemas/AutomationDashboardTabularExport" } }, - "workspaceDataFilterColumns": { + "externalRecipients": { + "uniqueItems": true, "type": "array", - "description": "An array of columns which are available for match to implicit workspace data filters.", + "description": "External recipients of the automation action results.", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterColumn" + "$ref": "#/components/schemas/AutomationExternalRecipient" } }, - "workspaceDataFilterReferences": { + "notificationChannel": { + "$ref": "#/components/schemas/DeclarativeNotificationChannelIdentifier" + }, + "exportDefinitions": { + "uniqueItems": true, "type": "array", - "description": "An array of explicit workspace data filters.", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterReferences" + "$ref": "#/components/schemas/DeclarativeExportDefinitionIdentifier" } }, - "precedence": { - "minimum": 0, - "type": "integer", - "description": "Precedence used in aggregate awareness.", - "format": "int32", - "example": 0 - } - }, - "description": "A dataset defined by its properties." - }, - "DeclarativeDatasetExtension": { - "required": ["id"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "The Dataset ID. This ID is further used to refer to this instance of dataset.", - "example": "customers" - }, - "workspaceDataFilterReferences": { + "recipients": { + "uniqueItems": true, "type": "array", - "description": "An array of explicit workspace data filters.", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterReferences" + "$ref": "#/components/schemas/DeclarativeUserIdentifier" } - } - }, - "description": "A dataset extension properties." - }, - "DeclarativeDatasetSql": { - "required": ["dataSourceId", "statement"], - "type": "object", - "properties": { - "statement": { + }, + "analyticalDashboard": { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardIdentifier" + }, + "createdBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "SQL statement.", - "example": "SELECT * FROM some_table" + "description": "Time of the last entity modification.", + "nullable": true, + "example": "2023-07-20 12:30" }, - "dataSourceId": { + "createdAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "Data source ID.", - "example": "my-postgres" + "description": "Time of the entity creation.", + "nullable": true, + "example": "2023-07-20 12:30" } - }, - "description": "SQL defining this dataset.", - "example": { - "statement": "SELECT * FROM some_table", - "dataSourceId": "my-postgres" } }, - "DeclarativeDateDataset": { - "required": ["granularities", "granularitiesFormatting", "id", "title"], + "DeclarativeExportDefinitionIdentifier": { + "required": ["id", "type"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Date dataset ID.", - "example": "date" - }, - "title": { - "maxLength": 255, - "type": "string", - "description": "Date dataset title.", - "example": "Date" + "description": "Export definition identifier.", + "example": "export123" }, - "description": { - "maxLength": 10000, + "type": { "type": "string", - "description": "Date dataset description.", - "example": "A customer order date" - }, - "granularitiesFormatting": { - "$ref": "#/components/schemas/GranularitiesFormatting" - }, - "granularities": { - "type": "array", - "description": "An array of date granularities. All listed granularities will be available for date dataset.", - "items": { - "type": "string", - "enum": [ - "MINUTE", - "HOUR", - "DAY", - "WEEK", - "MONTH", - "QUARTER", - "YEAR", - "MINUTE_OF_HOUR", - "HOUR_OF_DAY", - "DAY_OF_WEEK", - "DAY_OF_MONTH", - "DAY_OF_QUARTER", - "DAY_OF_YEAR", - "WEEK_OF_YEAR", - "MONTH_OF_YEAR", - "QUARTER_OF_YEAR", - "FISCAL_MONTH", - "FISCAL_QUARTER", - "FISCAL_YEAR" - ] - } - }, - "tags": { - "uniqueItems": true, - "type": "array", - "description": "A list of tags.", - "example": ["Customer dates"], - "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Customer dates\"]" - } + "description": "A type.", + "example": "exportDefinition", + "enum": ["exportDefinition"] } }, - "description": "A date dataset." + "description": "An export definition identifier." }, - "DeclarativeFact": { - "required": ["id", "sourceColumn", "title"], + "DeclarativeNotificationChannelIdentifier": { + "required": ["id", "type"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Fact ID.", - "example": "fact.customer_order_count" - }, - "title": { - "maxLength": 255, - "type": "string", - "description": "Fact title.", - "example": "Customer order count" - }, - "description": { - "maxLength": 10000, - "type": "string", - "description": "Fact description.", - "example": "A number of orders created by the customer - including all orders, even the non-delivered ones." + "description": "Notification channel identifier.", + "example": "webhook123" }, - "sourceColumn": { - "maxLength": 255, + "type": { "type": "string", - "description": "A name of the source column in the table.", - "example": "customer_order_count" - }, - "sourceColumnDataType": { - "maxLength": 255, + "description": "A type.", + "example": "notificationChannel", + "enum": ["notificationChannel"] + } + }, + "description": "A notification channel identifier." + }, + "AssigneeRule": { + "required": ["type"], + "type": "object", + "properties": { + "type": { "type": "string", - "description": "A type of the source column", - "example": "NUMERIC", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] - }, - "tags": { - "uniqueItems": true, - "type": "array", - "description": "A list of tags.", - "example": ["Customers"], - "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Customers\"]" - } - }, - "isHidden": { - "type": "boolean", - "description": "If true, this fact is hidden from AI search results.", - "example": false + "enum": ["allWorkspaceUsers"] } }, - "description": "A dataset fact." + "description": "Identifier of an assignee rule." }, - "DeclarativeLabel": { - "required": ["id", "sourceColumn", "title"], + "DeclarativeAnalyticalDashboard": { + "required": ["content", "id", "title"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Label ID.", - "example": "label.customer_name" - }, - "title": { - "maxLength": 255, - "type": "string", - "description": "Label title.", - "example": "Customer name" - }, - "description": { - "maxLength": 10000, - "type": "string", - "description": "Label description.", - "example": "Customer name" + "type": "string", + "description": "Analytical dashboard ID.", + "example": "revenues-analysis" }, - "sourceColumn": { + "title": { "maxLength": 255, "type": "string", - "description": "A name of the source column in the table.", - "example": "customer_name" + "description": "Analytical dashboard title.", + "example": "Revenues analysis" }, - "sourceColumnDataType": { - "maxLength": 255, + "description": { + "maxLength": 10000, "type": "string", - "description": "A type of the source column", - "example": "STRING", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + "description": "Analytical dashboard description.", + "example": "Period to period comparison of revenues in main sectors." + }, + "content": { + "$ref": "#/components/schemas/JsonNode" }, "tags": { "uniqueItems": true, "type": "array", "description": "A list of tags.", - "example": ["Customers"], + "example": ["Revenues"], "items": { "type": "string", "description": "A list of tags.", - "example": "[\"Customers\"]" + "example": "[\"Revenues\"]" } }, - "valueType": { - "type": "string", - "description": "Specific type of label", - "enum": [ - "TEXT", - "HYPERLINK", - "GEO", - "GEO_LONGITUDE", - "GEO_LATITUDE", - "GEO_AREA", - "IMAGE" - ] + "permissions": { + "type": "array", + "description": "A list of permissions.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssignee" + }, + { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssigneeRule" + } + ] + } }, - "isHidden": { - "type": "boolean", - "description": "Determines if the label is hidden from AI features.", - "example": false + "createdBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" }, - "geoAreaConfig": { - "$ref": "#/components/schemas/GeoAreaConfig" + "modifiedBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" }, - "locale": { + "modifiedAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "Default label locale.", - "example": "en-US" + "description": "Time of the last entity modification.", + "nullable": true, + "example": "2023-07-20 12:30" }, - "translations": { + "createdAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "type": "string", + "description": "Time of the entity creation.", + "nullable": true, + "example": "2023-07-20 12:30" + } + } + }, + "DeclarativeAnalyticalDashboardExtension": { + "required": ["id", "permissions"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Analytical dashboard ID.", + "example": "revenues-analysis" + }, + "permissions": { "type": "array", - "description": "Other translations.", + "description": "A list of permissions.", "items": { - "$ref": "#/components/schemas/DeclarativeLabelTranslation" + "oneOf": [ + { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssignee" + }, + { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssigneeRule" + } + ] } } - }, - "description": "A attribute label." + } }, - "DeclarativeLabelTranslation": { - "required": ["locale", "sourceColumn"], + "DeclarativeAnalyticalDashboardPermissionAssignment": { + "required": ["name"], "type": "object", "properties": { - "locale": { - "type": "string", - "description": "Translation locale.", - "example": "en-US" - }, - "sourceColumn": { + "name": { "type": "string", - "description": "Translation source column.", - "example": "customer_name_en" + "description": "Permission name.", + "enum": ["EDIT", "SHARE", "VIEW"] } }, - "description": "A label translation." + "description": "Analytical dashboard permission." }, - "DeclarativeLdm": { + "DeclarativeAnalyticalDashboardPermissionForAssignee": { + "required": ["assignee", "name"], "type": "object", - "properties": { - "datasets": { - "type": "array", - "description": "An array containing datasets.", - "items": { - "$ref": "#/components/schemas/DeclarativeDataset" - } + "description": "Analytical dashboard permission for an assignee.", + "allOf": [ + { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionAssignment" }, - "dateInstances": { - "type": "array", - "description": "An array containing date-related datasets.", - "items": { - "$ref": "#/components/schemas/DeclarativeDateDataset" + { + "type": "object", + "properties": { + "assignee": { + "$ref": "#/components/schemas/AssigneeIdentifier" + } } + } + ] + }, + "DeclarativeAnalyticalDashboardPermissionForAssigneeRule": { + "required": ["assigneeRule", "name"], + "type": "object", + "description": "Analytical dashboard permission for a collection of assignees identified by a rule.", + "allOf": [ + { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionAssignment" }, - "datasetExtensions": { - "type": "array", - "description": "An array containing extensions for datasets defined in parent workspaces.", - "items": { - "$ref": "#/components/schemas/DeclarativeDatasetExtension" + { + "type": "object", + "properties": { + "assigneeRule": { + "$ref": "#/components/schemas/AssigneeRule" + } } } - }, - "description": "A logical data model (LDM) representation." + ] }, - "DeclarativeModel": { + "DeclarativeAnalytics": { "type": "object", "properties": { - "ldm": { - "$ref": "#/components/schemas/DeclarativeLdm" + "analytics": { + "$ref": "#/components/schemas/DeclarativeAnalyticsLayer" } }, - "description": "A data model structured as a set of its attributes." + "description": "Entities describing users' view on data." }, - "DeclarativeReference": { - "required": ["identifier", "multivalue"], + "DeclarativeAnalyticsLayer": { "type": "object", "properties": { - "identifier": { - "$ref": "#/components/schemas/ReferenceIdentifier" + "analyticalDashboards": { + "type": "array", + "description": "A list of analytical dashboards available in the model.", + "items": { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboard" + } }, - "multivalue": { - "type": "boolean", - "description": "The multi-value flag enables many-to-many cardinality for references.", - "example": false + "filterContexts": { + "type": "array", + "description": "A list of filter contexts available in the model.", + "items": { + "$ref": "#/components/schemas/DeclarativeFilterContext" + } }, - "sourceColumns": { + "metrics": { "type": "array", - "description": "An array of source column names for a given reference. Deprecated, use 'sources' instead.", - "example": ["customer_id"], - "deprecated": true, + "description": "A list of metrics available in the model.", "items": { - "type": "string" + "$ref": "#/components/schemas/DeclarativeMetric" } }, - "sourceColumnDataTypes": { + "visualizationObjects": { "type": "array", - "description": "An array of source column data types for a given reference. Deprecated, use 'sources' instead.", - "deprecated": true, + "description": "A list of visualization objects available in the model.", "items": { - "type": "string", - "enum": [ - "INT", - "STRING", - "DATE", - "NUMERIC", - "TIMESTAMP", - "TIMESTAMP_TZ", - "BOOLEAN" - ] + "$ref": "#/components/schemas/DeclarativeVisualizationObject" } }, - "sources": { + "dashboardPlugins": { "type": "array", - "description": "An array of source columns for a given reference.", + "description": "A list of dashboard plugins available in the model.", "items": { - "$ref": "#/components/schemas/DeclarativeReferenceSource" + "$ref": "#/components/schemas/DeclarativeDashboardPlugin" + } + }, + "analyticalDashboardExtensions": { + "type": "array", + "description": "A list of dashboard permissions assigned to a related dashboard.", + "items": { + "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardExtension" + } + }, + "attributeHierarchies": { + "type": "array", + "description": "A list of attribute hierarchies.", + "items": { + "$ref": "#/components/schemas/DeclarativeAttributeHierarchy" + } + }, + "exportDefinitions": { + "type": "array", + "description": "A list of export definitions.", + "items": { + "$ref": "#/components/schemas/DeclarativeExportDefinition" } } - }, - "description": "A dataset reference." + } }, - "DeclarativeReferenceSource": { - "required": ["column", "target"], + "DeclarativeAttributeHierarchy": { + "required": ["content", "id", "title"], "type": "object", "properties": { - "column": { - "maxLength": 255, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "A name of the source column in the table.", - "example": "customer_id" + "description": "Attribute hierarchy object ID.", + "example": "hierarchy-1" }, - "dataType": { + "title": { "maxLength": 255, "type": "string", - "description": "A type of the source column.", - "example": "STRING", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] - }, - "target": { - "$ref": "#/components/schemas/GrainIdentifier" - } - }, - "description": "A dataset reference source column description." - }, - "DeclarativeSourceFactReference": { - "required": ["operation", "reference"], - "type": "object", - "properties": { - "reference": { - "$ref": "#/components/schemas/FactIdentifier" + "description": "Attribute hierarchy object title.", + "example": "Count of goods" }, - "operation": { - "type": "string", - "description": "Aggregation operation.", - "example": "SUM", - "enum": ["SUM", "MIN", "MAX"] - } - }, - "description": "Aggregated awareness source fact reference." - }, - "DeclarativeWorkspaceDataFilterColumn": { - "required": ["dataType", "name"], - "type": "object", - "properties": { - "name": { + "description": { + "maxLength": 10000, "type": "string", - "description": "Name of the column", - "example": "customer_id" + "description": "Attribute hierarchy object description.", + "example": "Simple number for total goods in current production." }, - "dataType": { - "type": "string", - "description": "Data type of the column", - "example": "INT", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] - } - } - }, - "DeclarativeWorkspaceDataFilterReferences": { - "required": ["filterColumn", "filterColumnDataType", "filterId"], - "type": "object", - "properties": { - "filterId": { - "$ref": "#/components/schemas/DatasetWorkspaceDataFilterIdentifier" + "content": { + "$ref": "#/components/schemas/JsonNode" }, - "filterColumn": { + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Revenues"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Revenues\"]" + } + }, + "createdBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "Filter column name", - "example": "filter_id" + "description": "Time of the last entity modification.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" }, - "filterColumnDataType": { + "createdAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "Filter column data type", - "example": "INT", - "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + "description": "Time of the entity creation.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" } } }, - "FactIdentifier": { - "required": ["id", "type"], + "DeclarativeDashboardPlugin": { + "required": ["content", "id", "title"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Fact ID.", - "example": "fact_id" + "description": "Dashboard plugin object ID.", + "example": "dashboard-plugin-1" }, - "type": { - "type": "string", - "description": "A type of the fact.", - "example": "fact", - "enum": ["fact"] - } - }, - "description": "A fact identifier." - }, - "GeoAreaConfig": { - "required": ["collection"], - "type": "object", - "properties": { - "collection": { - "$ref": "#/components/schemas/GeoCollection" - } - }, - "description": "Configuration specific to geo area labels." - }, - "GrainIdentifier": { - "maxLength": 255, - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "title": { + "maxLength": 255, "type": "string", - "description": "Grain ID.", - "example": "attr.customers.customer_name" + "description": "Dashboard plugin object title.", + "example": "3D map renderer" }, - "type": { + "description": { + "maxLength": 10000, "type": "string", - "description": "A type of the grain.", - "example": "ATTRIBUTE", - "enum": ["attribute", "date"] - } - }, - "description": "A grain identifier.", - "example": { - "id": "customer_id", - "type": "attribute" - } - }, - "GranularitiesFormatting": { - "required": ["titleBase", "titlePattern"], - "type": "object", - "properties": { - "titleBase": { - "maxLength": 255, + "description": "Dashboard plugin description.", + "example": "Three dimensional view of data." + }, + "content": { + "$ref": "#/components/schemas/JsonNode" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Revenues"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Revenues\"]" + } + }, + "createdBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "Title base is used as a token in title pattern. If left empty, it is replaced by date dataset title." + "description": "Time of the last entity modification.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" }, - "titlePattern": { - "maxLength": 255, + "createdAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "This pattern is used to generate the title of attributes and labels that result from the granularities.\nThere are two tokens available: \n* `%titleBase` - represents shared part by all titles, or title of Date Dataset if left empty\n* `%granularityTitle` - represents `DateGranularity` built-in title", - "example": "%titleBase - %granularityTitle" + "description": "Time of the entity creation.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" } - }, - "description": "A date dataset granularities title formatting rules." + } }, - "LabelIdentifier": { - "required": ["id", "type"], + "DeclarativeExportDefinition": { + "required": ["id", "title"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Label ID.", - "example": "label_id" + "description": "Export definition id.", + "example": "export-definition-1" }, - "type": { + "title": { + "maxLength": 255, "type": "string", - "description": "A type of the label.", - "example": "label", - "enum": ["label"] - } - }, - "description": "A label identifier." - }, - "ReferenceIdentifier": { - "required": ["id", "type"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "description": "Export definition object title.", + "example": "My regular export" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Export definition object description.", + "example": "Simple number for total goods in current production." + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Revenues"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Revenues\"]" + } + }, + "requestPayload": { + "oneOf": [ + { + "$ref": "#/components/schemas/TabularExportRequest" + }, + { + "$ref": "#/components/schemas/VisualExportRequest" + } + ] + }, + "createdBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "Reference ID.", - "example": "customers" + "description": "Time of the last entity modification.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" }, - "type": { + "createdAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "A type of the reference.", - "example": "DATASET", - "enum": ["dataset"] + "description": "Time of the entity creation.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" } - }, - "description": "A reference identifier." + } }, - "DeclarativeAnalyticalDashboardIdentifier": { - "required": ["id", "type"], + "DeclarativeFilterContext": { + "required": ["content", "id", "title"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Identifier of the analytical dashboard.", - "example": "dashboard123" + "description": "Filter Context ID.", + "example": "filter-sales" }, - "type": { + "title": { + "maxLength": 255, "type": "string", - "description": "A type.", - "example": "analyticalDashboard", - "enum": ["analyticalDashboard"] + "description": "Filter Context title.", + "example": "Filter Context for Sales team" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Filter Context description.", + "example": "Filter Context for Sales team." + }, + "content": { + "$ref": "#/components/schemas/JsonNode" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Revenues"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Revenues\"]" + } } - }, - "description": "An analytical dashboard identifier." + } }, - "DeclarativeFilterView": { - "required": ["id", "title"], + "DeclarativeMetric": { + "required": ["content", "id", "title"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "FilterView object ID.", - "example": "filterView-1" + "description": "Metric ID.", + "example": "total-sales" }, "title": { "maxLength": 255, - "type": "string" + "type": "string", + "description": "Metric title.", + "example": "Total sales" }, "description": { - "maxLength": 255, - "type": "string" + "maxLength": 10000, + "type": "string", + "description": "Metric description.", + "example": "Sales for all the data available." + }, + "content": { + "$ref": "#/components/schemas/JsonNode" }, "tags": { "uniqueItems": true, "type": "array", + "description": "A list of tags.", + "example": ["Revenues"], "items": { "type": "string", "description": "A list of tags.", - "example": "[\"Revenue\",\"Sales\"]" + "example": "[\"Revenues\"]" } }, - "isDefault": { - "type": "boolean", - "description": "Indicator whether the filter view should by applied by default." - }, - "analyticalDashboard": { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardIdentifier" + "createdBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" }, - "user": { + "modifiedBy": { "$ref": "#/components/schemas/DeclarativeUserIdentifier" }, - "content": { - "$ref": "#/components/schemas/JsonNode" + "modifiedAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "type": "string", + "description": "Time of the last entity modification.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" + }, + "createdAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "type": "string", + "description": "Time of the entity creation.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" + }, + "isHidden": { + "type": "boolean", + "description": "If true, this metric is hidden from AI search results.", + "example": false } } }, - "AutomationAlert": { - "required": ["condition", "execution"], + "DeclarativeVisualizationObject": { + "required": ["content", "id", "title"], "type": "object", "properties": { - "execution": { - "$ref": "#/components/schemas/AlertAfm" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Visualization object ID.", + "example": "visualization-1" }, - "condition": { - "oneOf": [ - { - "$ref": "#/components/schemas/AnomalyDetectionWrapper" - }, - { - "$ref": "#/components/schemas/ComparisonWrapper" - }, - { - "$ref": "#/components/schemas/RangeWrapper" - }, - { - "$ref": "#/components/schemas/RelativeWrapper" - } - ] + "title": { + "maxLength": 255, + "type": "string", + "description": "Visualization object title.", + "example": "Count of goods" }, - "trigger": { + "description": { + "maxLength": 10000, "type": "string", - "description": "Trigger behavior for the alert.\nALWAYS - alert is triggered every time the condition is met.\nONCE - alert is triggered only once when the condition is met.\n", - "default": "ALWAYS", - "enum": ["ALWAYS", "ONCE"] - } - } - }, - "AutomationDashboardTabularExport": { - "required": ["requestPayload"], - "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/DashboardTabularExportRequestV2" - } - } - }, - "AutomationExternalRecipient": { - "required": ["email"], - "type": "object", - "properties": { - "email": { + "description": "Visualization object description.", + "example": "Simple number for total goods in current production." + }, + "content": { + "$ref": "#/components/schemas/JsonNode" + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "A list of tags.", + "example": ["Revenues"], + "items": { + "type": "string", + "description": "A list of tags.", + "example": "[\"Revenues\"]" + } + }, + "createdBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedBy": { + "$ref": "#/components/schemas/DeclarativeUserIdentifier" + }, + "modifiedAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", "type": "string", - "description": "E-mail address to send notifications from.", - "format": "email" + "description": "Time of the last entity modification.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" + }, + "createdAt": { + "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "type": "string", + "description": "Time of the entity creation.", + "nullable": true, + "example": "[\"2023-07-20 12:30\"]" + }, + "isHidden": { + "type": "boolean", + "description": "If true, this visualization object is hidden from AI search results.", + "example": false } } }, - "AutomationImageExport": { - "required": ["requestPayload"], + "ExportRequest": { "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/ImageExportRequest" + "description": "JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. ", + "example": ["Revenues"], + "oneOf": [ + { + "$ref": "#/components/schemas/VisualExportRequest" + }, + { + "$ref": "#/components/schemas/TabularExportRequest" } - } + ] }, - "AutomationMetadata": { - "maxLength": 250000, + "DeclarativeWorkspaceModel": { "type": "object", "properties": { - "widget": { - "type": "string" + "ldm": { + "$ref": "#/components/schemas/DeclarativeLdm" }, - "visibleFilters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VisibleFilter" - } + "analytics": { + "$ref": "#/components/schemas/DeclarativeAnalyticsLayer" } }, - "additionalProperties": true, - "description": "Additional information for the automation.", - "nullable": true - }, - "AutomationRawExport": { - "required": ["requestPayload"], - "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/RawExportAutomationRequest" - } - } + "description": "A declarative form of a model and analytics for a workspace." }, - "AutomationSchedule": { - "required": ["cron", "timezone"], + "DeclarativeCustomApplicationSetting": { + "required": ["applicationName", "content", "id"], "type": "object", "properties": { - "cron": { - "maxLength": 255, + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Cron expression defining the schedule of the automation. The format is SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK (YEAR). The example expression signifies an action every 30 minutes from 9:00 to 17:00 on workdays.", - "example": "0 */30 9-17 ? * MON-FRI" + "description": "Custom Application Setting ID.", + "example": "modeler.demo" }, - "cronDescription": { - "type": "string", - "description": "Human-readable description of the cron expression.", - "readOnly": true + "content": { + "$ref": "#/components/schemas/JsonNode" }, - "timezone": { + "applicationName": { "maxLength": 255, "type": "string", - "description": "Timezone in which the schedule is defined.", - "example": "Europe/Prague" - }, - "firstRun": { - "type": "string", - "description": "Timestamp of the first scheduled action. If not provided default to the next scheduled time.", - "format": "date-time", - "example": "2025-01-01T12:00:00Z" - } - } - }, - "AutomationSlidesExport": { - "required": ["requestPayload"], - "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/SlidesExportRequest" - } - } - }, - "AutomationTabularExport": { - "required": ["requestPayload"], - "type": "object", - "properties": { - "requestPayload": { - "$ref": "#/components/schemas/TabularExportRequest" + "description": "The application id", + "example": "Modeler" } - } + }, + "description": "Custom application setting and its value." }, - "AutomationVisualExport": { - "required": ["requestPayload"], + "DeclarativeSetting": { + "required": ["id"], "type": "object", "properties": { - "requestPayload": { - "$ref": "#/components/schemas/VisualExportRequest" + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Setting ID." + }, + "content": { + "$ref": "#/components/schemas/JsonNode" + }, + "type": { + "type": "string", + "description": "Type of the setting.", + "example": "TIMEZONE", + "enum": [ + "TIMEZONE", + "ACTIVE_THEME", + "ACTIVE_COLOR_PALETTE", + "ACTIVE_LLM_ENDPOINT", + "ACTIVE_CALENDARS", + "WHITE_LABELING", + "LOCALE", + "METADATA_LOCALE", + "FORMAT_LOCALE", + "MAPBOX_TOKEN", + "AG_GRID_TOKEN", + "WEEK_START", + "FISCAL_YEAR", + "SHOW_HIDDEN_CATALOG_ITEMS", + "OPERATOR_OVERRIDES", + "TIMEZONE_VALIDATION_ENABLED", + "OPENAI_CONFIG", + "ENABLE_FILE_ANALYTICS", + "ALERT", + "SEPARATORS", + "DATE_FILTER_CONFIG", + "JIT_PROVISIONING", + "JWT_JIT_PROVISIONING", + "DASHBOARD_FILTERS_APPLY_MODE", + "ENABLE_SLIDES_EXPORT", + "ENABLE_SNAPSHOT_EXPORT", + "AI_RATE_LIMIT", + "ATTACHMENT_SIZE_LIMIT", + "ATTACHMENT_LINK_TTL", + "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", + "ENABLE_DRILL_TO_URL_BY_DEFAULT", + "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", + "ENABLE_AUTOMATION_EVALUATION_MODE", + "ENABLE_ACCESSIBILITY_MODE", + "REGISTERED_PLUGGABLE_APPLICATIONS", + "DATA_LOCALE", + "LDM_DEFAULT_LOCALE", + "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", + "MAX_ZOOM_LEVEL", + "SORT_CASE_SENSITIVE", + "METRIC_FORMAT_OVERRIDE", + "ENABLE_AI_ON_DATA" + ] } - } + }, + "description": "Setting and its value." }, - "DeclarativeAutomation": { - "required": ["id"], + "DeclarativeWorkspace": { + "required": ["id", "name"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" + "type": "string", + "description": "Identifier of a workspace", + "example": "alpha.sales" }, - "title": { + "name": { "maxLength": 255, - "type": "string" + "type": "string", + "description": "Name of a workspace to view.", + "example": "Alpha Sales" }, - "description": { - "maxLength": 255, - "type": "string" + "model": { + "$ref": "#/components/schemas/DeclarativeWorkspaceModel" }, - "tags": { - "uniqueItems": true, + "parent": { + "$ref": "#/components/schemas/WorkspaceIdentifier" + }, + "permissions": { "type": "array", "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Revenue\",\"Sales\"]" + "$ref": "#/components/schemas/DeclarativeSingleWorkspacePermission" } }, - "details": { - "maxLength": 10000, - "type": "object", - "additionalProperties": { - "maxLength": 10000, - "type": "string", - "description": "TODO" - }, - "description": "TODO" + "hierarchyPermissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspaceHierarchyPermission" + } }, - "metadata": { - "$ref": "#/components/schemas/AutomationMetadata" + "earlyAccess": { + "maxLength": 255, + "type": "string", + "description": "Early access defined on level Workspace", + "deprecated": true }, - "state": { + "earlyAccessValues": { + "uniqueItems": true, + "type": "array", + "description": "Early access defined on level Workspace", + "items": { + "maxLength": 255, + "type": "string" + } + }, + "description": { + "maxLength": 255, "type": "string", - "description": "Current state of the automation.", - "default": "ACTIVE", - "enum": ["ACTIVE", "PAUSED"] + "description": "Description of the workspace" }, - "evaluationMode": { + "prefix": { + "maxLength": 255, + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Specify automation evaluation mode.", - "default": "PER_RECIPIENT", - "enum": ["SHARED", "PER_RECIPIENT"] + "description": "Custom prefix of entity identifiers in workspace" }, - "schedule": { - "$ref": "#/components/schemas/AutomationSchedule" + "settings": { + "type": "array", + "description": "A list of workspace settings.", + "items": { + "$ref": "#/components/schemas/DeclarativeSetting" + } }, - "alert": { - "$ref": "#/components/schemas/AutomationAlert" + "customApplicationSettings": { + "type": "array", + "description": "A list of workspace custom settings.", + "items": { + "$ref": "#/components/schemas/DeclarativeCustomApplicationSetting" + } }, - "tabularExports": { - "uniqueItems": true, + "userDataFilters": { "type": "array", + "description": "A list of workspace user data filters.", "items": { - "$ref": "#/components/schemas/AutomationTabularExport" + "$ref": "#/components/schemas/DeclarativeUserDataFilter" } }, - "visualExports": { - "uniqueItems": true, + "cacheExtraLimit": { + "type": "integer", + "description": "Extra cache limit allocated to specific workspace. In case there is extra cache budget setup for organization, it can be split between multiple workspaces.", + "format": "int64" + }, + "dataSource": { + "$ref": "#/components/schemas/WorkspaceDataSource" + }, + "automations": { "type": "array", "items": { - "$ref": "#/components/schemas/AutomationVisualExport" + "$ref": "#/components/schemas/DeclarativeAutomation" + } + }, + "filterViews": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeFilterView" } + } + }, + "description": "A declarative form of a particular workspace." + }, + "DeclarativeWorkspaceDataFilter": { + "required": ["columnName", "id", "title", "workspace", "workspaceDataFilterSettings"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Workspace Data Filters ID. This ID is further used to refer to this instance.", + "example": "country_id" + }, + "title": { + "maxLength": 255, + "type": "string", + "description": "Workspace Data Filters title.", + "example": "Country ID" + }, + "description": { + "maxLength": 10000, + "type": "string", + "description": "Workspace Data Filters description.", + "example": "ID of country" + }, + "columnName": { + "maxLength": 255, + "type": "string", + "description": "Workspace Data Filters column name. Data are filtered using this physical column.", + "example": "country_id" }, - "imageExports": { - "uniqueItems": true, + "workspaceDataFilterSettings": { "type": "array", + "description": "Filter settings specifying values of filters valid for the workspace.", "items": { - "$ref": "#/components/schemas/AutomationImageExport" + "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterSetting" } }, - "rawExports": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/AutomationRawExport" - } + "workspace": { + "$ref": "#/components/schemas/WorkspaceIdentifier" + } + }, + "description": "Workspace Data Filters serving the filtering of what data users can see in workspaces." + }, + "DeclarativeWorkspaceDataFilterSetting": { + "required": ["filterValues", "id", "title", "workspace"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Workspace Data Filters ID. This ID is further used to refer to this instance.", + "example": "country_id_setting" }, - "slidesExports": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/AutomationSlidesExport" - } + "title": { + "maxLength": 255, + "type": "string", + "description": "Workspace Data Filters setting title.", + "example": "Country ID setting" }, - "dashboardTabularExports": { - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/components/schemas/AutomationDashboardTabularExport" - } + "description": { + "maxLength": 10000, + "type": "string", + "description": "Workspace Data Filters setting description.", + "example": "ID of country setting" }, - "externalRecipients": { - "uniqueItems": true, + "filterValues": { "type": "array", - "description": "External recipients of the automation action results.", + "description": "Only those rows are returned, where columnName from filter matches those values.", + "example": ["US"], "items": { - "$ref": "#/components/schemas/AutomationExternalRecipient" + "type": "string", + "description": "Only those rows are returned, where columnName from filter matches those values.", + "example": "[\"US\"]" } }, - "notificationChannel": { - "$ref": "#/components/schemas/DeclarativeNotificationChannelIdentifier" - }, - "exportDefinitions": { - "uniqueItems": true, + "workspace": { + "$ref": "#/components/schemas/WorkspaceIdentifier" + } + }, + "description": "Workspace Data Filters serving the filtering of what data users can see in workspaces." + }, + "DeclarativeWorkspaces": { + "required": ["workspaceDataFilters", "workspaces"], + "type": "object", + "properties": { + "workspaces": { "type": "array", "items": { - "$ref": "#/components/schemas/DeclarativeExportDefinitionIdentifier" + "$ref": "#/components/schemas/DeclarativeWorkspace" } }, - "recipients": { - "uniqueItems": true, + "workspaceDataFilters": { "type": "array", "items": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilter" } - }, - "analyticalDashboard": { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardIdentifier" - }, - "createdBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" - }, - "modifiedBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" - }, - "modifiedAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", - "type": "string", - "description": "Time of the last entity modification.", - "nullable": true, - "example": "2023-07-20 12:30" - }, - "createdAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", - "type": "string", - "description": "Time of the entity creation.", - "nullable": true, - "example": "2023-07-20 12:30" } - } + }, + "description": "A declarative form of a all workspace layout." }, - "DeclarativeExportDefinitionIdentifier": { - "required": ["id", "type"], + "WorkspaceDataSource": { + "required": ["id"], "type": "object", "properties": { "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Export definition identifier.", - "example": "export123" + "description": "The ID of the used data source.", + "example": "snowflake.instance.1" }, - "type": { - "type": "string", - "description": "A type.", - "example": "exportDefinition", - "enum": ["exportDefinition"] + "schemaPath": { + "type": "array", + "description": "The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", + "items": { + "type": "string", + "description": "The part of the schema path.", + "example": "subPath" + } } }, - "description": "An export definition identifier." + "description": "The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace." }, - "DeclarativeNotificationChannelIdentifier": { + "WorkspaceIdentifier": { "required": ["id", "type"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Notification channel identifier.", - "example": "webhook123" + "description": "Identifier of the workspace.", + "example": "alpha.sales" }, "type": { "type": "string", "description": "A type.", - "example": "notificationChannel", - "enum": ["notificationChannel"] + "example": "workspace", + "enum": ["workspace"] } }, - "description": "A notification channel identifier." + "description": "A workspace identifier.", + "example": "{ id: demo, type: workspace }" }, - "AssigneeRule": { - "required": ["type"], + "DeclarativeWorkspaceDataFilters": { + "required": ["workspaceDataFilters"], "type": "object", "properties": { - "type": { - "type": "string", - "enum": ["allWorkspaceUsers"] + "workspaceDataFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilter" + } } }, - "description": "Identifier of an assignee rule." + "description": "Declarative form of data filters." }, - "DeclarativeAnalyticalDashboard": { - "required": ["content", "id", "title"], + "DeclarativeUser": { + "required": ["id"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Analytical dashboard ID.", - "example": "revenues-analysis" + "description": "User identifier.", + "example": "employee123" }, - "title": { + "authId": { "maxLength": 255, "type": "string", - "description": "Analytical dashboard title.", - "example": "Revenues analysis" - }, - "description": { - "maxLength": 10000, - "type": "string", - "description": "Analytical dashboard description.", - "example": "Period to period comparison of revenues in main sectors." - }, - "content": { - "$ref": "#/components/schemas/JsonNode" + "description": "User identification in the authentication manager." }, - "tags": { - "uniqueItems": true, + "userGroups": { "type": "array", - "description": "A list of tags.", - "example": ["Revenues"], "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Revenues\"]" + "$ref": "#/components/schemas/DeclarativeUserGroupIdentifier" } }, - "permissions": { + "settings": { "type": "array", - "description": "A list of permissions.", + "description": "A list of user settings.", "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssignee" - }, - { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssigneeRule" - } - ] + "$ref": "#/components/schemas/DeclarativeSetting" } }, - "createdBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" - }, - "modifiedBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "firstname": { + "maxLength": 255, + "type": "string", + "description": "User first name", + "example": "John" }, - "modifiedAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "lastname": { + "maxLength": 255, "type": "string", - "description": "Time of the last entity modification.", - "nullable": true, - "example": "2023-07-20 12:30" + "description": "User last name", + "example": "Wick" }, - "createdAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "email": { + "maxLength": 255, "type": "string", - "description": "Time of the entity creation.", - "nullable": true, - "example": "2023-07-20 12:30" + "description": "User email address", + "example": "user@example.com" + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUserPermission" + } } - } + }, + "description": "A user and its properties" }, - "DeclarativeAnalyticalDashboardExtension": { - "required": ["id", "permissions"], + "DeclarativeUserGroup": { + "required": ["id"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Analytical dashboard ID.", - "example": "revenues-analysis" + "description": "UserGroup identifier.", + "example": "employees.all" + }, + "parents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUserGroupIdentifier" + } + }, + "name": { + "maxLength": 255, + "type": "string", + "description": "Name of UserGroup", + "example": "admins" }, "permissions": { "type": "array", - "description": "A list of permissions.", "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssignee" - }, - { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionForAssigneeRule" - } - ] + "$ref": "#/components/schemas/DeclarativeUserGroupPermission" } } - } + }, + "description": "A user-group and its properties" }, - "DeclarativeAnalyticalDashboardPermissionAssignment": { - "required": ["name"], + "DeclarativeUserGroupPermission": { + "required": ["assignee", "name"], "type": "object", "properties": { "name": { "type": "string", "description": "Permission name.", - "enum": ["EDIT", "SHARE", "VIEW"] + "enum": ["SEE"] + }, + "assignee": { + "$ref": "#/components/schemas/AssigneeIdentifier" } }, - "description": "Analytical dashboard permission." + "description": "Definition of a user-group permission assigned to a user/user-group." }, - "DeclarativeAnalyticalDashboardPermissionForAssignee": { + "DeclarativeUserPermission": { "required": ["assignee", "name"], "type": "object", - "description": "Analytical dashboard permission for an assignee.", - "allOf": [ - { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionAssignment" + "properties": { + "name": { + "type": "string", + "description": "Permission name.", + "enum": ["SEE"] }, - { - "type": "object", - "properties": { - "assignee": { - "$ref": "#/components/schemas/AssigneeIdentifier" - } - } + "assignee": { + "$ref": "#/components/schemas/AssigneeIdentifier" } - ] + }, + "description": "Definition of a user permission assigned to a user/user-group." }, - "DeclarativeAnalyticalDashboardPermissionForAssigneeRule": { - "required": ["assigneeRule", "name"], + "DeclarativeUsersUserGroups": { + "required": ["userGroups", "users"], "type": "object", - "description": "Analytical dashboard permission for a collection of assignees identified by a rule.", - "allOf": [ - { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardPermissionAssignment" + "properties": { + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUser" + } }, - { - "type": "object", - "properties": { - "assigneeRule": { - "$ref": "#/components/schemas/AssigneeRule" - } + "userGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUserGroup" } } - ] + }, + "description": "Declarative form of both users and user groups and theirs properties." }, - "DeclarativeAnalytics": { + "DeclarativeUserPermissions": { "type": "object", "properties": { - "analytics": { - "$ref": "#/components/schemas/DeclarativeAnalyticsLayer" + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUserPermission" + } } }, - "description": "Entities describing users' view on data." + "description": "Definition of permissions associated with a user." }, - "DeclarativeAnalyticsLayer": { + "DeclarativeUsers": { + "required": ["users"], "type": "object", "properties": { - "analyticalDashboards": { + "users": { "type": "array", - "description": "A list of analytical dashboards available in the model.", "items": { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboard" + "$ref": "#/components/schemas/DeclarativeUser" } - }, - "filterContexts": { + } + }, + "description": "Declarative form of users and its properties." + }, + "DeclarativeUserGroupPermissions": { + "type": "object", + "properties": { + "permissions": { "type": "array", - "description": "A list of filter contexts available in the model.", "items": { - "$ref": "#/components/schemas/DeclarativeFilterContext" + "$ref": "#/components/schemas/DeclarativeUserGroupPermission" } - }, - "metrics": { + } + }, + "description": "Definition of permissions associated with a user-group." + }, + "DeclarativeUserGroups": { + "required": ["userGroups"], + "type": "object", + "properties": { + "userGroups": { "type": "array", - "description": "A list of metrics available in the model.", "items": { - "$ref": "#/components/schemas/DeclarativeMetric" + "$ref": "#/components/schemas/DeclarativeUserGroup" } + } + }, + "description": "Declarative form of userGroups and its properties." + }, + "DeclarativeOrganizationPermission": { + "required": ["assignee", "name"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Permission name.", + "enum": ["MANAGE", "SELF_CREATE_TOKEN"] }, - "visualizationObjects": { + "assignee": { + "$ref": "#/components/schemas/AssigneeIdentifier" + } + }, + "description": "Definition of an organization permission assigned to a user/user-group." + }, + "DashboardSlidesTemplate": { + "required": ["appliedOn"], + "type": "object", + "properties": { + "appliedOn": { + "minItems": 1, "type": "array", - "description": "A list of visualization objects available in the model.", + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], "items": { - "$ref": "#/components/schemas/DeclarativeVisualizationObject" + "type": "string", + "enum": ["PDF", "PPTX"] } }, - "dashboardPlugins": { - "type": "array", - "description": "A list of dashboard plugins available in the model.", - "items": { - "$ref": "#/components/schemas/DeclarativeDashboardPlugin" - } + "coverSlide": { + "$ref": "#/components/schemas/CoverSlideTemplate" }, - "analyticalDashboardExtensions": { - "type": "array", - "description": "A list of dashboard permissions assigned to a related dashboard.", - "items": { - "$ref": "#/components/schemas/DeclarativeAnalyticalDashboardExtension" - } + "introSlide": { + "$ref": "#/components/schemas/IntroSlideTemplate" }, - "attributeHierarchies": { + "sectionSlide": { + "$ref": "#/components/schemas/SectionSlideTemplate" + }, + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" + } + }, + "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true + }, + "DeclarativeColorPalette": { + "required": ["content", "id", "name"], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "maxLength": 255, + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "description": "Color palette and its properties." + }, + "DeclarativeCspDirective": { + "required": ["directive", "sources"], + "type": "object", + "properties": { + "directive": { + "maxLength": 255, + "type": "string" + }, + "sources": { "type": "array", - "description": "A list of attribute hierarchies.", "items": { - "$ref": "#/components/schemas/DeclarativeAttributeHierarchy" + "type": "string" } + } + } + }, + "DeclarativeDataSource": { + "required": ["id", "name", "schema", "type"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string", + "description": "Data source ID.", + "example": "pg_local_docker-demo" + }, + "name": { + "maxLength": 255, + "type": "string", + "description": "Name of the data source.", + "example": "postgres demo" + }, + "type": { + "type": "string", + "description": "Type of database.", + "example": "POSTGRESQL", + "enum": [ + "POSTGRESQL", + "REDSHIFT", + "VERTICA", + "SNOWFLAKE", + "ADS", + "BIGQUERY", + "MSSQL", + "PRESTO", + "DREMIO", + "DRILL", + "GREENPLUM", + "AZURESQL", + "SYNAPSESQL", + "DATABRICKS", + "GDSTORAGE", + "CLICKHOUSE", + "MYSQL", + "MARIADB", + "ORACLE", + "PINOT", + "SINGLESTORE", + "MOTHERDUCK", + "FLEXCONNECT", + "STARROCKS", + "ATHENA", + "MONGODB" + ] }, - "exportDefinitions": { - "type": "array", - "description": "A list of export definitions.", - "items": { - "$ref": "#/components/schemas/DeclarativeExportDefinition" - } - } - } - }, - "DeclarativeAttributeHierarchy": { - "required": ["content", "id", "title"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "url": { + "maxLength": 255, "type": "string", - "description": "Attribute hierarchy object ID.", - "example": "hierarchy-1" + "description": "An connection string relevant to type of database.", + "example": "jdbc:postgresql://postgres:5432/gooddata" }, - "title": { + "schema": { "maxLength": 255, "type": "string", - "description": "Attribute hierarchy object title.", - "example": "Count of goods" + "description": "A scheme/database with the data.", + "example": "demo" }, - "description": { - "maxLength": 10000, + "username": { + "maxLength": 255, "type": "string", - "description": "Attribute hierarchy object description.", - "example": "Simple number for total goods in current production." - }, - "content": { - "$ref": "#/components/schemas/JsonNode" - }, - "tags": { - "uniqueItems": true, - "type": "array", - "description": "A list of tags.", - "example": ["Revenues"], - "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Revenues\"]" - } - }, - "createdBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "description": "User with permission connect the data source/database.", + "example": "demo" }, - "modifiedBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "password": { + "maxLength": 255, + "type": "string", + "description": "Password for the data-source user, property is never returned back.", + "example": "*****" }, - "modifiedAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "privateKey": { + "maxLength": 15000, "type": "string", - "description": "Time of the last entity modification.", - "nullable": true, - "example": "[\"2023-07-20 12:30\"]" + "description": "The private key to use to connect to the database providing the data for the data source.", + "nullable": true }, - "createdAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "privateKeyPassphrase": { + "maxLength": 255, "type": "string", - "description": "Time of the entity creation.", - "nullable": true, - "example": "[\"2023-07-20 12:30\"]" - } - } - }, - "DeclarativeDashboardPlugin": { - "required": ["content", "id", "title"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "description": "The passphrase used to encrypt the private key.", + "nullable": true + }, + "token": { + "maxLength": 10000, "type": "string", - "description": "Dashboard plugin object ID.", - "example": "dashboard-plugin-1" + "description": "Token as an alternative to username and password.", + "example": "Bigquery service account JSON. Encode it using base64!" }, - "title": { + "clientId": { "maxLength": 255, "type": "string", - "description": "Dashboard plugin object title.", - "example": "3D map renderer" + "description": "Id of client with permission to connect to the data source.", + "example": "client1234" }, - "description": { - "maxLength": 10000, + "clientSecret": { + "maxLength": 255, "type": "string", - "description": "Dashboard plugin description.", - "example": "Three dimensional view of data." + "description": "The client secret to use to connect to the database providing the data for the data source." }, - "content": { - "$ref": "#/components/schemas/JsonNode" + "parameters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Parameter" + } }, - "tags": { - "uniqueItems": true, + "decodedParameters": { "type": "array", - "description": "A list of tags.", - "example": ["Revenues"], "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Revenues\"]" + "$ref": "#/components/schemas/Parameter" } }, - "createdBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeDataSourcePermission" + } }, - "modifiedBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "cacheStrategy": { + "type": "string", + "description": "Determines how the results coming from a particular datasource should be cached.\n- ALWAYS: The results from the datasource should be cached normally (the default).\n- NEVER: The results from the datasource should never be cached.", + "enum": ["ALWAYS", "NEVER"] }, - "modifiedAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "authenticationType": { "type": "string", - "description": "Time of the last entity modification.", + "description": "Type of authentication used to connect to the database.", "nullable": true, - "example": "[\"2023-07-20 12:30\"]" + "enum": ["USERNAME_PASSWORD", "TOKEN", "KEY_PAIR", "CLIENT_SECRET", "ACCESS_TOKEN"] }, - "createdAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "alternativeDataSourceId": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Time of the entity creation.", + "description": "Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", "nullable": true, - "example": "[\"2023-07-20 12:30\"]" + "example": "pg_local_docker-demo2" + } + }, + "description": "A data source and its properties." + }, + "DeclarativeDataSourcePermission": { + "required": ["assignee", "name"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Permission name.", + "enum": ["MANAGE", "USE"] + }, + "assignee": { + "$ref": "#/components/schemas/AssigneeIdentifier" } } }, - "DeclarativeExportDefinition": { - "required": ["id", "title"], + "DeclarativeExportTemplate": { + "required": ["id", "name"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Export definition id.", - "example": "export-definition-1" + "description": "Identifier of an export template", + "example": "default-export-template" }, - "title": { + "name": { "maxLength": 255, "type": "string", - "description": "Export definition object title.", - "example": "My regular export" + "description": "Name of an export template.", + "example": "My default export template" }, - "description": { - "maxLength": 10000, + "dashboardSlidesTemplate": { + "$ref": "#/components/schemas/DashboardSlidesTemplate" + }, + "widgetSlidesTemplate": { + "$ref": "#/components/schemas/WidgetSlidesTemplate" + } + }, + "description": "A declarative form of a particular export template." + }, + "DeclarativeIdentityProvider": { + "required": ["id"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Export definition object description.", - "example": "Simple number for total goods in current production." + "description": "FilterView object ID.", + "example": "filterView-1" }, - "tags": { - "uniqueItems": true, + "identifiers": { "type": "array", - "description": "A list of tags.", - "example": ["Revenues"], + "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", + "example": ["gooddata.com"], "items": { "type": "string", - "description": "A list of tags.", - "example": "[\"Revenues\"]" + "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", + "example": "[\"gooddata.com\"]" } }, - "requestPayload": { - "oneOf": [ - { - "$ref": "#/components/schemas/TabularExportRequest" - }, - { - "$ref": "#/components/schemas/VisualExportRequest" - } - ] + "customClaimMapping": { + "maxLength": 10000, + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name, urn.gooddata.user_groups [optional]). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute." }, - "createdBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "samlMetadata": { + "maxLength": 15000, + "type": "string", + "description": "Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP." }, - "modifiedBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "oauthClientId": { + "maxLength": 255, + "type": "string", + "description": "The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP." }, - "modifiedAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "oauthClientSecret": { + "maxLength": 255, "type": "string", - "description": "Time of the last entity modification.", - "nullable": true, - "example": "[\"2023-07-20 12:30\"]" + "description": "The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP." }, - "createdAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "oauthIssuerLocation": { + "maxLength": 255, "type": "string", - "description": "Time of the entity creation.", - "nullable": true, - "example": "[\"2023-07-20 12:30\"]" - } - } - }, - "DeclarativeFilterContext": { - "required": ["content", "id", "title"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "description": "The location of your OIDC provider. This field is mandatory for OIDC IdP." + }, + "oauthIssuerId": { + "maxLength": 255, "type": "string", - "description": "Filter Context ID.", - "example": "filter-sales" + "description": "Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", + "example": "myOidcProvider" }, - "title": { + "oauthSubjectIdClaim": { "maxLength": 255, "type": "string", - "description": "Filter Context title.", - "example": "Filter Context for Sales team" + "description": "Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", + "example": "oid" }, - "description": { - "maxLength": 10000, + "idpType": { "type": "string", - "description": "Filter Context description.", - "example": "Filter Context for Sales team." + "description": "Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", + "enum": ["MANAGED_IDP", "FIM_IDP", "DEX_IDP", "CUSTOM_IDP"] }, - "content": { - "$ref": "#/components/schemas/JsonNode" + "oauthCustomAuthAttributes": { + "maxLength": 10000, + "type": "object", + "additionalProperties": { + "maxLength": 10000, + "type": "string", + "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." + }, + "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." }, - "tags": { - "uniqueItems": true, + "oauthCustomScopes": { "type": "array", - "description": "A list of tags.", - "example": ["Revenues"], + "description": "List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", + "nullable": true, "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Revenues\"]" + "maxLength": 255, + "type": "string" } } - } + }, + "description": "Notification channels." }, - "DeclarativeMetric": { - "required": ["content", "id", "title"], + "DeclarativeIdentityProviderIdentifier": { + "required": ["id", "type"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Metric ID.", - "example": "total-sales" + "description": "Identifier of the identity provider.", + "example": "gooddata.com" }, - "title": { - "maxLength": 255, + "type": { "type": "string", - "description": "Metric title.", - "example": "Total sales" - }, - "description": { - "maxLength": 10000, + "description": "A type.", + "example": "identityProvider", + "enum": ["identityProvider"] + } + }, + "description": "An Identity Provider identifier." + }, + "DeclarativeJwk": { + "required": ["content", "id"], + "type": "object", + "properties": { + "id": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Metric description.", - "example": "Sales for all the data available." + "description": "JWK object ID.", + "example": "jwk-1" }, "content": { - "$ref": "#/components/schemas/JsonNode" - }, - "tags": { - "uniqueItems": true, - "type": "array", - "description": "A list of tags.", - "example": ["Revenues"], - "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Revenues\"]" - } - }, - "createdBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" - }, - "modifiedBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" - }, - "modifiedAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", - "type": "string", - "description": "Time of the last entity modification.", - "nullable": true, - "example": "[\"2023-07-20 12:30\"]" - }, - "createdAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", - "type": "string", - "description": "Time of the entity creation.", - "nullable": true, - "example": "[\"2023-07-20 12:30\"]" - }, - "isHidden": { - "type": "boolean", - "description": "If true, this metric is hidden from AI search results.", - "example": false + "$ref": "#/components/schemas/DeclarativeJwkSpecification" } - } + }, + "description": "A declarative form of the JWK." }, - "DeclarativeVisualizationObject": { - "required": ["content", "id", "title"], + "DeclarativeJwkSpecification": { + "type": "object", + "description": "Declarative specification of the cryptographic key.", + "oneOf": [ + { + "$ref": "#/components/schemas/DeclarativeRsaSpecification" + } + ] + }, + "DeclarativeNotificationChannel": { + "required": ["id"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Visualization object ID.", - "example": "visualization-1" + "description": "Identifier of a notification channel", + "example": "notification-channel-1" }, - "title": { + "name": { "maxLength": 255, "type": "string", - "description": "Visualization object title.", - "example": "Count of goods" + "description": "Name of a notification channel.", + "example": "channel" }, "description": { "maxLength": 10000, "type": "string", - "description": "Visualization object description.", - "example": "Simple number for total goods in current production." - }, - "content": { - "$ref": "#/components/schemas/JsonNode" - }, - "tags": { - "uniqueItems": true, - "type": "array", - "description": "A list of tags.", - "example": ["Revenues"], - "items": { - "type": "string", - "description": "A list of tags.", - "example": "[\"Revenues\"]" - } - }, - "createdBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "description": "Description of a notification channel.", + "example": "This is a channel" }, - "modifiedBy": { - "$ref": "#/components/schemas/DeclarativeUserIdentifier" + "destination": { + "oneOf": [ + { + "$ref": "#/components/schemas/DefaultSmtp" + }, + { + "$ref": "#/components/schemas/InPlatform" + }, + { + "$ref": "#/components/schemas/Smtp" + }, + { + "$ref": "#/components/schemas/Webhook" + } + ] }, - "modifiedAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "destinationType": { "type": "string", - "description": "Time of the last entity modification.", "nullable": true, - "example": "[\"2023-07-20 12:30\"]" + "readOnly": true, + "enum": ["WEBHOOK", "SMTP", "DEFAULT_SMTP", "IN_PLATFORM"] }, - "createdAt": { - "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", + "customDashboardUrl": { + "maxLength": 255, "type": "string", - "description": "Time of the entity creation.", - "nullable": true, - "example": "[\"2023-07-20 12:30\"]" - }, - "isHidden": { - "type": "boolean", - "description": "If true, this visualization object is hidden from AI search results.", - "example": false - } - } - }, - "ExportRequest": { - "type": "object", - "description": "JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. ", - "example": ["Revenues"], - "oneOf": [ - { - "$ref": "#/components/schemas/VisualExportRequest" + "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" }, - { - "$ref": "#/components/schemas/TabularExportRequest" - } - ] - }, - "DeclarativeWorkspaceModel": { - "type": "object", - "properties": { - "ldm": { - "$ref": "#/components/schemas/DeclarativeLdm" + "dashboardLinkVisibility": { + "type": "string", + "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", + "default": "INTERNAL_ONLY", + "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] }, - "analytics": { - "$ref": "#/components/schemas/DeclarativeAnalyticsLayer" - } - }, - "description": "A declarative form of a model and analytics for a workspace." - }, - "DeclarativeCustomApplicationSetting": { - "required": ["applicationName", "content", "id"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "notificationSource": { + "maxLength": 10000, "type": "string", - "description": "Custom Application Setting ID.", - "example": "modeler.demo" + "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" }, - "content": { - "$ref": "#/components/schemas/JsonNode" + "allowedRecipients": { + "type": "string", + "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", + "default": "INTERNAL", + "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] }, - "applicationName": { - "maxLength": 255, + "inPlatformNotification": { "type": "string", - "description": "The application id", - "example": "Modeler" + "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", + "default": "DISABLED", + "enum": ["DISABLED", "ENABLED"] } }, - "description": "Custom application setting and its value." + "description": "A declarative form of a particular notification channel." }, - "DeclarativeSetting": { - "required": ["id"], + "DeclarativeOrganization": { + "required": ["organization"], "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Setting ID." + "organization": { + "$ref": "#/components/schemas/DeclarativeOrganizationInfo" }, - "content": { - "$ref": "#/components/schemas/JsonNode" + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUser" + } }, - "type": { - "type": "string", - "description": "Type of the setting.", - "example": "TIMEZONE", - "enum": [ - "TIMEZONE", - "ACTIVE_THEME", - "ACTIVE_COLOR_PALETTE", - "ACTIVE_LLM_ENDPOINT", - "ACTIVE_CALENDARS", - "WHITE_LABELING", - "LOCALE", - "METADATA_LOCALE", - "FORMAT_LOCALE", - "MAPBOX_TOKEN", - "AG_GRID_TOKEN", - "WEEK_START", - "FISCAL_YEAR", - "SHOW_HIDDEN_CATALOG_ITEMS", - "OPERATOR_OVERRIDES", - "TIMEZONE_VALIDATION_ENABLED", - "OPENAI_CONFIG", - "ENABLE_FILE_ANALYTICS", - "ALERT", - "SEPARATORS", - "DATE_FILTER_CONFIG", - "JIT_PROVISIONING", - "JWT_JIT_PROVISIONING", - "DASHBOARD_FILTERS_APPLY_MODE", - "ENABLE_SLIDES_EXPORT", - "ENABLE_SNAPSHOT_EXPORT", - "AI_RATE_LIMIT", - "ATTACHMENT_SIZE_LIMIT", - "ATTACHMENT_LINK_TTL", - "AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE", - "ENABLE_DRILL_TO_URL_BY_DEFAULT", - "ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS", - "ENABLE_AUTOMATION_EVALUATION_MODE", - "ENABLE_ACCESSIBILITY_MODE", - "REGISTERED_PLUGGABLE_APPLICATIONS", - "DATA_LOCALE", - "LDM_DEFAULT_LOCALE", - "EXPORT_RESULT_POLLING_TIMEOUT_SECONDS", - "MAX_ZOOM_LEVEL", - "SORT_CASE_SENSITIVE", - "METRIC_FORMAT_OVERRIDE", - "ENABLE_AI_ON_DATA" - ] + "userGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeUserGroup" + } + }, + "dataSources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeDataSource" + } + }, + "workspaces": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspace" + } + }, + "workspaceDataFilters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilter" + } + }, + "jwks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeJwk" + } + }, + "identityProviders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeIdentityProvider" + } + }, + "notificationChannels": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeNotificationChannel" + } + }, + "exportTemplates": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeExportTemplate" + } } }, - "description": "Setting and its value." + "description": "Complete definition of an organization in a declarative form." }, - "DeclarativeWorkspace": { - "required": ["id", "name"], + "DeclarativeOrganizationInfo": { + "required": ["hostname", "id", "name", "permissions"], "type": "object", "properties": { "id": { "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Identifier of a workspace", - "example": "alpha.sales" + "description": "Identifier of the organization.", + "example": "Alpha corporation" }, "name": { "maxLength": 255, "type": "string", - "description": "Name of a workspace to view.", - "example": "Alpha Sales" - }, - "model": { - "$ref": "#/components/schemas/DeclarativeWorkspaceModel" + "description": "Formal name of the organization.", + "example": "Alpha corporation" }, - "parent": { - "$ref": "#/components/schemas/WorkspaceIdentifier" + "hostname": { + "maxLength": 255, + "type": "string", + "description": "Formal hostname used in deployment.", + "example": "alpha.com" }, - "permissions": { + "allowedOrigins": { "type": "array", "items": { - "$ref": "#/components/schemas/DeclarativeSingleWorkspacePermission" + "type": "string" } }, - "hierarchyPermissions": { + "permissions": { "type": "array", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceHierarchyPermission" + "$ref": "#/components/schemas/DeclarativeOrganizationPermission" } }, "earlyAccess": { "maxLength": 255, "type": "string", - "description": "Early access defined on level Workspace", + "description": "Early access defined on level Organization", "deprecated": true }, "earlyAccessValues": { "uniqueItems": true, "type": "array", - "description": "Early access defined on level Workspace", + "description": "Early access defined on level Organization", "items": { "maxLength": 255, "type": "string" } }, - "description": { - "maxLength": 255, - "type": "string", - "description": "Description of the workspace" - }, - "prefix": { - "maxLength": 255, - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Custom prefix of entity identifiers in workspace" - }, "settings": { "type": "array", - "description": "A list of workspace settings.", + "description": "A list of organization settings.", "items": { "$ref": "#/components/schemas/DeclarativeSetting" } }, - "customApplicationSettings": { + "themes": { "type": "array", - "description": "A list of workspace custom settings.", + "description": "A list of themes.", "items": { - "$ref": "#/components/schemas/DeclarativeCustomApplicationSetting" + "$ref": "#/components/schemas/DeclarativeTheme" } }, - "userDataFilters": { + "colorPalettes": { "type": "array", - "description": "A list of workspace user data filters.", + "description": "A list of color palettes.", "items": { - "$ref": "#/components/schemas/DeclarativeUserDataFilter" + "$ref": "#/components/schemas/DeclarativeColorPalette" } }, - "cacheExtraLimit": { - "type": "integer", - "description": "Extra cache limit allocated to specific workspace. In case there is extra cache budget setup for organization, it can be split between multiple workspaces.", - "format": "int64" - }, - "dataSource": { - "$ref": "#/components/schemas/WorkspaceDataSource" - }, - "automations": { + "cspDirectives": { "type": "array", + "description": "A list of CSP directives.", "items": { - "$ref": "#/components/schemas/DeclarativeAutomation" + "$ref": "#/components/schemas/DeclarativeCspDirective" } }, - "filterViews": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeFilterView" - } + "identityProvider": { + "$ref": "#/components/schemas/DeclarativeIdentityProviderIdentifier" } }, - "description": "A declarative form of a particular workspace." + "description": "Information available about an organization." }, - "DeclarativeWorkspaceDataFilter": { - "required": ["columnName", "id", "title", "workspace", "workspaceDataFilterSettings"], + "DeclarativeRsaSpecification": { + "required": ["alg", "e", "kid", "kty", "n", "use"], "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Workspace Data Filters ID. This ID is further used to refer to this instance.", - "example": "country_id" - }, - "title": { - "maxLength": 255, + "kty": { "type": "string", - "description": "Workspace Data Filters title.", - "example": "Country ID" + "description": "Key type parameter", + "example": "RSA", + "enum": ["RSA"] }, - "description": { - "maxLength": 10000, + "alg": { "type": "string", - "description": "Workspace Data Filters description.", - "example": "ID of country" + "description": "Algorithm intended for use with the key.", + "example": "RS256", + "enum": ["RS256", "RS384", "RS512"] }, - "columnName": { - "maxLength": 255, + "use": { "type": "string", - "description": "Workspace Data Filters column name. Data are filtered using this physical column.", - "example": "country_id" + "description": "Parameter identifies the intended use of the public key.", + "example": "sig", + "enum": ["sig"] }, - "workspaceDataFilterSettings": { + "x5c": { "type": "array", - "description": "Filter settings specifying values of filters valid for the workspace.", + "description": "Parameter contains a chain of one or more PKIX certificates.", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilterSetting" + "type": "string" } }, - "workspace": { - "$ref": "#/components/schemas/WorkspaceIdentifier" + "n": { + "type": "string", + "description": "Parameter contains the modulus value for the RSA public key." + }, + "e": { + "type": "string", + "description": "parameter contains the exponent value for the RSA public key." + }, + "kid": { + "maxLength": 255, + "pattern": "^[^.]", + "type": "string", + "description": "Parameter is used to match a specific key.", + "example": "key.001" + }, + "x5t": { + "type": "string", + "description": "Parameter is a base64url-encoded SHA-1 thumbprint of the DER encoding of an X.509 certificate." } }, - "description": "Workspace Data Filters serving the filtering of what data users can see in workspaces." + "description": "Declarative specification of the cryptographic key." }, - "DeclarativeWorkspaceDataFilterSetting": { - "required": ["filterValues", "id", "title", "workspace"], + "DeclarativeTheme": { + "required": ["content", "id", "name"], "type": "object", "properties": { "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Workspace Data Filters ID. This ID is further used to refer to this instance.", - "example": "country_id_setting" + "type": "string" }, - "title": { + "name": { "maxLength": 255, - "type": "string", - "description": "Workspace Data Filters setting title.", - "example": "Country ID setting" + "type": "string" }, - "description": { - "maxLength": 10000, - "type": "string", - "description": "Workspace Data Filters setting description.", - "example": "ID of country setting" + "content": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "description": "Theme and its properties." + }, + "NotificationChannelDestination": { + "required": ["type"], + "type": "object", + "properties": { + "type": { + "type": "string" + } + }, + "oneOf": [ + { + "$ref": "#/components/schemas/Webhook" }, - "filterValues": { + { + "$ref": "#/components/schemas/Smtp" + }, + { + "$ref": "#/components/schemas/DefaultSmtp" + }, + { + "$ref": "#/components/schemas/InPlatform" + } + ] + }, + "Parameter": { + "required": ["name", "value"], + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "WidgetSlidesTemplate": { + "required": ["appliedOn"], + "type": "object", + "properties": { + "appliedOn": { + "minItems": 1, "type": "array", - "description": "Only those rows are returned, where columnName from filter matches those values.", - "example": ["US"], + "description": "Export types this template applies to.", + "example": ["PDF", "PPTX"], "items": { "type": "string", - "description": "Only those rows are returned, where columnName from filter matches those values.", - "example": "[\"US\"]" + "enum": ["PDF", "PPTX"] } }, - "workspace": { - "$ref": "#/components/schemas/WorkspaceIdentifier" + "contentSlide": { + "$ref": "#/components/schemas/ContentSlideTemplate" } }, - "description": "Workspace Data Filters serving the filtering of what data users can see in workspaces." + "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", + "nullable": true }, - "DeclarativeWorkspaces": { - "required": ["workspaceDataFilters", "workspaces"], + "DeclarativeNotificationChannels": { + "required": ["notificationChannels"], "type": "object", "properties": { - "workspaces": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeWorkspace" - } - }, - "workspaceDataFilters": { + "notificationChannels": { "type": "array", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilter" + "$ref": "#/components/schemas/DeclarativeNotificationChannel" } } }, - "description": "A declarative form of a all workspace layout." + "description": "Notification channels." }, - "WorkspaceDataSource": { - "required": ["id"], + "DeclarativeExportTemplates": { + "required": ["exportTemplates"], "type": "object", "properties": { - "id": { - "type": "string", - "description": "The ID of the used data source.", - "example": "snowflake.instance.1" - }, - "schemaPath": { + "exportTemplates": { "type": "array", - "description": "The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", "items": { - "type": "string", - "description": "The part of the schema path.", - "example": "subPath" + "$ref": "#/components/schemas/DeclarativeExportTemplate" } } }, - "description": "The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace." + "description": "Export templates." }, - "WorkspaceIdentifier": { - "required": ["id", "type"], + "DeclarativeDataSourcePermissions": { "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Identifier of the workspace.", - "example": "alpha.sales" - }, - "type": { - "type": "string", - "description": "A type.", - "example": "workspace", - "enum": ["workspace"] + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeclarativeDataSourcePermission" + } } }, - "description": "A workspace identifier.", - "example": "{ id: demo, type: workspace }" + "description": "Data source permissions." }, - "DeclarativeWorkspaceDataFilters": { - "required": ["workspaceDataFilters"], + "DeclarativeDataSources": { + "required": ["dataSources"], "type": "object", "properties": { - "workspaceDataFilters": { + "dataSources": { "type": "array", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilter" + "$ref": "#/components/schemas/DeclarativeDataSource" } } }, - "description": "Declarative form of data filters." + "description": "A data source and its properties." }, - "DeclarativeUser": { - "required": ["id"], + "AacDataset": { + "required": ["id", "type"], "type": "object", "properties": { "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "User identifier.", - "example": "employee123" + "description": "Unique identifier of the dataset.", + "example": "customers" }, - "authId": { - "maxLength": 255, + "type": { "type": "string", - "description": "User identification in the authentication manager." + "description": "Dataset type discriminator.", + "example": "dataset" }, - "userGroups": { + "title": { + "type": "string", + "description": "Human readable title.", + "example": "Customers" + }, + "description": { + "type": "string", + "description": "Dataset description." + }, + "tags": { + "uniqueItems": true, "type": "array", + "description": "Metadata tags.", "items": { - "$ref": "#/components/schemas/DeclarativeUserGroupIdentifier" + "type": "string", + "description": "Metadata tags." } }, - "settings": { + "table_path": { + "type": "string", + "description": "Table path in the data source.", + "example": "public/customers" + }, + "sql": { + "type": "string", + "description": "SQL statement defining this dataset." + }, + "primary_key": { "type": "array", - "description": "A list of user settings.", + "description": "Primary key column(s).", "items": { - "$ref": "#/components/schemas/DeclarativeSetting" + "type": "string", + "description": "Primary key column(s)." } }, - "firstname": { - "maxLength": 255, + "fields": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/AacField" + }, + "description": "Dataset fields (attributes, facts, aggregated facts)." + }, + "references": { + "type": "array", + "description": "References to other datasets.", + "items": { + "$ref": "#/components/schemas/AacReference" + } + }, + "workspace_data_filters": { + "type": "array", + "description": "Workspace data filters.", + "items": { + "$ref": "#/components/schemas/AacWorkspaceDataFilter" + } + }, + "data_source": { "type": "string", - "description": "User first name", - "example": "John" + "description": "Data source ID.", + "example": "my-postgres" }, - "lastname": { - "maxLength": 255, + "precedence": { + "type": "integer", + "description": "Precedence value for aggregate awareness.", + "format": "int32" + } + }, + "description": "AAC dataset definition." + }, + "AacDateDataset": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { "type": "string", - "description": "User last name", - "example": "Wick" + "description": "Unique identifier of the date dataset.", + "example": "date" + }, + "type": { + "type": "string", + "description": "Dataset type discriminator.", + "example": "date" + }, + "title": { + "type": "string", + "description": "Human readable title.", + "example": "Date" + }, + "description": { + "type": "string", + "description": "Date dataset description." + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "Metadata tags.", + "items": { + "type": "string", + "description": "Metadata tags." + } + }, + "title_base": { + "type": "string", + "description": "Title base for formatting." }, - "email": { - "maxLength": 255, + "title_pattern": { "type": "string", - "description": "User email address", - "example": "user@example.com" + "description": "Title pattern for formatting." }, - "permissions": { + "granularities": { "type": "array", + "description": "List of granularities.", "items": { - "$ref": "#/components/schemas/DeclarativeUserPermission" + "type": "string", + "description": "List of granularities." } } }, - "description": "A user and its properties" + "description": "AAC date dataset definition." }, - "DeclarativeUserGroup": { - "required": ["id"], + "AacField": { + "required": ["type"], "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": { "type": "string", - "description": "UserGroup identifier.", - "example": "employees.all" + "description": "Field type.", + "example": "attribute" }, - "parents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeUserGroupIdentifier" - } + "title": { + "type": "string", + "description": "Human readable title." }, - "name": { - "maxLength": 255, + "description": { "type": "string", - "description": "Name of UserGroup", - "example": "admins" + "description": "Field description." }, - "permissions": { + "tags": { + "uniqueItems": true, "type": "array", + "description": "Metadata tags.", "items": { - "$ref": "#/components/schemas/DeclarativeUserGroupPermission" + "type": "string", + "description": "Metadata tags." } + }, + "source_column": { + "type": "string", + "description": "Source column in the physical database." + }, + "data_type": { + "type": "string", + "description": "Data type of the column.", + "example": "STRING", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + }, + "default_view": { + "type": "string", + "description": "Default view label ID." + }, + "sort_column": { + "type": "string", + "description": "Sort column name." + }, + "sort_direction": { + "type": "string", + "description": "Sort direction.", + "example": "ASC", + "enum": ["ASC", "DESC"] + }, + "show_in_ai_results": { + "type": "boolean", + "description": "Whether to show in AI results." + }, + "is_hidden": { + "type": "boolean", + "description": "Deprecated. Use showInAiResults instead." + }, + "locale": { + "type": "string", + "description": "Locale for sorting." + }, + "labels": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/AacLabel" + }, + "description": "Attribute labels." + }, + "aggregated_as": { + "type": "string", + "description": "Aggregation method.", + "example": "SUM" + }, + "assigned_to": { + "type": "string", + "description": "Source fact ID for aggregated fact." } }, - "description": "A user-group and its properties" + "description": "AAC field definition (attribute, fact, or aggregated_fact)." }, - "DeclarativeUserGroupPermission": { - "required": ["assignee", "name"], + "AacGeoAreaConfig": { + "required": ["collection"], "type": "object", "properties": { - "name": { - "type": "string", - "description": "Permission name.", - "enum": ["SEE"] - }, - "assignee": { - "$ref": "#/components/schemas/AssigneeIdentifier" + "collection": { + "$ref": "#/components/schemas/AacGeoCollectionIdentifier" } }, - "description": "Definition of a user-group permission assigned to a user/user-group." + "description": "GEO area configuration." }, - "DeclarativeUserPermission": { - "required": ["assignee", "name"], + "AacGeoCollectionIdentifier": { + "required": ["id"], "type": "object", "properties": { - "name": { + "id": { "type": "string", - "description": "Permission name.", - "enum": ["SEE"] + "description": "Collection identifier." }, - "assignee": { - "$ref": "#/components/schemas/AssigneeIdentifier" + "kind": { + "type": "string", + "description": "Type of geo collection.", + "default": "STATIC", + "enum": ["STATIC", "CUSTOM"] } }, - "description": "Definition of a user permission assigned to a user/user-group." + "description": "GEO collection configuration." }, - "DeclarativeUsersUserGroups": { - "required": ["userGroups", "users"], + "AacLabel": { "type": "object", "properties": { - "users": { + "source_column": { + "type": "string", + "description": "Source column name." + }, + "data_type": { + "type": "string", + "description": "Data type of the column.", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + }, + "title": { + "type": "string", + "description": "Human readable title." + }, + "description": { + "type": "string", + "description": "Label description." + }, + "tags": { + "uniqueItems": true, "type": "array", + "description": "Metadata tags.", "items": { - "$ref": "#/components/schemas/DeclarativeUser" + "type": "string", + "description": "Metadata tags." } }, - "userGroups": { + "value_type": { + "type": "string", + "description": "Value type.", + "example": "TEXT" + }, + "geo_area_config": { + "$ref": "#/components/schemas/AacGeoAreaConfig" + }, + "show_in_ai_results": { + "type": "boolean", + "description": "Whether to show in AI results." + }, + "is_hidden": { + "type": "boolean", + "description": "Deprecated. Use showInAiResults instead." + }, + "locale": { + "type": "string", + "description": "Locale for sorting." + }, + "translations": { "type": "array", + "description": "Localized source columns.", "items": { - "$ref": "#/components/schemas/DeclarativeUserGroup" + "$ref": "#/components/schemas/AacLabelTranslation" } } }, - "description": "Declarative form of both users and user groups and theirs properties." + "description": "AAC label definition." }, - "DeclarativeUserPermissions": { + "AacLabelTranslation": { + "required": ["locale", "source_column"], "type": "object", "properties": { - "permissions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeUserPermission" - } + "source_column": { + "type": "string", + "description": "Source column for translation." + }, + "locale": { + "type": "string", + "description": "Locale identifier." } }, - "description": "Definition of permissions associated with a user." + "description": "Localized source columns." }, - "DeclarativeUsers": { - "required": ["users"], + "AacLogicalModel": { "type": "object", "properties": { - "users": { + "datasets": { "type": "array", + "description": "An array of datasets.", "items": { - "$ref": "#/components/schemas/DeclarativeUser" + "$ref": "#/components/schemas/AacDataset" + } + }, + "date_datasets": { + "type": "array", + "description": "An array of date datasets.", + "items": { + "$ref": "#/components/schemas/AacDateDataset" } } }, - "description": "Declarative form of users and its properties." + "description": "AAC logical data model representation compatible with Analytics-as-Code YAML format." }, - "DeclarativeUserGroupPermissions": { + "AacReference": { + "required": ["dataset", "sources"], "type": "object", "properties": { - "permissions": { + "dataset": { + "type": "string", + "description": "Target dataset ID.", + "example": "orders" + }, + "sources": { "type": "array", + "description": "Source columns for the reference.", "items": { - "$ref": "#/components/schemas/DeclarativeUserGroupPermission" + "$ref": "#/components/schemas/AacReferenceSource" } + }, + "multi_directional": { + "type": "boolean", + "description": "Whether the reference is multi-directional." } }, - "description": "Definition of permissions associated with a user-group." + "description": "AAC reference to another dataset." }, - "DeclarativeUserGroups": { - "required": ["userGroups"], + "AacReferenceSource": { + "required": ["source_column"], "type": "object", "properties": { - "userGroups": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeUserGroup" - } + "source_column": { + "type": "string", + "description": "Source column name." + }, + "data_type": { + "type": "string", + "description": "Data type of the column.", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] + }, + "target": { + "type": "string", + "description": "Target in the referenced dataset." } }, - "description": "Declarative form of userGroups and its properties." + "description": "Source columns for the reference." }, - "DeclarativeOrganizationPermission": { - "required": ["assignee", "name"], + "AacWorkspaceDataFilter": { + "required": ["data_type", "filter_id", "source_column"], "type": "object", "properties": { - "name": { + "filter_id": { "type": "string", - "description": "Permission name.", - "enum": ["MANAGE", "SELF_CREATE_TOKEN"] + "description": "Filter identifier." }, - "assignee": { - "$ref": "#/components/schemas/AssigneeIdentifier" + "source_column": { + "type": "string", + "description": "Source column name." + }, + "data_type": { + "type": "string", + "description": "Data type of the column.", + "enum": ["INT", "STRING", "DATE", "NUMERIC", "TIMESTAMP", "TIMESTAMP_TZ", "BOOLEAN"] } }, - "description": "Definition of an organization permission assigned to a user/user-group." + "description": "Workspace data filters." }, - "DashboardSlidesTemplate": { - "required": ["appliedOn"], + "AacAnalyticsModel": { "type": "object", "properties": { - "appliedOn": { - "minItems": 1, + "metrics": { "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], + "description": "An array of metrics.", "items": { - "type": "string", - "enum": ["PDF", "PPTX"] + "$ref": "#/components/schemas/AacMetric" } }, - "coverSlide": { - "$ref": "#/components/schemas/CoverSlideTemplate" + "visualizations": { + "type": "array", + "description": "An array of visualizations.", + "items": { + "$ref": "#/components/schemas/AacVisualization" + } }, - "introSlide": { - "$ref": "#/components/schemas/IntroSlideTemplate" + "dashboards": { + "type": "array", + "description": "An array of dashboards.", + "items": { + "$ref": "#/components/schemas/AacDashboard" + } }, - "sectionSlide": { - "$ref": "#/components/schemas/SectionSlideTemplate" + "plugins": { + "type": "array", + "description": "An array of dashboard plugins.", + "items": { + "$ref": "#/components/schemas/AacPlugin" + } }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" + "attribute_hierarchies": { + "type": "array", + "description": "An array of attribute hierarchies.", + "items": { + "$ref": "#/components/schemas/AacAttributeHierarchy" + } } }, - "description": "Template for dashboard slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true + "description": "AAC analytics model representation compatible with Analytics-as-Code YAML format." }, - "DeclarativeColorPalette": { - "required": ["content", "id", "name"], + "AacAttributeHierarchy": { + "required": ["attributes", "id", "type"], "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Unique identifier of the attribute hierarchy.", + "example": "geo-hierarchy" }, - "name": { - "maxLength": 255, - "type": "string" + "type": { + "type": "string", + "description": "Attribute hierarchy type discriminator.", + "example": "attribute_hierarchy" }, - "content": { - "$ref": "#/components/schemas/JsonNode" - } - }, - "description": "Color palette and its properties." - }, - "DeclarativeCspDirective": { - "required": ["directive", "sources"], - "type": "object", - "properties": { - "directive": { - "maxLength": 255, - "type": "string" + "title": { + "type": "string", + "description": "Human readable title.", + "example": "Geographic Hierarchy" }, - "sources": { + "description": { + "type": "string", + "description": "Attribute hierarchy description." + }, + "tags": { + "uniqueItems": true, "type": "array", + "description": "Metadata tags.", "items": { - "type": "string" + "type": "string", + "description": "Metadata tags." + } + }, + "attributes": { + "type": "array", + "description": "Ordered list of attribute identifiers (first is top level).", + "example": ["attribute/country", "attribute/state", "attribute/city"], + "items": { + "type": "string", + "description": "Ordered list of attribute identifiers (first is top level).", + "example": "[\"attribute/country\",\"attribute/state\",\"attribute/city\"]" } } - } + }, + "description": "AAC attribute hierarchy definition." }, - "DeclarativeDataSource": { - "required": ["id", "name", "schema", "type"], + "AacBucketItem": { "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "using": { "type": "string", - "description": "Data source ID.", - "example": "pg_local_docker-demo" + "description": "Reference to attribute/label/metric/fact." }, - "name": { - "maxLength": 255, + "local_id": { "type": "string", - "description": "Name of the data source.", - "example": "postgres demo" + "description": "Local identifier." }, - "type": { + "title": { "type": "string", - "description": "Type of database.", - "example": "POSTGRESQL", - "enum": [ - "POSTGRESQL", - "REDSHIFT", - "VERTICA", - "SNOWFLAKE", - "ADS", - "BIGQUERY", - "MSSQL", - "PRESTO", - "DREMIO", - "DRILL", - "GREENPLUM", - "AZURESQL", - "SYNAPSESQL", - "DATABRICKS", - "GDSTORAGE", - "CLICKHOUSE", - "MYSQL", - "MARIADB", - "ORACLE", - "PINOT", - "SINGLESTORE", - "MOTHERDUCK", - "FLEXCONNECT", - "STARROCKS", - "ATHENA", - "MONGODB" - ] + "description": "Title override." }, - "url": { - "maxLength": 255, + "format": { "type": "string", - "description": "An connection string relevant to type of database.", - "example": "jdbc:postgresql://postgres:5432/gooddata" + "description": "Format override." }, - "schema": { - "maxLength": 255, + "alias": { "type": "string", - "description": "A scheme/database with the data.", - "example": "demo" + "description": "Alias." }, - "username": { - "maxLength": 255, + "display_as": { "type": "string", - "description": "User with permission connect the data source/database.", - "example": "demo" + "description": "Display as label." }, - "password": { - "maxLength": 255, - "type": "string", - "description": "Password for the data-source user, property is never returned back.", - "example": "*****" + "show_all_values": { + "type": "boolean", + "description": "Show all values." }, - "privateKey": { - "maxLength": 15000, + "compute_ratio": { + "type": "boolean", + "description": "Compute ratio." + }, + "maql": { "type": "string", - "description": "The private key to use to connect to the database providing the data for the data source.", - "nullable": true + "description": "Inline MAQL expression." }, - "privateKeyPassphrase": { - "maxLength": 255, + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "writeOnly": true + } + }, + "description": "Attribute bucket (for repeater)." + }, + "AacDashboard": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { "type": "string", - "description": "The passphrase used to encrypt the private key.", - "nullable": true + "description": "Unique identifier of the dashboard.", + "example": "sales-overview" }, - "token": { - "maxLength": 10000, + "type": { "type": "string", - "description": "Token as an alternative to username and password.", - "example": "Bigquery service account JSON. Encode it using base64!" + "description": "Dashboard type discriminator.", + "example": "dashboard" }, - "clientId": { - "maxLength": 255, + "title": { "type": "string", - "description": "Id of client with permission to connect to the data source.", - "example": "client1234" + "description": "Human readable title.", + "example": "Sales Overview" }, - "clientSecret": { - "maxLength": 255, + "description": { "type": "string", - "description": "The client secret to use to connect to the database providing the data for the data source." + "description": "Dashboard description." }, - "parameters": { + "tags": { + "uniqueItems": true, "type": "array", + "description": "Metadata tags.", "items": { - "$ref": "#/components/schemas/Parameter" + "type": "string", + "description": "Metadata tags." } }, - "decodedParameters": { + "cross_filtering": { + "type": "boolean", + "description": "Whether cross filtering is enabled." + }, + "user_filters_reset": { + "type": "boolean", + "description": "Whether user can reset custom filters." + }, + "user_filters_save": { + "type": "boolean", + "description": "Whether user filter settings are stored." + }, + "filter_views": { + "type": "boolean", + "description": "Whether filter views are enabled." + }, + "enable_section_headers": { + "type": "boolean", + "description": "Whether section headers are enabled." + }, + "sections": { "type": "array", + "description": "Dashboard sections (for non-tabbed dashboards).", "items": { - "$ref": "#/components/schemas/Parameter" + "$ref": "#/components/schemas/AacSection" } }, - "permissions": { + "filters": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/AacDashboardFilter" + }, + "description": "Dashboard filters." + }, + "plugins": { "type": "array", + "description": "Dashboard plugins.", "items": { - "$ref": "#/components/schemas/DeclarativeDataSourcePermission" + "$ref": "#/components/schemas/AacDashboardPluginLink" } }, - "cacheStrategy": { - "type": "string", - "description": "Determines how the results coming from a particular datasource should be cached.\n- ALWAYS: The results from the datasource should be cached normally (the default).\n- NEVER: The results from the datasource should never be cached.", - "enum": ["ALWAYS", "NEVER"] + "tabs": { + "type": "array", + "description": "Dashboard tabs (for tabbed dashboards).", + "items": { + "$ref": "#/components/schemas/AacTab" + } }, - "authenticationType": { + "active_tab_id": { "type": "string", - "description": "Type of authentication used to connect to the database.", - "nullable": true, - "enum": ["USERNAME_PASSWORD", "TOKEN", "KEY_PAIR", "CLIENT_SECRET", "ACCESS_TOKEN"] + "description": "Active tab ID for tabbed dashboards." }, - "alternativeDataSourceId": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", - "nullable": true, - "example": "pg_local_docker-demo2" + "permissions": { + "$ref": "#/components/schemas/AacDashboardPermissions" } }, - "description": "A data source and its properties." + "description": "AAC dashboard definition." }, - "DeclarativeDataSourcePermission": { - "required": ["assignee", "name"], + "AacDashboardFilter": { + "required": ["type"], "type": "object", "properties": { - "name": { + "type": { "type": "string", - "description": "Permission name.", - "enum": ["MANAGE", "USE"] + "description": "Filter type.", + "example": "attribute_filter" }, - "assignee": { - "$ref": "#/components/schemas/AssigneeIdentifier" + "title": { + "type": "string", + "description": "Filter title." + }, + "mode": { + "type": "string", + "description": "Filter mode.", + "example": "active" + }, + "using": { + "type": "string", + "description": "Attribute or label to filter by." + }, + "multiselect": { + "type": "boolean", + "description": "Whether multiselect is enabled." + }, + "display_as": { + "type": "string", + "description": "Display as label." + }, + "state": { + "$ref": "#/components/schemas/AacFilterState" + }, + "parents": { + "type": "array", + "description": "Parent filter references.", + "items": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "metric_filters": { + "type": "array", + "description": "Metric filters for validation.", + "items": { + "type": "string", + "description": "Metric filters for validation." + } + }, + "granularity": { + "type": "string", + "description": "Date granularity." + }, + "from": { + "$ref": "#/components/schemas/JsonNode" + }, + "to": { + "$ref": "#/components/schemas/JsonNode" + }, + "date": { + "type": "string", + "description": "Date dataset reference." } - } + }, + "description": "Tab-specific filters." }, - "DeclarativeExportTemplate": { - "required": ["id", "name"], + "AacDashboardPermissions": { "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Identifier of an export template", - "example": "default-export-template" - }, - "name": { - "maxLength": 255, - "type": "string", - "description": "Name of an export template.", - "example": "My default export template" + "view": { + "$ref": "#/components/schemas/AacPermission" }, - "dashboardSlidesTemplate": { - "$ref": "#/components/schemas/DashboardSlidesTemplate" + "edit": { + "$ref": "#/components/schemas/AacPermission" }, - "widgetSlidesTemplate": { - "$ref": "#/components/schemas/WidgetSlidesTemplate" + "share": { + "$ref": "#/components/schemas/AacPermission" } }, - "description": "A declarative form of a particular export template." + "description": "Dashboard permissions." }, - "DeclarativeIdentityProvider": { + "AacDashboardPluginLink": { "required": ["id"], "type": "object", "properties": { "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "FilterView object ID.", - "example": "filterView-1" + "description": "Plugin ID." }, - "identifiers": { + "parameters": { + "$ref": "#/components/schemas/JsonNode" + } + }, + "description": "Dashboard plugins." + }, + "AacFilterState": { + "type": "object", + "properties": { + "include": { "type": "array", - "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", - "example": ["gooddata.com"], + "description": "Included values.", "items": { "type": "string", - "description": "List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.", - "example": "[\"gooddata.com\"]" + "description": "Included values." } }, - "customClaimMapping": { - "maxLength": 10000, - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name, urn.gooddata.user_groups [optional]). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute." - }, - "samlMetadata": { - "maxLength": 15000, + "exclude": { + "type": "array", + "description": "Excluded values.", + "items": { + "type": "string", + "description": "Excluded values." + } + } + }, + "description": "Filter state." + }, + "AacMetric": { + "required": ["id", "maql", "type"], + "type": "object", + "properties": { + "id": { "type": "string", - "description": "Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP." + "description": "Unique identifier of the metric.", + "example": "total-sales" }, - "oauthClientId": { - "maxLength": 255, + "type": { "type": "string", - "description": "The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP." + "description": "Metric type discriminator.", + "example": "metric" }, - "oauthClientSecret": { - "maxLength": 255, + "title": { "type": "string", - "description": "The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP." + "description": "Human readable title.", + "example": "Total Sales" }, - "oauthIssuerLocation": { - "maxLength": 255, + "description": { "type": "string", - "description": "The location of your OIDC provider. This field is mandatory for OIDC IdP." + "description": "Metric description." + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "Metadata tags.", + "items": { + "type": "string", + "description": "Metadata tags." + } }, - "oauthIssuerId": { - "maxLength": 255, + "maql": { "type": "string", - "description": "Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", - "example": "myOidcProvider" + "description": "MAQL expression defining the metric.", + "example": "SELECT SUM({fact/amount})" }, - "oauthSubjectIdClaim": { - "maxLength": 255, + "format": { "type": "string", - "description": "Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", - "example": "oid" + "description": "Default format for metric values.", + "example": "#,##0.00" }, - "idpType": { - "type": "string", - "description": "Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", - "enum": ["MANAGED_IDP", "FIM_IDP", "DEX_IDP", "CUSTOM_IDP"] + "show_in_ai_results": { + "type": "boolean", + "description": "Whether to show in AI results." }, - "oauthCustomAuthAttributes": { - "maxLength": 10000, - "type": "object", - "additionalProperties": { - "maxLength": 10000, + "is_hidden": { + "type": "boolean", + "description": "Deprecated. Use showInAiResults instead." + } + }, + "description": "AAC metric definition." + }, + "AacPermission": { + "type": "object", + "properties": { + "all": { + "type": "boolean", + "description": "Grant to all users." + }, + "users": { + "type": "array", + "description": "List of user IDs.", + "items": { "type": "string", - "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." - }, - "description": "Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute." + "description": "List of user IDs." + } }, - "oauthCustomScopes": { + "user_groups": { "type": "array", - "description": "List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", - "nullable": true, + "description": "List of user group IDs.", "items": { - "maxLength": 255, - "type": "string" + "type": "string", + "description": "List of user group IDs." } } }, - "description": "Notification channels." + "description": "SHARE permission." }, - "DeclarativeIdentityProviderIdentifier": { - "required": ["id", "type"], + "AacPlugin": { + "required": ["id", "type", "url"], "type": "object", "properties": { "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", "type": "string", - "description": "Identifier of the identity provider.", - "example": "gooddata.com" + "description": "Unique identifier of the plugin.", + "example": "my-plugin" }, "type": { "type": "string", - "description": "A type.", - "example": "identityProvider", - "enum": ["identityProvider"] + "description": "Plugin type discriminator.", + "example": "plugin" + }, + "title": { + "type": "string", + "description": "Human readable title.", + "example": "My Plugin" + }, + "description": { + "type": "string", + "description": "Plugin description." + }, + "tags": { + "uniqueItems": true, + "type": "array", + "description": "Metadata tags.", + "items": { + "type": "string", + "description": "Metadata tags." + } + }, + "url": { + "type": "string", + "description": "URL of the plugin.", + "example": "https://example.com/plugin.js" } }, - "description": "An Identity Provider identifier." + "description": "AAC dashboard plugin definition." }, - "DeclarativeJwk": { - "required": ["content", "id"], + "AacQuery": { "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "JWK object ID.", - "example": "jwk-1" + "metrics": { + "type": "array", + "description": "Query metrics.", + "items": { + "$ref": "#/components/schemas/AacQueryMetric" + } }, - "content": { - "$ref": "#/components/schemas/DeclarativeJwkSpecification" + "attributes": { + "type": "array", + "description": "Query attributes.", + "items": { + "$ref": "#/components/schemas/AacQueryAttribute" + } + }, + "filters": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/AacQueryFilter" + }, + "description": "Query filters." } }, - "description": "A declarative form of the JWK." + "description": "Query definition." }, - "DeclarativeJwkSpecification": { + "AacQueryAttribute": { "type": "object", - "description": "Declarative specification of the cryptographic key.", - "oneOf": [ - { - "$ref": "#/components/schemas/DeclarativeRsaSpecification" + "properties": { + "using": { + "type": "string", + "description": "Attribute or label reference." + }, + "local_id": { + "type": "string", + "description": "Local identifier." + }, + "display_as": { + "type": "string", + "description": "Display as label." + }, + "show_all_values": { + "type": "boolean", + "description": "Show all values." + }, + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "writeOnly": true } - ] + }, + "description": "Query attributes." }, - "DeclarativeNotificationChannel": { - "required": ["id"], + "AacQueryFilter": { + "required": ["type"], "type": "object", "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": { "type": "string", - "description": "Identifier of a notification channel", - "example": "notification-channel-1" + "description": "Filter type." }, - "name": { - "maxLength": 255, + "using": { "type": "string", - "description": "Name of a notification channel.", - "example": "channel" + "description": "Reference to attribute/label/date." }, - "description": { - "maxLength": 10000, + "state": { + "$ref": "#/components/schemas/AacFilterState" + }, + "granularity": { "type": "string", - "description": "Description of a notification channel.", - "example": "This is a channel" + "description": "Date granularity." }, - "destination": { - "oneOf": [ - { - "$ref": "#/components/schemas/DefaultSmtp" - }, - { - "$ref": "#/components/schemas/InPlatform" - }, - { - "$ref": "#/components/schemas/Smtp" - }, - { - "$ref": "#/components/schemas/Webhook" - } - ] + "from": { + "$ref": "#/components/schemas/JsonNode" }, - "destinationType": { + "to": { + "$ref": "#/components/schemas/JsonNode" + }, + "condition": { "type": "string", - "nullable": true, - "readOnly": true, - "enum": ["WEBHOOK", "SMTP", "DEFAULT_SMTP", "IN_PLATFORM"] + "description": "Condition for metric value filter." }, - "customDashboardUrl": { - "maxLength": 255, + "value": { + "type": "number", + "description": "Value for metric value filter." + }, + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "writeOnly": true + } + }, + "description": "Query filters." + }, + "AacQueryMetric": { + "type": "object", + "properties": { + "using": { "type": "string", - "description": "Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are:\n{workspaceId}\n{dashboardId}\n{automationId}\n{asOfDate}\n" + "description": "Metric reference or inline definition." }, - "dashboardLinkVisibility": { + "local_id": { "type": "string", - "description": "Dashboard link visibility in notifications.\nHIDDEN - the link will not be included\nINTERNAL_ONLY - only internal users will see the link\nALL - all users will see the link\n", - "default": "INTERNAL_ONLY", - "enum": ["HIDDEN", "INTERNAL_ONLY", "ALL"] + "description": "Local identifier." }, - "notificationSource": { - "maxLength": 10000, + "maql": { "type": "string", - "description": "Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are:\n{{workspaceId}}\n{{workspaceName}}\n{{workspaceDescription}}\n{{dashboardId}}\n{{dashboardName}}\n{{dashboardDescription}}\n" + "description": "Inline MAQL expression." }, - "allowedRecipients": { + "format": { "type": "string", - "description": "Allowed recipients of notifications from this channel.\nCREATOR - only the creator\nINTERNAL - all users within the organization\nEXTERNAL - all recipients including those outside the organization\n", - "default": "INTERNAL", - "enum": ["CREATOR", "INTERNAL", "EXTERNAL"] + "description": "Format override." }, - "inPlatformNotification": { + "title": { "type": "string", - "description": "In-platform notifications configuration. No effect if the destination type is IN_PLATFORM.\nDISABLED - in-platform notifications are not sent\nENABLED - in-platform notifications are sent in addition to the regular notifications\n", - "default": "DISABLED", - "enum": ["DISABLED", "ENABLED"] + "description": "Title override." + }, + "compute_ratio": { + "type": "boolean", + "description": "Compute ratio." + }, + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "writeOnly": true } }, - "description": "A declarative form of a particular notification channel." + "description": "Query metrics." }, - "DeclarativeOrganization": { - "required": ["organization"], + "AacSection": { "type": "object", "properties": { - "organization": { - "$ref": "#/components/schemas/DeclarativeOrganizationInfo" + "title": { + "type": "string", + "description": "Section title." }, - "users": { + "description": { + "type": "string", + "description": "Section description." + }, + "header": { + "type": "boolean", + "description": "Whether section header is visible." + }, + "widgets": { "type": "array", + "description": "Widgets in the section.", "items": { - "$ref": "#/components/schemas/DeclarativeUser" + "$ref": "#/components/schemas/AacWidget" } + } + }, + "description": "Sections within the tab." + }, + "AacTab": { + "required": ["id", "title"], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the tab." }, - "userGroups": { + "title": { + "type": "string", + "description": "Display title for the tab." + }, + "filters": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/AacDashboardFilter" + }, + "description": "Tab-specific filters." + }, + "sections": { "type": "array", + "description": "Sections within the tab.", "items": { - "$ref": "#/components/schemas/DeclarativeUserGroup" + "$ref": "#/components/schemas/AacSection" } + } + }, + "description": "Dashboard tabs (for tabbed dashboards)." + }, + "AacVisualization": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of the visualization.", + "example": "sales-by-region" }, - "dataSources": { + "type": { + "type": "string", + "description": "Visualization type.", + "example": "bar_chart", + "enum": [ + "table", + "bar_chart", + "column_chart", + "line_chart", + "area_chart", + "scatter_chart", + "bubble_chart", + "pie_chart", + "donut_chart", + "treemap_chart", + "pyramid_chart", + "funnel_chart", + "heatmap_chart", + "bullet_chart", + "waterfall_chart", + "dependency_wheel_chart", + "sankey_chart", + "headline_chart", + "combo_chart", + "geo_chart", + "geo_area_chart", + "repeater_chart" + ] + }, + "title": { + "type": "string", + "description": "Human readable title.", + "example": "Sales by Region" + }, + "description": { + "type": "string", + "description": "Visualization description." + }, + "tags": { + "uniqueItems": true, "type": "array", + "description": "Metadata tags.", "items": { - "$ref": "#/components/schemas/DeclarativeDataSource" + "type": "string", + "description": "Metadata tags." } }, - "workspaces": { + "show_in_ai_results": { + "type": "boolean", + "description": "Whether to show in AI results." + }, + "is_hidden": { + "type": "boolean", + "description": "Deprecated. Use showInAiResults instead." + }, + "query": { + "$ref": "#/components/schemas/AacQuery" + }, + "config": { + "$ref": "#/components/schemas/JsonNode" + }, + "metrics": { "type": "array", + "description": "Metrics bucket.", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspace" + "$ref": "#/components/schemas/AacBucketItem" } }, - "workspaceDataFilters": { + "view_by": { "type": "array", + "description": "View by attributes bucket.", "items": { - "$ref": "#/components/schemas/DeclarativeWorkspaceDataFilter" + "$ref": "#/components/schemas/AacBucketItem" } }, - "jwks": { + "segment_by": { "type": "array", + "description": "Segment by attributes bucket.", "items": { - "$ref": "#/components/schemas/DeclarativeJwk" + "$ref": "#/components/schemas/AacBucketItem" } }, - "identityProviders": { + "rows": { "type": "array", + "description": "Rows bucket (for tables).", "items": { - "$ref": "#/components/schemas/DeclarativeIdentityProvider" + "$ref": "#/components/schemas/AacBucketItem" } }, - "notificationChannels": { + "columns": { "type": "array", + "description": "Columns bucket (for tables).", "items": { - "$ref": "#/components/schemas/DeclarativeNotificationChannel" + "$ref": "#/components/schemas/AacBucketItem" } }, - "exportTemplates": { + "stack": { "type": "array", + "description": "Stack bucket.", "items": { - "$ref": "#/components/schemas/DeclarativeExportTemplate" + "$ref": "#/components/schemas/AacBucketItem" } - } - }, - "description": "Complete definition of an organization in a declarative form." - }, - "DeclarativeOrganizationInfo": { - "required": ["hostname", "id", "name", "permissions"], - "type": "object", - "properties": { - "id": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string", - "description": "Identifier of the organization.", - "example": "Alpha corporation" - }, - "name": { - "maxLength": 255, - "type": "string", - "description": "Formal name of the organization.", - "example": "Alpha corporation" - }, - "hostname": { - "maxLength": 255, - "type": "string", - "description": "Formal hostname used in deployment.", - "example": "alpha.com" }, - "allowedOrigins": { + "trend": { "type": "array", + "description": "Trend bucket.", "items": { - "type": "string" + "$ref": "#/components/schemas/AacBucketItem" } }, - "permissions": { + "primary_measures": { "type": "array", + "description": "Primary measures bucket.", "items": { - "$ref": "#/components/schemas/DeclarativeOrganizationPermission" + "$ref": "#/components/schemas/AacBucketItem" } }, - "earlyAccess": { - "maxLength": 255, - "type": "string", - "description": "Early access defined on level Organization", - "deprecated": true - }, - "earlyAccessValues": { - "uniqueItems": true, + "secondary_measures": { "type": "array", - "description": "Early access defined on level Organization", + "description": "Secondary measures bucket.", "items": { - "maxLength": 255, - "type": "string" + "$ref": "#/components/schemas/AacBucketItem" } }, - "settings": { + "location": { "type": "array", - "description": "A list of organization settings.", + "description": "Location bucket (for geo charts).", "items": { - "$ref": "#/components/schemas/DeclarativeSetting" + "$ref": "#/components/schemas/AacBucketItem" } }, - "themes": { + "size": { "type": "array", - "description": "A list of themes.", + "description": "Size bucket.", "items": { - "$ref": "#/components/schemas/DeclarativeTheme" + "$ref": "#/components/schemas/AacBucketItem" } }, - "colorPalettes": { + "color": { "type": "array", - "description": "A list of color palettes.", + "description": "Color bucket.", "items": { - "$ref": "#/components/schemas/DeclarativeColorPalette" + "$ref": "#/components/schemas/AacBucketItem" } }, - "cspDirectives": { + "attribute": { "type": "array", - "description": "A list of CSP directives.", + "description": "Attribute bucket (for repeater).", "items": { - "$ref": "#/components/schemas/DeclarativeCspDirective" + "$ref": "#/components/schemas/AacBucketItem" } }, - "identityProvider": { - "$ref": "#/components/schemas/DeclarativeIdentityProviderIdentifier" + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "writeOnly": true } }, - "description": "Information available about an organization." + "description": "AAC visualization definition." }, - "DeclarativeRsaSpecification": { - "required": ["alg", "e", "kid", "kty", "n", "use"], + "AacWidget": { "type": "object", "properties": { - "kty": { + "type": { "type": "string", - "description": "Key type parameter", - "example": "RSA", - "enum": ["RSA"] + "description": "Widget type.", + "example": "visualization" }, - "alg": { - "type": "string", - "description": "Algorithm intended for use with the key.", - "example": "RS256", - "enum": ["RS256", "RS384", "RS512"] + "size": { + "$ref": "#/components/schemas/AacWidgetSize" }, - "use": { + "visualization": { "type": "string", - "description": "Parameter identifies the intended use of the public key.", - "example": "sig", - "enum": ["sig"] - }, - "x5c": { - "type": "array", - "description": "Parameter contains a chain of one or more PKIX certificates.", - "items": { - "type": "string" - } + "description": "Visualization ID reference." }, - "n": { + "metric": { "type": "string", - "description": "Parameter contains the modulus value for the RSA public key." + "description": "Inline metric reference." }, - "e": { + "title": { "type": "string", - "description": "parameter contains the exponent value for the RSA public key." + "description": "Widget title override." }, - "kid": { - "maxLength": 255, - "pattern": "^[^.]", + "description": { "type": "string", - "description": "Parameter is used to match a specific key.", - "example": "key.001" + "description": "Widget description override." }, - "x5t": { + "date": { "type": "string", - "description": "Parameter is a base64url-encoded SHA-1 thumbprint of the DER encoding of an X.509 certificate." - } - }, - "description": "Declarative specification of the cryptographic key." - }, - "DeclarativeTheme": { - "required": ["content", "id", "name"], - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "maxLength": 255, - "type": "string" - }, - "content": { - "$ref": "#/components/schemas/JsonNode" - } - }, - "description": "Theme and its properties." - }, - "NotificationChannelDestination": { - "required": ["type"], - "type": "object", - "properties": { - "type": { - "type": "string" - } - }, - "oneOf": [ - { - "$ref": "#/components/schemas/Webhook" - }, - { - "$ref": "#/components/schemas/Smtp" - }, - { - "$ref": "#/components/schemas/DefaultSmtp" - }, - { - "$ref": "#/components/schemas/InPlatform" - } - ] - }, - "Parameter": { - "required": ["name", "value"], - "type": "object", - "properties": { - "name": { - "type": "string" + "description": "Date dataset for filtering." }, - "value": { - "type": "string" - } - } - }, - "WidgetSlidesTemplate": { - "required": ["appliedOn"], - "type": "object", - "properties": { - "appliedOn": { - "minItems": 1, + "ignore_dashboard_filters": { "type": "array", - "description": "Export types this template applies to.", - "example": ["PDF", "PPTX"], + "description": "Whether widget ignores dashboard filters.", "items": { "type": "string", - "enum": ["PDF", "PPTX"] + "description": "Whether widget ignores dashboard filters." } }, - "contentSlide": { - "$ref": "#/components/schemas/ContentSlideTemplate" - } - }, - "description": "Template for widget slides export.\nAvailable variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}}", - "nullable": true - }, - "DeclarativeNotificationChannels": { - "required": ["notificationChannels"], - "type": "object", - "properties": { - "notificationChannels": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeNotificationChannel" - } - } - }, - "description": "Notification channels." - }, - "DeclarativeExportTemplates": { - "required": ["exportTemplates"], - "type": "object", - "properties": { - "exportTemplates": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeExportTemplate" - } - } - }, - "description": "Export templates." - }, - "DeclarativeDataSourcePermissions": { - "type": "object", - "properties": { - "permissions": { + "drill_down": { + "$ref": "#/components/schemas/JsonNode" + }, + "content": { + "type": "string", + "description": "Rich text content." + }, + "sections": { "type": "array", + "description": "Nested sections for layout widgets.", "items": { - "$ref": "#/components/schemas/DeclarativeDataSourcePermission" + "$ref": "#/components/schemas/AacSection" } + }, + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JsonNode" + }, + "writeOnly": true } }, - "description": "Data source permissions." + "description": "Widgets in the section." }, - "DeclarativeDataSources": { - "required": ["dataSources"], + "AacWidgetSize": { "type": "object", "properties": { - "dataSources": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DeclarativeDataSource" - } + "width": { + "type": "integer", + "description": "Width in grid columns.", + "format": "int32" + }, + "height": { + "type": "integer", + "description": "Height in grid rows.", + "format": "int32" + }, + "height_as_ratio": { + "type": "boolean", + "description": "Height definition mode." } }, - "description": "A data source and its properties." + "description": "Widget size." }, "File": { "type": "object", @@ -39152,15 +41228,6 @@ } }, "parameters": { - "idPathParameter": { - "name": "id", - "in": "path", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, "page": { "name": "page", "in": "query", @@ -39189,6 +41256,15 @@ "type": "string" } } + }, + "idPathParameter": { + "name": "id", + "in": "path", + "required": true, + "schema": { + "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", + "type": "string" + } } } } diff --git a/libs/api-client-tiger/src/index.ts b/libs/api-client-tiger/src/index.ts index a7c498d1752..2ab07378bba 100644 --- a/libs/api-client-tiger/src/index.ts +++ b/libs/api-client-tiger/src/index.ts @@ -624,7 +624,7 @@ export { AacApi_GetLogicalModelAac, AacApi_SetAnalyticsModelAac, AacApi_SetLogicalModelAac, -} from "./api-endpoints/aac/index.js"; +} from "./endpoints/aac/index.js"; export type { AacAnalyticsModel, AacAnalyticsModelExclude, @@ -633,7 +633,7 @@ export type { AacApiGetLogicalModelAacRequest, AacApiSetAnalyticsModelAacRequest, AacApiSetLogicalModelAacRequest, -} from "./api-endpoints/aac/index.js"; +} from "./endpoints/aac/index.js"; export const defaultTigerClient: ITigerClient = tigerClientFactory(defaultAxios); /** diff --git a/libs/sdk-backend-base/package.json b/libs/sdk-backend-base/package.json index 058ced342c0..2931e45f640 100644 --- a/libs/sdk-backend-base/package.json +++ b/libs/sdk-backend-base/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-base", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - Base for backend implementations", "repository": { "type": "git", @@ -60,8 +60,8 @@ "@microsoft/api-extractor": "^7.52.8", "@types/lodash-es": "^4.17.12", "@types/spark-md5": "^3.0.1", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/libs/sdk-backend-mockingbird/package.json b/libs/sdk-backend-mockingbird/package.json index b11a617efac..633fa3a3925 100644 --- a/libs/sdk-backend-mockingbird/package.json +++ b/libs/sdk-backend-mockingbird/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-mockingbird", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "Mock GoodData Backend SPI implementation", "repository": { "type": "git", @@ -56,8 +56,8 @@ "@microsoft/api-documenter": "^7.17.0", "@microsoft/api-extractor": "^7.52.8", "@types/lodash-es": "^4.17.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/libs/sdk-backend-spi/api/sdk-backend-spi.api.md b/libs/sdk-backend-spi/api/sdk-backend-spi.api.md index 36e8c0d39d1..31cce23cc23 100644 --- a/libs/sdk-backend-spi/api/sdk-backend-spi.api.md +++ b/libs/sdk-backend-spi/api/sdk-backend-spi.api.md @@ -428,18 +428,18 @@ export interface IAuthenticationProvider { export interface IAutomationsQuery { query(): Promise; queryAll(): Promise; - withAuthor(author: string, filterType?: AutomationFilterType): IAutomationsQuery; - withDashboard(dashboard: string, filterType?: AutomationFilterType): IAutomationsQuery; - withExternalRecipient(externalRecipient: string): IAutomationsQuery; + withAuthor(author: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; + withDashboard(dashboard: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; + withExternalRecipient(externalRecipient: string | undefined): IAutomationsQuery; withFilter(filter: { title?: string; }): IAutomationsQuery; - withPage(page: number): IAutomationsQuery; - withRecipient(recipient: string, filterType?: AutomationFilterType): IAutomationsQuery; - withSize(size: number): IAutomationsQuery; + withPage(page: number | undefined): IAutomationsQuery; + withRecipient(recipient: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; + withSize(size: number | undefined): IAutomationsQuery; withSorting(sort: string[]): IAutomationsQuery; - withStatus(status: string, filterType?: AutomationFilterType): IAutomationsQuery; - withType(type: AutomationType): IAutomationsQuery; + withStatus(status: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; + withType(type: AutomationType | undefined): IAutomationsQuery; withUser(user: string): IAutomationsQuery; } @@ -524,6 +524,12 @@ export interface IChangeAnalysisDefinition { measure: IMeasure; } +// @internal +export interface IChangeAnalysisOptions { + excludeTags?: string[]; + includeTags?: string[]; +} + // @internal export interface IChangeAnalysisPeriod { dateAttribute: IAttribute; @@ -1361,20 +1367,20 @@ export interface IOrganizationAutomationService { export interface IOrganizationAutomationsQuery { query(): Promise; queryAll(): Promise; - withAuthor(author: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withAuthor(author: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; withDashboard(dashboard: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; - withExternalRecipient(externalRecipient: string): IOrganizationAutomationsQuery; + withExternalRecipient(externalRecipient: string | undefined): IOrganizationAutomationsQuery; withFilter(filter: { title?: string; }): IOrganizationAutomationsQuery; - withPage(page: number): IOrganizationAutomationsQuery; - withRecipient(recipient: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; - withSize(size: number): IOrganizationAutomationsQuery; + withPage(page: number | undefined): IOrganizationAutomationsQuery; + withRecipient(recipient: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withSize(size: number | undefined): IOrganizationAutomationsQuery; withSorting(sort: string[]): IOrganizationAutomationsQuery; - withStatus(status: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; - withType(type: AutomationType): IOrganizationAutomationsQuery; + withStatus(status: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withType(type: AutomationType | undefined): IOrganizationAutomationsQuery; withUser(user: string): IOrganizationAutomationsQuery; - withWorkspace(workspace: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withWorkspace(workspace: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; } // @alpha @@ -1984,7 +1990,7 @@ export interface IWorkspaceInsightsService { // @internal export interface IWorkspaceKeyDriverAnalysisService { - computeChangeAnalysis(definition: IChangeAnalysisDefinition, period: IChangeAnalysisPeriod): Promise; + computeChangeAnalysis(definition: IChangeAnalysisDefinition, period: IChangeAnalysisPeriod, options?: IChangeAnalysisOptions): Promise; } // @internal diff --git a/libs/sdk-backend-spi/package.json b/libs/sdk-backend-spi/package.json index f6955fda678..24cdcc74759 100644 --- a/libs/sdk-backend-spi/package.json +++ b/libs/sdk-backend-spi/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-spi", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData Backend SPI abstraction interfaces", "repository": { "type": "git", @@ -51,8 +51,8 @@ "@microsoft/api-documenter": "^7.17.0", "@microsoft/api-extractor": "^7.52.8", "@types/lodash-es": "^4.17.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/libs/sdk-backend-spi/src/index.ts b/libs/sdk-backend-spi/src/index.ts index 0d0b551f04f..afe56acdab7 100644 --- a/libs/sdk-backend-spi/src/index.ts +++ b/libs/sdk-backend-spi/src/index.ts @@ -326,6 +326,7 @@ export type { IChangeAnalysisResults, IKeyDriver, IChangeAnalysisPeriod, + IChangeAnalysisOptions, IChangeAnalysisDefinition, } from "./workspace/keyDriverAnalysis/index.js"; diff --git a/libs/sdk-backend-spi/src/organization/automations/index.ts b/libs/sdk-backend-spi/src/organization/automations/index.ts index 02cfd9b4d4b..c2f1764d220 100644 --- a/libs/sdk-backend-spi/src/organization/automations/index.ts +++ b/libs/sdk-backend-spi/src/organization/automations/index.ts @@ -22,7 +22,7 @@ export interface IOrganizationAutomationsQuery { * @param size - desired max number of automations per page must be a positive number * @returns organization automations query */ - withSize(size: number): IOrganizationAutomationsQuery; + withSize(size: number | undefined): IOrganizationAutomationsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than @@ -32,7 +32,7 @@ export interface IOrganizationAutomationsQuery { * @param page - zero indexed, must be non-negative * @returns organization automations query */ - withPage(page: number): IOrganizationAutomationsQuery; + withPage(page: number | undefined): IOrganizationAutomationsQuery; /** * Sets filter for the query. @@ -56,7 +56,7 @@ export interface IOrganizationAutomationsQuery { * @param type - type of the automation, e.g. "schedule" or "trigger" * @returns organization automations query */ - withType(type: AutomationType): IOrganizationAutomationsQuery; + withType(type: AutomationType | undefined): IOrganizationAutomationsQuery; /** * Sets author of the automation for the query. @@ -65,7 +65,7 @@ export interface IOrganizationAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ - withAuthor(author: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withAuthor(author: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; /** * Sets recipient of the automation for the query. @@ -74,7 +74,10 @@ export interface IOrganizationAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ - withRecipient(recipient: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withRecipient( + recipient: string | undefined, + filterType?: AutomationFilterType, + ): IOrganizationAutomationsQuery; /** * Sets external recipient of the automation for the query. @@ -82,7 +85,7 @@ export interface IOrganizationAutomationsQuery { * @param externalRecipient - external recipient of the automation * @returns organization automations query */ - withExternalRecipient(externalRecipient: string): IOrganizationAutomationsQuery; + withExternalRecipient(externalRecipient: string | undefined): IOrganizationAutomationsQuery; /** * This filter gets automations if either author or recipient of the automation is the provided user. @@ -108,7 +111,7 @@ export interface IOrganizationAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ - withStatus(status: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withStatus(status: string | undefined, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; /** * Filter automations by workspace IDs for centralized management. @@ -117,7 +120,10 @@ export interface IOrganizationAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns organization automations query */ - withWorkspace(workspace: string, filterType?: AutomationFilterType): IOrganizationAutomationsQuery; + withWorkspace( + workspace: string | undefined, + filterType?: AutomationFilterType, + ): IOrganizationAutomationsQuery; /** * Starts the organization automations query. diff --git a/libs/sdk-backend-spi/src/workspace/automations/index.ts b/libs/sdk-backend-spi/src/workspace/automations/index.ts index eef995f8cad..12f1452fa02 100644 --- a/libs/sdk-backend-spi/src/workspace/automations/index.ts +++ b/libs/sdk-backend-spi/src/workspace/automations/index.ts @@ -208,7 +208,7 @@ export interface IAutomationsQuery { * @param size - desired max number of automations per page must be a positive number * @returns automations query */ - withSize(size: number): IAutomationsQuery; + withSize(size: number | undefined): IAutomationsQuery; /** * Sets starting page for the query. Backend WILL return no data if the page is greater than @@ -218,7 +218,7 @@ export interface IAutomationsQuery { * @param page - zero indexed, must be non-negative * @returns automations query */ - withPage(page: number): IAutomationsQuery; + withPage(page: number | undefined): IAutomationsQuery; /** * Sets filter for the query. @@ -242,7 +242,7 @@ export interface IAutomationsQuery { * @param type - type of the automation, e.g. "schedule" or "trigger" * @returns automations query */ - withType(type: AutomationType): IAutomationsQuery; + withType(type: AutomationType | undefined): IAutomationsQuery; /** * Sets author of the automation for the query. @@ -251,7 +251,7 @@ export interface IAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ - withAuthor(author: string, filterType?: AutomationFilterType): IAutomationsQuery; + withAuthor(author: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Sets recipient of the automation for the query. @@ -260,7 +260,7 @@ export interface IAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ - withRecipient(recipient: string, filterType?: AutomationFilterType): IAutomationsQuery; + withRecipient(recipient: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Sets external recipient of the automation for the query. @@ -268,7 +268,7 @@ export interface IAutomationsQuery { * @param externalRecipient - external recipient of the automation * @returns automations query */ - withExternalRecipient(externalRecipient: string): IAutomationsQuery; + withExternalRecipient(externalRecipient: string | undefined): IAutomationsQuery; /** * This filter gets automations if either author or recipient of the automation is the provided user. @@ -285,7 +285,7 @@ export interface IAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ - withDashboard(dashboard: string, filterType?: AutomationFilterType): IAutomationsQuery; + withDashboard(dashboard: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Sets status of automation results for the query. @@ -294,7 +294,7 @@ export interface IAutomationsQuery { * @param filterType - type of filter behavior ("exact", "include", "exclude") * @returns automations query */ - withStatus(status: string, filterType?: AutomationFilterType): IAutomationsQuery; + withStatus(status: string | undefined, filterType?: AutomationFilterType): IAutomationsQuery; /** * Starts the automations query. diff --git a/libs/sdk-backend-spi/src/workspace/keyDriverAnalysis/index.ts b/libs/sdk-backend-spi/src/workspace/keyDriverAnalysis/index.ts index fbc9583d8e4..413f815afbc 100644 --- a/libs/sdk-backend-spi/src/workspace/keyDriverAnalysis/index.ts +++ b/libs/sdk-backend-spi/src/workspace/keyDriverAnalysis/index.ts @@ -95,6 +95,22 @@ export interface IChangeAnalysisPeriod { to: string; } +/** + * @internal + * + * Change analysis options + */ +export interface IChangeAnalysisOptions { + /** + * Only objects with these tags will be included + */ + includeTags?: string[]; + /** + * Only objects without these tags will be included + */ + excludeTags?: string[]; +} + /** * @internal * @@ -131,5 +147,6 @@ export interface IWorkspaceKeyDriverAnalysisService { computeChangeAnalysis( definition: IChangeAnalysisDefinition, period: IChangeAnalysisPeriod, + options?: IChangeAnalysisOptions, ): Promise; } diff --git a/libs/sdk-backend-tiger/api/sdk-backend-tiger.api.md b/libs/sdk-backend-tiger/api/sdk-backend-tiger.api.md index 88f68f62adf..5a0ae28ea29 100644 --- a/libs/sdk-backend-tiger/api/sdk-backend-tiger.api.md +++ b/libs/sdk-backend-tiger/api/sdk-backend-tiger.api.md @@ -4,8 +4,8 @@ ```ts -import { AacAnalyticsModel } from '@gooddata/api-client-tiger/aac'; -import { AacLogicalModel } from '@gooddata/api-client-tiger/aac'; +import { AacAnalyticsModel } from '@gooddata/api-client-tiger/endpoints/aac'; +import { AacLogicalModel } from '@gooddata/api-client-tiger/endpoints/aac'; import { ActionsApiProcessInvitationRequest } from '@gooddata/api-client-tiger'; import { AfmExecution } from '@gooddata/api-client-tiger'; import { AnalyzeCsvRequest } from '@gooddata/api-client-tiger'; @@ -37,13 +37,13 @@ import { Invitation } from '@gooddata/api-client-tiger'; import { ITigerClient } from '@gooddata/api-client-tiger'; import { IUser } from '@gooddata/sdk-model'; import { JsonApiDatasetOutList } from '@gooddata/api-client-tiger'; +import { JsonApiDatasetOutMetaOriginOriginTypeEnum } from '@gooddata/api-client-tiger'; import { JsonApiDataSourceInAttributesCacheStrategyEnum } from '@gooddata/api-client-tiger'; import { JsonApiDataSourceInAttributesTypeEnum } from '@gooddata/api-client-tiger'; import { JsonApiDataSourceInDocument } from '@gooddata/api-client-tiger'; import { JsonApiDataSourceOutAttributesAuthenticationTypeEnum } from '@gooddata/api-client-tiger'; import { JsonApiNotificationChannelOut } from '@gooddata/api-client-tiger'; import { JsonApiOrganizationOutMetaPermissionsEnum } from '@gooddata/api-client-tiger'; -import { JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum } from '@gooddata/api-client-tiger'; import { JsonApiWorkspaceDataFilterInDocument } from '@gooddata/api-client-tiger'; import { JsonApiWorkspaceDataFilterOutDocument } from '@gooddata/api-client-tiger'; import { JsonApiWorkspaceDataFilterSettingInDocument } from '@gooddata/api-client-tiger'; @@ -354,7 +354,7 @@ export interface OriginInfoWithId { // (undocumented) originId: string; // (undocumented) - originType: JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum; + originType: JsonApiDatasetOutMetaOriginOriginTypeEnum; } // @internal (undocumented) diff --git a/libs/sdk-backend-tiger/package.json b/libs/sdk-backend-tiger/package.json index 86ccb5d0b9f..cb9ecdc2fa1 100644 --- a/libs/sdk-backend-tiger/package.json +++ b/libs/sdk-backend-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-tiger", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN", "repository": { "type": "git", @@ -81,8 +81,8 @@ "@microsoft/api-extractor": "^7.52.8", "@types/lodash-es": "^4.17.12", "@types/spark-md5": "^3.0.1", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "dotenv": "16.0.3", "eslint": "^8.57.1", diff --git a/libs/sdk-backend-tiger/src/auth.ts b/libs/sdk-backend-tiger/src/auth.ts index b19540df79c..71be8382390 100644 --- a/libs/sdk-backend-tiger/src/auth.ts +++ b/libs/sdk-backend-tiger/src/auth.ts @@ -1,8 +1,9 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation + import { invariant } from "ts-invariant"; import { type ITigerClient, type IUserProfile, setAxiosAuthorizationToken } from "@gooddata/api-client-tiger"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { type AuthenticationFlow, type IAnalyticalBackend, diff --git a/libs/sdk-backend-tiger/src/backend/common/automations.ts b/libs/sdk-backend-tiger/src/backend/common/automations.ts index ecf69576c9c..875280224dc 100644 --- a/libs/sdk-backend-tiger/src/backend/common/automations.ts +++ b/libs/sdk-backend-tiger/src/backend/common/automations.ts @@ -1,5 +1,7 @@ // (C) 2025 GoodData Corporation +export const DEFAULT_PAGE_SIZE = 100; +export const DEFAULT_PAGE = 0; export const STATUS_NEVER_RUN = "NEVER_RUN"; export const STATUS_NEVER_RUN_RSQL_QUERY = `automationResults.status=isnull=true`; export const MAX_QUERY_LENGTH = 4000; diff --git a/libs/sdk-backend-tiger/src/backend/dataSources/index.ts b/libs/sdk-backend-tiger/src/backend/dataSources/index.ts index e3bc95d3cc2..059d3a5da99 100644 --- a/libs/sdk-backend-tiger/src/backend/dataSources/index.ts +++ b/libs/sdk-backend-tiger/src/backend/dataSources/index.ts @@ -1,7 +1,7 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation import { ActionsUtilities, type JsonApiDataSourceIdentifierOutWithLinks } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesDataSourceIdentifiers } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesDataSourceIdentifiers } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IDataSourcesService } from "@gooddata/sdk-backend-spi"; import { type IDataSourceIdentifierDescriptor } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/entitlements/index.ts b/libs/sdk-backend-tiger/src/backend/entitlements/index.ts index fa330e894ab..5c32db6ea29 100644 --- a/libs/sdk-backend-tiger/src/backend/entitlements/index.ts +++ b/libs/sdk-backend-tiger/src/backend/entitlements/index.ts @@ -1,7 +1,7 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation -import { ActionsApi_ResolveAllEntitlements } from "@gooddata/api-client-tiger/actions"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +import { ActionsApi_ResolveAllEntitlements } from "@gooddata/api-client-tiger/endpoints/actions"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { type IEntitlements } from "@gooddata/sdk-backend-spi"; import { type IEntitlementDescriptor } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/features/index.ts b/libs/sdk-backend-tiger/src/backend/features/index.ts index 0a37e4678a2..03ec68da0f0 100644 --- a/libs/sdk-backend-tiger/src/backend/features/index.ts +++ b/libs/sdk-backend-tiger/src/backend/features/index.ts @@ -1,4 +1,4 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { LRUCache } from "lru-cache"; @@ -10,7 +10,7 @@ import { type IStaticFeatures, type IUserProfile, } from "@gooddata/api-client-tiger"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { LIB_VERSION } from "../../__version.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/geo/index.ts b/libs/sdk-backend-tiger/src/backend/geo/index.ts index 3edc16a95f7..527175f5e34 100644 --- a/libs/sdk-backend-tiger/src/backend/geo/index.ts +++ b/libs/sdk-backend-tiger/src/backend/geo/index.ts @@ -1,6 +1,6 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation -import { LocationStyleApi_GetDefaultStyle } from "@gooddata/api-client-tiger/locationStyle"; +import { LocationStyleApi_GetDefaultStyle } from "@gooddata/api-client-tiger/endpoints/locationStyle"; import { type IGeoService, type IGeoStyleSpecification } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/organization/automations/automationsQuery.ts b/libs/sdk-backend-tiger/src/backend/organization/automations/automationsQuery.ts index a5f700e91da..3cfc8b8d867 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/automations/automationsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/automations/automationsQuery.ts @@ -1,10 +1,10 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import type { JsonApiAutomationOutIncludes } from "@gooddata/api-client-tiger"; import { type AutomationOrganizationViewControllerApiGetAllAutomationsWorkspaceAutomationsRequest, AutomationOrganizationViewControllerApi_GetAllAutomationsWorkspaceAutomations, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type AutomationFilterType, @@ -16,6 +16,8 @@ import { import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { + DEFAULT_PAGE, + DEFAULT_PAGE_SIZE, ERROR_HEADERS_TOO_LARGE, MAX_QUERY_LENGTH, STATUS_NEVER_RUN, @@ -30,19 +32,19 @@ import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; * @alpha */ export class OrganizationAutomationsQuery implements IOrganizationAutomationsQuery { - private size = 100; - private page = 0; - private author: string | null = null; + private size = DEFAULT_PAGE_SIZE; + private page = DEFAULT_PAGE; + private author: string | null | undefined = null; private authorFilterType: AutomationFilterType = "exact"; - private recipient: string | null = null; + private recipient: string | null | undefined = null; private recipientFilterType: AutomationFilterType = "exact"; - private externalRecipient: string | null = null; - private user: string | null = null; - private dashboard: string | null = null; + private externalRecipient: string | null | undefined = null; + private user: string | null | undefined = null; + private dashboard: string | null | undefined = null; private dashboardFilterType: AutomationFilterType = "exact"; - private status: string | null = null; + private status: string | null | undefined = null; private statusFilterType: AutomationFilterType = "exact"; - private workspace: string | null = null; + private workspace: string | null | undefined = null; private workspaceFilterType: AutomationFilterType = "exact"; private filter: { title?: string } = {}; private sort = {}; @@ -58,13 +60,13 @@ export class OrganizationAutomationsQuery implements IOrganizationAutomationsQue this.totalCount = value; }; - public withSize(size: number): IOrganizationAutomationsQuery { - this.size = size; + public withSize(size: number | undefined): IOrganizationAutomationsQuery { + this.size = size ?? DEFAULT_PAGE_SIZE; return this; } - public withPage(page: number): IOrganizationAutomationsQuery { - this.page = page; + public withPage(page: number | undefined): IOrganizationAutomationsQuery { + this.page = page ?? DEFAULT_PAGE; return this; } @@ -80,7 +82,7 @@ export class OrganizationAutomationsQuery implements IOrganizationAutomationsQue return this; } - public withType(type: AutomationType): IOrganizationAutomationsQuery { + public withType(type: AutomationType | undefined): IOrganizationAutomationsQuery { this.type = type; return this; } diff --git a/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts b/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts index b700b1c5936..1bed804508d 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts @@ -1,11 +1,11 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { ActionsApi_DeleteOrganizationAutomations, ActionsApi_PauseOrganizationAutomations, ActionsApi_UnpauseOrganizationAutomations, ActionsApi_UnsubscribeOrganizationAutomations, -} from "@gooddata/api-client-tiger/actions"; +} from "@gooddata/api-client-tiger/endpoints/actions"; import { type IGetAutomationsQueryOptions, type IOrganizationAutomationService, diff --git a/libs/sdk-backend-tiger/src/backend/organization/index.ts b/libs/sdk-backend-tiger/src/backend/organization/index.ts index 7ed1d5c9374..0d213e9ca67 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/index.ts @@ -1,11 +1,11 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation import type { JsonApiIdentityProviderOutWithLinks } from "@gooddata/api-client-tiger"; import { EntitiesApi_GetEntityOrganizations, EntitiesApi_PatchEntityOrganizations, -} from "@gooddata/api-client-tiger/entitiesObjects"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { type IOrganization, type IOrganizationAutomationService, diff --git a/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts b/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts index bf50d6ceb18..b5412493812 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type ITigerClientBase } from "@gooddata/api-client-tiger"; import { @@ -8,11 +8,11 @@ import { EntitiesApi_GetEntityLlmEndpoints, EntitiesApi_PatchEntityLlmEndpoints, EntitiesApi_UpdateEntityLlmEndpoints, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { GenAiApi_ValidateLLMEndpoint, GenAiApi_ValidateLLMEndpointById, -} from "@gooddata/api-client-tiger/genAI"; +} from "@gooddata/api-client-tiger/endpoints/genAI"; import { type IOrganizationLlmEndpointsService } from "@gooddata/sdk-backend-spi"; import { type ILlmEndpointOpenAI, diff --git a/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts b/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts index a6be6ab20f6..1ec92eefb97 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts @@ -1,17 +1,17 @@ -// (C) 2023-2025 GoodData Corporation +// (C) 2023-2026 GoodData Corporation import { type ITigerClientBase } from "@gooddata/api-client-tiger"; import { AutomationApi_TestExistingNotificationChannel, AutomationApi_TestNotificationChannel, -} from "@gooddata/api-client-tiger/automation"; +} from "@gooddata/api-client-tiger/endpoints/automation"; import { EntitiesApi_CreateEntityNotificationChannels, EntitiesApi_DeleteEntityNotificationChannels, EntitiesApi_GetEntityNotificationChannels, EntitiesApi_PatchEntityNotificationChannels, EntitiesApi_UpdateEntityNotificationChannels, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type INotificationChannelsQuery, type IOrganizationNotificationChannelService, diff --git a/libs/sdk-backend-tiger/src/backend/organization/notificationChannelsQuery.ts b/libs/sdk-backend-tiger/src/backend/organization/notificationChannelsQuery.ts index 184169a9c42..d71fe1dd42d 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notificationChannelsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notificationChannelsQuery.ts @@ -1,10 +1,10 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { MetadataUtilities } from "@gooddata/api-client-tiger"; import { EntitiesApi_GetAllEntitiesNotificationChannelIdentifiers, EntitiesApi_GetAllEntitiesNotificationChannels, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type INotificationChannelIdentifiersQueryResult, diff --git a/libs/sdk-backend-tiger/src/backend/organization/notifications.ts b/libs/sdk-backend-tiger/src/backend/organization/notifications.ts index 5ad4524e979..338496a0873 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notifications.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notifications.ts @@ -1,10 +1,10 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type ITigerClientBase } from "@gooddata/api-client-tiger"; import { AutomationApi_MarkAsReadNotification, AutomationApi_MarkAsReadNotificationAll, -} from "@gooddata/api-client-tiger/automation"; +} from "@gooddata/api-client-tiger/endpoints/automation"; import { type INotificationsQuery, type IOrganizationNotificationService } from "@gooddata/sdk-backend-spi"; import { NotificationsQuery } from "./notificationsQuery.js"; diff --git a/libs/sdk-backend-tiger/src/backend/organization/notificationsQuery.ts b/libs/sdk-backend-tiger/src/backend/organization/notificationsQuery.ts index 3b19399e905..8d2fcd2f18b 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notificationsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notificationsQuery.ts @@ -1,9 +1,9 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type AutomationApiGetNotificationsRequest, AutomationApi_GetNotifications, -} from "@gooddata/api-client-tiger/automation"; +} from "@gooddata/api-client-tiger/endpoints/automation"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type INotificationsQuery, type INotificationsQueryResult } from "@gooddata/sdk-backend-spi"; import { type INotification } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/organization/permissions.ts b/libs/sdk-backend-tiger/src/backend/organization/permissions.ts index 9a3149edd16..1843e544e4f 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/permissions.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/permissions.ts @@ -1,14 +1,14 @@ -// (C) 2023-2025 GoodData Corporation +// (C) 2023-2026 GoodData Corporation import { type ITigerClientBase, type PermissionsAssignment } from "@gooddata/api-client-tiger"; -import { ActionsApi_ManageOrganizationPermissions } from "@gooddata/api-client-tiger/actions"; -import { LayoutApi_GetOrganizationPermissions } from "@gooddata/api-client-tiger/layout"; +import { ActionsApi_ManageOrganizationPermissions } from "@gooddata/api-client-tiger/endpoints/actions"; +import { LayoutApi_GetOrganizationPermissions } from "@gooddata/api-client-tiger/endpoints/layout"; import { UserManagementApi_AssignPermissions, UserManagementApi_ListPermissionsForUser, UserManagementApi_ListPermissionsForUserGroup, UserManagementApi_RevokePermissions, -} from "@gooddata/api-client-tiger/userManagement"; +} from "@gooddata/api-client-tiger/endpoints/userManagement"; import { type IOrganizationPermissionService, type IPermissionsAssignment } from "@gooddata/sdk-backend-spi"; import { type IDataSourcePermissionAssignment, diff --git a/libs/sdk-backend-tiger/src/backend/organization/settings.ts b/libs/sdk-backend-tiger/src/backend/organization/settings.ts index 8be5f4dd249..54406a82561 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/settings.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/settings.ts @@ -1,11 +1,11 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { EntitiesApi_CreateEntityOrganizationSettings, EntitiesApi_DeleteEntityOrganizationSettings, EntitiesApi_GetAllEntitiesOrganizationSettings, EntitiesApi_UpdateEntityOrganizationSettings, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IOrganizationSettingsService } from "@gooddata/sdk-backend-spi"; import { type DashboardFiltersApplyMode, diff --git a/libs/sdk-backend-tiger/src/backend/organization/styling.ts b/libs/sdk-backend-tiger/src/backend/organization/styling.ts index f08a6d51b35..55fd1bba391 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/styling.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/styling.ts @@ -1,4 +1,4 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type AxiosResponse } from "axios"; import { v4 as uuidv4 } from "uuid"; @@ -18,7 +18,7 @@ import { EntitiesApi_GetAllEntitiesThemes, EntitiesApi_UpdateEntityColorPalettes, EntitiesApi_UpdateEntityThemes, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IOrganizationStylingService } from "@gooddata/sdk-backend-spi"; import { type IColorPaletteDefinition, diff --git a/libs/sdk-backend-tiger/src/backend/organization/users.ts b/libs/sdk-backend-tiger/src/backend/organization/users.ts index ade065b102f..45f35ba6abf 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/users.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/users.ts @@ -1,4 +1,4 @@ -// (C) 2023-2025 GoodData Corporation +// (C) 2023-2026 GoodData Corporation import { ActionsUtilities } from "@gooddata/api-client-tiger"; import { @@ -9,14 +9,14 @@ import { EntitiesApi_GetEntityUsers, EntitiesApi_PatchEntityUserGroups, EntitiesApi_PatchEntityUsers, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { UserManagementApi_AddGroupMembers, UserManagementApi_ListUserGroups, UserManagementApi_ListUsers, UserManagementApi_RemoveGroupMembers, UserManagementApi_RemoveUsersUserGroups, -} from "@gooddata/api-client-tiger/userManagement"; +} from "@gooddata/api-client-tiger/endpoints/userManagement"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IOrganizationUserGroupsQuery, diff --git a/libs/sdk-backend-tiger/src/backend/tigerSpecificFunctions.ts b/libs/sdk-backend-tiger/src/backend/tigerSpecificFunctions.ts index 00b38966c8c..04054cfc0e2 100644 --- a/libs/sdk-backend-tiger/src/backend/tigerSpecificFunctions.ts +++ b/libs/sdk-backend-tiger/src/backend/tigerSpecificFunctions.ts @@ -59,7 +59,7 @@ import { AacApi_SetAnalyticsModelAac, AacApi_SetLogicalModelAac, type AacLogicalModel, -} from "@gooddata/api-client-tiger/aac"; +} from "@gooddata/api-client-tiger/endpoints/aac"; import { ActionsApi_AllPlatformUsage, ActionsApi_CheckEntityOverrides, @@ -68,8 +68,8 @@ import { ActionsApi_GetDependentEntitiesGraphFromEntryPoints, ActionsApi_RegisterUploadNotification, ActionsApi_ResolveAllEntitlements, -} from "@gooddata/api-client-tiger/actions"; -import { AuthApi_ProcessInvitation } from "@gooddata/api-client-tiger/authActions"; +} from "@gooddata/api-client-tiger/endpoints/actions"; +import { AuthApi_ProcessInvitation } from "@gooddata/api-client-tiger/endpoints/authActions"; import { EntitiesApi_CreateEntityApiTokens, EntitiesApi_CreateEntityCspDirectives, @@ -104,14 +104,14 @@ import { EntitiesApi_PatchEntityWorkspaces, EntitiesApi_UpdateEntityCspDirectives, EntitiesApi_UpdateEntityDataSources, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { LayoutApi_GetLogicalModel, LayoutApi_GetWorkspaceDataFiltersLayout, LayoutApi_PutWorkspaceLayout, LayoutApi_SetLogicalModel, LayoutApi_SetWorkspaceDataFiltersLayout, -} from "@gooddata/api-client-tiger/layout"; +} from "@gooddata/api-client-tiger/endpoints/layout"; import { type ResultApiReadCsvFileManifestsRequest, ResultApi_AnalyzeCsv, @@ -120,14 +120,14 @@ import { ResultApi_ListFiles, ResultApi_ReadCsvFileManifests, ResultApi_StagingUpload, -} from "@gooddata/api-client-tiger/result"; +} from "@gooddata/api-client-tiger/endpoints/result"; import { ScanModelApi_GetDataSourceSchemata, ScanModelApi_ScanDataSource, ScanModelApi_ScanSql, ScanModelApi_TestDataSource, ScanModelApi_TestDataSourceDefinition, -} from "@gooddata/api-client-tiger/scanModel"; +} from "@gooddata/api-client-tiger/endpoints/scanModel"; import { type AuthenticatedAsyncCall } from "@gooddata/sdk-backend-base"; import { type ErrorConverter, diff --git a/libs/sdk-backend-tiger/src/backend/user/index.ts b/libs/sdk-backend-tiger/src/backend/user/index.ts index 97d2df9654b..e8013e74c03 100644 --- a/libs/sdk-backend-tiger/src/backend/user/index.ts +++ b/libs/sdk-backend-tiger/src/backend/user/index.ts @@ -1,5 +1,9 @@ -// (C) 2020-2025 GoodData Corporation -import { ProfileApi_GetCurrent, ProfileApi_GetCurrentWithDetails } from "@gooddata/api-client-tiger/profile"; +// (C) 2020-2026 GoodData Corporation + +import { + ProfileApi_GetCurrent, + ProfileApi_GetCurrentWithDetails, +} from "@gooddata/api-client-tiger/endpoints/profile"; import { type IUserService, type IUserSettingsService } from "@gooddata/sdk-backend-spi"; import { type IUser } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/user/settings.ts b/libs/sdk-backend-tiger/src/backend/user/settings.ts index 4c4371a8cdd..767ea750673 100644 --- a/libs/sdk-backend-tiger/src/backend/user/settings.ts +++ b/libs/sdk-backend-tiger/src/backend/user/settings.ts @@ -1,13 +1,13 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation -import { ActionsApi_ResolveAllSettingsWithoutWorkspace } from "@gooddata/api-client-tiger/actions"; +import { ActionsApi_ResolveAllSettingsWithoutWorkspace } from "@gooddata/api-client-tiger/endpoints/actions"; import { EntitiesApi_CreateEntityUserSettings, EntitiesApi_DeleteEntityUserSettings, EntitiesApi_GetAllEntitiesUserSettings, EntitiesApi_UpdateEntityUserSettings, -} from "@gooddata/api-client-tiger/entitiesObjects"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { type IUserSettings, type IUserSettingsService } from "@gooddata/sdk-backend-spi"; import { type ISettings } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/accessControl/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/accessControl/index.ts index 33b4ef9ebe5..c9cf6d892cf 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/accessControl/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/accessControl/index.ts @@ -1,4 +1,4 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type AvailableAssignees, @@ -8,7 +8,7 @@ import { ActionsApi_AvailableAssignees, ActionsApi_DashboardPermissions, ActionsApi_ManageDashboardPermissions, -} from "@gooddata/api-client-tiger/actions"; +} from "@gooddata/api-client-tiger/endpoints/actions"; import { type IWorkspaceAccessControlService } from "@gooddata/sdk-backend-spi"; import { type AccessGranteeDetail, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributeHierarchies/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributeHierarchies/index.ts index 61c5fa187ca..ddcfc471183 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributeHierarchies/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributeHierarchies/index.ts @@ -1,4 +1,4 @@ -// (C) 2023-2025 GoodData Corporation +// (C) 2023-2026 GoodData Corporation import { uniqBy } from "lodash-es"; import { v4 as uuid } from "uuid"; @@ -8,8 +8,8 @@ import { EntitiesApi_CreateEntityAttributeHierarchies, EntitiesApi_DeleteEntityAttributeHierarchies, EntitiesApi_UpdateEntityAttributeHierarchies, -} from "@gooddata/api-client-tiger/entitiesObjects"; -import { ValidDescendantsApi_ComputeValidDescendants } from "@gooddata/api-client-tiger/validDescendants"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; +import { ValidDescendantsApi_ComputeValidDescendants } from "@gooddata/api-client-tiger/endpoints/validDescendants"; import { type IAttributeHierarchiesService } from "@gooddata/sdk-backend-spi"; import { type ICatalogAttributeHierarchy, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributes/attributesQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributes/attributesQuery.ts index 95c40bf222d..309720fd8ae 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributes/attributesQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributes/attributesQuery.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesAttributesRequest, @@ -7,7 +7,7 @@ import { import { EntitiesApi_GetAllEntitiesAttributes, EntitiesApi_SearchEntitiesAttributes, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IAttributesQuery, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts index b4041464855..8b6ced8f001 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { invariant } from "ts-invariant"; @@ -8,7 +8,7 @@ import { type ElementsRequest, type ElementsResponseGranularityEnum, } from "@gooddata/api-client-tiger"; -import { ActionsApi_ComputeLabelElementsPost } from "@gooddata/api-client-tiger/labelElements"; +import { ActionsApi_ComputeLabelElementsPost } from "@gooddata/api-client-tiger/endpoints/labelElements"; import { InMemoryPaging, ServerPaging } from "@gooddata/sdk-backend-base"; import { type FilterWithResolvableElements, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts index a60a4ac952c..19bdf3a889a 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { invariant } from "ts-invariant"; @@ -15,8 +15,8 @@ import { EntitiesApi_GetAllEntitiesAttributes, EntitiesApi_GetAllEntitiesLabels, EntitiesApi_GetEntityAttributes, -} from "@gooddata/api-client-tiger/entitiesObjects"; -import { ActionsApi_ComputeValidObjects } from "@gooddata/api-client-tiger/validObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; +import { ActionsApi_ComputeValidObjects } from "@gooddata/api-client-tiger/endpoints/validObjects"; import { type IAttributeWithReferences, type IElementsQueryFactory, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts index feee04da1bc..1367835e205 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts @@ -1,10 +1,10 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesAutomationsRequest, MetadataUtilities, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesAutomations } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesAutomations } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type AutomationFilterType, @@ -18,20 +18,21 @@ import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { buildFieldFilter, buildStatusFilter } from "./filterBuilders.js"; import { convertAutomationListToAutomations } from "../../../convertors/fromBackend/AutomationConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; +import { DEFAULT_PAGE, DEFAULT_PAGE_SIZE } from "../../common/automations.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; export class AutomationsQuery implements IAutomationsQuery { - private size = 100; - private page = 0; - private author: string | null = null; + private size = DEFAULT_PAGE_SIZE; + private page = DEFAULT_PAGE; + private author: string | null | undefined = null; private authorFilterType: AutomationFilterType = "exact"; - private recipient: string | null = null; + private recipient: string | null | undefined = null; private recipientFilterType: AutomationFilterType = "exact"; - private externalRecipient: string | null = null; - private user: string | null = null; - private dashboard: string | null = null; + private externalRecipient: string | null | undefined = null; + private user: string | null | undefined = null; + private dashboard: string | null | undefined = null; private dashboardFilterType: AutomationFilterType = "exact"; - private status: string | null = null; + private status: string | null | undefined = null; private statusFilterType: AutomationFilterType = "exact"; private filter: { title?: string } = {}; private sort = {}; @@ -48,13 +49,13 @@ export class AutomationsQuery implements IAutomationsQuery { this.totalCount = value; }; - withSize(size: number): IAutomationsQuery { - this.size = size; + withSize(size: number | undefined): IAutomationsQuery { + this.size = size ?? DEFAULT_PAGE_SIZE; return this; } - withPage(page: number): IAutomationsQuery { - this.page = page; + withPage(page: number | undefined): IAutomationsQuery { + this.page = page ?? DEFAULT_PAGE; return this; } @@ -70,12 +71,12 @@ export class AutomationsQuery implements IAutomationsQuery { return this; } - withType(type: AutomationType): IAutomationsQuery { + withType(type: AutomationType | undefined): IAutomationsQuery { this.type = type; return this; } - withAuthor(author: string, filterType: AutomationFilterType = "exact"): IAutomationsQuery { + withAuthor(author: string | undefined, filterType: AutomationFilterType = "exact"): IAutomationsQuery { this.author = author; this.authorFilterType = filterType; return this; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/automations/filterBuilders.ts b/libs/sdk-backend-tiger/src/backend/workspace/automations/filterBuilders.ts index 74d0ed399d1..a8e1d863c8c 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/automations/filterBuilders.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/automations/filterBuilders.ts @@ -10,7 +10,7 @@ import { STATUS_NEVER_RUN, STATUS_NEVER_RUN_RSQL_QUERY } from "../../common/auto */ export function buildFieldFilter( fieldPath: string, - value: string | null, + value: string | null | undefined, filterType: AutomationFilterType, ): string | null { if (!value) { @@ -34,7 +34,7 @@ export function buildFieldFilter( * Returns null if status is null/undefined. */ export function buildStatusFilter( - status: string | null, + status: string | null | undefined, statusFilterType: AutomationFilterType, ): string | null { if (!status) { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts index 8e752a1f91f..b8c7f1ee7a2 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts @@ -1,4 +1,4 @@ -// (C) 2023-2025 GoodData Corporation +// (C) 2023-2026 GoodData Corporation import { type ITigerClientBase } from "@gooddata/api-client-tiger"; import { @@ -7,14 +7,14 @@ import { ActionsApi_UnpauseWorkspaceAutomations, ActionsApi_UnsubscribeAutomation, ActionsApi_UnsubscribeSelectedWorkspaceAutomations, -} from "@gooddata/api-client-tiger/actions"; +} from "@gooddata/api-client-tiger/endpoints/actions"; import { EntitiesApi_CreateEntityAutomations, EntitiesApi_DeleteEntityAutomations, EntitiesApi_GetAllEntitiesAutomations, EntitiesApi_GetEntityAutomations, EntitiesApi_UpdateEntityAutomations, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IAutomationsQuery, type IGetAutomationOptions, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts index 6c5af0d9abf..e2e98b58997 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts @@ -4,7 +4,7 @@ import { compact, intersectionWith, uniq } from "lodash-es"; import { InvariantError } from "ts-invariant"; import { type AfmValidObjectsQuery, type AfmValidObjectsQueryTypesEnum } from "@gooddata/api-client-tiger"; -import { ActionsApi_ComputeValidObjects } from "@gooddata/api-client-tiger/validObjects"; +import { ActionsApi_ComputeValidObjects } from "@gooddata/api-client-tiger/endpoints/validObjects"; import { type IWorkspaceCatalogAvailableItemsFactory, type IWorkspaceCatalogWithAvailableItemsFactoryOptions, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts index 01b73c8f38f..d5c8e984dc4 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesAttributesRequest, @@ -13,7 +13,7 @@ import { type JsonApiLabelOutWithLinks, MetadataUtilities, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesAttributes } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesAttributes } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type CatalogItem, type ICatalogAttribute, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts index 6f104240897..0e7307d80f5 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { sortBy, uniqBy } from "lodash-es"; @@ -6,7 +6,7 @@ import { MetadataUtilities, ValidateRelationsHeader } from "@gooddata/api-client import { EntitiesApi_GetAllEntitiesFacts, EntitiesApi_GetAllEntitiesMetrics, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IWorkspaceCatalog, type IWorkspaceCatalogFactory, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/dashboardsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/dashboardsQuery.ts index 9683defaccb..576aeb3b99d 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/dashboardsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/dashboardsQuery.ts @@ -1,11 +1,11 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesAnalyticalDashboardsRequest, EntitiesApi_SearchEntitiesAnalyticalDashboards, MetadataUtilities, } from "@gooddata/api-client-tiger"; -import { DashboardsApi_GetAllEntitiesAnalyticalDashboards } from "@gooddata/api-client-tiger/entitiesObjects"; +import { DashboardsApi_GetAllEntitiesAnalyticalDashboards } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import type { IDashboardsQuery, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts index 1602cde175c..224cc7bd681 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts @@ -1,4 +1,4 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { isEmpty, isEqual } from "lodash-es"; import { invariant } from "ts-invariant"; @@ -20,11 +20,8 @@ import { isVisualizationObjectsItem, jsonApiHeaders, } from "@gooddata/api-client-tiger"; -import { ActionsApi_GetDependentEntitiesGraph } from "@gooddata/api-client-tiger/actions"; +import { ActionsApi_GetDependentEntitiesGraph } from "@gooddata/api-client-tiger/endpoints/actions"; import { - ContextFiltersApi_CreateEntityFilterContexts, - ContextFiltersApi_GetEntityFilterContexts, - ContextFiltersApi_UpdateEntityFilterContexts, DashboardsApi_CreateEntityAnalyticalDashboards, DashboardsApi_DeleteEntityAnalyticalDashboards, DashboardsApi_GetAllEntitiesAnalyticalDashboards, @@ -36,12 +33,15 @@ import { EntitiesApi_GetAllEntitiesDashboardPlugins, EntitiesApi_GetEntityDashboardPlugins, EntitiesApi_GetEntityWorkspaces, + FilterContextApi_CreateEntityFilterContexts, + FilterContextApi_GetEntityFilterContexts, + FilterContextApi_UpdateEntityFilterContexts, FilterViewsApi_CreateEntityFilterViews, FilterViewsApi_DeleteEntityFilterViews, FilterViewsApi_GetAllEntitiesFilterViews, FilterViewsApi_GetEntityFilterViews, FilterViewsApi_PatchEntityFilterViews, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ExportApi_CreateDashboardExportRequest, ExportApi_CreateImageExport, @@ -50,8 +50,8 @@ import { ExportApi_CreateSlidesExport, ExportApi_GetMetadata, ExportApi_GetSlidesExportMetadata, -} from "@gooddata/api-client-tiger/export"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +} from "@gooddata/api-client-tiger/endpoints/export"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { type IDashboardExportImageOptions, type IDashboardExportPdfOptions, @@ -1312,7 +1312,7 @@ export class TigerWorkspaceDashboards implements IWorkspaceDashboardsService { ); const result = await this.authCall((client) => { - return ContextFiltersApi_CreateEntityFilterContexts( + return FilterContextApi_CreateEntityFilterContexts( client.axios, client.basePath, { @@ -1447,7 +1447,7 @@ export class TigerWorkspaceDashboards implements IWorkspaceDashboardsService { const objectId = await objRefToIdentifier(filterContext.ref, this.authCall); const result = await this.authCall((client) => { - return ContextFiltersApi_UpdateEntityFilterContexts( + return FilterContextApi_UpdateEntityFilterContexts( client.axios, client.basePath, { @@ -1477,7 +1477,7 @@ export class TigerWorkspaceDashboards implements IWorkspaceDashboardsService { private getFilterContext = async (filterContextRef: ObjRef) => { const filterContextId = await objRefToIdentifier(filterContextRef, this.authCall); const result = await this.authCall((client) => { - return ContextFiltersApi_GetEntityFilterContexts( + return FilterContextApi_GetEntityFilterContexts( client.axios, client.basePath, { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/dataFilters/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/dataFilters/index.ts index 939612c1bf7..88ed0b71bbe 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/dataFilters/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/dataFilters/index.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { v4 as uuid } from "uuid"; @@ -14,7 +14,7 @@ import { EntitiesApi_GetAllEntitiesWorkspaceDataFilterSettings, EntitiesApi_GetAllEntitiesWorkspaceDataFilters, EntitiesApi_PatchEntityWorkspaceDataFilters, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IDataFiltersService } from "@gooddata/sdk-backend-spi"; import { type IWorkspaceDataFilter, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/datasets/datasetsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/datasets/datasetsQuery.ts index d3ac5ff5331..b5cb6a289c1 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/datasets/datasetsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/datasets/datasetsQuery.ts @@ -1,11 +1,11 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesDatasetsRequest, EntitiesApi_SearchEntitiesDatasets, MetadataUtilities, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesDatasets } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesDatasets } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import type { IDatasetsQuery, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/dateFilterConfigs/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/dateFilterConfigs/index.ts index 8b47cf69253..e87251f79ae 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/dateFilterConfigs/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/dateFilterConfigs/index.ts @@ -1,7 +1,8 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation + import { invariant } from "ts-invariant"; -import { ActionsApi_WorkspaceResolveSettings } from "@gooddata/api-client-tiger/actions"; +import { ActionsApi_WorkspaceResolveSettings } from "@gooddata/api-client-tiger/endpoints/actions"; import { InMemoryPaging } from "@gooddata/sdk-backend-base"; import { type IDateFilterConfigsQuery, type IDateFilterConfigsQueryResult } from "@gooddata/sdk-backend-spi"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts index 595bd46eaec..5bef39a76b3 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import SparkMD5 from "spark-md5"; @@ -9,9 +9,9 @@ import { type TabularExportRequest, type TabularExportRequestFormatEnum, } from "@gooddata/api-client-tiger"; -import { ExecutionResultAPI_RetrieveResult } from "@gooddata/api-client-tiger/execution"; -import { ExportApi_CreateTabularExport } from "@gooddata/api-client-tiger/export"; -import { ResultApi_GetCollectionItems } from "@gooddata/api-client-tiger/result"; +import { ExecutionResultAPI_RetrieveResult } from "@gooddata/api-client-tiger/endpoints/execution"; +import { ExportApi_CreateTabularExport } from "@gooddata/api-client-tiger/endpoints/export"; +import { ResultApi_GetCollectionItems } from "@gooddata/api-client-tiger/endpoints/result"; import { SmartFunctionsApi_AnomalyDetection, SmartFunctionsApi_AnomalyDetectionResult, @@ -19,7 +19,7 @@ import { SmartFunctionsApi_ClusteringResult, SmartFunctionsApi_Forecast, SmartFunctionsApi_ForecastResult, -} from "@gooddata/api-client-tiger/smartFunctions"; +} from "@gooddata/api-client-tiger/endpoints/smartFunctions"; import { type IAnomalyDetectionConfig, type IAnomalyDetectionResult, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts index 004f536046d..8547b927a7c 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts @@ -1,10 +1,10 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type AxiosRequestConfig } from "axios"; import { isEqual } from "lodash-es"; -import { ExecutionAPI_ComputeReport } from "@gooddata/api-client-tiger/execution"; -import { ExplainApi_ExplainAFM } from "@gooddata/api-client-tiger/explain"; +import { ExecutionAPI_ComputeReport } from "@gooddata/api-client-tiger/endpoints/execution"; +import { ExplainApi_ExplainAFM } from "@gooddata/api-client-tiger/endpoints/explain"; import { type ExplainConfig, type ExplainType, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/exportDefinitionsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/exportDefinitionsQuery.ts index 3fad71b83a6..b7b200110df 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/exportDefinitionsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/exportDefinitionsQuery.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { invariant } from "ts-invariant"; @@ -6,7 +6,7 @@ import { type EntitiesApiGetAllEntitiesExportDefinitionsRequest, MetadataUtilities, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesExportDefinitions } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesExportDefinitions } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type ExportDefinitionQuerySort, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts index fb824268fc0..67e1d199806 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts @@ -1,4 +1,5 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation + import { type EntitiesApiGetAllEntitiesExportDefinitionsRequest, MetadataUtilities, @@ -11,7 +12,7 @@ import { EntitiesApi_GetAllEntitiesExportDefinitions, EntitiesApi_GetEntityExportDefinitions, EntitiesApi_UpdateEntityExportDefinitions, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { InMemoryPaging } from "@gooddata/sdk-backend-base"; import { type IExportDefinitionsQuery, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/facts/factsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/facts/factsQuery.ts index 32bfb4ff7fd..6fe1d01d111 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/facts/factsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/facts/factsQuery.ts @@ -1,10 +1,10 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesFactsRequest, MetadataUtilities } from "@gooddata/api-client-tiger"; import { EntitiesApi_GetAllEntitiesFacts, EntitiesApi_SearchEntitiesFacts, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IFactsQuery, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts index 7bb64331ddf..c1d41098403 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { invariant } from "ts-invariant"; @@ -7,7 +7,7 @@ import { type JsonApiDatasetOutWithLinks, jsonApiHeaders, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetEntityFacts } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetEntityFacts } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IFactsQuery, type IWorkspaceFactsService } from "@gooddata/sdk-backend-spi"; import { type IDataSetMetadataObject, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/AnalyticsCatalogService.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/AnalyticsCatalogService.ts index ef37a60a734..e356cd4a522 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/AnalyticsCatalogService.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/AnalyticsCatalogService.ts @@ -1,6 +1,6 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation -import { GenAiApi_CreatedBy, GenAiApi_Tags } from "@gooddata/api-client-tiger/genAI"; +import { GenAiApi_CreatedBy, GenAiApi_Tags } from "@gooddata/api-client-tiger/endpoints/genAI"; import type { IAnalyticsCatalogCreatedBy, IAnalyticsCatalogService, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatThread.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatThread.ts index 683e2d54d21..ac4d4dafe9d 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatThread.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatThread.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EventSourceMessage, EventSourceParserStream } from "eventsource-parser/stream"; @@ -14,7 +14,7 @@ import { GenAiApi_AiChat, GenAiApi_AiChatHistory, GenAiApi_AiChatStream, -} from "@gooddata/api-client-tiger/genAI"; +} from "@gooddata/api-client-tiger/endpoints/genAI"; import type { IChatThread, IChatThreadHistory, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsQuery.ts index a36fe064265..57df1141b68 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsQuery.ts @@ -1,7 +1,7 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesMemoryItemsRequest } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesMemoryItems } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesMemoryItems } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IMemoryItemsFilterOptions, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts index 1040cc027a4..27de9676ba8 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { v4 as uuid } from "uuid"; @@ -8,8 +8,8 @@ import { EntitiesApi_DeleteEntityMemoryItems, EntitiesApi_PatchEntityMemoryItems, EntitiesApi_UpdateEntityMemoryItems, -} from "@gooddata/api-client-tiger/entitiesObjects"; -import { GenAiApi_MemoryCreatedByUsers } from "@gooddata/api-client-tiger/genAI"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; +import { GenAiApi_MemoryCreatedByUsers } from "@gooddata/api-client-tiger/endpoints/genAI"; import { type IMemoryCreatedByUsers, type IMemoryItemsQuery, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticQualityService.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticQualityService.ts index 57d36220b7e..946a0597e8d 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticQualityService.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticQualityService.ts @@ -1,9 +1,9 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { GenAiApi_GetQualityIssues, GenAiApi_TriggerQualityIssuesCalculation, -} from "@gooddata/api-client-tiger/genAI"; +} from "@gooddata/api-client-tiger/endpoints/genAI"; import type { ISemanticQualityService } from "@gooddata/sdk-backend-spi"; import type { ISemanticQualityIssuesCalculation, ISemanticQualityReport } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticSearchQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticSearchQuery.ts index 4766c85d2b4..6300fe869a1 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticSearchQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/SemanticSearchQuery.ts @@ -1,6 +1,6 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation -import { GenAiApi_AiSearch } from "@gooddata/api-client-tiger/genAI"; +import { GenAiApi_AiSearch } from "@gooddata/api-client-tiger/endpoints/genAI"; import { type ISemanticSearchQuery, type ISemanticSearchResult } from "@gooddata/sdk-backend-spi"; import { type GenAIObjectType } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts index 485a45e12a3..f99bfcb1bc7 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts @@ -1,7 +1,10 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type ITigerClientBase } from "@gooddata/api-client-tiger"; -import { ActionsApi_MetadataSync, ActionsApi_ResolveLlmEndpoints } from "@gooddata/api-client-tiger/actions"; +import { + ActionsApi_MetadataSync, + ActionsApi_ResolveLlmEndpoints, +} from "@gooddata/api-client-tiger/endpoints/actions"; import type { IAnalyticsCatalogService, IChatThread, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/index.ts index 8afe6cc3fdc..682f2dc8b49 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/index.ts @@ -1,10 +1,10 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation -import { ActionsApi_InheritedEntityPrefixes } from "@gooddata/api-client-tiger/actions"; +import { ActionsApi_InheritedEntityPrefixes } from "@gooddata/api-client-tiger/endpoints/actions"; import { EntitiesApi_GetEntityWorkspaces, EntitiesApi_PatchEntityWorkspaces, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IAnalyticalWorkspace, type IAttributeHierarchiesService, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts index e5a2144d95b..69e94715397 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesVisualizationObjectsRequest, @@ -16,7 +16,7 @@ import { isMetricItem, jsonApiHeaders, } from "@gooddata/api-client-tiger"; -import { ActionsApi_GetDependentEntitiesGraphFromEntryPoints } from "@gooddata/api-client-tiger/actions"; +import { ActionsApi_GetDependentEntitiesGraphFromEntryPoints } from "@gooddata/api-client-tiger/endpoints/actions"; import { EntitiesApi_CreateEntityVisualizationObjects, EntitiesApi_DeleteEntityVisualizationObjects, @@ -25,7 +25,7 @@ import { EntitiesApi_GetEntityVisualizationObjects, EntitiesApi_PatchEntityVisualizationObjects, EntitiesApi_UpdateEntityVisualizationObjects, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IGetInsightOptions, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/insights/insightsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/insights/insightsQuery.ts index 080866098cf..9429d7849cb 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/insights/insightsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/insights/insightsQuery.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesVisualizationObjectsRequest, @@ -7,7 +7,7 @@ import { import { EntitiesApi_GetAllEntitiesVisualizationObjects, EntitiesApi_SearchEntitiesVisualizationObjects, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IFilterBaseOptions, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/keyDriverAnalysis/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/keyDriverAnalysis/index.ts index c9328d25c79..4a3d32d2c4b 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/keyDriverAnalysis/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/keyDriverAnalysis/index.ts @@ -1,12 +1,13 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type FilterDefinition, type ITigerClientBase } from "@gooddata/api-client-tiger"; import { ExecutionAPI_ChangeAnalysis, ExecutionResultAPI_ChangeAnalysisResult, -} from "@gooddata/api-client-tiger/execution"; +} from "@gooddata/api-client-tiger/endpoints/execution"; import { type IChangeAnalysisDefinition, + type IChangeAnalysisOptions, type IChangeAnalysisPeriod, type IChangeAnalysisResults, type IWorkspaceKeyDriverAnalysisService, @@ -29,6 +30,7 @@ export class TigerWorkspaceKeyDriverAnalysis implements IWorkspaceKeyDriverAnaly public async computeChangeAnalysis( definition: IChangeAnalysisDefinition, period: IChangeAnalysisPeriod, + options?: IChangeAnalysisOptions, ): Promise { return this.authCall(async (client) => { const filters = definition.filters?.map((f) => convertFilter(f)).filter(Boolean) as @@ -53,6 +55,9 @@ export class TigerWorkspaceKeyDriverAnalysis implements IWorkspaceKeyDriverAnaly filters: filters, //settings useSmartAttributeSelection: true, + //tags + includeTags: options?.includeTags, + excludeTags: options?.excludeTags, }, }, {}, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/ldm/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/ldm/index.ts index 269eca03866..e89f64f6376 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/ldm/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/ldm/index.ts @@ -1,6 +1,6 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation -import { LayoutApi_GetLogicalModel } from "@gooddata/api-client-tiger/layout"; +import { LayoutApi_GetLogicalModel } from "@gooddata/api-client-tiger/endpoints/layout"; import { type IDateDataset, type IWorkspaceLogicalModelService } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts index 883c6508fcd..0d49871e861 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type AfmValidObjectsQuery, @@ -19,12 +19,12 @@ import { EntitiesApi_GetEntityMetrics, EntitiesApi_PatchEntityMetrics, EntitiesApi_UpdateEntityMetrics, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { SmartFunctionsApi_KeyDriverAnalysis, SmartFunctionsApi_KeyDriverAnalysisResult, -} from "@gooddata/api-client-tiger/smartFunctions"; -import { ActionsApi_ComputeValidObjects } from "@gooddata/api-client-tiger/validObjects"; +} from "@gooddata/api-client-tiger/endpoints/smartFunctions"; +import { ActionsApi_ComputeValidObjects } from "@gooddata/api-client-tiger/endpoints/validObjects"; import type { IGetMeasureOptions, IMeasureExpressionToken, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/measures/measuresQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/measures/measuresQuery.ts index 352e24192a2..865a6750498 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/measures/measuresQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/measures/measuresQuery.ts @@ -1,10 +1,10 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type EntitiesApiGetAllEntitiesMetricsRequest, MetadataUtilities } from "@gooddata/api-client-tiger"; import { EntitiesApi_GetAllEntitiesMetrics, EntitiesApi_SearchEntitiesMetrics, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IFilterBaseOptions, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/permissions/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/permissions/index.ts index dcdf5c73453..4ca8e522f28 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/permissions/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/permissions/index.ts @@ -1,5 +1,6 @@ -// (C) 2019-2025 GoodData Corporation -import { EntitiesApi_GetEntityWorkspaces } from "@gooddata/api-client-tiger/entitiesObjects"; +// (C) 2019-2026 GoodData Corporation + +import { EntitiesApi_GetEntityWorkspaces } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IWorkspacePermissionsService } from "@gooddata/sdk-backend-spi"; import { type IWorkspacePermissions } from "@gooddata/sdk-model"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/permissions/test/permissions.test.ts b/libs/sdk-backend-tiger/src/backend/workspace/permissions/test/permissions.test.ts index 7e3a4f8bcd8..d1dfdcc0700 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/permissions/test/permissions.test.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/permissions/test/permissions.test.ts @@ -1,8 +1,8 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { describe, expect, it, vi } from "vitest"; -import { EntitiesApi_GetEntityWorkspaces } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetEntityWorkspaces } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import type { IWorkspacePermissions } from "@gooddata/sdk-model"; import { GET_OPTIMIZED_WORKSPACE_PARAMS } from "../../constants.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/settings/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/settings/index.ts index fe2bb85fbab..afda8bf40cc 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/settings/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/settings/index.ts @@ -1,21 +1,21 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type FeatureContext, - type JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum, + type JsonApiDatasetOutMetaOriginOriginTypeEnum, type JsonApiWorkspaceSettingOutWithLinks, isLiveFeatures, isStaticFeatures, } from "@gooddata/api-client-tiger"; -import { ActionsApi_WorkspaceResolveAllSettings } from "@gooddata/api-client-tiger/actions"; +import { ActionsApi_WorkspaceResolveAllSettings } from "@gooddata/api-client-tiger/endpoints/actions"; import { EntitiesApi_CreateEntityWorkspaceSettings, EntitiesApi_DeleteEntityWorkspaceSettings, EntitiesApi_GetAllEntitiesWorkspaceSettings, EntitiesApi_GetEntityWorkspaces, EntitiesApi_UpdateEntityWorkspaceSettings, -} from "@gooddata/api-client-tiger/entitiesObjects"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { type IUserWorkspaceSettings, type IWorkspaceSettings, @@ -100,7 +100,7 @@ export class TigerWorkspaceSettings private mapSettingsToKeysByOrigin = ( data: JsonApiWorkspaceSettingOutWithLinks[], - origin: JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum, + origin: JsonApiDatasetOutMetaOriginOriginTypeEnum, ): ISettings => { return data.reduce((result: ISettings, setting) => { const isValueApplicable = setting.meta?.origin?.originType === origin; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts index 38b52713a43..d47cd348af9 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts @@ -1,9 +1,9 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { EntitiesApi_GetAllEntitiesColorPalettes, EntitiesApi_GetAllEntitiesThemes, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type IWorkspaceStylingService } from "@gooddata/sdk-backend-spi"; import { type IColorPaletteItem, diff --git a/libs/sdk-backend-tiger/src/backend/workspace/users/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/users/index.ts index 494c1526437..53fa0ffe3cd 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/users/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/users/index.ts @@ -1,6 +1,6 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation -import { ActionsApi_ListWorkspaceUsers } from "@gooddata/api-client-tiger/actions"; +import { ActionsApi_ListWorkspaceUsers } from "@gooddata/api-client-tiger/endpoints/actions"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IWorkspaceUsersQuery, diff --git a/libs/sdk-backend-tiger/src/backend/workspaces/index.ts b/libs/sdk-backend-tiger/src/backend/workspaces/index.ts index c94dd8d8624..99ef3d4fbcf 100644 --- a/libs/sdk-backend-tiger/src/backend/workspaces/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspaces/index.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { compact } from "lodash-es"; @@ -7,7 +7,7 @@ import { type EntitiesApiGetAllEntitiesWorkspacesRequest, type JsonApiWorkspaceOutList, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesWorkspaces } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesWorkspaces } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { ServerPaging } from "@gooddata/sdk-backend-base"; import { type IAnalyticalWorkspace, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts index 2f6a19bbbb7..1b2fb072f6f 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts @@ -8,8 +8,8 @@ import { type AutomationAutomationSlidesExport, type AutomationAutomationTabularExport, type AutomationAutomationVisualExport, - type JsonApiAutomationPatchAttributesDashboardTabularExportsInner, - type JsonApiAutomationPatchAttributesRawExportsInner, + type JsonApiAutomationOutAttributesDashboardTabularExportsInner, + type JsonApiAutomationOutAttributesRawExportsInner, type JsonApiExportDefinitionOutIncludes, type JsonApiExportDefinitionOutWithLinks, type TabularExportRequest, @@ -60,7 +60,7 @@ export const wrapExportDefinition = ( }; export const convertDashboardTabularExportRequest = ( - exportRequest: JsonApiAutomationPatchAttributesDashboardTabularExportsInner, + exportRequest: JsonApiAutomationOutAttributesDashboardTabularExportsInner, ): IExportDefinitionDashboardRequestPayload | IExportDefinitionVisualizationObjectRequestPayload => { const { requestPayload: { @@ -155,7 +155,7 @@ export const convertVisualExportRequest = ( }; export const convertToRawExportRequest = ( - exportRequest: JsonApiAutomationPatchAttributesRawExportsInner, + exportRequest: JsonApiAutomationOutAttributesRawExportsInner, ): IExportDefinitionVisualizationObjectRequestPayload => { const { requestPayload: { fileName, execution, metadata }, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/ObjectInheritance.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/ObjectInheritance.ts index ac4d8dddfa9..769c3e0650d 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/ObjectInheritance.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/ObjectInheritance.ts @@ -1,15 +1,15 @@ // (C) 2020-2025 GoodData Corporation import { - type JsonApiVisualizationObjectOutMeta, - type JsonApiVisualizationObjectOutMetaOrigin, - type JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum, + type JsonApiDatasetOutMeta, + type JsonApiDatasetOutMetaOrigin, + type JsonApiDatasetOutMetaOriginOriginTypeEnum, } from "@gooddata/api-client-tiger"; type JsonApiMetadataLikeObject = T & { id: string; type: string; - meta?: JsonApiVisualizationObjectOutMeta; + meta?: JsonApiDatasetOutMeta; }; const PrefixSeparator = ":"; @@ -18,9 +18,7 @@ export function isInheritedObject(obj: JsonApiMetadataLikeObject return originType === "PARENT"; } -export function getObjectOrigin( - obj: JsonApiMetadataLikeObject, -): JsonApiVisualizationObjectOutMetaOrigin { +export function getObjectOrigin(obj: JsonApiMetadataLikeObject): JsonApiDatasetOutMetaOrigin { const { origin } = obj.meta || {}; return origin || { originType: "NATIVE", originId: "" }; } @@ -29,7 +27,7 @@ export function getObjectOrigin( * @internal */ export interface OriginInfoWithId { - originType: JsonApiVisualizationObjectOutMetaOriginOriginTypeEnum; + originType: JsonApiDatasetOutMetaOriginOriginTypeEnum; originId: string; id: string; } diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/DimensionHeaderConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/DimensionHeaderConverter.ts index 78aafa76b90..e45b3510f63 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/DimensionHeaderConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/DimensionHeaderConverter.ts @@ -1,4 +1,4 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type AttributeExecutionResultHeader, @@ -63,6 +63,9 @@ const supportedSuffixes: JsonApiAttributeOutAttributesGranularityEnum[] = [ "WEEK_OF_YEAR", "MONTH_OF_YEAR", "QUARTER_OF_YEAR", + "FISCAL_MONTH", + "FISCAL_QUARTER", + "FISCAL_YEAR", ]; function getDateFormatProps(header: IDimensionItemDescriptor): DateAttributeFormatProps | undefined { diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/dateFormatting/defaultDateFormatter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/dateFormatting/defaultDateFormatter.ts index 9cf4476a5ce..5121578951c 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/dateFormatting/defaultDateFormatter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/dateFormatting/defaultDateFormatter.ts @@ -1,4 +1,4 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { format } from "date-fns"; import { @@ -51,13 +51,13 @@ const defaultGranularityFormatPatterns: { "GDC.time.week_us": "w/Y", // 5/2020 "GDC.time.week_in_year": "w", // 5 "GDC.time.month": "MMM y", // Jun 2020 - "GDC.time.fiscal_month": "M y", // 6 2020 (prefix will be added based on org/workspace settings) + "GDC.time.fiscal_month": "'P'M/y", // P6/2020 (default prefix, backend sends actual prefix from settings) "GDC.time.month_in_year": "LLL", // Jan-Dec "GDC.time.quarter": "QQQ y", // Q1 2020 - "GDC.time.fiscal_quarter": "Q y", // 1 2020 (prefix will be added based on org/workspace settings) + "GDC.time.fiscal_quarter": "'Q'Q y", // Q1 2020 (default prefix, backend sends actual prefix from settings) "GDC.time.quarter_in_year": "qqq", // Q1-Q4 "GDC.time.year": "y", // 2020 - "GDC.time.fiscal_year": "y", // 2020 (prefix will be added based on org/workspace settings) + "GDC.time.fiscal_year": "'FY'y", // FY2020 (default prefix, backend sends actual prefix from settings) }; const localeConversions = { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts index 4d76ef5c382..dba0aa05f94 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts @@ -7,8 +7,8 @@ import { type ArithmeticMeasureOperatorEnum, type ComparisonOperatorEnum, type JsonApiAutomationIn, - type JsonApiAutomationPatchAttributes, - type JsonApiAutomationPatchAttributesAlert, + type JsonApiAutomationOutAttributes, + type JsonApiAutomationOutAttributesAlert, type RelativeOperatorEnum, } from "@gooddata/api-client-tiger"; import { type IRawExportCustomOverrides } from "@gooddata/sdk-backend-spi"; @@ -244,7 +244,7 @@ export function convertAutomation( default: return acc; } - }, {} as JsonApiAutomationPatchAttributes); + }, {} as JsonApiAutomationOutAttributes); const attributes = omitBy( { @@ -283,7 +283,7 @@ export function convertAutomation( const convertAlert = ( alert: IAutomationAlert, enableAutomationFilterContext: boolean, -): JsonApiAutomationPatchAttributesAlert => { +): JsonApiAutomationOutAttributesAlert => { const { condition, execution } = alert; const { filters: convertedFilters } = convertAfmFilters( diff --git a/libs/sdk-backend-tiger/src/utils/errorHandling.ts b/libs/sdk-backend-tiger/src/utils/errorHandling.ts index ba5adf5606d..6396b4d2853 100644 --- a/libs/sdk-backend-tiger/src/utils/errorHandling.ts +++ b/libs/sdk-backend-tiger/src/utils/errorHandling.ts @@ -55,7 +55,7 @@ export function convertApiError(error: Error): AnalyticalBackendError { export function createNotAuthenticatedError(error: Error): NotAuthenticated | undefined { const axiosErrorResponse = (error as AxiosError).response; - if (!axiosErrorResponse || axiosErrorResponse.status !== 401) { + if (axiosErrorResponse?.status !== 401) { return; } @@ -77,8 +77,7 @@ function createLimitReachedError(error: Error): LimitReached | undefined { const axiosErrorResponse = (error as AxiosError).response; if ( - !axiosErrorResponse || - axiosErrorResponse.status !== 400 || + axiosErrorResponse?.status !== 400 || !axiosErrorResponse.data?.detail?.includes("Reached plan limits") ) { return; @@ -91,8 +90,7 @@ function createContractExpiredError(error: Error): ContractExpired | undefined { const axiosErrorResponse = (error as AxiosError).response; if ( - !axiosErrorResponse || - axiosErrorResponse.status !== 403 || + axiosErrorResponse?.status !== 403 || (!axiosErrorResponse.data?.detail?.includes("Contract expired") && !axiosErrorResponse.data?.detail?.includes("Reason: EXPIRED")) ) { @@ -114,7 +112,7 @@ function createDataTooLargeError(error: Error): DataTooLargeError | undefined { axiosErrorResponse?.data?.structuredDetail?.limitBreaks?.length || axiosErrorResponse?.data?.detail?.includes("Reached limit of maximum data size"); - if (!axiosErrorResponse || axiosErrorResponse.status !== 400 || !isLimit) { + if (axiosErrorResponse?.status !== 400 || !isLimit) { return; } diff --git a/libs/sdk-backend-tiger/src/utils/exportPolling.ts b/libs/sdk-backend-tiger/src/utils/exportPolling.ts index 73f8460476f..f51a421ad26 100644 --- a/libs/sdk-backend-tiger/src/utils/exportPolling.ts +++ b/libs/sdk-backend-tiger/src/utils/exportPolling.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type AxiosError, type AxiosPromise, type AxiosRequestConfig } from "axios"; @@ -9,7 +9,7 @@ import { ExportApi_GetRawExport, ExportApi_GetSlidesExport, ExportApi_GetTabularExport, -} from "@gooddata/api-client-tiger/export"; +} from "@gooddata/api-client-tiger/endpoints/export"; import { DataTooLargeError, type DataTooLargeResponseBody, diff --git a/libs/sdk-backend-tiger/src/utils/ldmItemUpdate.ts b/libs/sdk-backend-tiger/src/utils/ldmItemUpdate.ts index bcb4dc5741f..b58470579e0 100644 --- a/libs/sdk-backend-tiger/src/utils/ldmItemUpdate.ts +++ b/libs/sdk-backend-tiger/src/utils/ldmItemUpdate.ts @@ -1,11 +1,14 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type DeclarativeAttribute, type DeclarativeFact, type ITigerClientBase, } from "@gooddata/api-client-tiger"; -import { LayoutApi_GetLogicalModel, LayoutApi_SetLogicalModel } from "@gooddata/api-client-tiger/layout"; +import { + LayoutApi_GetLogicalModel, + LayoutApi_SetLogicalModel, +} from "@gooddata/api-client-tiger/endpoints/layout"; import { UnexpectedResponseError } from "@gooddata/sdk-backend-spi"; import { type IMetadataObjectBase, diff --git a/libs/sdk-embedding/package.json b/libs/sdk-embedding/package.json index 9ca55bb9efa..a0226f0158c 100644 --- a/libs/sdk-embedding/package.json +++ b/libs/sdk-embedding/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-embedding", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData Embedding APIs", "repository": { "type": "git", @@ -56,8 +56,8 @@ "@microsoft/api-documenter": "^7.17.0", "@microsoft/api-extractor": "^7.52.8", "@types/lodash-es": "^4.17.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/libs/sdk-model/package.json b/libs/sdk-model/package.json index a2fcb044846..9a7d59a315d 100644 --- a/libs/sdk-model/package.json +++ b/libs/sdk-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-model", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData Model definitions used by UI components and Backend SPI", "repository": { "type": "git", @@ -60,8 +60,8 @@ "@types/lodash-es": "^4.17.12", "@types/spark-md5": "^3.0.1", "@types/stringify-object": "^3.2.0", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/libs/sdk-ui-all/package.json b/libs/sdk-ui-all/package.json index d3cbb5b8d82..e6632919abc 100644 --- a/libs/sdk-ui-all/package.json +++ b/libs/sdk-ui-all/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-all", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK - All-In-One", "repository": { "type": "git", @@ -53,8 +53,8 @@ "@gooddata/eslint-config": "workspace:*", "@microsoft/api-documenter": "^7.17.0", "@microsoft/api-extractor": "^7.52.8", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/libs/sdk-ui-catalog/package.json b/libs/sdk-ui-catalog/package.json index a6de31934b4..81df61a2d94 100644 --- a/libs/sdk-ui-catalog/package.json +++ b/libs/sdk-ui-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-catalog", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK - Analytics Catalog", "repository": { "type": "git", @@ -83,8 +83,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-catalog/src/catalog/Catalog.tsx b/libs/sdk-ui-catalog/src/catalog/Catalog.tsx index 7691b744011..5d0f471b57f 100644 --- a/libs/sdk-ui-catalog/src/catalog/Catalog.tsx +++ b/libs/sdk-ui-catalog/src/catalog/Catalog.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type MouseEvent } from "react"; @@ -15,7 +15,7 @@ import { Header } from "../header/Header.js"; import { Main } from "../main/Main.js"; import { PermissionsGate, useFeatureFlag } from "../permission/index.js"; import { QualityScoreCard } from "../quality/QualityScoreCard.js"; -import { FullTextSearch } from "../search/index.js"; +import { FullTextSearchInput } from "../search/index.js"; type Props = { backend: IAnalyticalBackend; @@ -61,7 +61,7 @@ export function Catalog({ /> } > -
} /> +
} /> {isQualityEnabled ? : null}
, "title"> & { title: ReactNode; + titleId?: string; children: ReactNode; }; -export function FilterGroupLayout({ title, className, children, ...htmlProps }: Props) { +export function FilterGroupLayout({ title, titleId, className, children, ...htmlProps }: Props) { return (
- {title} + + {title} + {children}
); diff --git a/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx b/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx index 309401785db..c4f35037fb5 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx @@ -1,6 +1,6 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation -import { memo } from "react"; +import { memo, useId } from "react"; import { FormattedMessage } from "react-intl"; @@ -12,13 +12,21 @@ export function FilterObjectType() { const { counter } = useObjectTypeState(); const { types } = useFilterState(); const { setTypes } = useFilterActions(); + const id = useId(); + const titleId = `filter-object-type-title/${id}`; return ( } + titleId={titleId} > - + ); } diff --git a/libs/sdk-ui-catalog/src/localization/bundles/en-US.json b/libs/sdk-ui-catalog/src/localization/bundles/en-US.json index 890140dc8ac..0dfc9b7f4e7 100644 --- a/libs/sdk-ui-catalog/src/localization/bundles/en-US.json +++ b/libs/sdk-ui-catalog/src/localization/bundles/en-US.json @@ -451,6 +451,18 @@ "text": "Run check", "crowdinContext": "Label for the button that runs the quality check." }, + "analyticsCatalog.quality.scoreCard.menu.ariaLabel": { + "text": "More actions for {title}", + "crowdinContext": "ARIA label for the icon-only menu button (ellipsis) in the quality score card header. The {title} placeholder is the score card title. Example output: 'More actions for Semantic quality'." + }, + "analyticsCatalog.quality.scoreCard.status.running": { + "text": "Semantic quality check running.", + "crowdinContext": "Screen reader announcement when the semantic quality check is running." + }, + "analyticsCatalog.quality.scoreCard.status.finished": { + "text": "Semantic quality check finished.", + "crowdinContext": "Screen reader announcement when the semantic quality check finishes." + }, "analyticsCatalog.quality.scoreCard.action.empty": { "text": "No findings", "crowdinContext": "Label for the empty state of the quality score card action." diff --git a/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx b/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx index 8e816101403..665a4877c52 100644 --- a/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx +++ b/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { memo } from "react"; @@ -32,9 +32,10 @@ type Props = { counter: Record; selectedTypes: ObjectType[]; onSelect: (selectedTypes: ObjectType[]) => void; + ariaLabelledBy?: string; }; -export function ObjectTypeSelect({ selectedTypes, onSelect, counter }: Props) { +export function ObjectTypeSelect({ selectedTypes, onSelect, counter, ariaLabelledBy }: Props) { const intl = useIntl(); const handleSelect = (type: ObjectType) => { @@ -46,7 +47,7 @@ export function ObjectTypeSelect({ selectedTypes, onSelect, counter }: Props) { }; return ( - + {OBJECT_TYPE_ORDER.map((type) => { const isSelected = selectedTypes.includes(type); const ariaLabel = intl.formatMessage(messages[type], { count: counter[type] }); @@ -65,7 +66,7 @@ export function ObjectTypeSelect({ selectedTypes, onSelect, counter }: Props) { variant="secondary" icon={icons[type]} isActive={isSelected} - accessibilityConfig={{ ariaLabel }} + accessibilityConfig={{ ariaLabel, ariaPressed: isSelected }} onClick={() => handleSelect(type)} // Since object types are stable, dynamic testing ID is acceptable. dataTestId={`${testIds.objectType}/${type}`} diff --git a/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx b/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx index 67c37287896..a7e3bd60081 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx @@ -1,9 +1,12 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation + +import { useId } from "react"; import { useIntl } from "react-intl"; import { useQualityActions, useQualityState } from "./QualityContext.js"; import { QualityScoreCardAction } from "./QualityScoreCardAction.js"; +import { QualityScoreCardAnnouncements } from "./QualityScoreCardAnnouncements.js"; import { QualityScoreCardDate } from "./QualityScoreCardDate.js"; import { QualityScoreCardMenu } from "./QualityScoreCardMenu.js"; import { QualityScoreCardScore } from "./QualityScoreCardScore.js"; @@ -12,6 +15,8 @@ import { useFilterActions } from "../filter/index.js"; export function QualityScoreCard() { const intl = useIntl(); + const id = useId(); + const titleId = `quality-score-card-title/${id}`; const { status, issues, updatedAt } = useQualityState(); const { createQualityIssuesCalculation } = useQualityActions(); const { setQualityCodes } = useFilterActions(); @@ -29,11 +34,16 @@ export function QualityScoreCard() { }; return ( -
- +
+

{intl.formatMessage({ id: "analyticsCatalog.quality.scoreCard.title" })} - - +

+ + {updatedAt ? : null} -
+ ); } diff --git a/libs/sdk-ui-catalog/src/quality/QualityScoreCardAnnouncements.tsx b/libs/sdk-ui-catalog/src/quality/QualityScoreCardAnnouncements.tsx new file mode 100644 index 00000000000..132193ae7ed --- /dev/null +++ b/libs/sdk-ui-catalog/src/quality/QualityScoreCardAnnouncements.tsx @@ -0,0 +1,38 @@ +// (C) 2025-2026 GoodData Corporation + +import { useEffect, useRef, useState } from "react"; + +import { useIntl } from "react-intl"; + +type Props = { + isLoading: boolean; +}; + +export function QualityScoreCardAnnouncements({ isLoading }: Props) { + const intl = useIntl(); + const prevIsLoadingRef = useRef(null); + const [statusAnnouncement, setStatusAnnouncement] = useState(""); + + const runningAnnouncement = intl.formatMessage({ + id: "analyticsCatalog.quality.scoreCard.status.running", + }); + const finishedAnnouncement = intl.formatMessage({ + id: "analyticsCatalog.quality.scoreCard.status.finished", + }); + + useEffect(() => { + if (isLoading) { + setStatusAnnouncement(runningAnnouncement); + } else if (prevIsLoadingRef.current) { + // Announce only after a previously running state to avoid noise on initial load. + setStatusAnnouncement(finishedAnnouncement); + } + prevIsLoadingRef.current = isLoading; + }, [isLoading, runningAnnouncement, finishedAnnouncement]); + + return ( +
+ {statusAnnouncement} +
+ ); +} diff --git a/libs/sdk-ui-catalog/src/quality/QualityScoreCardMenu.tsx b/libs/sdk-ui-catalog/src/quality/QualityScoreCardMenu.tsx index 94387bb9d69..fa7072ce63e 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityScoreCardMenu.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityScoreCardMenu.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useMemo } from "react"; @@ -9,9 +9,16 @@ import { Dropdown, type IUiListboxInteractiveItem, UiIconButton, UiListbox } fro type Props = { intl: IntlShape; onRunCheck: () => void; + isLoading: boolean; }; -export function QualityScoreCardMenu({ intl, onRunCheck }: Props) { +export function QualityScoreCardMenu({ intl, onRunCheck, isLoading }: Props) { + const title = intl.formatMessage({ id: "analyticsCatalog.quality.scoreCard.title" }); + const moreActionsAriaLabel = intl.formatMessage( + { id: "analyticsCatalog.quality.scoreCard.menu.ariaLabel" }, + { title }, + ); + const items: IUiListboxInteractiveItem[] = useMemo( () => [ { @@ -42,6 +49,8 @@ export function QualityScoreCardMenu({ intl, onRunCheck }: Props) { variant="tertiary" onClick={toggleDropdown} ariaAttributes={ariaAttributes} + accessibilityConfig={{ ariaLabel: moreActionsAriaLabel }} + isDisabled={isLoading} size="large" /> ); diff --git a/libs/sdk-ui-catalog/src/quality/QualityScoreCardScore.tsx b/libs/sdk-ui-catalog/src/quality/QualityScoreCardScore.tsx index 9567d4f9847..2d651fd8069 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityScoreCardScore.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityScoreCardScore.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import type { ISemanticQualityIssue } from "@gooddata/sdk-model"; import { LoadingSpinner, UiIcon } from "@gooddata/sdk-ui-kit"; @@ -32,7 +32,7 @@ export function QualityScoreCardScore({ issues, isLoading }: Props) { ); }) ) : ( -
+ diff --git a/libs/sdk-ui-catalog/src/search/FullTextSearch.tsx b/libs/sdk-ui-catalog/src/search/FullTextSearchInput.tsx similarity index 93% rename from libs/sdk-ui-catalog/src/search/FullTextSearch.tsx rename to libs/sdk-ui-catalog/src/search/FullTextSearchInput.tsx index 10fb218c368..3ae85751f97 100644 --- a/libs/sdk-ui-catalog/src/search/FullTextSearch.tsx +++ b/libs/sdk-ui-catalog/src/search/FullTextSearchInput.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useCallback, useEffect, useMemo } from "react"; @@ -12,7 +12,7 @@ import { useFullTextSearchActions } from "./FullTextSearchContext.js"; const initialSearchTerm = ""; const debounceDelay = 300; -export function FullTextSearch() { +export function FullTextSearchInput() { const intl = useIntl(); const { setSearchTerm } = useFullTextSearchActions(); const [value, setValue, searchTerm] = useDebouncedState(initialSearchTerm, debounceDelay); diff --git a/libs/sdk-ui-catalog/src/search/index.ts b/libs/sdk-ui-catalog/src/search/index.ts index 6df6c4ba1ab..78c71393442 100644 --- a/libs/sdk-ui-catalog/src/search/index.ts +++ b/libs/sdk-ui-catalog/src/search/index.ts @@ -1,6 +1,6 @@ // (C) 2025-2026 GoodData Corporation -export { FullTextSearch } from "./FullTextSearch.js"; +export { FullTextSearchInput } from "./FullTextSearchInput.js"; export { FullTextSearchProvider, useFullTextSearchState, diff --git a/libs/sdk-ui-catalog/src/table/Table.tsx b/libs/sdk-ui-catalog/src/table/Table.tsx index 58ebc40ad86..774064bdd5f 100644 --- a/libs/sdk-ui-catalog/src/table/Table.tsx +++ b/libs/sdk-ui-catalog/src/table/Table.tsx @@ -10,6 +10,7 @@ import { UiAsyncTableEmptyState, UiAsyncTableRowHeightNormal, UiAsyncTableScrollbarWidth, + UiSearchResultsAnnouncement, useElementSize, } from "@gooddata/sdk-ui-kit"; @@ -53,9 +54,11 @@ export function Table({ items, status, next, hasNext, totalCount, onTagClick, on const isSearching = searchTerm.length > 0; const effectiveItems = useMemo(() => items.map((item) => ({ ...item, id: item.identifier })), [items]); const skeletonItemsCount = isLoading ? 3 : totalCount - items.length; + const announcedTotalResults = isSearching && status === "success" ? totalCount : undefined; return (
+ totalItemsCount={totalCount} skeletonItemsCount={skeletonItemsCount} diff --git a/libs/sdk-ui-catalog/styles/scss/main.scss b/libs/sdk-ui-catalog/styles/scss/main.scss index 7947d6f16a6..94582d333ea 100644 --- a/libs/sdk-ui-catalog/styles/scss/main.scss +++ b/libs/sdk-ui-catalog/styles/scss/main.scss @@ -208,6 +208,9 @@ $content-font-size: 14px; background-color: kit-variables.$gd-color-white; &__title { + margin: 0; + font-size: $content-font-size; + font-family: inherit; font-weight: 700; line-height: 20px; } diff --git a/libs/sdk-ui-charts/api/sdk-ui-charts.api.md b/libs/sdk-ui-charts/api/sdk-ui-charts.api.md index 2963f6db41e..7de8dc3c64c 100644 --- a/libs/sdk-ui-charts/api/sdk-ui-charts.api.md +++ b/libs/sdk-ui-charts/api/sdk-ui-charts.api.md @@ -1031,7 +1031,7 @@ export const TOP = "top"; export function Treemap(props: ITreemapProps): JSX.Element; // @internal (undocumented) -export function updateConfigWithSettings(config: IChartConfig, settings: ISettings | undefined): IChartConfig; +export function updateConfigWithSettings(config: IChartConfig | undefined, settings: ISettings | undefined): IChartConfig; // @internal (undocumented) export function updateForecastWithSettings(config: IChartConfig, settings: ISettings, { enabled }: { diff --git a/libs/sdk-ui-charts/package.json b/libs/sdk-ui-charts/package.json index a3da27cad43..ea6bdf07fe7 100644 --- a/libs/sdk-ui-charts/package.json +++ b/libs/sdk-ui-charts/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-charts", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - Charts", "repository": { "type": "git", @@ -122,8 +122,8 @@ "@types/react": "19.1.11", "@types/react-dom": "19.1.7", "@types/react-measure": "^2.0.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts b/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts index d45c309dd74..428a380cb3f 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts @@ -104,7 +104,7 @@ export function isAttributeColumnWidthItem(obj: any): obj is IRepeaterAttributeC } export function isMeasureColumnWidthItem(obj: any): obj is IRepeaterMeasureColumnWidthItem { - return obj?.measureColumnWidthItem && obj?.measureColumnWidthItem.locators !== undefined; + return obj?.measureColumnWidthItem?.locators !== undefined; } export function isAttributeColumnLocator(obj: any): obj is IRepeaterAttributeColumnLocator { @@ -116,7 +116,7 @@ export function isMeasureColumnLocator(obj: any): obj is IRepeaterMeasureColumnL } export function isWeakMeasureColumnWidthItem(obj: any): obj is IRepeaterWeakMeasureColumnWidthItem { - return obj?.measureColumnWidthItem && obj?.measureColumnWidthItem.locator !== undefined; + return obj?.measureColumnWidthItem?.locator !== undefined; } export function getManualResizedColumn(resizingState: MutableRefObject, column: Column) { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts index a23d89d7dcd..b2fe3c346e0 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts @@ -1,4 +1,4 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import cx from "classnames"; import { type OptionsLandmarkVerbosityValue, type Point } from "highcharts"; @@ -552,7 +552,7 @@ export function percentageDataLabelFormatter(this: any, config?: IChartConfig): // * left or right axis on single axis chart, or // * primary axis on dual axis chart if (this.percentage && (isSingleAxis || isPrimaryAxis)) { - return percentFormatter(this.percentage, this.series?.data?.length > 0 && this.series.data[0].format); + return percentFormatter(this.percentage, this.series?.data?.[0]?.format); } return labelFormatter.call(this, config); diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartForecast.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartForecast.ts index 9ef87f6b88a..0d5382ded08 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartForecast.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartForecast.ts @@ -49,7 +49,7 @@ export function assignForecastAxes( const { data } = firstSeries; //if there is no data, we don't need to add forecast axis - if (data && data.length === 0) { + if (data?.length === 0) { return series; } diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts index bb53e05081d..913586b2d5a 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts @@ -311,8 +311,7 @@ function defaultChartedAttributeDiscovery(dv: DataViewFacade): ChartedAttributes const dimensions = dv.meta().dimensions(); const isViewByTwoAttributes = - attributeHeaderItems[VIEW_BY_DIMENSION_INDEX] && - attributeHeaderItems[VIEW_BY_DIMENSION_INDEX].length === ViewByAttributesLimit; + attributeHeaderItems[VIEW_BY_DIMENSION_INDEX]?.length === ViewByAttributesLimit; let viewByParentAttribute: IUnwrappedAttributeHeadersWithItems | undefined; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsForSettings.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsForSettings.ts index b3be021c266..a2566fdda96 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsForSettings.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsForSettings.ts @@ -26,7 +26,7 @@ function getSettingsBasedConfig(settings: ISettings): Partial { * @internal */ export function updateConfigWithSettings( - config: IChartConfig, + config: IChartConfig | undefined, settings: ISettings | undefined, ): IChartConfig { if (!settings) { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_util/common.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_util/common.ts index 706c1c653ef..7effeda9abe 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_util/common.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_util/common.ts @@ -229,7 +229,7 @@ export function percentFormatter(value: number | null | undefined, format?: stri return ""; } - const isPercentageFormat = format && format.trim().slice(-1) === "%"; + const isPercentageFormat = format?.trim().slice(-1) === "%"; const numberOfDecimals = isPercentageFormat ? getNumberOfDecimalsFromDefaultFormat(format) : 2; return getNumberWithGivenDecimals(value, numberOfDecimals); diff --git a/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md b/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md index a724b84fe27..079ae32c3d5 100644 --- a/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md +++ b/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md @@ -1609,6 +1609,8 @@ export interface DashboardConfig { externalRecipient?: string; // @beta focusObject?: DashboardFocusObject; + // @alpha + hideAddTabButton?: boolean; // @internal hideSaveAsNewButton?: boolean; // @internal @@ -8692,7 +8694,7 @@ export interface ResolveAsyncRenderPayload { } // @public -export type ResolvedDashboardConfig = Omit, "mapboxToken" | "agGridToken" | "exportId" | "exportType" | "focusObject" | "slideConfig" | "references" | "entitlements" | "initialContent" | "executionTimestamp" | "overrideDefaultFilters" | "overrideTitle" | "hideWidgetTitles" | "workspaceDescriptor" | "evaluationFrequency" | "externalRecipient" | "openAutomationOnLoad"> & DashboardConfig; +export type ResolvedDashboardConfig = Omit, "mapboxToken" | "agGridToken" | "exportId" | "exportType" | "focusObject" | "slideConfig" | "references" | "entitlements" | "initialContent" | "executionTimestamp" | "overrideDefaultFilters" | "overrideTitle" | "hideWidgetTitles" | "workspaceDescriptor" | "evaluationFrequency" | "externalRecipient" | "openAutomationOnLoad" | "hideAddTabButton"> & DashboardConfig; // @alpha (undocumented) export type ResolvedDateFilterValues = IResolvedDateFilterValue[]; @@ -9859,6 +9861,9 @@ export const selectInvalidUrlDrillParameterWidgetRefs: DashboardSelector; +// @alpha +export const selectIsAddTabButtonHidden: DashboardSelector; + // @alpha (undocumented) export const selectIsAlertingDialogOpen: DashboardSelector; diff --git a/libs/sdk-ui-dashboard/package.json b/libs/sdk-ui-dashboard/package.json index 1f9406cf0ef..d6682482c4c 100644 --- a/libs/sdk-ui-dashboard/package.json +++ b/libs/sdk-ui-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-dashboard", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK - Dashboard Component", "repository": { "type": "git", @@ -124,8 +124,8 @@ "@types/react-lines-ellipsis": "^0.15.6", "@types/react-measure": "^2.0.12", "@types/react-redux": "7.1.34", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaContent.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaContent.tsx index 70407fdebac..28c65c7e5d0 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaContent.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaContent.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type ReactNode } from "react"; @@ -7,20 +7,20 @@ import cx from "classnames"; import { useKdaState } from "../providers/KdaState.js"; interface IKdaContentProps { + contentError?: (err?: Error) => ReactNode; leftContent?: ReactNode; rightContent?: ReactNode; leftLoader?: ReactNode; rightLoader?: ReactNode; - leftError?: ReactNode; - rightError?: ReactNode; + rightError?: (err?: Error) => ReactNode; } export function KdaContent({ + contentError, leftContent, rightContent, leftLoader, rightLoader, - leftError, rightError, }: IKdaContentProps) { const { state } = useKdaState(); @@ -31,18 +31,28 @@ export function KdaContent({ const rightPanelLoading = loading || state.selectedStatus === "pending" || state.selectedStatus === "loading"; - const leftPanelError = state.itemsStatus === "error"; + const fullContentError = state.itemsStatus === "error"; const rightPanelError = state.selectedStatus === "error"; return (
-
- {leftPanelLoading ? leftLoader : leftPanelError ? leftError : leftContent} -
-
-
- {rightPanelLoading ? rightLoader : rightPanelError ? rightError : rightContent} -
+ {fullContentError ? ( +
{contentError?.(state.itemsError)}
+ ) : ( + <> +
+ {leftPanelLoading ? leftLoader : leftContent} +
+
+
+ {rightPanelLoading + ? rightLoader + : rightPanelError + ? rightError?.(state.selectedError) + : rightContent} +
+ + )}
); } diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaErrorComponent.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaErrorComponent.tsx new file mode 100644 index 00000000000..4f7074648a2 --- /dev/null +++ b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaErrorComponent.tsx @@ -0,0 +1,137 @@ +// (C) 2026 GoodData Corporation + +import { useState } from "react"; + +import { useIntl } from "react-intl"; + +import { + type AnalyticalBackendError, + isAnalyticalBackendError, + isUnexpectedResponseError, +} from "@gooddata/sdk-backend-spi"; +import { ErrorComponent } from "@gooddata/sdk-ui"; +import { UiButton, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; + +import { selectPermissions, useDashboardSelector } from "../../model/index.js"; + +export interface KdaErrorComponentProps { + type: KdaErrorType; + error?: Error | AnalyticalBackendError; +} + +export enum KdaErrorType { + Items = "items", + Details = "details", +} + +export function KdaErrorComponent({ error }: KdaErrorComponentProps) { + const permissions = useDashboardSelector(selectPermissions); + const detailShow = permissions.canManageProject ?? false; + + if (isUnexpectedResponseError(error)) { + return ( +
+ + + +
+ ); + } + if (isAnalyticalBackendError(error)) { + return ( +
+ + +
+ ); + } + return ; +} + +function GeneralError() { + const intl = useIntl(); + + return ( + + ); +} + +interface TraceIdProps { + traceId?: string; +} + +function TraceId({ traceId }: TraceIdProps) { + const intl = useIntl(); + const onCopyTraceId = () => { + void navigator.clipboard.writeText(traceId ?? ""); + }; + + if (traceId) { + return null; + } + + return ( +
+
+ + {intl.formatMessage({ id: "kdaDialog.dialog.keyDrives.error.traceId" })}: + {" "} + {traceId} +
+ +
+ ); +} + +interface TraceIdProps { + detailShow?: boolean; + rawError?: object; +} + +function DetailsShow({ detailShow, rawError }: TraceIdProps) { + const intl = useIntl(); + const [open, setOpen] = useState(false); + + if (!detailShow || !rawError) { + return null; + } + + return ( +
+ {open ? ( +
+
+
+ {intl.formatMessage({ id: "kdaDialog.dialog.keyDrives.error.details.title" })} +
+ } + content={intl.formatMessage({ + id: "kdaDialog.dialog.keyDrives.error.details.title.tooltip", + })} + /> +
+
+ {JSON.stringify(rawError)} +
+
+ ) : ( + { + setOpen(true); + }} + /> + )} +
+ ); +} diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversFooter.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversFooter.tsx index cac7ebab05b..3e88b062fcd 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversFooter.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversFooter.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type RefObject, useId, useMemo } from "react"; @@ -32,6 +32,7 @@ export function KeyDriversFooter() { state.itemsStatus === "loading" || state.relevantStatus === "pending" || state.relevantStatus === "loading"; + const isError = state.itemsStatus === "error"; const allAttributes = useDashboardSelector(selectCatalogAttributes); const { validAttributes, mapAttributes } = useMemo(() => { @@ -69,6 +70,11 @@ export function KeyDriversFooter() { const isSearchBarVisible = validAttributes.length > 7; + //Do not show footer when kda is not loaded at all + if (isError) { + return null; + } + return (
{isLoading ? ( diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx index ce7f7188d80..2a643701408 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx @@ -4,7 +4,6 @@ import { useId, useMemo } from "react"; import cx from "classnames"; -import { ErrorComponent } from "@gooddata/sdk-ui"; import { Dialog, OverlayController, OverlayControllerProvider } from "@gooddata/sdk-ui-kit"; import { useKdaDialogAccessibility } from "./hooks/useKdaDialogAccessibility.js"; @@ -25,6 +24,7 @@ import { useChangeAnalysis } from "./hooks/useChangeAnalysis.js"; import { useKdaDialogTooltipsOverride } from "./hooks/useKdaDialogTooltipsOverride.js"; import { useValidAttributes } from "./hooks/useValidAttributes.js"; import { KdaDialogControls } from "./KdaDialogControls.js"; +import { KdaErrorComponent, KdaErrorType } from "../components/KdaErrorComponent.js"; const overlayController = OverlayController.getInstance(KDA_DIALOG_OVERS_Z_INDEX); @@ -96,22 +96,16 @@ export function KdaDialog({ className, showCloseButton = true, onClose }: IKdaDi } content={ ( + + )} leftContent={} leftLoader={} - leftError={ - - } rightContent={} rightLoader={} - rightError={ - - } + rightError={(err) => ( + + )} /> } footer={} onClose={onClose} />} diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx index f0b2659209a..f7a026ba35f 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx @@ -15,7 +15,18 @@ import { KdaReplaceConfirmationDialog } from "./KdaReplaceConfirmationDialog.js" const arbiter = KdaDialogArbiter.getInstance(); export interface IKdaDialogControllerProps extends IKdaDialogProps { + /** + * Number format separators + */ separators?: ISeparators; + /** + * Only objects with these tags will be included + */ + includeTags?: string[]; + /** + * Objects with these tags will be excluded + */ + excludeTags?: string[]; /** * Latest requested definition. When a dialog is already open and this differs from the active definition, * confirmation is shown before the active definition is replaced. @@ -31,6 +42,8 @@ export interface IKdaDialogControllerProps extends IKdaDialogProps { export function KdaDialogController({ requestedDefinition, separators, + excludeTags, + includeTags, onRequestedDefinitionChange, ...dialogProps }: IKdaDialogControllerProps) { @@ -111,7 +124,12 @@ export function KdaDialogController({ onCancel={onCancelReplace} onConfirm={onConfirmReplace} /> - + diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts index 1e679966b88..aca0b074058 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts @@ -19,6 +19,7 @@ import { import { useBackendStrict, useCancelablePromise, useWorkspaceStrict } from "@gooddata/sdk-ui"; import { type IUiListboxInteractiveItem } from "@gooddata/sdk-ui-kit"; +import { useTags } from "./useTags.js"; import { useAttribute } from "../../hooks/useAttribute.js"; import { useDateAttribute } from "../../hooks/useDateAttribute.js"; import { useRelevantFilters } from "../../hooks/useRelevantFilters.js"; @@ -71,6 +72,8 @@ function useChangeAnalysisResults( const dateAttribute = dateAttributeFinder(definition?.dateAttribute); const shouldComputeChangeAnalysis = !!definition && !!dateAttribute && !loading; + const { includeTags, excludeTags } = useTags(); + return useCancelablePromise( { promise: shouldComputeChangeAnalysis @@ -102,6 +105,10 @@ function useChangeAnalysisResults( to: to ?? "", granularity, }, + { + includeTags, + excludeTags, + }, ); } : undefined, @@ -116,12 +123,14 @@ function useChangeAnalysisResults( loading, dateAttribute, attributeFiltersFingerprint, + includeTags, + excludeTags, ], ); } function useKdaStateWithList( - { result, status }: ReturnType, + { result, status, error }: ReturnType, definition: DeepReadonly | null, ): Partial { const { state } = useKdaState(); @@ -199,7 +208,9 @@ function useKdaStateWithList( ...updatedState, selectedItem: "summary", itemsStatus: loadingStatus, + itemsError: error, selectedStatus: loadingStatus, + selectedError: error, selectedAttributes: attributes.map((a) => a.defaultDisplayForm.ref), }; }, [ @@ -211,6 +222,7 @@ function useKdaStateWithList( items, loadingStatus, attributes, + error, ]); } diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useTags.ts b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useTags.ts new file mode 100644 index 00000000000..b6a2faf369a --- /dev/null +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useTags.ts @@ -0,0 +1,12 @@ +// (C) 2026 GoodData Corporation +import { useKdaState } from "../../providers/KdaState.js"; + +export function useTags() { + const { state } = useKdaState(); + const { includeTags, excludeTags } = state; + + return { + includeTags, + excludeTags, + }; +} diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/internalTypes.ts b/libs/sdk-ui-dashboard/src/kdaDialog/internalTypes.ts index 2bc38111bb2..869f1bf86bc 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/internalTypes.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/internalTypes.ts @@ -62,13 +62,17 @@ export interface KdaState { selectedTrend: ("up" | "down")[]; selectedItem: IUiListboxInteractiveItem | "summary"; selectedStatus: KdaAsyncStatus; + selectedError: Error | undefined; attributeFilters: IDashboardAttributeFilter[]; items: IUiListboxInteractiveItem[]; itemsStatus: KdaAsyncStatus; + itemsError: Error | undefined; selectedAttributes: ObjRef[]; relevantStatus: KdaAsyncStatus; relevantAttributes: ObjRef[]; selectedUpdated: number; + includeTags: string[] | undefined; + excludeTags: string[] | undefined; } export type KdaAsyncStatus = "loading" | "success" | "error" | "pending"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx index 2aa901e25c2..571ca1587ac 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx @@ -12,13 +12,17 @@ export interface KdaProps { children: ReactNode; definition: IKdaDefinition; separators?: ISeparators; + includeTags?: string[]; + excludeTags?: string[]; } -export function KdaProvider({ children, definition, separators }: KdaProps) { +export function KdaProvider({ children, definition, separators, includeTags, excludeTags }: KdaProps) { const state = useMemo((): Partial => { return { separators, definition, + includeTags, + excludeTags, fromValue: { ...definition?.range[0] }, toValue: { ...definition?.range[1] }, definitionStatus: "success", @@ -27,7 +31,7 @@ export function KdaProvider({ children, definition, separators }: KdaProps) { (f) => !isAllValuesDashboardAttributeFilter(f), ), }; - }, [definition, separators]); + }, [definition, separators, includeTags, excludeTags]); return {children}; } diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/providers/KdaState.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/providers/KdaState.tsx index d5597c41785..2503da3e85b 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/providers/KdaState.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/providers/KdaState.tsx @@ -13,6 +13,7 @@ const defaultState: KdaState = { isMinimized: true, items: [], itemsStatus: "pending", + itemsError: undefined, //states attributesDropdownOpen: false, addFilterDropdownOpen: false, @@ -20,6 +21,7 @@ const defaultState: KdaState = { selectedTrend: ["up", "down"], selectedItem: "summary", selectedStatus: "pending", + selectedError: undefined, //root data attributeFilters: [], //attributes data @@ -27,6 +29,8 @@ const defaultState: KdaState = { selectedUpdated: 0, relevantAttributes: [], relevantStatus: "pending", + includeTags: undefined, + excludeTags: undefined, }; type KdaStateContextType = { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts index 1b94205cd0f..ec68313cd7c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts @@ -1,4 +1,4 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation import { type SagaIterator } from "redux-saga"; import { all, call, put } from "redux-saga/effects"; @@ -240,6 +240,7 @@ const CONFIG_DEFAULTS: Required< | "disableCrossFiltering" | "disableUserFilterReset" | "widgetsOverlay" + | "hideAddTabButton" > > & Pick = { @@ -260,6 +261,7 @@ const CONFIG_DEFAULTS: Required< disableUserFilterReset: false, widgetsOverlay: {}, externalRecipient: undefined, + hideAddTabButton: false, }; function applyConfigDefaults(config: T) { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/tests/__snapshots__/handler.test.ts.snap b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/tests/__snapshots__/handler.test.ts.snap index f44427627f5..aa1f81df811 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/tests/__snapshots__/handler.test.ts.snap +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/tests/__snapshots__/handler.test.ts.snap @@ -354,6 +354,7 @@ exports[`initialize dashboard handler > for any dashboard > should resolve confi "disableUserFilterReset": false, "enableFilterValuesResolutionInDrillEvents": false, "externalRecipient": undefined, + "hideAddTabButton": false, "hideSaveAsNewButton": false, "hideShareButton": false, "initialRenderMode": "view", diff --git a/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts index 9566eee9dce..4a1c339bc60 100644 --- a/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts @@ -394,6 +394,18 @@ export const selectIsShareButtonHidden: DashboardSelector = createSelec return state.hideShareButton ?? false; }); +/** + * Returns whether the add tab button should be hidden in edit mode. + * + * @alpha + */ +export const selectIsAddTabButtonHidden: DashboardSelector = createSelector( + selectConfig, + (state) => { + return state.hideAddTabButton ?? false; + }, +); + /** * Returns whether cross filtering is disabled by config * diff --git a/libs/sdk-ui-dashboard/src/model/store/index.ts b/libs/sdk-ui-dashboard/src/model/store/index.ts index 6187e09f7c8..07a7240e101 100644 --- a/libs/sdk-ui-dashboard/src/model/store/index.ts +++ b/libs/sdk-ui-dashboard/src/model/store/index.ts @@ -107,6 +107,7 @@ export { selectEnableSnapshotExport, selectEnableAccessibilityMode, selectEnableDashboardTabs, + selectIsAddTabButtonHidden, selectExportResultPollingTimeout, selectEnableAnomalyDetectionAlert, selectEnableImplicitDrillToUrl, diff --git a/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts b/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts index 486611f6d89..d362f9d4cd6 100644 --- a/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts +++ b/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts @@ -1,4 +1,4 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation import { type IAnalyticalBackend, type IDashboardReferences } from "@gooddata/sdk-backend-spi"; import { @@ -322,6 +322,17 @@ export interface DashboardConfig { */ disableUserFilterReset?: boolean; + /** + * Hide the add tab button in dashboard edit mode. + * + * @remarks + * If set to true, the add tab button will not be visible in edit mode, + * preventing users from adding new tabs to the dashboard. + * + * @alpha + */ + hideAddTabButton?: boolean; + /** * @alpha * @@ -482,6 +493,7 @@ export type ResolvedDashboardConfig = Omit< | "evaluationFrequency" | "externalRecipient" | "openAutomationOnLoad" + | "hideAddTabButton" > & DashboardConfig; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx index 1f8d55d8a5c..7947b51ebe5 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx @@ -230,7 +230,7 @@ export class DefaultLayoutCustomizer implements IDashboardLayoutCustomizer { * non-empty, non-corrupted dashboards */ - if (!layoutToTransform || layoutToTransform.type !== "IDashboardLayout") { + if (layoutToTransform?.type !== "IDashboardLayout") { return undefined; } @@ -288,7 +288,7 @@ export class DefaultLayoutCustomizer implements IDashboardLayoutCustomizer { * layout in a dashboard and is of expected type. This condition will be always true for * non-empty, non-corrupted dashboards */ - if (!layout || layout.type !== "IDashboardLayout") { + if (layout?.type !== "IDashboardLayout") { return undefined; } diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/components/AlertMeasureSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/components/AlertMeasureSelect.tsx index 454f0c1ad87..1d1d4806ba3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/components/AlertMeasureSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/components/AlertMeasureSelect.tsx @@ -77,9 +77,7 @@ export function AlertMeasureSelect({ data: measure, })); - const selectedIndex = measures.findIndex( - (m) => selectedMeasure && m.measure === selectedMeasure.measure, - ); + const selectedIndex = measures.findIndex((m) => m.measure === selectedMeasure?.measure); const selectedId = selectedIndex === -1 ? undefined : `measure-${selectedIndex}`; return ( diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/Alert.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/Alert.tsx index 979d74b39ec..61f88cb2d6f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/Alert.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/Alert.tsx @@ -98,8 +98,7 @@ export function Alert({ const currentUser = useDashboardSelector(selectCurrentUser); const canManageWorkspace = useDashboardSelector(selectCanManageWorkspace); - const canEdit = - canManageWorkspace || (currentUser && alert.createdBy && currentUser.login === alert.createdBy.login); + const canEdit = canManageWorkspace || (currentUser && currentUser.login === alert.createdBy?.login); const items = useMemo[]>(() => { const deleteItem = { diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx index bd9bf0e8966..11687bb39b3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx @@ -69,8 +69,7 @@ export function AlertOld({ alert, onDelete, onEdit, onPause }: IAlertProps) { const currentUser = useDashboardSelector(selectCurrentUser); const canManageWorkspace = useDashboardSelector(selectCanManageWorkspace); - const canEdit = - canManageWorkspace || (currentUser && alert.createdBy && currentUser.login === alert.createdBy.login); + const canEdit = canManageWorkspace || (currentUser && currentUser.login === alert.createdBy?.login); const openDropdown = () => { toggleDropdownOpened(true); diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts index 54003947cfb..28a989c694c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useMemo, useState } from "react"; @@ -207,7 +207,7 @@ export const useAutomationFiltersSelect = ({ const filtersByTabForNewAutomation = getDefaultSelectedFiltersFromFiltersByTab(filtersByTab); const filtersByTabForExistingAutomation = useMemo((): EditedFiltersByTab | undefined => { if (!filtersByTab || !automationToEdit || isDashboardAutomationWithoutStoredFilters) { - return {}; + return undefined; } const filtersByTabForExistingAutomation = getDefaultSelectedFiltersByTabForExistingAutomation( @@ -220,7 +220,7 @@ export const useAutomationFiltersSelect = ({ return filtersByTabForExistingAutomation; } - return {}; + return undefined; }, [ filtersByTab, automationToEdit, @@ -257,7 +257,7 @@ export const useAutomationFiltersSelect = ({ export function getDefaultSelectedFiltersFromFiltersByTab(filtersByTab: IAutomationFiltersTab[] | undefined) { if (!filtersByTab) { - return {}; + return undefined; } return filtersByTab.reduce((acc, tab) => { acc[tab.tabId] = tab.defaultSelectedFilters; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardTabs.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardTabs.tsx index 612c7910535..169cbeb55a5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardTabs.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardTabs.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type ChangeEventHandler, @@ -40,6 +40,7 @@ import { repositionDashboardTab, selectActiveTabLocalIdentifier, selectEnableDashboardTabs, + selectIsAddTabButtonHidden, selectIsInEditMode, selectTabs, startRenamingDashboardTab, @@ -219,6 +220,7 @@ export function DashboardTabs({ }: IDashboardTabsProps): ReactElement | null { const intl = useIntl(); const isEditMode = useDashboardSelector(selectIsInEditMode); + const hideAddTabButton = useDashboardSelector(selectIsAddTabButtonHidden); const dispatch = useDashboardDispatch(); const ACCESSIBILITY_CONFIG = useMemo( @@ -230,7 +232,7 @@ export function DashboardTabs({ [intl], ); - const isCreateEnabled = isEditMode; + const isCreateEnabled = isEditMode && !hideAddTabButton; const hasDefaultTab = uiTabs.some((tab) => tab.id === DEFAULT_TAB_ID); const handleCreateTab = useCallback(() => { diff --git a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-US.json b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-US.json index 508039dfc98..e29817ae754 100644 --- a/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-US.json +++ b/libs/sdk-ui-dashboard/src/presentation/localization/bundles/en-US.json @@ -3007,6 +3007,26 @@ "text": "Change Significance Threshold", "crowdinContext": "Key driver chart standard deviation title in key driver analysis chart" }, + "kdaDialog.dialog.keyDrives.error.general.title": { + "text": "Sorry, we can't display the key drivers", + "crowdinContext": "Key driver analysis error general title" + }, + "kdaDialog.dialog.keyDrives.error.general.description": { + "text": "We couldn’t compute the key drivers for this metric. If the issue continues, contact your administrator.", + "crowdinContext": "Key driver analysis error general description" + }, + "kdaDialog.dialog.keyDrives.error.traceId": { + "text": "Error trace ID", + "crowdinContext": "Key driver analysis error trace ID" + }, + "kdaDialog.dialog.keyDrives.error.details.title": { + "text": "Raw error response", + "crowdinContext": "Key driver analysis error details title for showing raw error response json" + }, + "kdaDialog.dialog.keyDrives.error.details.title.tooltip": { + "text": "The raw error response shows back-end information about the error that has occurred. It is visible only to the administrators.", + "crowdinContext": "Key driver analysis error details title tooltip for showing raw error response json" + }, "menu.back": { "text": "Back to the parent menu", "crowdinContext": "Button label for navigating back to the parent menu in a nested menu structure. Used in hierarchical navigation." diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.tsx index 945ca7a08f6..507a258f9d0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.tsx @@ -62,8 +62,7 @@ export function ScheduledEmail({ const currentUser = useDashboardSelector(selectCurrentUser); const canManageWorkspace = useDashboardSelector(selectCanManageWorkspace); const canEdit = - canManageWorkspace || - (currentUser && scheduledEmail.createdBy && currentUser.login === scheduledEmail.createdBy.login); + canManageWorkspace || (currentUser && currentUser.login === scheduledEmail.createdBy?.login); const { isValid } = useScheduleValidation(scheduledEmail); const intl = useIntl(); diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetDropdown.tsx index 536d18c1aca..c25c1ee2c7d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetDropdown.tsx @@ -244,10 +244,7 @@ export function DateDatasetDropdown(props: IDateDatasetDropdownProps) { renderButton={({ isOpen, toggleDropdown }) => { const buttonClassName = cx("s-date-dataset-button", isOpen ? "s-expanded" : "s-collapsed", { "is-loading": isLoading, - "is-unrelated": - !isLoading && - unrelatedDateDataset && - unrelatedDateDataset.dataSet.uri === activeDateDataSetUri, + "is-unrelated": !isLoading && unrelatedDateDataset?.dataSet.uri === activeDateDataSetUri, }); const buttonValue = isLoading diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx index cfe1c18d184..0fb7aeeeab8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx @@ -12,6 +12,7 @@ import { selectCatalogAttributeDisplayFormsById, selectEnableDrilledTooltip, selectLocale, + selectObjectAvailabilityConfig, selectSeparators, useDashboardSelector, } from "../../../../model/index.js"; @@ -64,6 +65,7 @@ export function DashboardInsightWithDrillDialog(props: IDashboardInsightProps): ); const locale = useDashboardSelector(selectLocale); + const objectAvailability = useDashboardSelector(selectObjectAvailabilityConfig); const setNextDrillStep = useCallback((drillStep: DrillStep) => { setDrillSteps((s) => [...s, drillStep]); @@ -179,6 +181,8 @@ export function DashboardInsightWithDrillDialog(props: IDashboardInsightProps): requestedDefinition={keyDriveInfo?.keyDriveDefinition} separators={separators} showCloseButton + includeTags={objectAvailability?.includeObjectsWithTags} + excludeTags={objectAvailability?.excludeObjectsWithTags} onRequestedDefinitionChange={onRequestedDefinitionChange} onClose={onCloseKeyDriverAnalysis} /> diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx index 0e4526c6a3f..bd5804d33d3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type ReactNode, useCallback, useState } from "react"; @@ -13,6 +13,7 @@ import { type IAlignPoint, type IDialogBaseProps, ShortenedText, + Typography, UiAutofocus, UiButton, useId, @@ -162,15 +163,14 @@ export function DrillDialog({ ) : null} -
+ {titleWithBreadcrumbs} -
+
- isWidgetAsTable - ? convertInsightToTableDefinition(insightWithAddedWidgetProperties) - : insightWithAddedWidgetProperties, - [isWidgetAsTable, insightWithAddedWidgetProperties], - ); - const { drillableItems, onDrill, onPushData } = useDrillDialogInsightDrills({ widget, insight: insightWithAddedFilters ?? insight, onDrill: onDrillFn, }); - const handlePushData = useCallback( - (data: IPushData) => { - onPushData(data); - pushData?.(data); - }, - [onPushData, pushData], + const { syncedInsight, handlePushData } = useDrillDialogSyncInsightProperties({ + insight: insightWithAddedWidgetProperties, + drillStepInsightId: drillStep?.insight.insight.identifier, + onPushData, + pushData, + isWidgetAsTable, + }); + + // Convert insight to table format if needed for drill dialog + const finalInsight = useMemo( + () => (isWidgetAsTable ? convertInsightToTableDefinition(syncedInsight) : syncedInsight), + [isWidgetAsTable, syncedInsight], ); // CSS diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.ts new file mode 100644 index 00000000000..46b7635511a --- /dev/null +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.ts @@ -0,0 +1,87 @@ +// (C) 2026 GoodData Corporation + +import { useCallback, useEffect, useMemo, useState } from "react"; + +import { mergeWith } from "lodash-es"; + +import { type IInsight, insightProperties, insightSetProperties } from "@gooddata/sdk-model"; +import { type IPushData, type PushDataCallback } from "@gooddata/sdk-ui"; + +function mergeVisualizationProperties( + current: NonNullable | undefined, + incoming: IPushData["properties"], +): NonNullable { + return mergeWith({}, current ?? {}, incoming, (currentValue, incomingValue) => { + /** + * Replace arrays instead of merging them. This is important for properties like column sizing, + * where callers may provide an empty array to fully override previously set values. + */ + if (Array.isArray(currentValue)) { + return incomingValue; + } + return undefined; + }); +} + +export interface IUseDrillDialogSyncInsightPropertiesParams { + insight: IInsight; + drillStepInsightId: string | undefined; + onPushData: PushDataCallback; + pushData: PushDataCallback | undefined; + isWidgetAsTable?: boolean; +} + +/** + * Keeps drill dialog visualization props in sync with interactive changes reported via `pushData.properties`. + * + * @remarks + * In drill dialog we do not persist `pushData.properties` anywhere (unlike in the normal widget rendering path), + * so we keep them locally and overlay them on top of the currently rendered insight properties. + * + * This is intentionally **generic**: it merges the entire `pushData.properties` object (not a whitelist). + * PivotTableNext text wrapping is just one example: it uses this to keep the header menu checked state consistent. + * + * @internal + */ +export function useDrillDialogSyncInsightProperties({ + insight, + drillStepInsightId, + onPushData, + pushData, + isWidgetAsTable, +}: IUseDrillDialogSyncInsightPropertiesParams) { + const [pushedProperties, setPushedProperties] = useState(undefined); + + // Reset pushed properties when drilled insight changes (and when switching as-table/original). + useEffect(() => { + setPushedProperties(undefined); + }, [drillStepInsightId, isWidgetAsTable]); + + const syncedInsight = useMemo(() => { + if (!pushedProperties) { + return insight; + } + + const baseProperties = insightProperties(insight); + const mergedProperties = mergeVisualizationProperties(baseProperties, pushedProperties); + return insightSetProperties(insight, mergedProperties); + }, [insight, pushedProperties]); + + const handlePushData = useCallback( + (data: IPushData) => { + onPushData(data); + + if (data.properties) { + setPushedProperties((current) => mergeVisualizationProperties(current, data.properties)); + } + + pushData?.(data); + }, + [onPushData, pushData], + ); + + return { + syncedInsight, + handlePushData, + }; +} diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx index 510a7c9978d..dc6852e920e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx @@ -79,7 +79,7 @@ export function DrillTargetType(props: IDrillTargetProps) { items={enabledDrillTargetTypeItems} className="gd-drill-config-panel-target s-drill-config-panel-target-type-open" renderItem={({ item }) => { - const isSelected = targetBySelection && targetBySelection.id === item.id; + const isSelected = targetBySelection?.id === item.id; const drillIconClassName = getIconClassNameBySelection(item.id); return ( diff --git a/libs/sdk-ui-dashboard/styles/scss/kdaDialog.scss b/libs/sdk-ui-dashboard/styles/scss/kdaDialog.scss index b4c315743c4..481c18a5eb7 100644 --- a/libs/sdk-ui-dashboard/styles/scss/kdaDialog.scss +++ b/libs/sdk-ui-dashboard/styles/scss/kdaDialog.scss @@ -297,6 +297,15 @@ flex-direction: row; gap: 20px; + &-full { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + &-left-panel { flex: 0 0 250px; max-width: 250px; @@ -714,6 +723,92 @@ .gd-kda-attributes-dropdown { display: inline-flex; } + + //error component + .gd-kda-dialog-error { + display: flex; + flex-direction: column; + max-width: 460px; + gap: 0; + + &-trace-id { + color: var(--gd-palette-complementary-6); + text-align: center; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 21px; + display: flex; + align-items: center; + justify-content: center; + + &-name { + text-decoration: underline; + text-decoration-style: dashed; + } + } + + &-details-show { + margin-top: 0; + display: flex; + flex-direction: column; + + &-content { + margin-top: 15px; + margin-bottom: 15px; + display: flex; + flex-direction: column; + height: 233px; + padding-top: 5px; + align-items: flex-start; + align-self: stretch; + border-radius: 3px; + border: 1px solid var(--gd-palette-complementary-3); + } + + &-content-title { + display: flex; + padding: 0 10px; + align-items: center; + gap: 5px; + align-self: stretch; + flex-grow: 0; + } + + &-content-title-text { + flex: 1 0 0; + color: var(--gd-palette-complementary-6); + font-feature-settings: + "liga" off, + "clig" off; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 23px; /* 164.286% */ + } + + &-content-description { + display: flex; + padding: 10px; + align-items: flex-start; + gap: 10px; + align-self: stretch; + border-radius: 0 0 3px 3px; + border-top: 1px solid var(--gd-palette-complementary-3); + background: var(--gray-100-fcfcfd-com-0, #fcfcfd); + margin: 0; + color: var(--gd-palette-complementary-7); + font-family: "Andale Mono", serif; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 18px; + overflow: auto; + white-space: normal; + word-break: break-word; + } + } + } } @media (prefers-reduced-motion: reduce) { diff --git a/libs/sdk-ui-ext/api/sdk-ui-ext.api.md b/libs/sdk-ui-ext/api/sdk-ui-ext.api.md index 42c4435388f..0c9905d5e40 100644 --- a/libs/sdk-ui-ext/api/sdk-ui-ext.api.md +++ b/libs/sdk-ui-ext/api/sdk-ui-ext.api.md @@ -54,28 +54,28 @@ import { UseCancelablePromiseStatus } from '@gooddata/sdk-ui'; // @internal (undocumented) export const AddDataSourceToSubjects: { (props: IAddDataSourceToSubjectsProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) -export function addIntersectionFiltersToInsight(source: IInsight, intersection: IDrillEventIntersectionElement[], backendSupportsElementUris: boolean): IInsight; +export function addIntersectionFiltersToInsight(source: IInsight, intersection: IDrillEventIntersectionElement[] | undefined | null, backendSupportsElementUris: boolean): IInsight; // @internal (undocumented) export const AddUserGroupsToUsersDialog: { (props: IAddUserGroupsToUsersDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) export const AddUsersToUserGroupsDialog: { (props: IAddUsersToUserGroupsDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) export const AddWorkspaceToSubjects: { (props: IAddWorkspaceToSubjectsProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) @@ -163,7 +163,7 @@ export const COMPARISON_OPERATORS: { // @internal (undocumented) export const CreateUserGroupDialog: { (props: ICreateUserGroupDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) @@ -205,25 +205,25 @@ export function DefaultNotificationsPanelHeader({ activeView, changeActiveView, // @internal (undocumented) export const DeleteUserDialog: { (props: IDeleteUserDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) export const DeleteUserGroupDialog: { (props: IDeleteUserGroupDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) export const DeleteUserGroupsDialog: { (props: IDeleteUserGroupsDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) export const DeleteUsersDialog: { (props: IDeleteUsersDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) @@ -381,7 +381,7 @@ export interface IAutomationsProps { // (undocumented) dashboardUrlBuilder?: IDashboardUrlBuilder; // (undocumented) - editAutomation?: (automation: IAutomationMetadataObject, workspaceId: string, dashboardId: string) => void; + editAutomation?: IEditAutomation; // (undocumented) enableBulkActions?: boolean; externalInvalidationId?: number; @@ -483,6 +483,12 @@ export interface IDrillDownDefinition { type: "drillDown"; } +// @internal (undocumented) +export interface IEditAutomation { + // (undocumented) + (automation: IAutomationMetadataObject, workspaceId: string | undefined, dashboardId: string | undefined): void; +} + // @internal (undocumented) export interface IEmbedInsightDialogProps { // (undocumented) @@ -646,7 +652,7 @@ export interface INotificationsListErrorStateComponentProps { // @public export interface INotificationsPanelButtonComponentProps { - buttonRef: RefObject; + buttonRef: RefObject; closeNotificationPanel: () => void; hasUnreadNotifications: boolean; isNotificationPanelOpen: boolean; @@ -736,7 +742,7 @@ export const INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT: IVisualizationDefaultSizeInfo export function InsightError({ error, ErrorComponent, height, clientHeight, }: IInsightErrorProps): JSX.Element; // @internal -export function InsightRenderer(props: IInsightRendererProps): JSX.Element; +export function InsightRenderer(props: IInsightRendererProps): JSX.Element | null; // @public export function InsightView(props: IInsightViewProps): JSX.Element; @@ -906,7 +912,7 @@ export type TrackEventCallback = (event: TelemetryEvent) => void; // @internal (undocumented) export const UserEditDialog: { (props: IUserEditDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) @@ -915,7 +921,7 @@ export type UserEditDialogMode = "VIEW" | "WORKSPACE" | "USER_GROUPS" | "DATA_SO // @internal (undocumented) export const UserGroupEditDialog: { (props: IUserGroupEditDialogProps): JSX.Element; - displayName: string; + displayName: string | undefined; }; // @internal (undocumented) diff --git a/libs/sdk-ui-ext/package.json b/libs/sdk-ui-ext/package.json index aea9452e408..7ebee3b16f0 100644 --- a/libs/sdk-ui-ext/package.json +++ b/libs/sdk-ui-ext/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-ext", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - Extensions", "repository": { "type": "git", @@ -42,7 +42,9 @@ "_phase:validate": "npm run build-dynamic-files && npm run validate", "api-extractor": "mkdir -p api && [ -z \"${CI}\" ] && (api-extractor run -l) || (api-extractor run)", "build": "bash scripts/build.sh", + "build-all-ts": "tsc", "build-dynamic-files": "bash scripts/build.sh --genFilesOnly", + "build-ts": "tsc -p tsconfig.build.json", "clean": "../../common/scripts/clean-command-state.sh && rm -rf ci dist esm coverage *.log styles/css tsconfig.tsbuildinfo", "dep-cruiser": "depcruise --validate .dependency-cruiser.cjs --output-type err-long src/", "dep-cruiser-ci": "depcruise --validate .dependency-cruiser.cjs --output-type err-long src/", @@ -59,7 +61,7 @@ "test": "vitest watch", "test-ci": "vitest run --reporter=junit --outputFile=./ci/results/test-results.xml", "test-once": "vitest run", - "validate": "tsc && export BROWSERSLIST_IGNORE_OLD_DATA=true && npm run dep-cruiser && npm run eslint && npm run stylelint && npm run validate-locales && npm run prettier-check && npm run validate-theming", + "validate": "npm run build-all-ts && export BROWSERSLIST_IGNORE_OLD_DATA=true && npm run dep-cruiser && npm run eslint && npm run stylelint && npm run validate-locales && npm run prettier-check && npm run validate-theming", "validate-esm": "node --input-type=module --eval 'import \"@gooddata/sdk-ui-ext\"'", "validate-locales": "i18n-toolkit", "validate-theming": "npm run scss && node scripts/validateCss.js" @@ -127,8 +129,8 @@ "@types/react-dom": "19.1.7", "@types/react-lines-ellipsis": "^0.15.6", "@types/react-measure": "^2.0.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-ext/src/automations/AutomationConfirmDialog.tsx b/libs/sdk-ui-ext/src/automations/AutomationConfirmDialog.tsx index 256e7757b97..e0473db990e 100644 --- a/libs/sdk-ui-ext/src/automations/AutomationConfirmDialog.tsx +++ b/libs/sdk-ui-ext/src/automations/AutomationConfirmDialog.tsx @@ -20,8 +20,8 @@ import { messages } from "./messages.js"; import { type IAutomationsPendingAction } from "./types.js"; interface IAutomationConfirmDialogProps { - pendingAction: IAutomationsPendingAction | null; - setPendingAction: (action: IAutomationsPendingAction | null) => void; + pendingAction: IAutomationsPendingAction | null | undefined; + setPendingAction: (action: IAutomationsPendingAction | null | undefined) => void; } export function AutomationConfirmDialog({ pendingAction, setPendingAction }: IAutomationConfirmDialogProps) { diff --git a/libs/sdk-ui-ext/src/automations/Automations.tsx b/libs/sdk-ui-ext/src/automations/Automations.tsx index 403ce85e9b8..6ffc58c5b5f 100644 --- a/libs/sdk-ui-ext/src/automations/Automations.tsx +++ b/libs/sdk-ui-ext/src/automations/Automations.tsx @@ -51,9 +51,9 @@ export function Automations({ onLoad, }: IAutomationsProps) { return ( - + - + diff --git a/libs/sdk-ui-ext/src/automations/UserContext.tsx b/libs/sdk-ui-ext/src/automations/UserContext.tsx index cc6dcb32a79..7d85b4e96f5 100644 --- a/libs/sdk-ui-ext/src/automations/UserContext.tsx +++ b/libs/sdk-ui-ext/src/automations/UserContext.tsx @@ -57,7 +57,7 @@ export function UserProvider({ children, scope }: UserProviderProps) { // Compare by login since current user doesn't have id property, // login is the only property that is guaranteed to be unique for current user const isCurrentUserByLogin = useCallback( - (userLogin: string): boolean => { + (userLogin?: string): boolean => { if (!currentUser?.login) { return false; } @@ -70,7 +70,7 @@ export function UserProvider({ children, scope }: UserProviderProps) { // some recipients are only identified by email, // so current user and recipients can only be matched by email const isCurrentUserByEmail = useCallback( - (userEmail?: string): boolean => { + (userEmail: string | null | undefined): boolean => { if (!currentUser?.email) { return false; } @@ -92,7 +92,7 @@ export function UserProvider({ children, scope }: UserProviderProps) { const isSubscribedToAutomation = useCallback( (automation: IAutomationMetadataObject): boolean => { - return automation.recipients.some((user) => { + return (automation.recipients ?? []).some((user) => { const email = isAutomationUserGroupRecipient(user) ? null : user.email; return isCurrentUserByEmail(email); }); diff --git a/libs/sdk-ui-ext/src/automations/actions/useAutomationActions.ts b/libs/sdk-ui-ext/src/automations/actions/useAutomationActions.ts index cc30a401f15..f0dc9462723 100644 --- a/libs/sdk-ui-ext/src/automations/actions/useAutomationActions.ts +++ b/libs/sdk-ui-ext/src/automations/actions/useAutomationActions.ts @@ -43,7 +43,7 @@ export const useAutomationActions = (type: AutomationsType, scope: AutomationsSc { promise: state.deletedAutomation ? async () => { - await promiseDeleteAutomation(state.deletedAutomation); + await promiseDeleteAutomation(state.deletedAutomation!); } : null, onSuccess: () => { @@ -84,7 +84,7 @@ export const useAutomationActions = (type: AutomationsType, scope: AutomationsSc { promise: state.unsubscribedAutomation ? async () => { - await promiseUnsubscribeAutomation(state.unsubscribedAutomation); + await promiseUnsubscribeAutomation(state.unsubscribedAutomation!); } : null, onSuccess: () => { @@ -125,7 +125,7 @@ export const useAutomationActions = (type: AutomationsType, scope: AutomationsSc { promise: state.pausedAutomation ? async () => { - await promisePauseAutomation(state.pausedAutomation); + await promisePauseAutomation(state.pausedAutomation!); } : null, onSuccess: () => { @@ -166,7 +166,7 @@ export const useAutomationActions = (type: AutomationsType, scope: AutomationsSc { promise: state.resumedAutomation ? async () => { - await promiseResumeAutomation(state.resumedAutomation); + await promiseResumeAutomation(state.resumedAutomation!); } : null, onSuccess: () => { diff --git a/libs/sdk-ui-ext/src/automations/actions/useAutomationBulkActions.ts b/libs/sdk-ui-ext/src/automations/actions/useAutomationBulkActions.ts index 8b27ba60888..97fd99e20ad 100644 --- a/libs/sdk-ui-ext/src/automations/actions/useAutomationBulkActions.ts +++ b/libs/sdk-ui-ext/src/automations/actions/useAutomationBulkActions.ts @@ -25,7 +25,7 @@ export const useAutomationBulkActions = ({ bulkPauseAutomations, bulkResumeAutomations, setPendingAction, -}: IUseAutomationBulkActionsProps): UiAsyncTableBulkAction[] => { +}: IUseAutomationBulkActionsProps): UiAsyncTableBulkAction[] | undefined => { const { canManageAutomation, isSubscribedToAutomation, canPauseAutomation, canResumeAutomation } = useUser(); const intl = useIntl(); diff --git a/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx b/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx index 57ebd7f0d0c..7252e2e6a25 100644 --- a/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx +++ b/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx @@ -42,7 +42,7 @@ export function AutomationIcon({ type, automation, state, timezone }: IAutomatio const status = automation?.lastRun?.errorMessage; const onCopyTraceId = () => { - navigator.clipboard.writeText(traceId); + navigator.clipboard.writeText(traceId!); addSuccess(messages.messageAutomationIconTooltipTraceIdCopied); }; @@ -68,7 +68,7 @@ export function AutomationIcon({ type, automation, state, timezone }: IAutomatio ); } - if (type === "automationDetails") { + if (type === "automationDetails" && automation) { const subtitle = formatCellValue(formatAutomationSubtitle(automation, intl)); return ( {children} - + diff --git a/libs/sdk-ui-ext/src/automations/columns/AutomationMenu.tsx b/libs/sdk-ui-ext/src/automations/columns/AutomationMenu.tsx index fc77db300c6..e398cfaea1a 100644 --- a/libs/sdk-ui-ext/src/automations/columns/AutomationMenu.tsx +++ b/libs/sdk-ui-ext/src/automations/columns/AutomationMenu.tsx @@ -296,7 +296,7 @@ function AutomationMenuItem({ menuItem, setMenuItemRef }: AutomationMenuItemProp []; includeAutomationResult: boolean; - containerRef: RefObject; + containerRef: RefObject; } => { const workspace = useWorkspace(); const intl = useIntl(); @@ -178,7 +178,7 @@ export const useAutomationColumns = ({ pauseAutomation={pauseAutomation} resumeAutomation={resumeAutomation} setPendingAction={setPendingAction} - workspace={workspace} + workspace={workspace!} canManage={canManage} isSubscribed={isSubscribed} canPause={canPause} @@ -220,7 +220,7 @@ export const useAutomationColumns = ({ const selectedColumn = allColumns[columnDef.name]; return { ...selectedColumn, - width: columnDef.width ?? selectedColumn.width, + width: columnDef.width ?? selectedColumn?.width, minWidth: columnDef.minWidth, }; }); diff --git a/libs/sdk-ui-ext/src/automations/format.ts b/libs/sdk-ui-ext/src/automations/format.ts index d0ebcc074b9..901713b103d 100644 --- a/libs/sdk-ui-ext/src/automations/format.ts +++ b/libs/sdk-ui-ext/src/automations/format.ts @@ -68,7 +68,7 @@ export const formatAlertSubtitle = (intl: IntlShape, alert?: IAutomationAlert) = } if (alert?.condition.type === "anomalyDetection") { return getAnomalyDetectionOperatorTitle( - alert.condition.measure.title, + alert.condition.measure.title!, alert.condition.sensitivity, alert.condition.granularity, intl, @@ -102,9 +102,13 @@ export const formatAutomationUser = (user?: IUser) => { return ""; }; -export const formatDate = (date: string, timeZone: string, format = DATE_FORMAT_HYPHEN) => { +export const formatDate = (date: string, timeZone: string | undefined, format = DATE_FORMAT_HYPHEN) => { if (!date) return ""; + if (!timeZone) { + return moment.utc(date).format(format); + } + //moment.utc respects explicit offsets but parses naive dates as UTC return moment.utc(date).tz(timeZone).format(format); }; diff --git a/libs/sdk-ui-ext/src/automations/index.ts b/libs/sdk-ui-ext/src/automations/index.ts index 4b47dcac375..02d579321c8 100644 --- a/libs/sdk-ui-ext/src/automations/index.ts +++ b/libs/sdk-ui-ext/src/automations/index.ts @@ -16,6 +16,7 @@ export type { AutomationsPreselectedFilters, AutomationsAvailableFilters, AutomationsOnLoad, + IEditAutomation, } from "./types.js"; export { getComparisonOperatorTitle, getRelativeOperatorTitle } from "./utils.js"; export { diff --git a/libs/sdk-ui-ext/src/automations/types.ts b/libs/sdk-ui-ext/src/automations/types.ts index 17e84fd8a37..74e0abf9001 100644 --- a/libs/sdk-ui-ext/src/automations/types.ts +++ b/libs/sdk-ui-ext/src/automations/types.ts @@ -58,15 +58,18 @@ export interface IAutomationsProps { onLoad?: AutomationsOnLoad; dashboardUrlBuilder?: IDashboardUrlBuilder; widgetUrlBuilder?: IWidgetUrlBuilder; - editAutomation?: ( - automation: IAutomationMetadataObject, - workspaceId: string, - dashboardId: string, - ) => void; + editAutomation?: IEditAutomation; } +/** + * @internal + */ export interface IEditAutomation { - (automation: IAutomationMetadataObject, workspaceId: string, dashboardId: string): void; + ( + automation: IAutomationMetadataObject, + workspaceId: string | undefined, + dashboardId: string | undefined, + ): void; } /** @@ -221,7 +224,7 @@ export interface IAutomationsState { scrollToIndex?: number; isChainedActionInProgress: boolean; isFiltersTooLarge: boolean; - pendingAction?: IAutomationsPendingAction; + pendingAction?: IAutomationsPendingAction | null; } export interface IAutomationActionsState { @@ -307,7 +310,7 @@ export type AutomationBulkActionPromise = (automations: Array Promise; promiseGetCurrentUser: () => Promise; - promiseCanManageWorkspace: () => Promise; + promiseCanManageWorkspace: () => Promise; promiseGetUsers: () => Promise; promiseGetDashboards: () => Promise; promiseGetWorkspaces: () => Promise; @@ -362,7 +365,7 @@ export type CellValueType = "text" | "date" | "slash-date" | "number"; export interface IUseAutomationsSmallLayoutProps { searchHandler: (search: string) => void; search?: string; - availableBulkActions: UiAsyncTableBulkAction[]; + availableBulkActions: UiAsyncTableBulkAction[] | undefined; columnDefinitions: UiAsyncTableColumn[]; tableVariant: UiAsyncTableVariant; automationsLength?: number; diff --git a/libs/sdk-ui-ext/src/automations/useAutomationService.ts b/libs/sdk-ui-ext/src/automations/useAutomationService.ts index 18abcba538e..985b8b8453d 100644 --- a/libs/sdk-ui-ext/src/automations/useAutomationService.ts +++ b/libs/sdk-ui-ext/src/automations/useAutomationService.ts @@ -6,12 +6,12 @@ import { invariant } from "ts-invariant"; import { type IAnalyticalWorkspace, type IOrganization } from "@gooddata/sdk-backend-spi"; import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; -import { useBackend, useOrganization, useWorkspace } from "@gooddata/sdk-ui"; +import { useBackendStrict, useOrganization, useWorkspace } from "@gooddata/sdk-ui"; import { type AutomationsScope, type IAutomationService, type IAutomationsQueryParams } from "./types.js"; export const useAutomationService = (scope: AutomationsScope): IAutomationService => { - const backend = useBackend(); + const backend = useBackendStrict(); const workspace = useWorkspace(); const organization = useOrganization(); @@ -51,7 +51,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic .withExternalRecipient(params?.externalRecipientsFilterQuery?.value) .withAuthor(params?.createdByFilterQuery?.value, params?.createdByFilterQuery?.type) .withStatus(params?.statusFilterQuery?.value, params?.statusFilterQuery?.type) - .withSorting([`${params.sortBy},${params.sortDirection}`]) + .withSorting([`${params?.sortBy},${params?.sortDirection}`]) .withType(params?.type) .query(); } else { @@ -76,7 +76,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic .withExternalRecipient(params?.externalRecipientsFilterQuery?.value) .withAuthor(params?.createdByFilterQuery?.value, params?.createdByFilterQuery?.type) .withStatus(params?.statusFilterQuery?.value, params?.statusFilterQuery?.type) - .withSorting([`${params.sortBy},${params.sortDirection}`]) + .withSorting([`${params?.sortBy},${params?.sortDirection}`]) .withType(params?.type) .query(); } @@ -119,7 +119,9 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic //actions promiseDeleteAutomation: (automation: IAutomationMetadataObject) => { if (scope === "organization") { - return service.automations().deleteAutomation(automation.id, automation.workspace?.id); + return service + .automations() + .deleteAutomation(automation.id, automation.workspace?.id as string); } return (service as IAnalyticalWorkspace).automations().deleteAutomation(automation.id); }, @@ -128,7 +130,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic return (service as IOrganization).automations().deleteAutomations( automations.map((automation) => ({ id: automation.id, - workspaceId: automation.workspace?.id, + workspaceId: automation.workspace?.id as string, })), ); } @@ -140,7 +142,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic if (scope === "organization") { return (service as IOrganization) .automations() - .unsubscribeAutomation(automation.id, automation.workspace?.id); + .unsubscribeAutomation(automation.id, automation.workspace?.id as string); } return (service as IAnalyticalWorkspace).automations().unsubscribeAutomation(automation.id); }, @@ -149,7 +151,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic return (service as IOrganization).automations().unsubscribeAutomations( automations.map((automation) => ({ id: automation.id, - workspaceId: automation.workspace?.id, + workspaceId: automation.workspace?.id as string, })), ); } @@ -161,7 +163,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic if (scope === "organization") { return (service as IOrganization) .automations() - .pauseAutomation(automation.id, automation.workspace?.id); + .pauseAutomation(automation.id, automation.workspace?.id as string); } return (service as IAnalyticalWorkspace).automations().pauseAutomation(automation.id); }, @@ -170,7 +172,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic return (service as IOrganization).automations().pauseAutomations( automations.map((automation) => ({ id: automation.id, - workspaceId: automation.workspace?.id, + workspaceId: automation.workspace?.id as string, })), ); } @@ -182,7 +184,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic if (scope === "organization") { return (service as IOrganization) .automations() - .resumeAutomation(automation.id, automation.workspace?.id); + .resumeAutomation(automation.id, automation.workspace?.id as string); } return (service as IAnalyticalWorkspace).automations().resumeAutomation(automation.id); }, @@ -191,7 +193,7 @@ export const useAutomationService = (scope: AutomationsScope): IAutomationServic return (service as IOrganization).automations().resumeAutomations( automations.map((automation) => ({ id: automation.id, - workspaceId: automation.workspace?.id, + workspaceId: automation.workspace?.id as string, })), ); } diff --git a/libs/sdk-ui-ext/src/automations/useAutomationsState.ts b/libs/sdk-ui-ext/src/automations/useAutomationsState.ts index 97f809297aa..b80f72f32d6 100644 --- a/libs/sdk-ui-ext/src/automations/useAutomationsState.ts +++ b/libs/sdk-ui-ext/src/automations/useAutomationsState.ts @@ -43,7 +43,7 @@ export const useAutomationsState = ({ const filtersRefFirstRun = useRef(true); const previousSkeletonItemsCountRef = useRef(0); - const setPendingAction = useCallback((pendingAction: IAutomationsPendingAction | undefined) => { + const setPendingAction = useCallback((pendingAction: IAutomationsPendingAction | undefined | null) => { setState((state) => ({ ...state, pendingAction, @@ -65,7 +65,7 @@ export const useAutomationsState = ({ bulkPauseAutomations, bulkResumeAutomations, } = useAutomationActions(type, scope); - const availableBulkActions: UiAsyncTableBulkAction[] = useAutomationBulkActions({ + const availableBulkActions: UiAsyncTableBulkAction[] | undefined = useAutomationBulkActions({ selected: selectedAutomations, automationsType: type, enabled: enableBulkActions, diff --git a/libs/sdk-ui-ext/src/automations/utils.ts b/libs/sdk-ui-ext/src/automations/utils.ts index f910948552d..62773a63c75 100644 --- a/libs/sdk-ui-ext/src/automations/utils.ts +++ b/libs/sdk-ui-ext/src/automations/utils.ts @@ -19,14 +19,17 @@ import { ARITHMETIC_OPERATORS, COMPARISON_OPERATORS, RELATIVE_OPERATORS } from " import { messages } from "./messages.js"; import { type AutomationsType } from "./types.js"; -export const getWorkspaceId = (automation: IAutomationMetadataObject, fallbackWorkspaceId: string) => { +export const getWorkspaceId = ( + automation: IAutomationMetadataObject, + fallbackWorkspaceId: string | undefined, +) => { return automation.workspace?.id ?? fallbackWorkspaceId; }; export const defaultEditAutomation = ( automation: IAutomationMetadataObject, - workspaceId: string, - dashboardId: string, + workspaceId: string | undefined, + dashboardId: string | undefined, ) => { const targetWorkspaceId = getWorkspaceId(automation, workspaceId); navigate(buildAutomationUrl(targetWorkspaceId, dashboardId, automation.id)); @@ -34,10 +37,10 @@ export const defaultEditAutomation = ( export const getRecipientName = (recipient: IAutomationRecipient): string => { if (recipient.name) { - return recipient.name; + return recipient.name ?? ""; } if ("email" in recipient) { - return recipient.email; + return recipient.email ?? ""; } return recipient.id ?? ""; }; diff --git a/libs/sdk-ui-ext/src/dataLoaders/DataLoaderAbstractFactory.ts b/libs/sdk-ui-ext/src/dataLoaders/DataLoaderAbstractFactory.ts index 2d03e05fc56..09cfd418f13 100644 --- a/libs/sdk-ui-ext/src/dataLoaders/DataLoaderAbstractFactory.ts +++ b/libs/sdk-ui-ext/src/dataLoaders/DataLoaderAbstractFactory.ts @@ -4,7 +4,7 @@ import { LRUCache } from "lru-cache"; import { LOADER_CACHE_SIZE } from "./constants.js"; import { type IDataLoaderFactory } from "./types.js"; -export const dataLoaderAbstractFactory = ( +export const dataLoaderAbstractFactory = ( createLoader: (workspace: string) => TLoader, ): IDataLoaderFactory => { const loaders = new LRUCache({ max: LOADER_CACHE_SIZE }); diff --git a/libs/sdk-ui-ext/src/insightView/InsightRenderer.tsx b/libs/sdk-ui-ext/src/insightView/InsightRenderer.tsx index 957d58288b4..20669fd8d26 100644 --- a/libs/sdk-ui-ext/src/insightView/InsightRenderer.tsx +++ b/libs/sdk-ui-ext/src/insightView/InsightRenderer.tsx @@ -204,14 +204,14 @@ class InsightRendererCore extends PureComponent< ).getFactory(); this.visualization = visualizationFactory({ - backend: this.props.backend, + backend: this.props.backend!, callbacks: { onError: (error) => { this.props.onError?.(error); this.props.onLoadingChanged?.({ isLoading: false }); }, onLoadingChanged: this.props.onLoadingChanged, - pushData: this.props.pushData, + pushData: this.props.pushData!, onDrill: this.props.onDrill, onDataView: this.props.onDataView, onExportReady: this.onExportReadyDecorator, @@ -233,7 +233,7 @@ class InsightRendererCore extends PureComponent< environment: "dashboards", // TODO get rid of this locale: this.props.locale, messages: this.props.messages, - projectId: this.props.workspace, + projectId: this.props.workspace!, visualizationProperties: insightProperties(this.props.insight), featureFlags: this.props.settings, renderFun: this.getReactRenderFunction(), @@ -242,12 +242,15 @@ class InsightRendererCore extends PureComponent< }; private getReactRenderFunction = () => { - return (children: any, element: Element) => { + return (children: any, element: Element | null) => { + if (!element) { + return; + } const htmlElement = element as HTMLElement; if (!this.reactRootsMap.get(htmlElement)) { this.reactRootsMap.set(htmlElement, createRoot(htmlElement)); } - this.reactRootsMap.get(htmlElement).render(children); + this.reactRootsMap.get(htmlElement)!.render(children); }; }; @@ -275,7 +278,7 @@ class InsightRendererCore extends PureComponent< }; private getExecutionFactory = (): IExecutionFactory => { - const factory = this.props.backend.workspace(this.props.workspace).execution(); + const factory = this.props.backend!.workspace(this.props.workspace!).execution(); if (this.props.executeByReference) { /* @@ -393,12 +396,12 @@ export function InsightRenderer(props: IInsightRendererProps) { ...resProps } = props; - const onPushData = useUpdatableCallback(pushData); - const onDrill = useUpdatableCallback(onDrillCallBack); - const onError = useUpdatableCallback(onErrorCallBack); - const onExportReady = useUpdatableCallback(onExportReadyCallback); - const onLoadingChanged = useUpdatableCallback(onLoadingChangedCallback); - const onDataView = useUpdatableCallback(onDataViewCallback); + const onPushData = useUpdatableCallback(pushData!); + const onDrill = useUpdatableCallback(onDrillCallBack!); + const onError = useUpdatableCallback(onErrorCallBack!); + const onExportReady = useUpdatableCallback(onExportReadyCallback!); + const onLoadingChanged = useUpdatableCallback(onLoadingChangedCallback!); + const onDataView = useUpdatableCallback(onDataViewCallback!); const messages = useResolveMessages(locale, resolveMessages, DEFAULT_MESSAGES); if (!messages[locale]) { diff --git a/libs/sdk-ui-ext/src/insightView/InsightView.tsx b/libs/sdk-ui-ext/src/insightView/InsightView.tsx index 5dfb919b34d..3e6dba9f50d 100644 --- a/libs/sdk-ui-ext/src/insightView/InsightView.tsx +++ b/libs/sdk-ui-ext/src/insightView/InsightView.tsx @@ -107,8 +107,8 @@ export const IntlInsightView = withAgGridToken( const ref = typeof insight === "string" ? idRef(insight, "insight") : insight; const insightData = await insightDataLoaderFactory - .forWorkspace(workspace) - .getInsight(backend, ref); + .forWorkspace(workspace!) + .getInsight(backend!, ref); if ( !lastReportedRef.current || @@ -150,7 +150,9 @@ export const IntlInsightView = withAgGridToken( } = useCancelablePromise( { promise: () => { - return colorPaletteDataLoaderFactory.forWorkspace(workspace).getColorPalette(backend); + return colorPaletteDataLoaderFactory + .forWorkspace(workspace!) + .getColorPalette(backend!); }, }, [backend, workspace], @@ -164,8 +166,8 @@ export const IntlInsightView = withAgGridToken( { promise: () => { return userWorkspaceSettingsDataLoaderFactory - .forWorkspace(workspace) - .getUserWorkspaceSettings(backend); + .forWorkspace(workspace!) + .getUserWorkspaceSettings(backend!); }, }, [backend, workspace], @@ -183,7 +185,7 @@ export const IntlInsightView = withAgGridToken( telemetryProps[key] = true; } - return backend.withTelemetry("InsightView", telemetryProps); + return backend!.withTelemetry("InsightView", telemetryProps); // eslint-disable-next-line react-hooks/exhaustive-deps }, [currentInsightVisualizationUrl, backend]); @@ -230,7 +232,7 @@ export const IntlInsightView = withAgGridToken( case "boolean": return !isDataLoading && showTitle && insight ? insightTitle(insight) : undefined; case "function": - return !isDataLoading && insight && showTitle(insight); + return !isDataLoading && insight ? showTitle(insight) : undefined; default: return undefined; } @@ -313,5 +315,5 @@ function useBackendWithVisualizationCorrelation({ backend, insight }: IInsightVi visualizationId = insight.uri; } - return useBackendWithCorrelation(backend, { visualizationId }); + return useBackendWithCorrelation(backend!, { visualizationId: visualizationId! }); } diff --git a/libs/sdk-ui-ext/src/internal/FluidLayoutDescriptor.ts b/libs/sdk-ui-ext/src/internal/FluidLayoutDescriptor.ts index 6abaf584656..e2843e2dfbc 100644 --- a/libs/sdk-ui-ext/src/internal/FluidLayoutDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/FluidLayoutDescriptor.ts @@ -9,7 +9,7 @@ const GRID_ROW_HEIGHT_IN_PX = 20; * @alpha */ export class FluidLayoutDescriptor implements IFluidLayoutDescriptor { - type: "fluid"; + type = "fluid" as const; gridColumnsCount = DASHBOARD_LAYOUT_GRID_COLUMNS_COUNT; gridRowHeight = GRID_ROW_HEIGHT_IN_PX; diff --git a/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx b/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx index 0bb83ed4be1..6b5ea8fb2d1 100644 --- a/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx +++ b/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx @@ -101,7 +101,7 @@ export class BaseVisualization extends PureComponent { > = { visualizationCatalog: FullVisualizationCatalog, newDerivedBucketItems: [], - referencePoint: null, + referencePoint: undefined, onExtendedReferencePointChanged: () => {}, onNewDerivedBucketItemsPlaced: () => {}, isMdObjectValid: true, @@ -110,9 +110,9 @@ export class BaseVisualization extends PureComponent { }; private visElementId: string; - private visualization: IVisualization; + private visualization: IVisualization | undefined; private executionFactory: IExecutionFactory; - private containerRef: RefObject; + private containerRef: RefObject; /** * The component may render both visualization and config panel. In React18 we therefore need two @@ -160,9 +160,9 @@ export class BaseVisualization extends PureComponent { } // buckets changed from within inner visualization logic - const bucketsToUpdate = this.visualization.getBucketsToUpdate( - this.props.referencePoint, - nextProps.referencePoint, + const bucketsToUpdate = this.visualization?.getBucketsToUpdate( + this.props.referencePoint!, + nextProps.referencePoint!, ); if (bucketsToUpdate) { @@ -176,13 +176,13 @@ export class BaseVisualization extends PureComponent { this.props.visualizationClass, ); const referencePointChanged = BaseVisualization.bucketReferencePointHasChanged( - this.props.referencePoint, - nextProps.referencePoint, + this.props.referencePoint!, + nextProps.referencePoint!, ); const relevantPropertiesChanged = this.somePropertiesRelevantForReferencePointChanged( - this.props.referencePoint, - nextProps.referencePoint, + this.props.referencePoint!, + nextProps.referencePoint!, ); const labelsChanged = !isEqual( @@ -191,8 +191,8 @@ export class BaseVisualization extends PureComponent { ); const propertiesControlsChanged = BaseVisualization.propertiesControlsHasChanged( - this.props.referencePoint, - nextProps.referencePoint, + this.props.referencePoint!, + nextProps.referencePoint!, ); if (visualizationClassChanged) { @@ -269,8 +269,8 @@ export class BaseVisualization extends PureComponent { let visFactory: PluggableVisualizationFactory | undefined; try { - visFactory = this.props.visualizationCatalog - .forUri( + visFactory = this.props + .visualizationCatalog!.forUri( visUri, featureFlags?.enableNewPivotTable ?? true, featureFlags?.enableNewGeoPushpin ?? false, @@ -317,7 +317,10 @@ export class BaseVisualization extends PureComponent { }, featureFlags, visualizationProperties: insightProperties(props.insight), - renderFun: renderer ?? this.getReactRenderFunction(), + renderFun: (renderer ?? this.getReactRenderFunction()) as ( + component: any, + target: Element | null, + ) => void, unmountFun: unmount ?? this.getReactUnmountFunction(), }; @@ -326,11 +329,14 @@ export class BaseVisualization extends PureComponent { } private getReactRenderFunction = () => { - return (children: any, element: HTMLElement) => { + return (children: any, element: HTMLElement | null) => { + if (!element) { + return; + } if (!this.reactRootsMap.get(element)) { this.reactRootsMap.set(element, createRoot(element)); } - this.reactRootsMap.get(element).render(children); + this.reactRootsMap.get(element)!.render(children); }; }; @@ -380,7 +386,7 @@ export class BaseVisualization extends PureComponent { this.visualization .getExtendedReferencePoint(newReferencePoint, currentProps?.referencePoint) .then(async (extendedReferencePoint) => { - const sortConfig = await this.visualization.getSortConfig(extendedReferencePoint); + const sortConfig = await this.visualization!.getSortConfig(extendedReferencePoint); // new sort config needs to be sent together with new reference point to avoid double executions with old invalid sort until new one arrives by its own handler onExtendedReferencePointChanged(extendedReferencePoint, sortConfig); }); @@ -397,7 +403,7 @@ export class BaseVisualization extends PureComponent { this.visualization .getExtendedReferencePoint(newReferencePoint, currentProps?.referencePoint) .then((extendedRefPoint) => { - this.visualization.getSortConfig(extendedRefPoint).then(onSortingChanged); + this.visualization!.getSortConfig(extendedRefPoint).then(onSortingChanged); }); } } @@ -462,7 +468,7 @@ export class BaseVisualization extends PureComponent { sourceVisualization: IInsight, drillDownContext: IDrillDownContext, ): IInsight { - return this.visualization.getInsightWithDrillDownApplied( + return this.visualization!.getInsightWithDrillDownApplied( sourceVisualization, drillDownContext, this.props.backend.capabilities.supportsElementUris ?? true, @@ -474,7 +480,7 @@ export class BaseVisualization extends PureComponent { this.setupVisualization(this.props); } - return this.visualization.getExecution( + return this.visualization!.getExecution( this.getVisualizationProps(), this.props.insight, this.executionFactory, @@ -486,7 +492,7 @@ export class BaseVisualization extends PureComponent { this.setupVisualization(this.props); } - return this.visualization.getExecutions?.( + return this.visualization?.getExecutions?.( this.getVisualizationProps(), this.props.insight, this.executionFactory, diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AddActionMenu.tsx b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AddActionMenu.tsx index 31ef9e30277..19b9eaeb476 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AddActionMenu.tsx +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AddActionMenu.tsx @@ -9,7 +9,7 @@ import { useAttributeHierarchyDialog } from "./AttributeHierarchyDialogProvider. interface IAddActionMenuProps { rowIndex: number; - alignTo: HTMLElement; + alignTo: HTMLElement | null; onClose: () => void; } diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeHierarchyDialogProvider.tsx b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeHierarchyDialogProvider.tsx index 7e41311f853..df0851537de 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeHierarchyDialogProvider.tsx +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeHierarchyDialogProvider.tsx @@ -39,9 +39,9 @@ export interface IAttributeHierarchyDialogProviderData { title: string; isLoading: boolean; setLoading: SetLoadingCallback; - shouldDisplayDeleteConfirmation: boolean; + shouldDisplayDeleteConfirmation?: boolean; setDisplayDeleteConfirmation: (isDisplay: boolean) => void; - onClose: EmptyParamCallback; + onClose?: EmptyParamCallback; onUpdateTitle: (title: string) => void; onAddEmptyAttribute: (baseRowIndex: number) => void; onCompleteAttribute: (selectedItem: ICatalogAttributeData, rowIndex: number) => void; diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeItemActions.tsx b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeItemActions.tsx index c3d9cd3b084..356fac004a5 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeItemActions.tsx +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/AttributeItemActions.tsx @@ -14,7 +14,7 @@ interface IAttributeItemCellProps { export function AttributeItemActions({ rowIndex }: IAttributeItemCellProps) { const [shouldDisplayAddActions, setDisplayAddActions] = useState(false); const { onDeleteAttribute } = useAttributeHierarchyDialog(); - const addAttributeRef = useRef(undefined); + const addAttributeRef = useRef(null); const handleAddAttribute = () => { setDisplayAddActions(true); diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts index f317f819372..2b259f552f1 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts @@ -13,7 +13,7 @@ import { describe("utils", () => { describe("convertToCatalogAttributeData", () => { it("should return empty map when catalog is empty", () => { - expect(convertToCatalogAttributeData(null, null)).toMatchSnapshot(); + expect(convertToCatalogAttributeData([], [])).toMatchSnapshot(); }); it("should return correct catalog attributes map", () => { diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/useBackendProvider.ts b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/useBackendProvider.ts index ea1d9a9f3c6..98820ea1f2a 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/useBackendProvider.ts +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/useBackendProvider.ts @@ -20,12 +20,12 @@ import { convertToCatalogAttributeData, convertToCatalogAttributeDataByRefs } fr interface IUseBackendProvideDataProps { title: string; attributes: IAttributeData[]; - editingAttributeHierarchy: ICatalogAttributeHierarchy; + editingAttributeHierarchy?: ICatalogAttributeHierarchy; setLoading: SetLoadingCallback; onSaveOrUpdateSuccess?: SaveOrUpdateCallback; onDeleteSuccess?: EmptyParamCallback; onCreateHierarchyClicked?: () => void; - onClose: EmptyParamCallback; + onClose?: EmptyParamCallback; } export const useBackendProvider = (params: IUseBackendProvideDataProps) => { @@ -55,7 +55,7 @@ export const useBackendProvider = (params: IUseBackendProvideDataProps) => { return backend .workspace(workspace) .attributeHierarchies() - .getValidDescendants([attribute.ref]) + .getValidDescendants([attribute.ref!]) .then((refs) => { const validAttributes = convertToCatalogAttributeDataByRefs( catalogAttributesMap, @@ -81,7 +81,7 @@ export const useBackendProvider = (params: IUseBackendProvideDataProps) => { } setLoading(false); addSuccess(messages["hierarchyCreateSuccessMessage"]); - onClose(); + onClose?.(); }) .catch(() => { addError(messages["hierarchyCreateFailedMessage"]); @@ -94,9 +94,9 @@ export const useBackendProvider = (params: IUseBackendProvideDataProps) => { .workspace(workspace) .attributeHierarchies() .updateAttributeHierarchy({ - ...editingAttributeHierarchy, + ...editingAttributeHierarchy!, attributeHierarchy: { - ...editingAttributeHierarchy.attributeHierarchy, + ...editingAttributeHierarchy!.attributeHierarchy, title: savingTitle, attributes: attributeRefs, }, @@ -107,7 +107,7 @@ export const useBackendProvider = (params: IUseBackendProvideDataProps) => { } setLoading(false); addSuccess(messages["hierarchyUpdateSuccessMessage"]); - onClose(); + onClose?.(); }) .catch(() => { addError(messages["hierarchyUpdateFailedMessage"]); @@ -121,7 +121,7 @@ export const useBackendProvider = (params: IUseBackendProvideDataProps) => { // There maybe some attributes that are not completed, so we need to filter them out const attributeRefs = attributes .filter((attribute) => attribute.completed) - .map((attribute) => attribute.ref); + .map((attribute) => attribute.ref!); if (editingAttributeHierarchy) { handleUpdateAttributeHierarchy(savingTitle, attributeRefs); @@ -138,13 +138,13 @@ export const useBackendProvider = (params: IUseBackendProvideDataProps) => { backend .workspace(workspace) .attributeHierarchies() - .deleteAttributeHierarchy(editingAttributeHierarchy.attributeHierarchy.id) + .deleteAttributeHierarchy(editingAttributeHierarchy!.attributeHierarchy.id) .then(() => { if (onDeleteSuccess) { onDeleteSuccess(); } addSuccess(messages["hierarchyDeleteSuccessMessage"]); - onClose(); + onClose?.(); }) .catch(() => { addError(messages["hierarchyDeleteFailedMessage"]); diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/utils.ts b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/utils.ts index 37c215501e6..a420b0851ae 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/utils.ts +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/utils.ts @@ -14,7 +14,7 @@ import { CatalogAttributeDataType, type IAttributeData, type ICatalogAttributeDa export const findCatalogAttributeByRef = ( catalogAttributesMap: Map, ref: ObjRef, -): ICatalogAttributeData => { +): ICatalogAttributeData | undefined => { return catalogAttributesMap.get(getCatalogKey(ref)); }; @@ -39,7 +39,7 @@ export const convertToCatalogAttributeData = ( })); return [...attrs, ...dateAttributes].reduce((map, attribute) => { - map.set(getCatalogKey(attribute.ref), attribute); + map.set(getCatalogKey(attribute.ref!), attribute); return map; }, new Map()); }; @@ -69,7 +69,7 @@ export const searchAttributes = ( ) => { return attributes .filter((item) => item.type === selectedTab) - .filter((item) => item.title.toLowerCase().includes(searchString.toLowerCase())); + .filter((item) => item.title?.toLowerCase().includes(searchString.toLowerCase())); }; const getCatalogKey = (ref: ObjRef) => { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx index dbcf092cf80..7e248f73dae 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx @@ -6,9 +6,9 @@ import { messages } from "../../../locales.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; export interface ICellsControlProps { - pushData: (data: any) => any; - properties: IVisualizationProperties; - isDisabled: boolean; + pushData?: (data: any) => any; + properties?: IVisualizationProperties; + isDisabled?: boolean; } /** @@ -20,7 +20,7 @@ export interface ICellsControlProps { export function CellsControl({ pushData, properties, isDisabled }: ICellsControlProps) { return ( - + ); } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/CheckboxControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/CheckboxControl.tsx index 333b2963a49..cf2c78eb667 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/CheckboxControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/CheckboxControl.tsx @@ -11,13 +11,13 @@ import { DisabledBubbleMessage } from "../DisabledBubbleMessage.js"; export interface ICheckboxControlProps { valuePath: string; - properties: IVisualizationProperties; + properties?: IVisualizationProperties; labelText?: string; checked?: boolean; disabled?: boolean; showDisabledMessage?: boolean; disabledMessageId?: string; - pushData(data: any): void; + pushData?(data: any): void; isValueInverted?: boolean; } @@ -37,12 +37,12 @@ export function CheckboxControl({ (event: ChangeEvent) => { const clonedProperties = cloneDeep(properties); set( - clonedProperties, + clonedProperties!, `controls.${valuePath}`, isValueInverted ? !event.target.checked : event.target.checked, ); - pushData({ properties: clonedProperties }); + pushData?.({ properties: clonedProperties }); }, [properties, valuePath, isValueInverted, pushData], ); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx index c7da2b193a1..70476adb78e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx @@ -14,10 +14,10 @@ import { isSetColumnHeadersPositionToLeftAllowed } from "../../utils/controlsHel import { getTranslatedDropdownItems } from "../../utils/translations.js"; export interface IColumnHeadersPositionControlProps { - pushData: (data: any) => any; - properties: IVisualizationProperties; - isDisabled: boolean; - insight: IInsightDefinition; + pushData?: (data: any) => any; + properties?: IVisualizationProperties; + isDisabled?: boolean; + insight?: IInsightDefinition; showDisabledMessage?: boolean; defaultValue?: string; isLoading?: boolean; @@ -52,8 +52,8 @@ export function ColumnHeadersPositionControl({ /> {enableNewPivotTable ? ( ) : null} diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSection.tsx index 8d2b9493f99..e294d3705d4 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSection.tsx @@ -15,9 +15,9 @@ export interface IConfigSectionProps { canBeToggled?: boolean; toggleDisabled?: boolean; toggledOn?: boolean; - propertiesMeta: any; + propertiesMeta?: any; properties?: any; - title: string; + title?: string; subtitle?: string; showDisabledMessage?: boolean; className?: string; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSubsection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSubsection.tsx index 9aaddbf8659..9eb475112dd 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSubsection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ConfigSubsection.tsx @@ -11,7 +11,7 @@ import { DisabledBubbleMessage } from "../DisabledBubbleMessage.js"; export interface IConfigSubsectionOwnProps { valuePath?: string; - title: string; + title?: string; canBeToggled?: boolean; toggleDisabled?: boolean; toggledOn?: boolean; @@ -76,7 +76,7 @@ export function ConfigSubsection({ }; const getTestClassName = (): string => { - return `s-configuration-subsection-${title.replace(/\./g, "-")}`; + return `s-configuration-subsection-${title === undefined ? "empty-title" : title.replace(/\./g, "-")}`; }; const className = `configuration-subsection ${getTestClassName()}`; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ContinuousLineControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ContinuousLineControl.tsx index c6a77185e30..1320f44c2f7 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ContinuousLineControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ContinuousLineControl.tsx @@ -12,11 +12,11 @@ import { type IVisualizationProperties } from "../../interfaces/Visualization.js import { getTranslation } from "../../utils/translations.js"; export interface IContinuousLineControlProps { - properties: IVisualizationProperties; + properties?: IVisualizationProperties; valuePath?: string; checked?: boolean; disabled?: boolean; - pushData(data: any): void; + pushData?(data: any): void; } export function ContinuousLineControl({ @@ -30,9 +30,9 @@ export function ContinuousLineControl({ const onValueChanged = (event: ChangeEvent) => { const clonedProperties = cloneDeep(properties); - set(clonedProperties, `controls.${valuePath}`, event.target.checked); + set(clonedProperties!, `controls.${valuePath}`, event.target.checked); - pushData({ properties: clonedProperties }); + pushData?.({ properties: clonedProperties }); }; return ( diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx index b292386767a..2dc42a4a3ca 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx @@ -10,8 +10,8 @@ import { getTranslatedDropdownItems } from "../../utils/translations.js"; import { CheckboxControl } from "../configurationControls/CheckboxControl.js"; export interface IDataLabelsControlProps { - pushData: (data: any) => any; - properties: IVisualizationProperties; + pushData?: (data: any) => any; + properties?: IVisualizationProperties; isDisabled: boolean; isTotalsDisabled?: boolean; showDisabledMessage?: boolean; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx index 44c58b0ae51..40478d4d498 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx @@ -9,8 +9,8 @@ import { type IVisualizationProperties } from "../../interfaces/Visualization.js import { getTranslatedDropdownItems } from "../../utils/translations.js"; export interface IDataPointsControlProps { - pushData: (data: any) => any; - properties: IVisualizationProperties; + pushData?: (data: any) => any; + properties?: IVisualizationProperties; isDisabled: boolean; showDisabledMessage?: boolean; defaultValue?: string | boolean; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DistintcPointShapesControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DistintcPointShapesControl.tsx index db3cc6d4081..09bb6922de7 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DistintcPointShapesControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DistintcPointShapesControl.tsx @@ -12,11 +12,11 @@ import { type IVisualizationProperties } from "../../interfaces/Visualization.js import { getTranslation } from "../../utils/translations.js"; export interface IDistinctPointShapesControlProps { - properties: IVisualizationProperties; + properties?: IVisualizationProperties; valuePath?: string; checked?: boolean; disabled?: boolean; - pushData(data: any): void; + pushData?(data: any): void; } export function DistinctPointShapesControl({ @@ -30,9 +30,9 @@ export function DistinctPointShapesControl({ const onValueChanged = (event: ChangeEvent) => { const clonedProperties = cloneDeep(properties); - set(clonedProperties, `controls.${valuePath}`, event.target.checked); + set(clonedProperties!, `controls.${valuePath}`, event.target.checked); - pushData({ properties: clonedProperties }); + pushData?.({ properties: clonedProperties }); }; return ( diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DropdownControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DropdownControl.tsx index d854ef94aee..90531cfab87 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DropdownControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DropdownControl.tsx @@ -21,7 +21,7 @@ import { DisabledBubbleMessage } from "../DisabledBubbleMessage.js"; export interface IDropdownControlProps { valuePath: string; - properties: IVisualizationProperties; + properties?: IVisualizationProperties; labelText?: string; value?: string | number; items?: IDropdownItem[]; @@ -31,7 +31,7 @@ export interface IDropdownControlProps { disabledMessageAlignPoints?: IAlignPoint[]; customListItem?: ComponentType; - pushData(data: any): void; + pushData?(data: any): void; } const alignPoints = ["bl tl", "tl bl", "br tr", "tr br"]; @@ -53,7 +53,7 @@ export const DropdownControl = injectIntl( pushData, intl, }: IDropdownControlProps & WrappedComponentProps) { - const getSelectedItem = (value: string | number): IDropdownItem => { + const getSelectedItem = (value: string | number): IDropdownItem | undefined => { if (items) { return items.find((item) => item.value === value); } @@ -65,9 +65,9 @@ export const DropdownControl = injectIntl( // we must not change the properties at any cost, so deep clone for now. // ideally we should use st. like immer with copy on write to not clone everything all the time const clonedProperties = cloneDeep(properties); - set(clonedProperties, `controls.${valuePath}`, selectedItem.value); + set(clonedProperties!, `controls.${valuePath}`, selectedItem.value); - pushData({ properties: clonedProperties }); + pushData?.({ properties: clonedProperties }); }; const getDropdownButton = ( diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx index 1d83316fc4c..5c70d9c6b7f 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx @@ -14,8 +14,8 @@ import { getTranslatedDropdownItems } from "../../utils/translations.js"; export interface IGeoViewportControl { disabled: boolean; - properties: IVisualizationProperties; - pushData: (data: any) => any; + properties?: IVisualizationProperties; + pushData?: (data: any) => any; className?: string; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx index ce25b36f466..e027e132511 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx @@ -10,9 +10,9 @@ import { type IVisualizationProperties } from "../../interfaces/Visualization.js import { getTranslatedDropdownItems } from "../../utils/translations.js"; export interface IGrandTotalsControlProps { - pushData: (data: any) => any; - properties: IVisualizationProperties; - isDisabled: boolean; + pushData?: (data: any) => any; + properties?: IVisualizationProperties; + isDisabled?: boolean; showDisabledMessage?: boolean; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/InputControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/InputControl.tsx index 68ef07c22d8..a6d25f8f4fa 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/InputControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/InputControl.tsx @@ -21,7 +21,7 @@ import { DisabledBubbleMessage } from "../DisabledBubbleMessage.js"; export interface IInputControlProps { valuePath: string; - properties: IVisualizationProperties; + properties?: IVisualizationProperties; labelText?: string; value?: string; placeholder?: string; @@ -146,11 +146,11 @@ export function InputControl({ const modifiedData = modifyDataForSending(value); const clonedProperties = cloneDeep(properties); - set(clonedProperties, `controls.${valuePath}`, modifiedData); + set(clonedProperties!, `controls.${valuePath}`, modifiedData); setValue(modifiedData); - pushData({ properties: clonedProperties }); + pushData?.({ properties: clonedProperties }); justEmittedRef.current = true; return modifiedData; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx index c744fee8476..93cd50add1b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx @@ -10,9 +10,9 @@ import { type IVisualizationProperties } from "../../interfaces/Visualization.js import { getTranslatedDropdownItems } from "../../utils/translations.js"; export interface IMetricsPositionControlProps { - pushData: (data: any) => any; - properties: IVisualizationProperties; - isDisabled: boolean; + pushData?: (data: any) => any; + properties?: IVisualizationProperties; + isDisabled?: boolean; showDisabledMessage?: boolean; defaultValue?: string; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx index adc1db88b52..b27deb8e2ea 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx @@ -38,7 +38,7 @@ export function convertXYNamePosition(namePosition: { position: string }) { return { position: xAxisPosition[currentPosition] }; } -export function getAxesByChartOrientation(properties: IVisualizationProperties) { +export function getAxesByChartOrientation(properties: IVisualizationProperties | undefined) { const { xaxis, yaxis } = properties?.controls || {}; if (!xaxis && !yaxis) { @@ -81,7 +81,7 @@ export const OrientationDropdownControl = memo(function OrientationDropdownContr const cloneProperties = { ...dataProperties, controls: { - ...dataProperties.controls, + ...dataProperties?.controls, ...(xaxis ? { xaxis } : {}), ...(yaxis ? { yaxis } : {}), }, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx index 8151a2ea660..8eab0999a77 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx @@ -13,9 +13,9 @@ import { messages } from "../../../locales.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; export interface IPagingSectionProps { - properties: IVisualizationProperties; - propertiesMeta: any; - pushData: (data: any) => void; + properties?: IVisualizationProperties; + propertiesMeta?: any; + pushData?: (data: any) => void; isDisabled?: boolean; } @@ -50,20 +50,20 @@ export function PagingSection({ // When enabling pagination, ensure pageSize is set const clonedProperties = cloneDeep(data.properties); - if (!clonedProperties.controls?.["pageSize"]) { - set(clonedProperties, "controls.pageSize", DEFAULT_PAGE_SIZE); + if (!clonedProperties?.controls?.["pageSize"]) { + set(clonedProperties!, "controls.pageSize", DEFAULT_PAGE_SIZE); } - pushData({ ...data, properties: clonedProperties }); + pushData?.({ ...data, properties: clonedProperties }); } else if (newPaginationEnabled === false) { // When disabling pagination, also reset pageSize const clonedProperties = cloneDeep(data.properties); - set(clonedProperties, "controls.pageSize", undefined); + set(clonedProperties!, "controls.pageSize", undefined); - pushData({ ...data, properties: clonedProperties }); + pushData?.({ ...data, properties: clonedProperties }); } else { // For other cases (e.g., pageSize dropdown changes), just pass through - pushData(data); + pushData?.(data); } }, [pushData], diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx index 500570ee768..f2ce695c2b5 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx @@ -17,9 +17,9 @@ import { ConfigSection } from "../ConfigSection.js"; export interface IAdvancedSectionProps { controlsDisabled: boolean; - properties: IVisualizationProperties; - propertiesMeta: any; - pushData: (data: IPushData) => any; + properties?: IVisualizationProperties; + propertiesMeta?: any; + pushData?: (data: IPushData) => any; } export const AdvancedSection = memo(function AdvancedSection({ @@ -30,18 +30,18 @@ export const AdvancedSection = memo(function AdvancedSection({ }: IAdvancedSectionProps) { const intl = useIntl(); const [showDialog, setShowDialog] = useState(false); - const containerRef = useRef(null); - const contentRef = useRef(null); + const containerRef = useRef(null); + const contentRef = useRef(null); const isOverflowing = useOverflow(containerRef.current, contentRef.current); const valuePath = "chartConfigOverride"; const configurationValue = properties?.controls?.["chartConfigOverride"]; - const onChange = (value: string) => { + const onChange = (value: string | undefined) => { const clonedProperties = cloneDeep(properties); - set(clonedProperties, `controls.${valuePath}`, value); + set(clonedProperties!, `controls.${valuePath}`, value); - pushData({ properties: clonedProperties }); + pushData?.({ properties: clonedProperties }); setShowDialog(false); }; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx index 8640193bd3e..4b962376814 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx @@ -22,7 +22,7 @@ const EDITOR_ALIGN_POINTS: IAlignPoint[] = [ export interface IConfigEditorProps { value?: string; - onSubmit: (value: string) => void; + onSubmit: (value: string | undefined) => void; onCancel: () => void; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/useOverflow.ts b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/useOverflow.ts index d04e81facec..cca054b6a4a 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/useOverflow.ts +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/useOverflow.ts @@ -2,7 +2,7 @@ import { useEffect, useState } from "react"; -export const useOverflow = (container: HTMLDivElement, content: HTMLPreElement) => { +export const useOverflow = (container: HTMLDivElement | null, content: HTMLPreElement | null) => { const [isOverflowing, setIsOverflowing] = useState(true); useEffect(() => { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelFormatControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelFormatControl.tsx index 4c125545c48..2bbb23df093 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelFormatControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelFormatControl.tsx @@ -13,12 +13,12 @@ export interface ILabelFormatControl { disabled: boolean; configPanelDisabled: boolean; axis: AxisType; - properties: IVisualizationProperties; - pushData: (data: any) => any; + properties?: IVisualizationProperties; + pushData?: (data: any) => any; } const getControlProperties = ( - properties: IVisualizationProperties, + properties: IVisualizationProperties | undefined, axis: AxisType, ): IVisualizationProperties => { const axisProperties = properties?.controls?.[axis]; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelRotationControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelRotationControl.tsx index bb5f1e76a6f..0b0e6ccd0ec 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelRotationControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelRotationControl.tsx @@ -15,8 +15,8 @@ export interface ILabelRotationControl { disabled: boolean; configPanelDisabled: boolean; axis: AxisType; - properties: IVisualizationProperties; - pushData: (data: any) => any; + properties?: IVisualizationProperties; + pushData?: (data: any) => any; } export const LabelRotationControl = memo(function LabelRotationControl(props: ILabelRotationControl) { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx index 50c082bdbc3..a03355c8088 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx @@ -13,8 +13,8 @@ export interface ILabelSubsection { disabled: boolean; configPanelDisabled: boolean; axis: AxisType; - properties: IVisualizationProperties; - pushData: (data: any) => any; + properties?: IVisualizationProperties; + pushData?: (data: any) => any; showFormat?: boolean; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/ClusteringThresholdControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/ClusteringThresholdControl.tsx index 018b641b18a..31a3ed5b676 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/ClusteringThresholdControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/ClusteringThresholdControl.tsx @@ -8,8 +8,8 @@ import { InputControl } from "../InputControl.js"; export interface IClusteringThresholdControlProps { valuePath: string; disabled: boolean; - properties: IVisualizationProperties; - pushData: (data: any) => any; + properties?: IVisualizationProperties; + pushData?: (data: any) => any; } export function ClusteringThresholdControl({ diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/NumberOfClustersControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/NumberOfClustersControl.tsx index a9b8cfc945c..21e402223fc 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/NumberOfClustersControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/clustering/NumberOfClustersControl.tsx @@ -8,8 +8,8 @@ import { InputControl } from "../InputControl.js"; export interface INumberOfClustersControlProps { valuePath: string; disabled: boolean; - properties: IVisualizationProperties; - pushData: (data: any) => any; + properties?: IVisualizationProperties; + pushData?: (data: any) => any; } const validPositiveNumberHigherThanZero = /^[1-9][0-9]*$/; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx index 97483e75e56..9acb7b6b4f6 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx @@ -20,14 +20,14 @@ import { DropdownControl } from "../DropdownControl.js"; export interface IColorsSectionProps { controlsDisabled: boolean; - properties: IVisualizationProperties; - propertiesMeta: any; - references: IReferences; - pushData: (data: any) => void; + properties?: IVisualizationProperties; + propertiesMeta?: any; + references?: IReferences; + pushData?: (data: any) => void; hasMeasures: boolean; - colors: IColorConfiguration; - isLoading: boolean; - supportsChartFill: boolean; + colors?: IColorConfiguration; + isLoading?: boolean; + supportsChartFill?: boolean; chartFillIgnoredMeasures?: string[]; isChartFillDisabled?: boolean; } @@ -49,14 +49,14 @@ export function ColorsSection({ const intl = useIntl(); const onSelect = (selectedColorItem: IColoredItem, color: IColor) => { const { mappingHeader } = selectedColorItem; - const result = getProperties(properties, mappingHeader, color); + const result = getProperties(properties!, mappingHeader!, color); const message = { messageId: COLOR_MAPPING_CHANGED, properties: result, }; - pushData(message); + pushData?.(message); }; const isColoredListVisible = () => { @@ -72,13 +72,13 @@ export function ColorsSection({ if (isDefaultColorMapping()) { return; } - const propertiesWithoutColorMapping = set(cloneDeep(properties), "controls.colorMapping", undefined); + const propertiesWithoutColorMapping = set(cloneDeep(properties!), "controls.colorMapping", undefined); const message: any = { messageId: COLOR_MAPPING_CHANGED, properties: propertiesWithoutColorMapping, references: {}, }; - pushData(message); + pushData?.(message); }; const renderResetButton = () => { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorDropdown.tsx index 80f603f897f..2441306a840 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorDropdown.tsx @@ -81,7 +81,7 @@ export const ColorDropdown = memo(function ColorDropdown({ return dropdownVersion === DropdownVersionType.ColorPalette; }, [dropdownVersion]); - const getSelectedGuidFromColorItem = useCallback((): string => { + const getSelectedGuidFromColorItem = useCallback((): string | null => { if (isColorFromPalette(selectedColorItem)) { return selectedColorItem.value; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPalette.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPalette.tsx index 00f6a23669d..739ba28a407 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPalette.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPalette.tsx @@ -12,7 +12,7 @@ import { ColorPaletteItem } from "./ColorPaletteItem.js"; const MAX_SMALL_PALETTE_SIZE = 20; export interface IColorPaletteProps { - selectedColorGuid?: string; + selectedColorGuid?: string | null; colorPalette: IColorPalette; onColorSelected: (color: IColor) => void; chartFill?: ChartFillConfig; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPaletteItem.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPaletteItem.tsx index c88c8bbd88d..d71d3bbd0be 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPaletteItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/ColorPaletteItem.tsx @@ -18,7 +18,7 @@ import { OptionalPatternFill } from "./OptionalPatternFill.js"; const ITEM_MARGIN = 5; -export const getIconStyle = (chartFill: ChartFillType, baseColor: string, theme: ITheme): CSSProperties => { +export const getIconStyle = (chartFill: ChartFillType, baseColor: string, theme?: ITheme): CSSProperties => { if (chartFill === "outline") { return { backgroundColor: getLighterColor(baseColor, 0.9), diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/tests/ColorDropdown.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/tests/ColorDropdown.test.tsx index de251670ba2..6a2b4bbe42d 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/tests/ColorDropdown.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/colorDropdown/tests/ColorDropdown.test.tsx @@ -141,7 +141,7 @@ describe("ColorDropdown", () => { createComponent({ onColorSelected }); await userEvent.click(screen.getByText("test")); - await userEvent.click(screen.queryByLabelText(`rgb(${fill.r},${fill.g},${fill.b})`)); + await userEvent.click(screen.queryByLabelText(`rgb(${fill.r},${fill.g},${fill.b})`)!); await waitFor(() => { expect(onColorSelected).toBeCalledWith(expect.objectContaining({ type: "guid", value: guid })); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx index 4b468c99636..3944f55859f 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx @@ -35,11 +35,11 @@ export const ColoredItem = memo(function ColoredItem(props: IColoredItemProps) { const onColorSelected = (color: IColor) => { if (onSelect) { - onSelect(item, color); + onSelect(item!, color); } }; - const getText = (mappingHeader: IMappingHeader) => { + const getText = (mappingHeader: IMappingHeader | undefined) => { const headerText = getMappingHeaderFormattedName(mappingHeader) || ""; if (headerText === null || headerText === "") { @@ -48,13 +48,13 @@ export const ColoredItem = memo(function ColoredItem(props: IColoredItemProps) { return isWaterfallColorHeaderItemKey(headerText) ? getTranslation(headerText, intl) : headerText; }; - const coloredItem: IColoredItem = item || null; + const coloredItem: IColoredItem | null = item || null; if (!coloredItem) { return renderLoadingItem(); } - const headerItem: IMappingHeader = coloredItem.mappingHeader; + const headerItem = coloredItem.mappingHeader; const headerText = getText(headerItem); return ( diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/tests/ColorsSection.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/tests/ColorsSection.test.tsx index a97f91ca629..bea72583ae9 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/tests/ColorsSection.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/tests/ColorsSection.test.tsx @@ -40,7 +40,7 @@ const defaultProps: IColorsSectionProps = { collapsed: false, }, }, - references: null, + references: undefined, pushData: () => {}, hasMeasures: true, colors, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfo.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfo.tsx index 61c9b4c5c95..521429f01ab 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfo.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfo.tsx @@ -5,7 +5,7 @@ import { CalculateAs, type CalculationType } from "@gooddata/sdk-ui-charts"; import { CalculationListItemInfoSection } from "./CalculationListItemInfoSection.js"; interface ICalculationItemInfoProps { - title: string; + title: string | undefined; calculationType: CalculationType; } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfoSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfoSection.tsx index 553917b323b..e8f6688048d 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfoSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItemInfoSection.tsx @@ -18,24 +18,24 @@ interface ICalculationItemInfoSectionProps { } const SECTION_TITLE_KEYS: Record = { - example: comparisonMessages["calculationTooltipExampleSection"].id, - formula: comparisonMessages["calculationTooltipFormulaSection"].id, - formulaChange: comparisonMessages["calculationTooltipFormulaChangeSection"].id, - formulaDifference: comparisonMessages["calculationTooltipFormulaDifferenceSection"].id, + example: comparisonMessages["calculationTooltipExampleSection"].id!, + formula: comparisonMessages["calculationTooltipFormulaSection"].id!, + formulaChange: comparisonMessages["calculationTooltipFormulaChangeSection"].id!, + formulaDifference: comparisonMessages["calculationTooltipFormulaDifferenceSection"].id!, }; const SECTION_CONTENT_KEYS: Record = { - exampleChange: comparisonMessages["calculatedAsChangeTooltipExample"].id, - useInChange: comparisonMessages["calculatedAsChangeTooltipUseIn"].id, - formulaChange: comparisonMessages["calculatedAsChangeTooltipFormula"].id, - exampleRatio: comparisonMessages["calculatedAsRatioTooltipExample"].id, - useInRatio: comparisonMessages["calculatedAsRatioTooltipUseIn"].id, - formulaRatio: comparisonMessages["calculatedAsRatioTooltipFormula"].id, - exampleDifference: comparisonMessages["calculatedAsDifferenceTooltipExample"].id, - useInDifference: comparisonMessages["calculatedAsDifferenceTooltipUseIn"].id, - formulaDifference: comparisonMessages["calculatedAsDifferenceTooltipFormula"].id, - exampleChangeDifference: comparisonMessages["calculatedAsChangeDifferenceTooltipExample"].id, - useInChangeDifference: comparisonMessages["calculatedAsChangeDifferenceTooltipUseIn"].id, + exampleChange: comparisonMessages["calculatedAsChangeTooltipExample"].id!, + useInChange: comparisonMessages["calculatedAsChangeTooltipUseIn"].id!, + formulaChange: comparisonMessages["calculatedAsChangeTooltipFormula"].id!, + exampleRatio: comparisonMessages["calculatedAsRatioTooltipExample"].id!, + useInRatio: comparisonMessages["calculatedAsRatioTooltipUseIn"].id!, + formulaRatio: comparisonMessages["calculatedAsRatioTooltipFormula"].id!, + exampleDifference: comparisonMessages["calculatedAsDifferenceTooltipExample"].id!, + useInDifference: comparisonMessages["calculatedAsDifferenceTooltipUseIn"].id!, + formulaDifference: comparisonMessages["calculatedAsDifferenceTooltipFormula"].id!, + exampleChangeDifference: comparisonMessages["calculatedAsChangeDifferenceTooltipExample"].id!, + useInChangeDifference: comparisonMessages["calculatedAsChangeDifferenceTooltipUseIn"].id!, }; const toPascalCase = (value: string): string => { @@ -64,7 +64,7 @@ export function CalculationListItemInfoSection({ shouldHideTitle, isSectionCombineCalculationType, }: ICalculationItemInfoSectionProps) { - const titleKey = getSectionTitleKey(section, calculationType, isSectionCombineCalculationType); + const titleKey = getSectionTitleKey(section, calculationType, !!isSectionCombineCalculationType); const contentKey = getSectionContentKey(section, calculationType); return ( diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationControl.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationControl.test.tsx index 9116a26bbec..fe88fbfbe84 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationControl.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationControl.test.tsx @@ -31,7 +31,7 @@ describe("CalculationControl", () => { disabled?: boolean; }) => { const props = { - disabled: params?.disabled, + disabled: params?.disabled ?? false, defaultCalculationType: params?.defaultCalculationType, pushData: mockPushData, properties: params?.properties || {}, @@ -39,7 +39,7 @@ describe("CalculationControl", () => { return render( - + , ); }; @@ -57,7 +57,7 @@ describe("CalculationControl", () => { renderCalculationControl({ properties, disabled: true }); expect(MockDropdownControl).toHaveBeenCalledWith( expect.objectContaining({ - value: properties.controls.comparison.calculationType, + value: properties.controls!.comparison!.calculationType, properties, disabled, pushData: mockPushData, @@ -78,14 +78,14 @@ describe("CalculationControl", () => { }), }); - expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR).textContent).toEqual(RATIO_ITEM_TEXT_QUERY); + expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!.textContent).toEqual(RATIO_ITEM_TEXT_QUERY); }); it("Should select default calculation-type while calculation-type is empty", () => { const { container } = renderCalculationControl({ defaultCalculationType: CalculateAs.DIFFERENCE, }); - expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR).textContent).toEqual( + expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!.textContent).toEqual( DIFFERENCE_ITEM_TEXT_QUERY, ); }); @@ -98,7 +98,7 @@ describe("CalculationControl", () => { it("Should render items correctly", () => { const MockCalculationListItem = vi.spyOn(CalculationListItemModule, "CalculationListItem"); const { container } = renderCalculationControl(); - fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)); + fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!); expect(MockCalculationListItem).toHaveBeenNthCalledWith( 1, @@ -147,7 +147,7 @@ describe("CalculationControl", () => { const { container } = renderCalculationControl({ properties: createTestProperties({ comparison: { enabled: true } }), }); - fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)); + fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!); fireEvent.click(screen.getByText(RATIO_ITEM_TEXT_QUERY)); expect(mockPushData).toHaveBeenCalledWith( expect.objectContaining({ @@ -157,7 +157,7 @@ describe("CalculationControl", () => { }), ); - fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)); + fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!); fireEvent.click(screen.getByText(DIFFERENCE_ITEM_TEXT_QUERY)); expect(mockPushData).toHaveBeenCalledWith( expect.objectContaining({ @@ -167,7 +167,7 @@ describe("CalculationControl", () => { }), ); - fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)); + fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!); fireEvent.click(screen.getByText(CHANGE_ITEM_TEXT_QUERY)); expect(mockPushData).toHaveBeenCalledWith( expect.objectContaining({ diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItem.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItem.test.tsx index d3da900b377..6608730b966 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItem.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItem.test.tsx @@ -60,7 +60,7 @@ describe("CalculationListItem", () => { ...DEFAULT_ITEM, onClick: mockOnClick, }); - fireEvent.click(container.querySelector(ITEM_SELECTOR)); + fireEvent.click(container.querySelector(ITEM_SELECTOR)!); expect(mockOnClick).toHaveBeenCalled(); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItemInfo.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItemInfo.test.tsx index 11c1c813349..011d3e79f8b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItemInfo.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/tests/CalculationListItemInfo.test.tsx @@ -72,10 +72,10 @@ describe("CalculationListItemInfo", () => { calculationType, }); - const tooltip = container.querySelector(CALCULATION_INFO_SELECTOR); - expect(tooltip.children.length).toBe(infos.length); + const tooltip = container.querySelector(CALCULATION_INFO_SELECTOR)!; + expect(tooltip!.children.length).toBe(infos.length); infos.forEach((expected, index) => { - expect(tooltip.children[index].innerHTML).toEqual(expected); + expect(tooltip!.children[index].innerHTML).toEqual(expected); }); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorCheckbox.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorCheckbox.tsx index 0f028d59fcc..5562b85b160 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorCheckbox.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorCheckbox.tsx @@ -27,13 +27,13 @@ export function ColorCheckbox({ disabled, showDisabledMessage, properties, pushD const handleChange = (value: boolean) => { const clonedProperties = cloneDeep(properties); - set(clonedProperties.controls, COMPARISON_COLOR_CONFIG_DISABLED, !value); + set(clonedProperties.controls!, COMPARISON_COLOR_CONFIG_DISABLED, !value); pushData({ properties: clonedProperties }); }; return ( - + ); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorItem.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorItem.tsx index f71c7ac4b7b..f66ea95349e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorItem.tsx @@ -14,9 +14,9 @@ import { ColorDropdown } from "../../../colors/colorDropdown/ColorDropdown.js"; import { ColoredItemContent } from "../../../colors/coloredItemsList/ColoredItemContent.js"; interface IColorItemProps { - disabled: boolean; + disabled?: boolean; showDisabledMessage?: boolean; - color: IColor; + color?: IColor; colorType: ComparisonColorType; colorPalette: IColorPalette; labelDescriptor: MessageDescriptor; @@ -44,13 +44,13 @@ export function ColorItem({ const handleColorSelected = (color: IColor) => { const clonedProperties = cloneDeep(properties); - set(clonedProperties.controls, valuePath, color); + set(clonedProperties.controls!, valuePath, color); pushData({ properties: clonedProperties }); }; return ( - + { const clonedProperties = cloneDeep(properties); - set(clonedProperties.controls, COMPARISON_COLOR_CONFIG_POSITIVE, undefined); - set(clonedProperties.controls, COMPARISON_COLOR_CONFIG_NEGATIVE, undefined); - set(clonedProperties.controls, COMPARISON_COLOR_CONFIG_EQUALS, undefined); + set(clonedProperties.controls!, COMPARISON_COLOR_CONFIG_POSITIVE, undefined); + set(clonedProperties.controls!, COMPARISON_COLOR_CONFIG_NEGATIVE, undefined); + set(clonedProperties.controls!, COMPARISON_COLOR_CONFIG_EQUALS, undefined); pushData({ properties: clonedProperties }); }; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorCheckbox.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorCheckbox.test.tsx index c347536ce0f..530f7dfa7b5 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorCheckbox.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorCheckbox.test.tsx @@ -52,7 +52,7 @@ describe("ColorCheckbox", () => { it("Should push data while click checkbox value", () => { const { container } = renderColorCheckbox(); - fireEvent.click(container.querySelector(CHECKBOX_SELECTOR)); + fireEvent.click(container.querySelector(CHECKBOX_SELECTOR)!); expect(mockPushData).toHaveBeenCalled(); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorResetButton.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorResetButton.test.tsx index a1470aaccbc..f439e739ca4 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorResetButton.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/tests/ColorResetButton.test.tsx @@ -98,7 +98,7 @@ describe("ColorResetButton", () => { }, }), }); - fireEvent.click(container.querySelector(BUTTON_SELECTOR)); + fireEvent.click(container.querySelector(BUTTON_SELECTOR)!); expect(mockPushData).toHaveBeenCalled(); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/tests/ArrowControl.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/tests/ArrowControl.test.tsx index 150f6c77a1c..4ac1ea713ad 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/tests/ArrowControl.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/tests/ArrowControl.test.tsx @@ -91,7 +91,7 @@ describe("ArrowControl", () => { it("Should push data while click checkbox value", () => { const { container } = renderArrowControl(); - fireEvent.click(container.querySelector(CHECKBOX_SELECTOR)); + fireEvent.click(container.querySelector(CHECKBOX_SELECTOR)!); expect(mockPushData).toHaveBeenCalled(); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/LabelSubSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/LabelSubSection.tsx index 2cee9b8531a..43a0716848f 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/LabelSubSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/LabelSubSection.tsx @@ -71,7 +71,7 @@ function getDisabledMessageId( showDisabledMessage: boolean, isPositionOnTop: boolean, isCalculateAsRatio: boolean, -): string { +): string | undefined { if (showDisabledMessage) { return messages["notApplicable"].id; } @@ -101,7 +101,11 @@ export function LabelSubSection({ const conditionalDisabled = disabled || isCalculateAsRatio; const shouldShowConditionalDisabledMessage = shouldShowDisabledMessage || isCalculateAsRatio; - const disabledMessageId = getDisabledMessageId(showDisabledMessage, isPositionOnTop, isCalculateAsRatio); + const disabledMessageId = getDisabledMessageId( + !!showDisabledMessage, + isPositionOnTop, + isCalculateAsRatio, + ); const conditionalEnabled = !!properties?.controls?.comparison?.labelConfig?.isConditional && diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/test/LabelSubSection.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/test/LabelSubSection.test.tsx index 6c6293d9816..efaf8515bc0 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/test/LabelSubSection.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/label/test/LabelSubSection.test.tsx @@ -179,7 +179,7 @@ describe("LabelSubSection", () => { }), }); - expect(container.querySelector(".gd-input-field").getAttribute("value")).toEqual("test"); + expect(container.querySelector(".gd-input-field")!.getAttribute("value")).toEqual("test"); }); it("Should disabled label input when position on top", () => { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/tests/ComparisonSection.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/tests/ComparisonSection.test.tsx index 3bdd0691096..76570250107 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/tests/ComparisonSection.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/tests/ComparisonSection.test.tsx @@ -67,7 +67,7 @@ describe("ComparisonSection", () => { properties, pushData, toggleDisabled: DEFAULT_DISABLED_BY_VISUALIZATION, - toggledOn: properties.controls.comparison.enabled, + toggledOn: properties.controls!.comparison!.enabled, }), undefined, ); @@ -127,7 +127,7 @@ describe("ComparisonSection", () => { comparison: { enabled }, }); const { container } = renderComparisonSection({ properties }); - const switcher = container.querySelector(COMPARISON_TOGGLE_SELECTOR); + const switcher = container.querySelector(COMPARISON_TOGGLE_SELECTOR)!; fireEvent.click(switcher); expect(pushData).toHaveBeenCalledWith( expect.objectContaining({ @@ -142,7 +142,7 @@ describe("ComparisonSection", () => { const enabled: boolean = false; const properties = createTestProperties({ comparison: { enabled } }); const { container } = renderComparisonSection({ properties }); - const switcher = container.querySelector(COMPARISON_TOGGLE_SELECTOR); + const switcher = container.querySelector(COMPARISON_TOGGLE_SELECTOR)!; fireEvent.click(switcher); expect(pushData).toHaveBeenCalledWith( expect.objectContaining({ diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx index 1ab81717eca..8dfe7a48df7 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx @@ -15,7 +15,7 @@ import { COMPARISON_FORMAT_VALUE_PATH, COMPARISON_SUB_FORMAT_VALUE_PATH } from " interface IValueSubSectionProps { sectionDisabled: boolean; showDisabledMessage?: boolean; - defaultFormat: string; + defaultFormat: string | null; separators: ISeparators; properties: IVisualizationProperties; pushData: PushDataCallback; @@ -29,7 +29,7 @@ export function ValueSubSection({ properties, pushData, }: IValueSubSectionProps) { - const format = getNumberFormat(properties, defaultFormat); + const format = getNumberFormat(properties, defaultFormat!); const subFormat = getNumberSubFormat(properties); const shouldDisplaySubFormatControl = properties.controls?.comparison?.calculationType === CalculateAs.CHANGE_DIFFERENCE; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx index 0fcce281e34..1c5cbde6ed2 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx @@ -17,8 +17,8 @@ import { DisabledBubbleMessage } from "../../../../DisabledBubbleMessage.js"; interface INumberFormatControlProps { disabled: boolean; valuePath: string; - labelText: string; - format: string; + labelText: string | undefined; + format: string | null; showDisabledMessage?: boolean; separators: ISeparators; properties: IVisualizationProperties; @@ -37,9 +37,9 @@ export function NumberFormatControl({ }: INumberFormatControlProps) { const intl = useIntl(); - const selectFormat = (format: string) => { + const selectFormat = (format: string | null) => { const clonedProperties = cloneDeep(properties); - set(clonedProperties.controls, valuePath, format); + set(clonedProperties.controls!, valuePath, format); pushData({ properties: clonedProperties }); }; @@ -48,7 +48,7 @@ export function NumberFormatControl({ const templates = useMemo(() => getTemplates(intl), [intl]); return ( - +
diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/tests/NumberFormatControl.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/tests/NumberFormatControl.test.tsx index 7a24f26e948..26ba6408d98 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/tests/NumberFormatControl.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/tests/NumberFormatControl.test.tsx @@ -64,7 +64,7 @@ describe("NumberFormatControl", () => { it("Should call push-data while select an format item", () => { const { container } = renderNumberFormatControl(); - fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)); + fireEvent.click(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!); fireEvent.click(screen.getByText(TEST_DECIMAL_FORMAT_PRESET.name)); const expectedProperties = createTestProperties({ @@ -72,7 +72,7 @@ describe("NumberFormatControl", () => { enabled: true, }, }); - set(expectedProperties.controls, DEFAULT_PROPS.valuePath, TEST_DECIMAL_FORMAT_PRESET.format); + set(expectedProperties.controls!, DEFAULT_PROPS.valuePath, TEST_DECIMAL_FORMAT_PRESET.format); expect(mockPushData).toHaveBeenCalledWith( expect.objectContaining({ @@ -83,10 +83,10 @@ describe("NumberFormatControl", () => { it("Should select provided format", () => { const { container } = renderNumberFormatControl({ - format: TEST_PERCENT_ROUNDED_FORMAT_PRESET.format, + format: TEST_PERCENT_ROUNDED_FORMAT_PRESET.format!, }); - expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR).textContent).toEqual( + expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!.textContent).toEqual( TEST_PERCENT_ROUNDED_FORMAT_PRESET.name, ); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/tests/ComparisonPositionControl.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/tests/ComparisonPositionControl.test.tsx index a9c68c5ae75..a59b8c58296 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/tests/ComparisonPositionControl.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/tests/ComparisonPositionControl.test.tsx @@ -80,6 +80,6 @@ describe("ComparisonPositionControl", () => { }), }); - expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR).textContent).toEqual(TOP_ITEM_TEXT_QUERY); + expect(container.querySelector(DROPDOWN_BUTTON_SELECTOR)!.textContent).toEqual(TOP_ITEM_TEXT_QUERY); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx index c77d21557bd..bea0a6ec64f 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx @@ -16,10 +16,10 @@ import { InputControl } from "../InputControl.js"; export interface IForecastSection { controlsDisabled: boolean; enabled: boolean; - properties: IVisualizationProperties; - propertiesMeta: any; + properties?: IVisualizationProperties; + propertiesMeta?: any; defaultForecastEnabled?: boolean; - pushData: (data: any) => any; + pushData?: (data: any) => any; } export const ForecastSection = memo(function ForecastSection({ diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/interactions/InteractionsSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/interactions/InteractionsSection.tsx index eb9e0f3a53b..11471eebe5e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/interactions/InteractionsSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/interactions/InteractionsSection.tsx @@ -15,9 +15,9 @@ import { ConfigSection } from "../ConfigSection.js"; export interface IInteractionsSectionProps { controlsDisabled?: boolean; areControlsDisabledGetter?: (sectionName?: SectionName) => boolean; - properties: IVisualizationProperties; - propertiesMeta: any; - pushData: (data: any) => any; + properties?: IVisualizationProperties; + propertiesMeta?: any; + pushData?: (data: any) => any; InteractionsDetailRenderer?: () => ReactNode; supportsAlertConfiguration?: boolean; supportsDrillDownConfiguration?: boolean; @@ -68,37 +68,37 @@ export const InteractionsSection = memo(function InteractionsSection({
- +
) : null} {supportsScheduledExportsConfiguration ? (
- +
) : null} {isSeparatorVisible ? : null} {supportsDrillDownConfiguration ? ( any; + pushData?: (data: any) => any; } export const LegendSection = memo(function LegendSection({ diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/ContinuousLineControl.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/ContinuousLineControl.test.tsx index e8eeb14a25a..36c102f19c4 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/ContinuousLineControl.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/ContinuousLineControl.test.tsx @@ -68,7 +68,7 @@ describe("ContinuousLineControl", () => { }); await userEvent.hover(screen.getByRole("checkbox")); - expect(document.querySelector(".content").innerHTML).toEqual( + expect(document.querySelector(".content")!.innerHTML).toEqual( "Draw a line between points with missing values.", ); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DataLabelsControl.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DataLabelsControl.test.tsx index 1017725f5eb..b1b99ab16cc 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DataLabelsControl.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DataLabelsControl.test.tsx @@ -122,7 +122,7 @@ describe("DataLabelsControl", () => { enableSeparateTotalLabels: true, }); - fireEvent.mouseEnter(screen.queryByText(TOTAL_LABELS_TEXT)); + fireEvent.mouseEnter(screen.queryByText(TOTAL_LABELS_TEXT)!); await waitFor(() => { expect(screen.getByText(DISABLED_TOOLTIP)).toBeInTheDocument(); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DistinctPointShapesControl.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DistinctPointShapesControl.test.tsx index 40572e3ef8d..6a6cc204eee 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DistinctPointShapesControl.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/tests/DistinctPointShapesControl.test.tsx @@ -73,7 +73,7 @@ describe("DistinctPointShapesControl", () => { }); await userEvent.hover(screen.getByRole("checkbox")); - expect(document.querySelector(".content").innerHTML).toEqual( + expect(document.querySelector(".content")!.innerHTML).toEqual( "Property is not applicable for this configuration of the visualization", ); }); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx index fac2afac008..c23fb6aae0f 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx @@ -39,7 +39,7 @@ export class BaseChartConfigurationPanel< const { properties, propertiesMeta, pushData, insight } = this.props; const controlsDisabled = this.isControlDisabled(); - const { buckets } = insight.insight; + const { buckets } = insight!.insight; const stackBy = bucketsById(buckets, BucketNames.STACK); const isNotStacked = isEmpty(stackBy); @@ -106,7 +106,7 @@ export class BaseChartConfigurationPanel< protected getControlProperties(): { gridEnabled: boolean; axes: IAxisProperties[] } { const props = this.props; const gridEnabled = props.properties?.controls?.["grid"]?.enabled ?? true; - const axisType = DUAL_AXES_SUPPORTED_CHARTS.includes(props.type) + const axisType = DUAL_AXES_SUPPORTED_CHARTS.includes(props.type!) ? (props.axis ?? AXIS.PRIMARY) : AXIS.PRIMARY; const configurations = this.getAxesConfiguration(axisType); @@ -131,7 +131,9 @@ export class BaseChartConfigurationPanel< protected isViewedBy(): boolean { const { insight } = this.props; - + if (!insight) { + return false; + } return !bucketsIsEmpty(insightBuckets(insight, BucketNames.VIEW, BucketNames.TREND)); } @@ -144,7 +146,7 @@ export class BaseChartConfigurationPanel< return axes.map((axis: IAxisProperties) => { const disabled = controlsDisabled || (!axis.primary && !isViewedBy); - const nameSubsectionDisabled: boolean = axis.primary && itemsOnAxes[axis.name] > 1; + const nameSubsectionDisabled: boolean = axis.primary && itemsOnAxes[axis.name]! > 1; const { name, title, subtitle, visible } = axis; return ( diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx index 34b4c54e963..8017239b64b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx @@ -29,7 +29,7 @@ import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIn export class BubbleChartConfigurationPanel extends ConfigurationPanelContent { protected renderConfigurationPanel(): ReactNode { const { propertiesMeta, properties, pushData, type, insight } = this.props; - const controls: IChartConfig = properties?.controls; + const controls: IChartConfig | undefined = properties?.controls; const xAxisVisible = controls?.xaxis?.visible ?? true; const yAxisVisible = controls?.yaxis?.visible ?? true; @@ -170,6 +170,9 @@ export class BubbleChartConfigurationPanel extends ConfigurationPanelContent { } } -function hasTertiaryMeasures(insight: IInsightDefinition): boolean { +function hasTertiaryMeasures(insight: IInsightDefinition | undefined): boolean { + if (!insight) { + return false; + } return !bucketsIsEmpty(insightBuckets(insight, BucketNames.TERTIARY_MEASURES)); } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx index c04626160cd..dfa52e86155 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx @@ -29,12 +29,12 @@ export class BulletChartConfigurationPanel extends ConfigurationPanelContent { const controls = properties?.controls || {}; const { xaxis, yaxis, grid } = controls; - const xAxisVisible = xaxis && typeof xaxis.visible !== "undefined" ? xaxis.visible : true; - const yAxisVisible = yaxis && typeof yaxis.visible !== "undefined" ? yaxis.visible : true; - const gridEnabled = grid && typeof grid.enabled !== "undefined" ? grid.enabled : true; + const xAxisVisible = typeof xaxis?.visible === "undefined" ? true : xaxis.visible; + const yAxisVisible = typeof yaxis?.visible === "undefined" ? true : yaxis.visible; + const gridEnabled = typeof grid?.enabled === "undefined" ? true : grid.enabled; const controlsDisabled = this.isControlDisabled(); - const { xaxis: itemsOnXAxis, yaxis: itemsOnYAxis } = countItemsOnAxes(type, controls, insight); + const { xaxis: itemsOnXAxis, yaxis: itemsOnYAxis } = countItemsOnAxes(type!, controls, insight!); const xAxisNameSectionDisabled = controlsDisabled || itemsOnXAxis !== 1; const yAxisNameSubsectionDisabled = controlsDisabled || itemsOnYAxis === 0; @@ -107,7 +107,7 @@ export class BulletChartConfigurationPanel extends ConfigurationPanelContent { > extends PureComponent { public static defaultProps: IConfigurationPanelContentProps = { - properties: null, - references: null, - referencePoint: null, - propertiesMeta: null, - colors: null, + properties: undefined, + references: undefined, + referencePoint: undefined, + propertiesMeta: undefined, + colors: undefined, locale: DefaultLocale, isError: false, isLoading: false, - insight: null, + insight: undefined, pushData: () => {}, featureFlags: {}, - axis: null, + axis: undefined, panelConfig: {}, }; - protected supportedPropertiesList: string[]; + protected supportedPropertiesList: string[] | undefined; constructor(props: T) { super(props); @@ -91,7 +91,7 @@ export abstract class ConfigurationPanelContent< */ protected isControlDisabled(_sectionName?: SectionName): boolean { const { insight, isError, isLoading } = this.props; - return !insight || !insightHasMeasures(insight) || isError || isLoading; + return !!(!insight || !insightHasMeasures(insight) || isError || isLoading); } protected renderColorSection(): ReactNode { @@ -111,9 +111,9 @@ export abstract class ConfigurationPanelContent< pushData={pushData} hasMeasures={hasMeasures} isLoading={isLoading} - supportsChartFill={panelConfig.supportsChartFill} + supportsChartFill={panelConfig?.supportsChartFill} chartFillIgnoredMeasures={chartFillIgnoredMeasures} - isChartFillDisabled={panelConfig.isChartFillDisabled} + isChartFillDisabled={panelConfig?.isChartFillDisabled} /> ); } @@ -143,24 +143,24 @@ export abstract class ConfigurationPanelContent< insight, } = this.props; - const isAlertingEnabled = featureFlags.enableAlerting; - const isScheduledExportsEnabled = featureFlags.enableScheduling; - const enableImplicitDrillToUrl = featureFlags.enableImplicitDrillToUrl; + const isAlertingEnabled = featureFlags?.enableAlerting; + const isScheduledExportsEnabled = featureFlags?.enableScheduling; + const enableImplicitDrillToUrl = featureFlags?.enableImplicitDrillToUrl; const insightSupportsScheduledExports = isInsightSupportedForScheduledExports(insight); const insightSupportsAlerts = isInsightSupportedForAlerts(insight); const supportsAlertsConfiguration = insightSupportsAlerts && isAlertingEnabled; const supportsScheduledExportsConfiguration = insightSupportsScheduledExports && isScheduledExportsEnabled; - return supportsAlertsConfiguration || panelConfig.supportsAttributeHierarchies ? ( + return supportsAlertsConfiguration || panelConfig?.supportsAttributeHierarchies ? ( @@ -171,7 +171,7 @@ export abstract class ConfigurationPanelContent< const { pushData, properties, propertiesMeta, type, featureFlags, referencePoint, insight } = this.props; - if (!featureFlags["enableSmartFunctions"]) { + if (!featureFlags?.["enableSmartFunctions"]) { return null; } @@ -193,7 +193,7 @@ export abstract class ConfigurationPanelContent< protected renderAdvancedSection(): ReactNode { const { pushData, properties, propertiesMeta, featureFlags } = this.props; - return featureFlags.enableVisualizationFineTuning ? ( + return featureFlags?.enableVisualizationFineTuning ? ( ); @@ -82,7 +82,7 @@ export class GeoAreaConfigurationPanel extends ConfigurationPanelContent { protected override isControlDisabled(): boolean { const { insight, isError, isLoading } = this.props; - return !hasAreaAttribute(insight) || isError || isLoading; + return !!(!hasAreaAttribute(insight) || isError || isLoading); } } diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx index 0ff760a238e..235a1f8c9ee 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx @@ -65,9 +65,9 @@ export class GeoPushpinConfigurationPanel extends ConfigurationPanelContent { pushData={pushData} > ); @@ -79,8 +79,8 @@ export class GeoPushpinConfigurationPanel extends ConfigurationPanelContent { const { properties, propertiesMeta, pushData, insight } = this.props; const isControlDisabled = this.isControlDisabled(); const isClusteringDisabled = - isControlDisabled || insightHasMeasures(insight) || hasSegmentAttribute(insight); - const isPushpinSizeControlDisabled = isControlDisabled || !hasSizeMeasure(insight); + isControlDisabled || insightHasMeasures(insight!) || hasSegmentAttribute(insight); + const isPushpinSizeControlDisabled = isControlDisabled || !hasSizeMeasure(insight!); return ( ); @@ -109,7 +109,7 @@ export class GeoPushpinConfigurationPanel extends ConfigurationPanelContent { protected override isControlDisabled(): boolean { const { insight, isError, isLoading } = this.props; - return !hasLocationAttribute(insight) || isError || isLoading; + return !!(!hasLocationAttribute(insight) || isError || isLoading); } protected getBubbleClassNames(): string { @@ -159,25 +159,37 @@ export class GeoPushpinConfigurationPanel extends ConfigurationPanelContent { } } -function hasColorMeasure(insight: IInsightDefinition): boolean { +function hasColorMeasure(insight: IInsightDefinition | undefined): boolean { + if (!insight) { + return false; + } const bucket = insightBucket(insight, BucketNames.COLOR); return bucket !== undefined && !bucketIsEmpty(bucket); } -function hasSizeMeasure(insight: IInsightDefinition): boolean { +function hasSizeMeasure(insight: IInsightDefinition | undefined): boolean { + if (!insight) { + return false; + } const bucket = insightBucket(insight, BucketNames.SIZE); return bucket !== undefined && !bucketIsEmpty(bucket); } -function hasLocationAttribute(insight: IInsightDefinition): boolean { +function hasLocationAttribute(insight: IInsightDefinition | undefined): boolean { + if (!insight) { + return false; + } const bucket = insightBucket(insight, BucketNames.LOCATION); return bucket !== undefined && !bucketIsEmpty(bucket); } -function hasSegmentAttribute(insight: IInsightDefinition): boolean { +function hasSegmentAttribute(insight: IInsightDefinition | undefined): boolean { + if (!insight) { + return false; + } const bucket = insightBucket(insight, BucketNames.SEGMENT); return bucket !== undefined && !bucketIsEmpty(bucket); diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx index 0db095c7d0e..88821a6c89d 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx @@ -5,6 +5,8 @@ import { type ReactNode } from "react"; import cx from "classnames"; import { FormattedMessage } from "react-intl"; +import { type IColorPalette } from "@gooddata/sdk-model"; +import { type ISeparators } from "@gooddata/sdk-ui"; import { Bubble, BubbleHoverTrigger } from "@gooddata/sdk-ui-kit"; import { @@ -35,7 +37,7 @@ export class HeadlineConfigurationPanel extends ConfigurationPanelContent< const controlDisabled = this.isControlDisabled(); const comparisonDisabled = !isComparisonEnabled(insight); - const defaultCalculationType = getComparisonDefaultCalculationType(insight); + const defaultCalculationType = getComparisonDefaultCalculationType(insight!); const bubbleClassNames = cx("bubble-primary", { invisible: !controlDisabled }); @@ -46,11 +48,11 @@ export class HeadlineConfigurationPanel extends ConfigurationPanelContent< controlDisabled={controlDisabled} disabledByVisualization={comparisonDisabled} defaultCalculationType={defaultCalculationType} - separators={panelConfig.separators} - colorPalette={panelConfig.comparisonColorPalette} - properties={properties} + separators={panelConfig?.separators as ISeparators} + colorPalette={panelConfig?.comparisonColorPalette as IColorPalette} + properties={properties!} propertiesMeta={propertiesMeta} - pushData={pushData} + pushData={pushData!} /> {this.renderInteractionsSection()} {this.renderAdvancedSection()} diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx index 104efbaf453..af9e4d30613 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx @@ -29,8 +29,8 @@ export class HeatMapConfigurationPanel extends ConfigurationPanelContent { const { xAxisVisible, yAxisVisible } = this.getControlProperties(); const controlsDisabled = this.isControlDisabled(); - const xAxisDisabled = this.isAxisDisabled(controlsDisabled, "xaxis", this.props.insight); - const yAxisDisabled = this.isAxisDisabled(controlsDisabled, "yaxis", this.props.insight); + const xAxisDisabled = this.isAxisDisabled(controlsDisabled, "xaxis", this.props.insight!); + const yAxisDisabled = this.isAxisDisabled(controlsDisabled, "yaxis", this.props.insight!); return ( diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx index 5a1cb7e7535..790e09c6538 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx @@ -81,6 +81,10 @@ export class PivotTableConfigurationPanel extends ConfigurationPanelContent { private isPositionControlDisabled() { const { insight, isLoading } = this.props; + if (!insight) { + return true; + } + const measures = insightMeasures(insight); return measures.length === 0 || isLoading; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx index 95a853c7fc5..4812db67f41 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx @@ -37,10 +37,10 @@ export class RepeaterConfigurationPanel extends ConfigurationPanelContent { properties={properties} pushData={pushData} > - - - - + + + + {this.renderAdvancedSection()}
diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx index 8281a796b91..8b5b2c32dd9 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx @@ -32,7 +32,7 @@ export class ScatterPlotConfigurationPanel extends ConfigurationPanelContent { protected override isControlDisabled(): boolean { const { insight, isError, isLoading } = this.props; const measures = getMeasuresFromMdObject(insight); - return !measures || measures.length < 1 || isError || isLoading; + return !!(!measures || measures.length < 1 || isError || isLoading); } protected renderConfigurationPanel(): ReactNode { @@ -44,7 +44,7 @@ export class ScatterPlotConfigurationPanel extends ConfigurationPanelContent { const { xaxis: itemsOnXAxis, yaxis: itemsOnYAxis } = countItemsOnAxes(type, controls, insight); const xAxisNameSectionDisabled = controlsDisabled || itemsOnXAxis !== 1; const yAxisNameSectionDisabled = controlsDisabled || itemsOnYAxis !== 1; - const showClusteringSection: boolean = featureFlags.enableScatterPlotClustering as boolean; + const showClusteringSection: boolean = !!featureFlags?.enableScatterPlotClustering; const isScatterPlotClusteringDisabled = this.isClusteringDisabled(); const showingPartialClusters = propertiesMeta?.showingPartialClusters; @@ -199,12 +199,12 @@ export class ScatterPlotConfigurationPanel extends ConfigurationPanelContent { private areDataLabelsDisabled() { const isDisabled = super.isControlDisabled(); - return isDisabled || !insightHasAttributes(this.props.insight); + return isDisabled || !insightHasAttributes(this.props.insight!); } private isDataLabelsWarningShown() { const isDisabled = super.isControlDisabled(); - return !isDisabled && !insightHasAttributes(this.props.insight); + return !isDisabled && !insightHasAttributes(this.props.insight!); } private isClusteringDisabled() { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx index 6058b5f7c3f..f798cf76e39 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx @@ -9,7 +9,7 @@ import { UnsupportedProperties } from "../configurationControls/UnsupportedPrope export class UnsupportedConfigurationPanel extends ConfigurationPanelContent { public override componentDidMount(): void { - this.props.pushData({ + this.props.pushData?.({ properties: omit(this.props.properties, "controls"), references: null, ignoreUndoRedo: true, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx index 019da7641ac..c736a08d66e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx @@ -50,9 +50,9 @@ export class WaterfallChartConfigurationPanel extends BaseChartConfigurationPane {this.renderInteractionsSection()} @@ -66,10 +66,10 @@ export class WaterfallChartConfigurationPanel extends BaseChartConfigurationPane pushData={pushData} > @@ -82,7 +82,7 @@ export class WaterfallChartConfigurationPanel extends BaseChartConfigurationPane { const isPrimaryAxis = controls?.["orientation"]?.position === "vertical" ? axis.name === "xaxis" : axis.primary; - const isPrimaryAxisWithMoreThanOneItem: boolean = isPrimaryAxis && itemsOnAxes[axis.name] > 1; + const isPrimaryAxisWithMoreThanOneItem: boolean = + isPrimaryAxis && (itemsOnAxes?.[axis.name] ?? 0) > 1; const nameSubsectionDisabled: boolean = !isViewedBy || isPrimaryAxisWithMoreThanOneItem; const { name, title, subtitle, visible } = axis; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/embedInsightDialog/EmbedInsightDialog.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/embedInsightDialog/EmbedInsightDialog.tsx index a56103af00e..12307d2ddca 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/embedInsightDialog/EmbedInsightDialog.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/embedInsightDialog/EmbedInsightDialog.tsx @@ -68,7 +68,7 @@ export function EmbedInsightDialog(props: IEmbedInsightDialogProps) { { codeOption: TOptions; insight: IInsight; - settings: IUserWorkspaceSettings; - backend: IAnalyticalBackend; - colorPalette: IColorPalette; - theme: ITheme; - executionConfig: IExecutionConfig | undefined; + settings?: IUserWorkspaceSettings; + backend?: IAnalyticalBackend; + colorPalette?: IColorPalette; + theme?: ITheme; + executionConfig?: IExecutionConfig; workspaceId?: string; } @@ -218,7 +218,7 @@ const generateCodeByReact = (input: ICodeGenInput) => { const generateCodeByWebComponents = (input: ICodeGenInput) => { const { codeOption, insight, workspaceId } = input; const height = getHeightWithUnitsForEmbedCode(codeOption) as string; - return getWebComponentsCodeGenerator(workspaceId, insight, { ...codeOption, height }); + return getWebComponentsCodeGenerator(workspaceId!, insight, { ...codeOption, height }); }; const BUBBLE_ALIGN_POINTS: IAlignPoint[] = [{ align: "cc cc" }]; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ConfirmDialogs/DeleteConfirmDialog.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ConfirmDialogs/DeleteConfirmDialog.tsx index ccb97a5b47a..4c46ca82de5 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ConfirmDialogs/DeleteConfirmDialog.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ConfirmDialogs/DeleteConfirmDialog.tsx @@ -9,7 +9,7 @@ import { ConfirmDialog, Typography } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; export interface IDeleteConfirmDialogProps { - titleText: string; + titleText: string | undefined; bodyText: string | ReactNode; isProcessing: boolean; onConfirm: () => void; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/CreateUserGroupDialog.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/CreateUserGroupDialog.tsx index 843cd5c385c..89d98845e78 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/CreateUserGroupDialog.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/CreateUserGroupDialog.tsx @@ -5,6 +5,7 @@ import { useState } from "react"; import { useIntl } from "react-intl"; import { v4 as uuid } from "uuid"; +import { type ObjRef } from "@gooddata/sdk-model"; import { useBackendStrict } from "@gooddata/sdk-ui"; import { ConfirmDialogBase, type IAlignPoint, Input, Overlay, useToastMessage } from "@gooddata/sdk-ui-kit"; @@ -41,7 +42,7 @@ function CreateUserGroupDialogComponent({ .users() .createUserGroup({ id: uuid(), - ref: undefined, + ref: undefined as unknown as ObjRef, //this violates api types name: userGroupName, }) .then(() => { diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx index 59399d130a5..a86b48c5e1d 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx @@ -15,12 +15,12 @@ import { type DataSourcePermissionSubject, type IGrantedDataSource } from "../ty export interface IAddDataSourceProps { ids: string[]; subjectType: DataSourcePermissionSubject; - grantedDataSources: IGrantedDataSource[]; + grantedDataSources: IGrantedDataSource[] | undefined; enableBackButton?: boolean; onSubmit: (workspaces: IGrantedDataSource[]) => void; onCancel: () => void; onClose: () => void; - renderDataSourceIcon: (dataSource: IGrantedDataSource) => ReactElement; + renderDataSourceIcon?: (dataSource: IGrantedDataSource) => ReactElement; } export function AddDataSource({ diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx index 48c3fafd370..f0f042eda61 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx @@ -42,7 +42,7 @@ export function AddDataSourceSelect({ const selectRef = useRef>(null); useEffect(() => { - selectRef.current.focus(); + selectRef.current?.focus(); }, []); const onSelect = useCallback( diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.tsx index c1b8cf9e1eb..7b011f73d7b 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.tsx @@ -21,7 +21,7 @@ import { } from "../types.js"; import { getDataSourceItemTestId } from "../utils.js"; -export function EmptyRenderer(): ReactElement { +export function EmptyRenderer(): ReactElement | null { return null; } diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx index c7806d05687..7f24dc3b9b3 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx @@ -23,9 +23,9 @@ function DataSourceIcon() { interface IGranularGranteeUserGroupItemProps { dataSource: IGrantedDataSource; subjectType: DataSourcePermissionSubject; - onChange: (grantee: IGrantedDataSource) => void; - onDelete: (grantee: IGrantedDataSource) => void; - renderDataSourceIcon: (dataSource: IGrantedDataSource) => ReactElement; + onChange?: (grantee: IGrantedDataSource) => void; + onDelete?: (grantee: IGrantedDataSource) => void; + renderDataSourceIcon?: (dataSource: IGrantedDataSource) => ReactElement; } export function DataSourceItem({ diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx index 8e9619306f3..05bf066cc33 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx @@ -8,12 +8,12 @@ import { type IGrantedDataSource, type ListMode, type WorkspacePermissionSubject import { sortByName } from "../utils.js"; export interface IDataSourceListProps { - dataSources: IGrantedDataSource[]; + dataSources: IGrantedDataSource[] | undefined; subjectType: WorkspacePermissionSubject; mode: ListMode; - onDelete: (workspace: IGrantedDataSource) => void; + onDelete?: (workspace: IGrantedDataSource) => void; onChange?: (workspace: IGrantedDataSource) => void; - renderDataSourceIcon: (dataSource: IGrantedDataSource) => ReactElement; + renderDataSourceIcon?: (dataSource: IGrantedDataSource) => ReactElement; } export function DataSourceList({ diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx index 7cbb57abf2e..ddde4e6e1db 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx @@ -35,8 +35,8 @@ interface IGranularPermissionsDropdownProps { isDropdownDisabled?: boolean; isDropdownOpen: boolean; toggleDropdown: () => void; - onChange: (dataSource: IGrantedDataSource) => void; - onDelete: (dataSource: IGrantedDataSource) => void; + onChange?: (dataSource: IGrantedDataSource) => void; + onDelete?: (dataSource: IGrantedDataSource) => void; className: string; } @@ -78,13 +78,13 @@ function Dropdown({ const trackEvent = useTelemetry(); const handleOnSelect = (permission: DataSourcePermission) => { - onChange({ ...dataSource, permission }); + onChange?.({ ...dataSource, permission }); trackPermissionChange(trackEvent, subjectType, permission); setSelectedPermission(permission); }; const handleOnDelete = () => { - onDelete(dataSource); + onDelete?.(dataSource); }; const handleClick = useCallback(() => { diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DeleteLink.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DeleteLink.tsx index 45f02f96292..9b68f50b3f1 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DeleteLink.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DeleteLink.tsx @@ -7,7 +7,7 @@ const alignPoints: IAlignPoint[] = [{ align: "bc tc" }]; export interface IDeleteLinkProps { isDeleteLinkEnabled: boolean; deleteLinkText: string; - disabledLinkTooltipTextId: string; + disabledLinkTooltipTextId?: string; onOpenDeleteDialog: () => void; } diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx index 1a5d1cabad7..41928cfec04 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx @@ -15,7 +15,7 @@ import { extractUserName } from "../utils.js"; export interface IEditUserDetailsProps { isAdmin: boolean; isBootstrapUser: boolean; - user: IUser; + user: IUser | undefined; enableBackButton?: boolean; changeUserMembership?: boolean; onSubmit: (user: IUser, isAdmin: boolean) => void; @@ -47,7 +47,7 @@ export function EditUserDetails({ // change user membership if dialog was opened for that reason, enable Save button, do it just once useEffect(() => { if (changeUserMembership) { - onChange(updatedUser, !isUpdatedAdmin); + onChange(updatedUser!, !isUpdatedAdmin); } // eslint-disable-next-line react-hooks/exhaustive-deps }, []); diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx index db501a901a5..6f01959662a 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx @@ -13,7 +13,7 @@ import { messages } from "../locales.js"; import { extractUserGroupName } from "../utils.js"; export interface IEditUserGroupDetailsProps { - userGroup: IUserGroup; + userGroup: IUserGroup | undefined; enableBackButton?: boolean; onSubmit: (userGroup: IUserGroup) => void; onCancel: () => void; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx index 1ab19c6721b..50b9e9eee97 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx @@ -13,7 +13,7 @@ import { type ListMode } from "../types.js"; export interface IDetailsViewProps { isAdmin: boolean; isBootstrapUser: boolean; - user: IUser; + user: IUser | undefined; mode: ListMode; onChange?: (user: IUser, isAdmin: boolean) => void; } @@ -32,19 +32,19 @@ export function UserDetailsView({ user, isAdmin, isBootstrapUser, mode, onChange labelText={intl.formatMessage(messages.userFirstName)} value={user.firstName} mode={mode} - onChange={(firstName) => onChange({ ...user, firstName: String(firstName) }, isAdmin)} + onChange={(firstName) => onChange?.({ ...user, firstName: String(firstName) }, isAdmin)} /> onChange({ ...user, lastName: String(lastName) }, isAdmin)} + onChange={(lastName) => onChange?.({ ...user, lastName: String(lastName) }, isAdmin)} /> onChange({ ...user, email: String(email) }, isAdmin)} + onChange={(email) => onChange?.({ ...user, email: String(email) }, isAdmin)} />
@@ -60,7 +60,7 @@ export function UserDetailsView({ user, isAdmin, isBootstrapUser, mode, onChange isDisabled={isBootstrapUser} isAdmin={isAdmin} onChange={(isAdminNow) => { - onChange(user, isAdminNow); + onChange?.(user, isAdminNow); trackEvent( isAdmin ? "user-role-changed-to-admin" : "user-role-changed-to-member", ); diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx index 57ef790fc98..a017ec7bade 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx @@ -9,7 +9,7 @@ import { messages } from "../locales.js"; import { type ListMode } from "../types.js"; export interface IUserGroupDetailsViewProps { - userGroup: IUserGroup; + userGroup: IUserGroup | undefined; mode: ListMode; onChange?: (user: IUserGroup) => void; } @@ -27,7 +27,7 @@ export function UserGroupDetailsView({ userGroup, mode, onChange }: IUserGroupDe labelText={intl.formatMessage(messages.userGroupName)} value={userGroup.name} mode={mode} - onChange={(name) => onChange({ ...userGroup, name: String(name) })} + onChange={(name) => onChange?.({ ...userGroup, name: String(name) })} /> void, onCancel: () => void, @@ -38,6 +38,9 @@ export const useUserDetails = ( }; const onSave = () => { + if (!updatedUser) { + return; + } const updateAdmin = isAdmin !== isUpdatedAdmin; const { firstName, lastName } = updatedUser; const sanitizedUser: IUser = { @@ -97,7 +100,7 @@ export const useUserDetails = ( }; export const useUserGroupDetails = ( - userGroup: IUserGroup, + userGroup: IUserGroup | undefined, onSubmit: (userGroup: IUserGroup) => void, onCancel: () => void, ) => { @@ -114,6 +117,9 @@ export const useUserGroupDetails = ( }, [userGroup]); const onSave = () => { + if (!updatedUserGroup) { + return; + } setIsProcessing(true); backend .organization(organizationId) diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserEditDialog.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserEditDialog.tsx index 29520da765b..be882adfb0f 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserEditDialog.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserEditDialog.tsx @@ -92,11 +92,11 @@ function UserEditDialogComponent({ updateGrantedDataSource, } = usePermissions(userId, "user", organizationId, onSuccess); const { grantedUserGroups, onUserGroupsChanged, removeGrantedUserGroup, removeAdminGroup } = - useUserGroups(userId, organizationId, bootstrapUserGroupId, onSuccess, setIsAdmin); + useUserGroups(userId, organizationId, bootstrapUserGroupId!, onSuccess, setIsAdmin); const { tabs, selectedTabId, setSelectedTabId } = useUserDialogTabs( grantedWorkspaces, - grantedUserGroups, + grantedUserGroups!, grantedDataSources, isCurrentlyAdmin, selectedTab, @@ -145,7 +145,7 @@ function UserEditDialogComponent({ const isOpenedInEditMode = initialView !== "VIEW"; - const [workspaceToEdit, setWorkspaceToEdit] = useState(undefined); + const [workspaceToEdit, setWorkspaceToEdit] = useState(undefined); const handleWorkspaceEdit = (workspace: IGrantedWorkspace) => { setWorkspaceToEdit(workspace); diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.tsx index 1f5688ca039..98a6a87d7dd 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.tsx @@ -137,7 +137,7 @@ function UserGroupEditDialogComponent({ const isOpenedInEditMode = initialView !== "VIEW"; - const [workspaceToEdit, setWorkspaceToEdit] = useState(undefined); + const [workspaceToEdit, setWorkspaceToEdit] = useState(undefined); const handleWorkspaceEdit = (workspace: IGrantedWorkspace) => { setWorkspaceToEdit(workspace); diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx index 510c063144e..90ab5ce3e4d 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx @@ -13,7 +13,7 @@ import { type IGrantedUserGroup } from "../types.js"; export interface IAddUserGroupProps { userIds: string[]; - grantedUserGroups: IGrantedUserGroup[]; + grantedUserGroups: IGrantedUserGroup[] | undefined; enableBackButton?: boolean; onSubmit: (userGroups: IGrantedUserGroup[]) => void; onCancel: () => void; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx index 148076ce7bc..08708954185 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx @@ -6,7 +6,7 @@ import { type IGrantedUserGroup } from "../types.js"; export interface IAddUserGroupContentProps { addedUserGroups: IGrantedUserGroup[]; - grantedUserGroups: IGrantedUserGroup[]; + grantedUserGroups: IGrantedUserGroup[] | undefined; onDelete: (userGroup: IGrantedUserGroup) => void; onSelect: (userGroup: IGrantedUserGroup) => void; } diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx index 45544f01da7..abc9dca9511 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx @@ -34,7 +34,7 @@ const SEARCH_INTERVAL = 400; export interface IAddUserGroupSelectProps { onSelect: (userGroup: IGrantedUserGroup) => void; addedUserGroups: IGrantedUserGroup[]; - grantedUserGroups: IGrantedUserGroup[]; + grantedUserGroups: IGrantedUserGroup[] | undefined; } export function AddUserGroupSelect({ @@ -48,7 +48,7 @@ export function AddUserGroupSelect({ const organizationId = useOrganizationId(); useEffect(() => { - selectRef.current.focus(); + selectRef.current?.focus(); }, []); const onChange = useCallback( diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AsyncSelectComponents.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AsyncSelectComponents.tsx index 16d836abb37..bda6b7cf388 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AsyncSelectComponents.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AsyncSelectComponents.tsx @@ -21,7 +21,7 @@ import { } from "../types.js"; import { getUserGroupItemTestId } from "../utils.js"; -export function EmptyRenderer(): ReactElement { +export function EmptyRenderer(): ReactElement | null { return null; } diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx index c3438be5e08..7d37f9db754 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx @@ -8,11 +8,11 @@ import { type IGrantedUserGroup, type ListMode } from "../types.js"; import { sortByName } from "../utils.js"; export interface IUserGroupsListProps { - userGroups: IGrantedUserGroup[]; + userGroups: IGrantedUserGroup[] | undefined; mode: ListMode; onDelete: (userGroup: IGrantedUserGroup) => void; isBootstrapUser: boolean; - bootstrapUserGroupId: string; + bootstrapUserGroupId?: string; } export function UserGroupsList({ diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/backend/loadUserGroupOptionsPromise.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/backend/loadUserGroupOptionsPromise.ts index 0cc0a091cc4..8705c2f91ae 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/backend/loadUserGroupOptionsPromise.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/backend/loadUserGroupOptionsPromise.ts @@ -30,7 +30,7 @@ export const loadUserGroupOptionsPromise = userGroups.filter( (userGroup) => inputValue === "" || - extractUserGroupName(userGroup).toLowerCase().includes(inputValue.toLowerCase()), + extractUserGroupName(userGroup)?.toLowerCase().includes(inputValue.toLowerCase()), ), ) .then((userGroups) => @@ -38,7 +38,7 @@ export const loadUserGroupOptionsPromise = .map( (userGroup): IGrantedUserGroup => ({ id: userGroup.id, - title: extractUserGroupName(userGroup), + title: extractUserGroupName(userGroup) ?? "", }), ) .sort(sortByName), diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AsyncSelectComponents.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AsyncSelectComponents.tsx index c8b4ec4fc16..2a4892efa7c 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AsyncSelectComponents.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AsyncSelectComponents.tsx @@ -22,7 +22,7 @@ import { } from "../types.js"; import { getUserItemTestId } from "../utils.js"; -export function EmptyRenderer(): ReactElement { +export function EmptyRenderer(): ReactElement | null { return null; } diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UserItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UserItem.tsx index cc232cd5532..b8d704b1d4b 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UserItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UserItem.tsx @@ -61,7 +61,7 @@ export function UserItem({ mode, onDelete, user, isDeleteDisabled }: IUserItemPr return (
- onDelete(user)} isDisabled={isDeleteDisabled} /> + onDelete(user)} isDisabled={!!isDeleteDisabled} />
{user.title}
{user.email}
diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx index 26a6bfda5f2..111e22cf2c7 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx @@ -12,7 +12,7 @@ export interface IUsersListProps { mode: ListMode; onDelete: (user: IUserMember) => void; isBootstrapUserGroup: boolean; - bootstrapUserId: string; + bootstrapUserId?: string; } export function UsersList({ users, mode, onDelete, isBootstrapUserGroup, bootstrapUserId }: IUsersListProps) { diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/backend/loadUsersOptionsPromise.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/backend/loadUsersOptionsPromise.ts index c4b4561fa18..a15fa36a7fe 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/backend/loadUsersOptionsPromise.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/backend/loadUsersOptionsPromise.ts @@ -46,8 +46,8 @@ export const loadUsersOptionsPromise = options: result.items.map((item) => { const userMember: IUserMember = { id: item.id, - title: extractUserName(item), - email: item.email, + title: extractUserName(item) ?? "", + email: item.email ?? "", }; return { label: item.fullName || item.id, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ViewDialog.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ViewDialog.tsx index 847a966b992..d278e237d47 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ViewDialog.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/ViewDialog.tsx @@ -12,7 +12,7 @@ import { messages } from "./locales.js"; export interface IViewDialogProps { children: ReactNode; - dialogTitle: string; + dialogTitle: string | undefined; isAdmin: boolean; isDeleteLinkEnabled: boolean; deleteLinkDisabledTooltipTextId?: string; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx index d4c565c9f4d..95ba489cbcb 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx @@ -77,13 +77,13 @@ export function AddSingleWorkspaceSelect({ }, []); const usedWorkspace = useMemo( - () => (addedWorkspace ? [addedWorkspace, ...grantedWorkspaces] : grantedWorkspaces), + () => (addedWorkspace ? [addedWorkspace, ...(grantedWorkspaces ?? [])] : grantedWorkspaces), [addedWorkspace, grantedWorkspaces], ); const filterOption = (option: any) => { const workspace = option.value; - return !usedWorkspace.some((usedWorkspace) => { + return !usedWorkspace?.some((usedWorkspace) => { return usedWorkspace.id === workspace.id; }); }; @@ -118,7 +118,7 @@ export function AddSingleWorkspaceSelect({ svg: { height: "14px" }, }), }} - loadOptions={loadOptions} + loadOptions={loadOptions as any} defaultOptions placeholder={intl.formatMessage(messages.searchWorkspacePlaceholder)} onKeyDown={onKeyDownCallback} diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx index 7b25b9a8244..318b352417d 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx @@ -19,7 +19,7 @@ import { export interface IAddWorkspaceProps { ids: string[]; subjectType: WorkspacePermissionSubject; - grantedWorkspaces: IGrantedWorkspace[]; + grantedWorkspaces: IGrantedWorkspace[] | undefined; enableBackButton?: boolean; onSubmit: (workspaces: IGrantedWorkspace[]) => void; onCancel: () => void; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx index 8dbe4e119dc..0b05ab6bf06 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx @@ -42,7 +42,7 @@ export function AddWorkspaceSelect({ const selectRef = useRef>(null); useEffect(() => { - selectRef.current.focus(); + selectRef.current?.focus(); }, []); const onSelect = useCallback( diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AsyncSelectComponents.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AsyncSelectComponents.tsx index 0bed9252ced..6b2aa2489a9 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AsyncSelectComponents.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AsyncSelectComponents.tsx @@ -22,7 +22,7 @@ import { } from "../types.js"; import { getWorkspaceItemTestId } from "../utils.js"; -export function EmptyRenderer(): ReactElement { +export function EmptyRenderer(): ReactElement | null { return null; } @@ -78,7 +78,7 @@ export function InputRendered(props: InputProps, -): ReactElement { +): ReactElement | null { if (props.hasValue) { return null; } diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx index 3495eaf47e9..c2a237e4b3e 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx @@ -61,7 +61,7 @@ export function GranularPermissions({ const handleChange = useCallback( (permissions: WorkspacePermissions, isHierarchical: boolean) => { const sanitizedPermissions = removeRedundantPermissions(permissions); - onChange({ ...workspace, permissions: sanitizedPermissions, isHierarchical }); + onChange({ ...workspace!, permissions: sanitizedPermissions, isHierarchical }); }, [onChange, workspace], ); diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx index 79f2064a7ca..543770df817 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx @@ -14,7 +14,7 @@ interface IPermissionItemProps { selectedPermission: WorkspacePermission; toggleDropdown: () => void; onSelect: (permission: WorkspacePermission) => void; - bubbleTextId: string; + bubbleTextId: string | undefined; } export function PermissionDropdownItem({ diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx index 22507d2baa9..ae93f79d5f0 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx @@ -8,7 +8,7 @@ import { type IGrantedWorkspace, type ListMode, type WorkspacePermissionSubject import { sortByName } from "../utils.js"; export interface IWorkspaceListProps { - workspaces: IGrantedWorkspace[]; + workspaces: IGrantedWorkspace[] | undefined; subjectType: WorkspacePermissionSubject; mode: ListMode; onDelete: (workspace: IGrantedWorkspace) => void; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/dialogHooks.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/dialogHooks.ts index 98eb7064195..49e73a84aa1 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/dialogHooks.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/dialogHooks.ts @@ -182,7 +182,7 @@ export const useUserGroups = ( ) => { const { addSuccess, addError } = useToastMessage(); const backend = useBackendStrict(); - const [grantedUserGroups, setGrantedUserGroups] = useState(undefined); + const [grantedUserGroups, setGrantedUserGroups] = useState(undefined); // load initial user groups useEffect(() => { @@ -194,7 +194,7 @@ export const useUserGroups = ( setGrantedUserGroups( userGroups.map((userGroup) => ({ id: userGroup.id, - title: extractUserGroupName(userGroup), + title: extractUserGroupName(userGroup)!, })), ); }); @@ -207,7 +207,7 @@ export const useUserGroups = ( .removeUsersFromUserGroups([userId], [grantedUserGroup.id]) .then(() => { addSuccess(messages.userGroupRemovedSuccess); - setGrantedUserGroups(grantedUserGroups.filter((item) => item.id !== grantedUserGroup.id)); + setGrantedUserGroups(grantedUserGroups?.filter((item) => item.id !== grantedUserGroup.id)); onSuccess(); }) .catch((error) => { @@ -216,8 +216,8 @@ export const useUserGroups = ( }); }; - const hasBootstrapUserGroup = (userGroups: IGrantedUserGroup[]) => - userGroups.some((group) => group.id === bootstrapUserGroupId); + const hasBootstrapUserGroup = (userGroups: IGrantedUserGroup[] | undefined) => + userGroups?.some((group) => group.id === bootstrapUserGroupId); // removes admin group from the user if he is its member, update internal array of groups const removeAdminGroup = () => { @@ -228,7 +228,7 @@ export const useUserGroups = ( .removeUsersFromUserGroups([userId], [bootstrapUserGroupId]) .then(() => setGrantedUserGroups( - grantedUserGroups.filter((item) => item.id !== bootstrapUserGroupId), + grantedUserGroups?.filter((item) => item.id !== bootstrapUserGroupId), ), ); } else { @@ -238,10 +238,10 @@ export const useUserGroups = ( // update internal array with user groups after applied changed in groups edit mode const onUserGroupsChanged = (userGroups: IGrantedUserGroup[]) => { - const unchangedUserGroups = grantedUserGroups.filter( + const unchangedUserGroups = grantedUserGroups?.filter( (item) => !userGroups.some((userGroup) => userGroup.id === item.id), ); - const newUserGroups = [...unchangedUserGroups, ...userGroups].sort(sortByName); + const newUserGroups = [...(unchangedUserGroups ?? []), ...userGroups].sort(sortByName); setGrantedUserGroups(newUserGroups); if (hasBootstrapUserGroup(newUserGroups)) { setIsAdmin(true); @@ -260,7 +260,7 @@ export const useUserGroups = ( export const useUsers = (userGroupId: string, organizationId: string, onSuccess: () => void) => { const { addSuccess, addError } = useToastMessage(); const backend = useBackendStrict(); - const [grantedUsers, setGrantedUsers] = useState(undefined); + const [grantedUsers, setGrantedUsers] = useState([]); // load initial users useEffect(() => { @@ -272,8 +272,8 @@ export const useUsers = (userGroupId: string, organizationId: string, onSuccess: setGrantedUsers( users.map((user) => ({ id: user.login, - title: extractUserName(user), - email: user.email, + title: extractUserName(user)!, + email: user.email!, })), ); }); @@ -323,9 +323,9 @@ const getTabMessageKey = (tabId: UserTabId) => { }; export const useUserDialogTabs = ( - grantedWorkspaces: IGrantedWorkspace[], - grantedUserGroups: IGrantedUserGroup[], - grantedDataSources: IGrantedDataSource[], + grantedWorkspaces: IGrantedWorkspace[] | undefined, + grantedUserGroups: IGrantedUserGroup[] | undefined, + grantedDataSources: IGrantedDataSource[] | undefined, isAdmin: boolean, selectedTab?: UserTabId, ) => { @@ -365,9 +365,9 @@ export const useUserDialogTabs = ( }; export const useUserGroupDialogTabs = ( - grantedWorkspaces: IGrantedWorkspace[], + grantedWorkspaces: IGrantedWorkspace[] | undefined, grantedUsers: IUserMember[], - grantedDataSources: IGrantedDataSource[], + grantedDataSources: IGrantedDataSource[] | undefined, isAdmin: boolean, ) => { const [selectedTabId, setSelectedTabId] = useState(userGroupDialogTabsMessages.users); @@ -440,8 +440,9 @@ const useOrganization = (organizationId: string) => { export const useOrganizationDetails = (organizationId: string) => { const { bootstrapUser, bootstrapUserGroup } = useOrganization(organizationId); return { - isBootstrapUser: (user: IUser) => areObjRefsEqual(bootstrapUser, user?.ref), - isBootstrapUserGroup: (userGroup: IUserGroup) => areObjRefsEqual(bootstrapUserGroup, userGroup?.ref), + isBootstrapUser: (user: IUser | undefined) => areObjRefsEqual(bootstrapUser, user?.ref), + isBootstrapUserGroup: (userGroup: IUserGroup | undefined) => + areObjRefsEqual(bootstrapUserGroup, userGroup?.ref), bootstrapUserId: bootstrapUser ? objRefToString(bootstrapUser) : undefined, bootstrapUserGroupId: bootstrapUserGroup ? objRefToString(bootstrapUserGroup) : undefined, }; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.ts index 03575912d15..5af4d027c46 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.ts @@ -27,8 +27,8 @@ export const usePermissions = ( ) => { const { addSuccess, addError } = useToastMessage(); const backend = useBackendStrict(); - const [grantedWorkspaces, setGrantedWorkspaces] = useState(undefined); - const [grantedDataSources, setGrantedDataSources] = useState(undefined); + const [grantedWorkspaces, setGrantedWorkspaces] = useState(undefined); + const [grantedDataSources, setGrantedDataSources] = useState(undefined); // setup API factories based on the subject we are working with const { getPermissions } = useMemo(() => { if (subjectType === "user") { @@ -65,7 +65,7 @@ export const usePermissions = ( }) .then(() => { addSuccess(messages.workspaceRemovedSuccess); - setGrantedWorkspaces(grantedWorkspaces.filter((item) => item.id !== removedWorkspace.id)); + setGrantedWorkspaces(grantedWorkspaces?.filter((item) => item.id !== removedWorkspace.id)); onSuccess(); }) .catch((error) => { @@ -84,7 +84,7 @@ export const usePermissions = ( }) .then(() => { addSuccess(messages.dataSourceRemovedSuccess); - setGrantedDataSources(grantedDataSources.filter((item) => item.id !== removedDataSource.id)); + setGrantedDataSources(grantedDataSources?.filter((item) => item.id !== removedDataSource.id)); onSuccess(); }) .catch((error) => { @@ -94,9 +94,9 @@ export const usePermissions = ( }; const updateGrantedWorkspace = (workspace: IGrantedWorkspace) => { - const updatedWorkspace = grantedWorkspaces.find((item) => item.id === workspace.id); + const updatedWorkspace = grantedWorkspaces?.find((item) => item.id === workspace.id); const updatedWorkspaces = [ - ...grantedWorkspaces.filter((item) => item !== updatedWorkspace), + ...(grantedWorkspaces ?? []).filter((item) => item !== updatedWorkspace), workspace, ].sort(sortByName); @@ -110,7 +110,7 @@ export const usePermissions = ( .then(() => { addSuccess(messages.workspaceChangeSuccess); setGrantedWorkspaces(updatedWorkspaces); - if (updatedWorkspace.isHierarchical !== workspace.isHierarchical) { + if (updatedWorkspace?.isHierarchical !== workspace.isHierarchical) { onSuccess(); } }) @@ -122,7 +122,7 @@ export const usePermissions = ( const updateGrantedDataSource = (dataSource: IGrantedDataSource) => { const updatedDataSources = [ - ...grantedDataSources.filter((item) => item.id !== dataSource.id), + ...(grantedDataSources ?? []).filter((item) => item.id !== dataSource.id), dataSource, ].sort(sortByName); @@ -146,19 +146,19 @@ export const usePermissions = ( // update internal array with workspaces after applied changed in workspaces edit mode const onWorkspacesChanged = (workspaces: IGrantedWorkspace[]) => { - const unchangedWorkspaces = grantedWorkspaces.filter( + const unchangedWorkspaces = grantedWorkspaces?.filter( (item) => !workspaces.some((w) => w.id === item.id), ); - setGrantedWorkspaces([...unchangedWorkspaces, ...workspaces].sort(sortByName)); + setGrantedWorkspaces([...(unchangedWorkspaces ?? []), ...workspaces].sort(sortByName)); onSuccess(); }; // update internal array with data sources after applied changed in data sources edit mode const onDataSourcesChanged = (dataSources: IGrantedDataSource[]) => { - const unchangedDataSources = grantedDataSources.filter( + const unchangedDataSources = grantedDataSources?.filter( (item) => !dataSources.some((w) => w.id === item.id), ); - setGrantedDataSources([...unchangedDataSources, ...dataSources].sort(sortByName)); + setGrantedDataSources([...(unchangedDataSources ?? []), ...dataSources].sort(sortByName)); onSuccess(); }; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/types.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/types.ts index f1504a2261f..884075d5417 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/types.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/types.ts @@ -14,14 +14,14 @@ export interface IAddWorkspaceSelectProps { export interface IAddSingleWorkspaceSelectProps { onSelectWorkspace: (workspace: IWorkspaceDescriptor) => void; addedWorkspace: IGrantedWorkspace | undefined; - grantedWorkspaces: IGrantedWorkspace[]; + grantedWorkspaces: IGrantedWorkspace[] | undefined; mode?: "VIEW" | "EDIT"; } export interface IAddDataSourceSelectProps { onSelectDataSource: (dataSource: IDataSourceIdentifierDescriptor) => void; addedDataSources: IGrantedDataSource[]; - grantedDataSources: IGrantedDataSource[]; + grantedDataSources: IGrantedDataSource[] | undefined; } export interface ISelectOption { diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/utils.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/utils.ts index eec795fde16..6ed4d8418c6 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/utils.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/utils.ts @@ -196,7 +196,9 @@ export const extractUserName = (user?: IOrganizationUser | IUser): string | unde return user.fullName || user.email || user.login; // do not use ?? as for example empty email is set to "" }; -export const extractUserGroupName = (userGroup: IOrganizationUserGroup | IUserGroup): string | undefined => { +export const extractUserGroupName = ( + userGroup: IOrganizationUserGroup | IUserGroup | undefined, +): string | undefined => { return userGroup?.name || userGroup?.id; }; @@ -233,7 +235,7 @@ export const workspacePermissionsAssignmentToGrantedWorkspace = ( assignment.hierarchyPermissions.length > 0 ? assignment.hierarchyPermissions : assignment.permissions; return { id: workspace.id, - title: workspace.name, + title: workspace.name ?? "", permissions: assignedPermissions, isHierarchical: assignment.hierarchyPermissions.length > 0, }; @@ -246,7 +248,7 @@ export const dataSourcePermissionsAssignmentToGrantedDataSource = ( const permission = asDataSourcePermission(assignment.permissions); return { id: dataSource.id, - title: dataSource.name, + title: dataSource.name ?? "", permission, }; }; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/AbstractPluggableVisualization.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/AbstractPluggableVisualization.tsx index d88ec41e731..5aa5ef3a69b 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/AbstractPluggableVisualization.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/AbstractPluggableVisualization.tsx @@ -65,11 +65,11 @@ export abstract class AbstractPluggableVisualization implements IVisualization { * Insight that is currently rendered by the pluggable visualization. This field is set during * every call to {@link update} and will remain the same until the next update() call. */ - protected currentInsight: IInsightDefinition; - protected currentOptions: IVisProps; - protected visualizationProperties: IVisualizationProperties; - protected supportedPropertiesList: string[]; - protected propertiesMeta: any; + protected currentInsight!: IInsightDefinition; + protected currentOptions!: IVisProps; + protected visualizationProperties!: IVisualizationProperties; + protected supportedPropertiesList!: string[]; + protected propertiesMeta: any | null; /** * List of properties which affect content of reference point and when these changed, reference point needs to be re-generated @@ -88,10 +88,10 @@ export abstract class AbstractPluggableVisualization implements IVisualization { */ private readonly configPanelElement: string | ElementSelectorFunction; - private hasError: boolean; - private hasEmptyAfm: boolean; + private hasError!: boolean; + private hasEmptyAfm!: boolean; - protected isLoading: boolean; + protected isLoading!: boolean; protected getIsError = (): boolean => { return this.hasEmptyAfm || this.hasError; @@ -110,7 +110,7 @@ export abstract class AbstractPluggableVisualization implements IVisualization { /** * Get an element where the visualization should be mounted */ - protected getElement(): HTMLElement { + protected getElement(): HTMLElement | null { if (typeof this.element === "function") { return this.element(); } @@ -121,7 +121,7 @@ export abstract class AbstractPluggableVisualization implements IVisualization { /** * Get an element where the config panel should be mounted */ - protected getConfigPanelElement(): HTMLElement { + protected getConfigPanelElement(): HTMLElement | null { if (typeof this.configPanelElement === "function") { return this.configPanelElement(); } @@ -199,7 +199,7 @@ export abstract class AbstractPluggableVisualization implements IVisualization { options: IVisProps, insight: IInsightDefinition, executionFactory: IExecutionFactory, - ): IPreparedExecution; + ): IPreparedExecution | null; /** * Get additional visualization executions for multi-layer visualizations. diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx index b77ea5dd586..f69334b0c0b 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx @@ -112,7 +112,7 @@ export class PluggableColumnBarCharts extends PluggableBaseChart { const stackBucket = insightBucket(source, BucketNames.STACK); const hasStackByAttributes = stackBucket && !bucketIsEmpty(stackBucket); - const intersection = event.drillContext.intersection; + const intersection = event.drillContext.intersection ?? []; return hasStackByAttributes ? arrayUtils.shiftArrayRight(intersection) : intersection; } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx index e63482776e3..d65319371db 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx @@ -55,9 +55,8 @@ export class PluggableUnknownChart extends AbstractPluggableVisualization { _options: IVisProps, _insight: IInsightDefinition, _executionFactory: IExecutionFactory, - ) { - const result: IPreparedExecution = null; - return result; + ): IPreparedExecution | null { + return null; } protected renderConfigurationPanel(_insight: IInsightDefinition): void {} @@ -77,6 +76,6 @@ export class PluggableUnknownChart extends AbstractPluggableVisualization { } public unmount(): void { - this.unmountFun([this.getElement()]); + this.unmountFun([this.getElement()!]); } } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/alerts.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/alerts.ts index 0e47a8ac3cd..2f0ac03f20c 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/alerts.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/alerts.ts @@ -64,7 +64,7 @@ export const isInsightAlertingConfigurationEnabled = ( const visualizationProperties = insight ? insightProperties(insight) : {}; const controls = visualizationProperties?.["controls"] ?? {}; - return insight && !controls.disableAlerts; + return !!insight && !controls.disableAlerts; }; /** @@ -76,5 +76,5 @@ export const isInsightScheduledExportsConfigurationEnabled = ( const visualizationProperties = insight ? insightProperties(insight) : {}; const controls = visualizationProperties?.["controls"] ?? {}; - return insight && !controls.disableScheduledExports; + return !!insight && !controls.disableScheduledExports; }; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/PluggableAreaChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/PluggableAreaChart.tsx index baf3904a0f6..3d4d6475861 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/PluggableAreaChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/PluggableAreaChart.tsx @@ -314,7 +314,7 @@ export class PluggableAreaChart extends PluggableBaseChart { const viewBy = getBucketItems(buckets, BucketNames.VIEW); const stackBy = getBucketItems(buckets, BucketNames.STACK); const canSortStackTotal = - properties?.controls?.["stackMeasures"] ?? this.getUiConfig().optionalStacking.stackMeasures; + properties?.controls?.["stackMeasures"] ?? this.getUiConfig().optionalStacking?.stackMeasures; const defaultSort = viewBy.length > 0 ? [newAttributeSort(viewBy[0].localIdentifier, "asc")] : []; @@ -383,7 +383,7 @@ export class PluggableAreaChart extends PluggableBaseChart { if (typeof isStackingMeasures === "undefined") { const measuresBuckets = insightBucket(insight, BucketNames.MEASURES); const stackBuckets = insightBucket(insight, BucketNames.STACK); - return stackBuckets?.items.length > 0 || measuresBuckets?.items?.length > 1; + return (stackBuckets?.items?.length ?? 0) > 0 || (measuresBuckets?.items?.length ?? 0) > 1; } return isStackingMeasures; } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx index dedaf8d96a6..371fe5e6cc1 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx @@ -445,17 +445,17 @@ describe("PluggableAreaChart", () => { visualizationProperties, ); const measureBucket = insightBucket(testInsight, BucketNames.MEASURES); - const expected = stackMeasures === null ? measureBucket?.items.length > 1 : stackMeasures; + const expected = stackMeasures === null ? measureBucket!.items.length > 1 : stackMeasures; chart.update(options, testInsight, emptyPropertiesMeta, executionFactory); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.props.config.stackMeasures).toBe(expected); + expect(renderEl!.props.config!.stackMeasures).toBe(expected); }; it("should modify stack by default of area by config stackMeasures properties", async () => { const areaChart = createComponent(); - verifyStackMeasuresConfig(areaChart, null); + verifyStackMeasuresConfig(areaChart, null as unknown as boolean); verifyStackMeasuresConfig(areaChart, true); verifyStackMeasuresConfig(areaChart, false); }); @@ -480,8 +480,8 @@ describe("PluggableAreaChart", () => { areaChart.update(options, testInsight, emptyPropertiesMeta, executionFactory); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.props.config.stackMeasures).toBe(false); - expect(renderEl.props.config.stackMeasuresToPercent).toBe(false); + expect(renderEl!.props.config!.stackMeasures).toBe(false); + expect(renderEl!.props.config!.stackMeasuresToPercent).toBe(false); }); it("should reset custom controls properties", async () => { @@ -506,8 +506,8 @@ describe("PluggableAreaChart", () => { areaChart.update(options, testInsight, emptyPropertiesMeta, executionFactory); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.props.config.stackMeasures).toBe(true); - expect(renderEl.props.config.stackMeasuresToPercent).toBe(true); + expect(renderEl!.props.config!.stackMeasures).toBe(true); + expect(renderEl!.props.config!.stackMeasuresToPercent).toBe(true); }); it("should reuse one measure, only one category and one category as stack", async () => { @@ -551,7 +551,7 @@ describe("PluggableAreaChart", () => { const mockRefPoint = referencePointMocks.stackMeasuresToPercentReferencePoint; const extendedReferencePoint = await areaChart.getExtendedReferencePoint(mockRefPoint); - expect(extendedReferencePoint.properties.controls).toEqual({ + expect(extendedReferencePoint.properties!.controls).toEqual({ stackMeasures: true, stackMeasuresToPercent: true, }); @@ -588,7 +588,7 @@ describe("PluggableAreaChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/getInsightWithDrillDownAppliedMock.ts index 024c9066fde..b93fc83d8b8 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/getInsightWithDrillDownAppliedMock.ts @@ -14,8 +14,8 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; const { Department, Region, Won } = ReferenceMd; export const targetUri = "target-uri"; @@ -34,8 +34,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, primaryLabel: { uri: departmentUri, }, @@ -55,8 +60,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, primaryLabel: { uri: regionUri, }, @@ -70,7 +80,7 @@ export const intersection: IDrillEventIntersectionElement[] = [ format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts index 20f45134355..4580d041849 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts @@ -87,7 +87,7 @@ export class BarChartDescriptor extends BaseChartDescriptor implements IVisualiz const stackBucket = insightBucket(source, BucketNames.STACK); const hasStackByAttributes = stackBucket && !bucketIsEmpty(stackBucket); - const intersection = event.drillContext.intersection; + const intersection = event.drillContext.intersection ?? []; return hasStackByAttributes ? arrayUtils.shiftArrayRight(intersection) : intersection; } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/tests/PluggableBarChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/tests/PluggableBarChart.test.tsx index 0bcef502c14..5473496526b 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/tests/PluggableBarChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/tests/PluggableBarChart.test.tsx @@ -124,7 +124,7 @@ describe("PluggableBarChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([ + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ]); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/PluggableBaseChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/PluggableBaseChart.tsx index bbef7d9d09d..986ef335151 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/PluggableBaseChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/PluggableBaseChart.tsx @@ -86,13 +86,13 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { protected projectId: string; protected type: ChartType; protected defaultControlsProperties: IVisualizationProperties; - protected customControlsProperties: IVisualizationProperties; - protected colors: IColorConfiguration; - protected references: IReferences; + protected customControlsProperties!: IVisualizationProperties; + protected colors!: IColorConfiguration; + protected references!: IReferences; protected referencePoint: IReferencePoint | undefined; protected ignoreUndoRedo: boolean; - protected axis: string; - protected secondaryAxis: AxisType; + protected axis!: string; + protected secondaryAxis!: AxisType; protected environment: string; protected readonly renderFun: RenderFunction; protected readonly unmountFun: UnmountFunction; @@ -101,8 +101,8 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { constructor(props: IVisConstruct) { super(props); - this.projectId = props.projectId; - this.environment = props.environment; + this.projectId = props.projectId ?? ""; + this.environment = props.environment ?? ""; this.type = VisualizationTypes.COLUMN; this.ignoreUndoRedo = false; this.defaultControlsProperties = {}; @@ -114,7 +114,7 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { } public unmount(): void { - this.unmountFun([this.getElement(), this.getConfigPanelElement()].filter(Boolean)); + this.unmountFun([this.getElement()!, this.getConfigPanelElement()!].filter(Boolean)); } /** @@ -192,8 +192,8 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { .forInsight(insight) .withDimensions(...this.getDimensions(insight)) .withSorting(...createSorts(this.type, insight, supportedControls)) - .withDateFormat(dateFormat) - .withExecConfig(executionConfig); + .withDateFormat(dateFormat!) + .withExecConfig(executionConfig!); } protected configureBuckets(extendedReferencePoint: IExtendedReferencePoint): void { @@ -266,7 +266,7 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { const resultingHeight = this.environment === DASHBOARDS_ENVIRONMENT ? height : undefined; const { drillableItems } = custom; const supportedControls: IVisualizationProperties = this.getSupportedControls(insight, options); - const configSupportedControls = isEmpty(supportedControls) ? null : supportedControls; + const configSupportedControls = isEmpty(supportedControls) ? undefined : supportedControls; const fullConfig = this.buildVisualizationConfig(options, configSupportedControls); const execution = this.getExecution(options, insight, executionFactory); @@ -295,8 +295,8 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { isForecastEnabled(this.referencePoint, insight, this.type), )} config={updateConfigWithSettings(fullConfig, this.featureFlags)} - LoadingComponent={null} - ErrorComponent={null} + LoadingComponent={undefined} + ErrorComponent={undefined} theme={theme} {...enhanceBaseChartWithClusteringConfiguration(fullConfig)} />, @@ -401,7 +401,7 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { protected buildVisualizationConfig( options: IVisProps, - supportedControls: IVisualizationProperties, + supportedControls?: IVisualizationProperties, ): IChartConfig { const { config = {}, customVisualizationConfig = {}, a11yTitle, a11yDescription } = options; const colorMapping: IColorMappingItem[] = supportedControls?.["colorMapping"]; @@ -464,9 +464,9 @@ export class PluggableBaseChart extends AbstractPluggableVisualization { } protected reuseCurrentSort( - previousAvailableSorts: IAvailableSortsGroup[], - properties: IVisualizationProperties, - availableSorts: IAvailableSortsGroup[], + previousAvailableSorts: IAvailableSortsGroup[] | undefined, + properties: IVisualizationProperties | undefined, + availableSorts: IAvailableSortsGroup[] | undefined, defaultSort: ISortItem[], ) { const previousSort = properties?.sortItems; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/insightIntrospection.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/insightIntrospection.ts index 82c8b8bfc02..2433805c95a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/insightIntrospection.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/insightIntrospection.ts @@ -19,7 +19,7 @@ function filterOutStylingMetric(bucketItems: IAttributeOrMeasure[], insight: IIn }); } -export function countBucketItems(insight: IInsightDefinition): { +export function countBucketItems(insight: IInsightDefinition | undefined): { viewByItemCount: number; measureItemCount: number; secondaryMeasureItemCount: number; @@ -48,9 +48,9 @@ export function countBucketItems(insight: IInsightDefinition): { } export function countItemsOnAxes( - type: string, - controls: IVisualizationProperties, - insight: IInsightDefinition, + type: string | undefined, + controls: IVisualizationProperties | undefined, + insight: IInsightDefinition | undefined, ): { xaxis: number; yaxis: number; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx index fffb384fbf2..a1f70574d49 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx @@ -118,7 +118,7 @@ describe("PluggableBaseChart", () => { const visualization = createComponent(props); const options: IVisProps = { - dimensions: { height: null }, + dimensions: { height: undefined }, locale: dummyLocale, custom: {}, messages, @@ -144,7 +144,7 @@ describe("PluggableBaseChart", () => { const visualization = createComponent(props); const options: IVisProps = { - dimensions: { height: null }, + dimensions: { height: undefined }, locale: dummyLocale, custom: {}, messages, @@ -189,7 +189,7 @@ describe("PluggableBaseChart", () => { const renderEl = getLastRenderEl(mockRenderFun, mockElement); expect(renderEl).toBeDefined(); - expect(renderEl.props.config.legend.position).toEqual("right"); + expect(renderEl!.props.config!.legend!.position).toEqual("right"); }); it("should render configuration panel with correct properties", () => { @@ -214,7 +214,7 @@ describe("PluggableBaseChart", () => { // compare without intl and pushData, filtering out undefined values and nested undefined values for React 19 compatibility const actualProps = { - ...renderEl.props, + ...renderEl!.props, pushData: noop, // cannot be inline otherwise comparison fails, see above comment }; @@ -266,7 +266,7 @@ describe("PluggableBaseChart", () => { const renderEl = getLastRenderEl(mockRenderFun, mockElement); expect(renderEl).toBeDefined(); - expect(renderEl.props.height).toBeUndefined(); + expect(renderEl!.props.height).toBeUndefined(); }); it( @@ -503,7 +503,7 @@ describe("PluggableBaseChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); }); @@ -547,7 +547,7 @@ describe("PluggableBaseChart", () => { const renderEl = getLastRenderEl(mockRenderFun, mockElement); expect(renderEl).toBeDefined(); - expect(renderEl.props.config.legend.position).toEqual(expectedPosition); + expect(renderEl!.props.config!.legend!.position).toEqual(expectedPosition); }, ); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/getInsightWithDrillDownAppliedMock.ts index 8b7fbb6448b..6d589942c8e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/getInsightWithDrillDownAppliedMock.ts @@ -15,8 +15,8 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; const { Department, Region, Won } = ReferenceMd; const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; export const targetUri = "target-uri"; @@ -28,7 +28,7 @@ export const intersection: IDrillEventIntersectionElement[] = [ format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }, }, @@ -45,8 +45,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, primaryLabel: { uri: regionUri, }, @@ -66,8 +71,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, primaryLabel: { uri: departmentUri, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/tests/PluggableBubbleChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/tests/PluggableBubbleChart.test.tsx index c0fbd30b9f5..a054206cac4 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/tests/PluggableBubbleChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/tests/PluggableBubbleChart.test.tsx @@ -196,7 +196,7 @@ describe("PluggableBubbleChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts index f55223f2679..ab59a9c19c3 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts @@ -88,7 +88,7 @@ export class BulletChartDescriptor extends BaseChartDescriptor implements IVisua ) { const clicked = drillDownFromAttributeLocalId(drillConfig); - const cutIntersection = getIntersectionPartAfter(event.drillContext.intersection, clicked); + const cutIntersection = getIntersectionPartAfter(event.drillContext.intersection ?? [], clicked); return addIntersectionFiltersToInsight(insight, cutIntersection, backendSupportsElementUris); } } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx index 02ee31f8ba6..257a6018585 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx @@ -142,7 +142,7 @@ export class PluggableBulletChart extends PluggableBaseChart { ) { const clicked = drillDownFromAttributeLocalId(drillConfig); - const cutIntersection = getIntersectionPartAfter(event.drillContext.intersection, clicked); + const cutIntersection = getIntersectionPartAfter(event.drillContext.intersection ?? [], clicked); return addIntersectionFiltersToInsight(source, cutIntersection, backendSupportsElementUris); } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx index 683dda467ae..c9fe6486568 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx @@ -416,7 +416,7 @@ describe("PluggableBulletChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([ + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ]); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/getInsightWithDrillDownAppliedMock.ts index 3bab63d6c91..6d97ea48d40 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/getInsightWithDrillDownAppliedMock.ts @@ -15,8 +15,8 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; const { Department, Region, Won } = ReferenceMd; const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; export const targetUri = "target-uri"; @@ -28,7 +28,7 @@ export const intersection: IDrillEventIntersectionElement[] = [ format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }, }, @@ -45,8 +45,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, primaryLabel: { uri: regionUri, }, @@ -66,8 +71,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, primaryLabel: { uri: departmentUri, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/chartCodeGenUtils.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/chartCodeGenUtils.ts index cb723c29e27..6178e049238 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/chartCodeGenUtils.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/chartCodeGenUtils.ts @@ -1,11 +1,13 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type IForecastConfig } from "@gooddata/sdk-backend-spi"; import { type IInsightDefinition, factoryNotationFor, insightProperties, + isColorFromPalette, isColorMappingItem, + isRgbColor, } from "@gooddata/sdk-model"; import { type IChartConfig } from "@gooddata/sdk-ui-charts"; @@ -127,7 +129,14 @@ export function chartAdditionalFactories(options?: { package: getColorMappingPredicatePackage, }, transformation: (obj) => { - return isColorMappingItem(obj) + // sdk-model's isColorMappingItem is intentionally permissive (checks only `id` + `color` presence). + // That can collide with other objects (e.g. GeoChartNext layer objects have `id` and `color` too). + // Narrow down to actual IColor payloads to avoid accidental rewrites like `{ predicate, color }` + // on non-color-mapping objects. + const isActualColorMappingItem = + isColorMappingItem(obj) && (isRgbColor(obj.color) || isColorFromPalette(obj.color)); + + return isActualColorMappingItem ? `{predicate: getColorMappingPredicate("${obj.id}"), color: ${factoryNotationFor( obj.color, )}}` @@ -163,6 +172,6 @@ const chartForecastConfigPropMeta: PropMeta = { export function chartForecastConfigInsightConversion( propName: TPropKey, -): IInsightToPropConversion { +): IInsightToPropConversion { return insightConversion(propName, chartForecastConfigPropMeta, chartForecastConfigFromInsight); } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts index 3e7ab563f53..d13f60100c0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts @@ -87,7 +87,7 @@ export class ColumnChartDescriptor extends BaseChartDescriptor implements IVisua const stackBucket = insightBucket(insight, BucketNames.STACK); const hasStackByAttributes = stackBucket && !bucketIsEmpty(stackBucket); - const intersection = event.drillContext.intersection; + const intersection = event.drillContext.intersection ?? []; return hasStackByAttributes ? arrayUtils.shiftArrayRight(intersection) : intersection; } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/tests/PluggableColumnChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/tests/PluggableColumnChart.test.tsx index 048996e08ff..2dc27d11d95 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/tests/PluggableColumnChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/tests/PluggableColumnChart.test.tsx @@ -111,7 +111,7 @@ describe("PluggableColumnChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([ + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ]); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/PluggableComboChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/PluggableComboChart.tsx index 102d008dc9b..0dbd02c22ca 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/PluggableComboChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/PluggableComboChart.tsx @@ -143,7 +143,7 @@ export class PluggableComboChart extends PluggableBaseChart { * if there is more than one metric */ const isMoreThanOneMeasure = - findBucket(referencePoint.buckets, BucketNames.MEASURES)?.items.length > 1; + (findBucket(referencePoint.buckets, BucketNames.MEASURES)?.items?.length ?? 0) > 1; this.defaultControlsProperties = { stackMeasures: this.isStackMeasuresByDefault() && isMoreThanOneMeasure, }; @@ -266,7 +266,7 @@ export class PluggableComboChart extends PluggableBaseChart { return baseVisualizationConfig; } - private configureChartTypes(referencePoint: IReferencePoint): IVisualizationProperties { + private configureChartTypes(referencePoint: IReferencePoint): IVisualizationProperties | undefined { const buckets = referencePoint?.buckets ?? []; const controls = referencePoint?.properties?.controls ?? {}; const primaryChartType = @@ -324,7 +324,7 @@ export class PluggableComboChart extends PluggableBaseChart { const isStackingMeasures = this.visualizationProperties?.controls?.["stackMeasures"]; if (typeof isStackingMeasures === "undefined") { const buckets = insightBucket(insight, BucketNames.MEASURES); - return isAreaChart(this.primaryChartType) && buckets?.items.length > 1; + return isAreaChart(this.primaryChartType) && (buckets?.items?.length ?? 0) > 1; } return isStackingMeasures; } @@ -394,7 +394,7 @@ export class PluggableComboChart extends PluggableBaseChart { availableSorts: ISortConfig["availableSorts"], ): { disabled: boolean; - disabledExplanation: string; + disabledExplanation: string | undefined; } { const { buckets } = referencePoint; const measures = getBucketItemsByType(buckets, BucketNames.MEASURES, [METRIC]); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChart.test.tsx index ddf14b5bfa4..47c8bfaa467 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChart.test.tsx @@ -216,7 +216,7 @@ describe("PluggableComboChart", () => { ["", multipleMetricsAndCategoriesReferencePoint, ["m3", "m4"]], ])( "should %s add measure identifiers into properties", - async (_desc: string, refPoint: IReferencePoint, expectedMeasures: string[]) => { + async (_desc: string, refPoint: IReferencePoint, expectedMeasures: string[] | undefined) => { const chart = createComponent(defaultProps); const extendedReferencePoint = await chart.getExtendedReferencePoint(refPoint); const measures = extendedReferencePoint?.properties?.controls?.["secondary_yaxis"]?.measures; @@ -258,7 +258,7 @@ describe("PluggableComboChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([ + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ]); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChartDeprecated.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChartDeprecated.test.tsx index 737c4d655a1..4dd62bc190e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChartDeprecated.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/tests/PluggableComboChartDeprecated.test.tsx @@ -126,7 +126,7 @@ describe("PluggableComboChartDeprecated", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/tests/PluggableDependencyWheelChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/tests/PluggableDependencyWheelChart.test.tsx index a02ff8a851a..b8e0f79061c 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/tests/PluggableDependencyWheelChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/tests/PluggableDependencyWheelChart.test.tsx @@ -107,7 +107,7 @@ describe("PluggableDependencyWheelChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/tests/PluggableDonutChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/tests/PluggableDonutChart.test.tsx index 3b3e784ee32..9a8b68bf366 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/tests/PluggableDonutChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/tests/PluggableDonutChart.test.tsx @@ -119,7 +119,7 @@ describe("PluggableDonutChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/drillDownUtil.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/drillDownUtil.ts index 685f5192853..c507ac0b9f2 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/drillDownUtil.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/drillDownUtil.ts @@ -173,10 +173,10 @@ export function sanitizeTableProperties(insight: IInsight): IInsight { } export function convertIntersectionToFilters( - intersections: IDrillEventIntersectionElement[], + intersections: IDrillEventIntersectionElement[] | undefined | null, backendSupportsElementUris: boolean = true, ): IFilter[] { - return intersections + return (intersections ?? []) .map((intersection) => intersection.header) .filter(isDrillIntersectionAttributeItem) .map((header) => { @@ -194,8 +194,8 @@ export function convertIntersectionToFilters( export function reverseAndTrimIntersection( drillConfig: IDrillDownDefinition, - intersection?: IDrillEventIntersectionElement[], -): IDrillEventIntersectionElement[] { + intersection?: IDrillEventIntersectionElement[] | null, +): IDrillEventIntersectionElement[] | undefined | null { if (!intersection || intersection.length === 0) { return intersection; } @@ -210,7 +210,7 @@ export function reverseAndTrimIntersection( */ export function addIntersectionFiltersToInsight( source: IInsight, - intersection: IDrillEventIntersectionElement[], + intersection: IDrillEventIntersectionElement[] | undefined | null, backendSupportsElementUris: boolean, ): IInsight { const filters = convertIntersectionToFilters(intersection, backendSupportsElementUris); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/tests/PluggableFunnelChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/tests/PluggableFunnelChart.test.tsx index d90dcb4956f..069a231bc0d 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/tests/PluggableFunnelChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/tests/PluggableFunnelChart.test.tsx @@ -82,7 +82,7 @@ describe("PluggableFunnelChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts index 4102a297f7e..08ff4d42af0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts @@ -1,8 +1,7 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type IInsightDefinition, type ISettings } from "@gooddata/sdk-model"; -import { BucketNames } from "@gooddata/sdk-ui"; -import { type IGeoAreaChartProps } from "@gooddata/sdk-ui-geo/next"; +import { type IGeoChartNextProps } from "@gooddata/sdk-ui-geo/next"; import { PluggableGeoAreaChart } from "./PluggableGeoAreaChart.js"; import { type IFluidLayoutDescriptor } from "../../../interfaces/LayoutDescriptor.js"; @@ -14,18 +13,19 @@ import { } from "../../../interfaces/VisualizationDescriptor.js"; import { executionConfigInsightConversion, - filtersInsightConversion, getInsightToPropsConverter, getReactEmbeddingCodeGenerator, insightConversion, - singleAttributeBucketConversion, - singleAttributeOrMeasureBucketConversion, - sortsInsightConversion, + sdkModelPropMetas, } from "../../../utils/embeddingCodeGenerator/index.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories } from "../chartCodeGenUtils.js"; import { MAX_VISUALIZATION_HEIGHT, MIDDLE_VISUALIZATION_HEIGHT } from "../constants.js"; -import { geoConfigFromInsight, geoInsightConversion } from "../geoChartNext/geoConfigBuilder.js"; +import { geoConfigFromInsight } from "../geoChartNext/geoConfigBuilder.js"; +import { + buildGeoChartNextGlobalFilters, + buildGeoChartNextLayers, +} from "../geoChartNext/geoEmbeddingLayers.js"; /** * @alpha @@ -62,18 +62,31 @@ export class GeoAreaChartDescriptor extends BaseChartDescriptor implements IVisu return MAX_VISUALIZATION_HEIGHT; } - public getEmbeddingCode = getReactEmbeddingCodeGenerator({ + private readonly geoChartEmbeddingCodeGenerator = getReactEmbeddingCodeGenerator({ component: { importType: "named", - name: "GeoAreaChart", + name: "GeoChartNext", package: "@gooddata/sdk-ui-geo/next", }, - insightToProps: getInsightToPropsConverter({ - area: geoInsightConversion("area", BucketNames.AREA), - color: singleAttributeOrMeasureBucketConversion("color", BucketNames.COLOR), - segmentBy: singleAttributeBucketConversion("segmentBy", BucketNames.SEGMENT), - filters: filtersInsightConversion("filters"), - sortBy: sortsInsightConversion("sortBy"), + insightToProps: getInsightToPropsConverter({ + type: insightConversion("type", { cardinality: "scalar" }, () => "area"), + layers: insightConversion( + "layers", + { + typeImport: { + importType: "named", + name: "IGeoLayer", + package: "@gooddata/sdk-ui-geo/next", + }, + cardinality: "array", + }, + (insight) => buildGeoChartNextLayers(insight, "area"), + ), + filters: insightConversion( + "filters", + sdkModelPropMetas.Filter.Multiple, + buildGeoChartNextGlobalFilters, + ), config: insightConversion( "config", { @@ -93,6 +106,15 @@ export class GeoAreaChartDescriptor extends BaseChartDescriptor implements IVisu }), }); + public getEmbeddingCode: ReturnType = (insight, config) => { + const layers = buildGeoChartNextLayers(insight, "area"); + if (!layers.length) { + return ""; + } + + return this.geoChartEmbeddingCodeGenerator(insight, config); + }; + public getMeta(): IVisualizationMeta { return { documentationUrl: diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx index 058d2cdd99e..48f2d2c0c5a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx @@ -58,12 +58,12 @@ import { } from "../../../interfaces/Visualization.js"; import { configurePercent } from "../../../utils/bucketConfig.js"; import { limitNumberOfMeasuresInBuckets } from "../../../utils/bucketHelper.js"; +import { routeLocalIdRefFiltersToLayers } from "../../../utils/filters/routeLocalIdRefFiltersToLayers.js"; import { removeSort } from "../../../utils/sort.js"; import { setGeoAreaUiConfig } from "../../../utils/uiConfigHelpers/geoAreaChartUiConfigHelper.js"; import { GeoAreaConfigurationPanel } from "../../configurationPanels/GeoAreaConfigurationPanel.js"; import { PluggableBaseChart } from "../baseChart/PluggableBaseChart.js"; import { createAttributeRef } from "../geoChartNext/geoAttributeHelper.js"; -import { sanitizeGeoLayerGlobalFilters } from "../geoChartNext/geoLayerFilterSanitization.js"; type GeoChartNextExecutionProps = Parameters[0]; @@ -188,14 +188,18 @@ export class PluggableGeoAreaChart extends PluggableBaseChart { executionFactory: IExecutionFactory, ) { const { primaryLayer, config, filters } = this.buildPrimaryLayerContext(options, insight); - const sanitizedFilters = sanitizeGeoLayerGlobalFilters(primaryLayer, filters); + const { globalFilters, routedByLayerId } = routeLocalIdRefFiltersToLayers(filters, [ + { id: primaryLayer.id, buckets: insightBuckets(insight) }, + ...insightLayers(insight).map((l) => ({ id: l.id, buckets: l.buckets })), + ]); + const effectiveFilters = [...globalFilters, ...(routedByLayerId.get(primaryLayer.id) ?? [])]; return buildLayerExecution(primaryLayer, { backend: this.backend, workspace: this.workspace, config, execConfig: options.executionConfig, - globalFilters: sanitizedFilters, + globalFilters: effectiveFilters, executionFactory, }); } @@ -205,7 +209,11 @@ export class PluggableGeoAreaChart extends PluggableBaseChart { insight: IInsightDefinition, executionFactory: IExecutionFactory, ): IPreparedExecution[] { - const { config, filters } = this.buildPrimaryLayerContext(options, insight); + const { primaryLayer, config, filters } = this.buildPrimaryLayerContext(options, insight); + const { globalFilters, routedByLayerId } = routeLocalIdRefFiltersToLayers(filters, [ + { id: primaryLayer.id, buckets: insightBuckets(insight) }, + ...insightLayers(insight).map((l) => ({ id: l.id, buckets: l.buckets })), + ]); const insightLayerDefs = insightLayers(insight); const additionalLayers = insightLayersToGeoLayers(insightLayerDefs); const resolvedAdditionalLayers = additionalLayers.filter((layer) => !this.shouldSkipLayer(layer)); @@ -214,7 +222,8 @@ export class PluggableGeoAreaChart extends PluggableBaseChart { resolvedAdditionalLayers, options, config, - filters, + globalFilters, + routedByLayerId, executionFactory, ); } @@ -336,7 +345,8 @@ export class PluggableGeoAreaChart extends PluggableBaseChart { layers: IGeoLayer[], options: IVisProps, config: IGeoAreaChartConfig, - filters: IFilter[], + globalFilters: IFilter[], + routedByLayerId: Map, executionFactory: IExecutionFactory, ): IPreparedExecution[] { if (!layers.length) { @@ -344,13 +354,13 @@ export class PluggableGeoAreaChart extends PluggableBaseChart { } return layers.map((layer) => { - const sanitizedFilters = sanitizeGeoLayerGlobalFilters(layer, filters); + const effectiveFilters = [...globalFilters, ...(routedByLayerId.get(layer.id) ?? [])]; return buildLayerExecution(layer, { backend: this.backend, workspace: this.workspace, config, execConfig: options.executionConfig, - globalFilters: sanitizedFilters, + globalFilters: effectiveFilters, executionFactory, }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/PluggableGeoPushpinChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/PluggableGeoPushpinChart.tsx index 669489f8901..8799aadffee 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/PluggableGeoPushpinChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/PluggableGeoPushpinChart.tsx @@ -165,7 +165,7 @@ export class PluggableGeoPushpinChart extends PluggableBaseChart { .forBuckets(buckets, insightFilters(insight)) .withDimensions(getGeoChartDimensions) .withSorting(...this.createSort(insight)) - .withExecConfig(executionConfig); + .withExecConfig(executionConfig!); } protected override getSupportedPropertiesList(): string[] { @@ -322,9 +322,9 @@ export class PluggableGeoPushpinChart extends PluggableBaseChart { onExportReady: this.onExportReady, onLoadingChanged: this.onLoadingChanged, onDataView: this.onDataView, - LoadingComponent: null, - ErrorComponent: null, - theme, + LoadingComponent: undefined, + ErrorComponent: undefined, + theme: theme!, enableExecutionCancelling: fullConfig.enableExecutionCancelling ?? false, }; @@ -405,7 +405,7 @@ export class PluggableGeoPushpinChart extends PluggableBaseChart { private getPreferredBucketItemLimit(preferredBucket: string): number { const { buckets: bucketsUiConfig } = this.getUiConfig(); - return bucketsUiConfig[preferredBucket].itemsLimit; + return bucketsUiConfig[preferredBucket].itemsLimit!; } private updateSupportedProperties(referencePoint: IExtendedReferencePoint): IExtendedReferencePoint { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/geoConfigCodeGenerator.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/geoConfigCodeGenerator.ts index effe483be5e..6d2dc48a849 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/geoConfigCodeGenerator.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/geoConfigCodeGenerator.ts @@ -59,7 +59,7 @@ export function geoConfigFromInsight(insight: IInsightDefinition, ctx?: IEmbeddi export function geoInsightConversion( propName: TPropKey, bucketName: string, -): IInsightToPropConversion { +): IInsightToPropConversion { return { propName, propType: sdkModelPropMetas.Attribute.Single, @@ -71,19 +71,19 @@ export function geoInsightConversion({ - latitude: geoInsightConversion("latitude", BucketNames.LATITUDE), - longitude: geoInsightConversion("longitude", BucketNames.LONGITUDE), - size: singleAttributeOrMeasureBucketConversion("size", BucketNames.SIZE), - color: singleAttributeOrMeasureBucketConversion("color", BucketNames.COLOR), - segmentBy: singleAttributeBucketConversion("segmentBy", BucketNames.SEGMENT), - filters: filtersInsightConversion("filters"), - sortBy: sortsInsightConversion("sortBy"), + insightToProps: getInsightToPropsConverter({ + type: insightConversion("type", { cardinality: "scalar" }, () => "pushpin"), + layers: insightConversion( + "layers", + { + typeImport: { + importType: "named", + name: "IGeoLayer", + package: "@gooddata/sdk-ui-geo/next", + }, + cardinality: "array", + }, + (insight) => buildGeoChartNextLayers(insight, "pushpin"), + ), + filters: insightConversion( + "filters", + sdkModelPropMetas.Filter.Multiple, + buildGeoChartNextGlobalFilters, + ), config: insightConversion( "config", { @@ -95,6 +103,15 @@ export class GeoPushpinChartNextDescriptor extends BaseChartDescriptor implement }), }); + public getEmbeddingCode: ReturnType = (insight, config) => { + const layers = buildGeoChartNextLayers(insight, "pushpin"); + if (!layers.length) { + return ""; + } + + return this.geoChartEmbeddingCodeGenerator(insight, config); + }; + public getMeta(): IVisualizationMeta { return { documentationUrl: diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx index cc5a8c64566..1a7957c19be 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx @@ -15,6 +15,7 @@ import { bucketAttribute, bucketItems, insightBucket, + insightBuckets, insightFilters, insightHasDataDefined, insightLayers, @@ -40,7 +41,6 @@ import { getPrimaryLayerControls, } from "./geoAttributeHelper.js"; import { buildGeoVisualizationConfig } from "./geoConfigBuilder.js"; -import { sanitizeGeoLayerGlobalFilters } from "./geoLayerFilterSanitization.js"; import { createConfiguredBuckets, createSortForSegment, @@ -62,6 +62,7 @@ import { } from "../../../interfaces/Visualization.js"; import { configurePercent } from "../../../utils/bucketConfig.js"; import { limitNumberOfMeasuresInBuckets } from "../../../utils/bucketHelper.js"; +import { routeLocalIdRefFiltersToLayers } from "../../../utils/filters/routeLocalIdRefFiltersToLayers.js"; import { removeSort } from "../../../utils/sort.js"; import { setGeoPushpinUiConfig } from "../../../utils/uiConfigHelpers/geoPushpinChartUiConfigHelper.js"; import { GeoPushpinConfigurationPanel } from "../../configurationPanels/GeoPushpinConfigurationPanel.js"; @@ -224,14 +225,18 @@ export class PluggableGeoPushpinChartNext extends PluggableBaseChart { executionFactory: IExecutionFactory, ) { const { primaryLayer, config, filters } = this.buildPrimaryLayerContext(options, insight); - const sanitizedFilters = sanitizeGeoLayerGlobalFilters(primaryLayer, filters); + const { globalFilters, routedByLayerId } = routeLocalIdRefFiltersToLayers(filters, [ + { id: primaryLayer.id, buckets: insightBuckets(insight) }, + ...insightLayers(insight).map((l) => ({ id: l.id, buckets: l.buckets })), + ]); + const effectiveFilters = [...globalFilters, ...(routedByLayerId.get(primaryLayer.id) ?? [])]; return buildLayerExecution(primaryLayer, { backend: this.backend, workspace: this.workspace, config, execConfig: options.executionConfig, - globalFilters: sanitizedFilters, + globalFilters: effectiveFilters, executionFactory, }); } @@ -241,7 +246,11 @@ export class PluggableGeoPushpinChartNext extends PluggableBaseChart { insight: IInsightDefinition, executionFactory: IExecutionFactory, ): IPreparedExecution[] { - const { config, filters } = this.buildPrimaryLayerContext(options, insight); + const { primaryLayer, config, filters } = this.buildPrimaryLayerContext(options, insight); + const { globalFilters, routedByLayerId } = routeLocalIdRefFiltersToLayers(filters, [ + { id: primaryLayer.id, buckets: insightBuckets(insight) }, + ...insightLayers(insight).map((l) => ({ id: l.id, buckets: l.buckets })), + ]); const insightLayerDefs = insightLayers(insight); const additionalLayers = insightLayersToGeoLayers(insightLayerDefs); const resolvedAdditionalLayers = additionalLayers.filter((layer) => !this.shouldSkipLayer(layer)); @@ -250,7 +259,8 @@ export class PluggableGeoPushpinChartNext extends PluggableBaseChart { resolvedAdditionalLayers, options, config, - filters, + globalFilters, + routedByLayerId, executionFactory, ); } @@ -406,7 +416,8 @@ export class PluggableGeoPushpinChartNext extends PluggableBaseChart { layers: IGeoLayer[], options: IVisProps, config: IGeoPushpinChartNextConfig, - filters: IFilter[], + globalFilters: IFilter[], + routedByLayerId: Map, executionFactory: IExecutionFactory, ): IPreparedExecution[] { if (!layers.length) { @@ -414,13 +425,13 @@ export class PluggableGeoPushpinChartNext extends PluggableBaseChart { } return layers.map((layer) => { - const sanitizedFilters = sanitizeGeoLayerGlobalFilters(layer, filters); + const effectiveFilters = [...globalFilters, ...(routedByLayerId.get(layer.id) ?? [])]; return buildLayerExecution(layer, { backend: this.backend, workspace: this.workspace, config, execConfig: options.executionConfig, - globalFilters: sanitizedFilters, + globalFilters: effectiveFilters, executionFactory, }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts new file mode 100644 index 00000000000..676f3d1e573 --- /dev/null +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts @@ -0,0 +1,64 @@ +// (C) 2025-2026 GoodData Corporation + +import { describe, expect, it } from "vitest"; + +import { idRef, newAttribute, newBucket, newInsightDefinition } from "@gooddata/sdk-model"; +import { BucketNames } from "@gooddata/sdk-ui"; + +import { geoConfigFromInsight, geoInsightConversion } from "./geoConfigBuilder.js"; +import { type IEmbeddingCodeContext } from "../../../interfaces/VisualizationDescriptor.js"; + +describe("geoConfigFromInsight", () => { + it("converts tooltip text identifiers to attributes and keeps mapStyle", () => { + const areaAttribute = newAttribute(idRef("label.area", "displayForm"), (attribute) => + attribute.localId("area_df"), + ); + const insight = newInsightDefinition("local:geoArea", (builder) => + builder.buckets([newBucket(BucketNames.AREA, areaAttribute)]).properties({ + controls: { + tooltipText: "label.area.tooltip", + mapStyle: "gd://custom-style", + }, + }), + ); + + const config = geoConfigFromInsight(insight); + + expect(config.mapStyle).toBe("gd://custom-style"); + expect(config.tooltipText?.attribute?.localIdentifier).toBe("tooltipText_df"); + }); + + it("falls back to location attribute when area bucket is missing", () => { + const locationAttribute = newAttribute(idRef("label.location", "displayForm"), (attribute) => + attribute.localId("location_df"), + ); + const insight = newInsightDefinition("local:geoPushpin", (builder) => + builder.buckets([newBucket(BucketNames.LOCATION, locationAttribute)]).properties({ + controls: { + tooltipText: "label.location.tooltip", + }, + }), + ); + + const config = geoConfigFromInsight(insight); + + expect(config.tooltipText?.attribute?.localIdentifier).toBe("tooltipText_df"); + }); +}); + +describe("geoInsightConversion", () => { + it("returns area bucket attribute when converting AREA bucket", () => { + const areaAttribute = newAttribute(idRef("label.area", "displayForm"), (attribute) => + attribute.localId("area_df"), + ); + const insight = newInsightDefinition("local:geoArea", (builder) => + builder.buckets([newBucket(BucketNames.AREA, areaAttribute)]), + ); + + const conversion = geoInsightConversion<{ area: unknown }, "area">("area", BucketNames.AREA); + const ctx = {} as IEmbeddingCodeContext; + const attribute = conversion.itemAccessor(insight, ctx); + + expect(attribute?.attribute?.localIdentifier).toBe("area_df"); + }); +}); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts index 9d51dd29d65..80d88c4849e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type IAttribute, @@ -12,7 +12,9 @@ import { } from "@gooddata/sdk-model"; import { BucketNames } from "@gooddata/sdk-ui"; import { type IGeoPushpinChartNextConfig } from "@gooddata/sdk-ui-geo/next"; +import { type IColorMapping } from "@gooddata/sdk-ui-vis-commons"; +import { createAttributeRef } from "./geoAttributeHelper.js"; import { ANALYTICAL_ENVIRONMENT, DASHBOARDS_ENVIRONMENT } from "../../../constants/properties.js"; import { type IVisProps, type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { type IEmbeddingCodeContext } from "../../../interfaces/VisualizationDescriptor.js"; @@ -23,7 +25,7 @@ import { export interface IBuildGeoConfigParams { options: IVisProps; supportedControls: IVisualizationProperties; - colorMapping: unknown[]; + colorMapping: IColorMapping[] | undefined; environment: string; } @@ -98,6 +100,7 @@ const supportedGeoConfigProperties = new Set([ "cooperativeGestures", "legend", "limit", + "mapStyle", "selectedSegmentItems", "separators", "viewport", @@ -117,6 +120,7 @@ export function geoConfigFromInsight( ...controls, ...(ctx?.settings?.separators ? { separators: ctx?.settings?.separators } : {}), }; + const tooltipText = controls["tooltipText"]; const configFromProperties = Object.fromEntries( Object.entries(withValuesFromContext).filter( @@ -125,15 +129,19 @@ export function geoConfigFromInsight( ), ) as unknown as IGeoPushpinChartNextConfig; + const tooltipTextAttribute = + typeof tooltipText === "string" ? buildTooltipTextAttribute(insight, tooltipText) : undefined; + return { ...configFromProperties, + ...(tooltipTextAttribute ? { tooltipText: tooltipTextAttribute } : {}), }; } export function geoInsightConversion( propName: TPropKey, bucketName: string, -): IInsightToPropConversion { +): IInsightToPropConversion { return { propName, propType: sdkModelPropMetas.Attribute.Single, @@ -145,19 +153,24 @@ export function geoInsightConversion attribute.localId("tooltipText_df")); +} + +function getTooltipBaseAttribute(insight: IInsightDefinition): IAttribute | undefined { + const areaBucket = insightBucket(insight, BucketNames.AREA); + const areaAttribute = areaBucket && bucketAttribute(areaBucket); + if (areaAttribute) { + return areaAttribute; + } + + const locationBucket = insightBucket(insight, BucketNames.LOCATION); + return locationBucket && bucketAttribute(locationBucket); +} diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoEmbeddingLayers.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoEmbeddingLayers.ts new file mode 100644 index 00000000000..aa27d525e58 --- /dev/null +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoEmbeddingLayers.ts @@ -0,0 +1,105 @@ +// (C) 2025-2026 GoodData Corporation + +import { + type IFilter, + type IInsightDefinition, + insightBuckets, + insightFilters, + insightLayers, + insightProperties, + insightSorts, +} from "@gooddata/sdk-model"; +import { + type IGeoLayer, + type IGeoLayerArea, + type IGeoLayerPushpin, + insightLayerToGeoLayer, + insightLayersToGeoLayers, +} from "@gooddata/sdk-ui-geo/next"; + +import { routeLocalIdRefFiltersToLayers } from "../../../utils/filters/routeLocalIdRefFiltersToLayers.js"; + +/** + * Builds the layer definitions for GeoChartNext programmatic embedding. + * + * @internal + */ +export function buildGeoChartNextLayers( + insight: IInsightDefinition, + primaryType: "area" | "pushpin", +): IGeoLayer[] { + const sorts = insightSorts(insight); + const primaryLayerDefinition = { + id: "primary", + type: primaryType, + buckets: insightBuckets(insight), + ...(sorts.length ? { sorts } : {}), + properties: insightProperties(insight), + }; + + const primaryLayer = insightLayerToGeoLayer(primaryLayerDefinition); + const additionalLayers = insightLayersToGeoLayers(insightLayers(insight)); + + const layers = primaryLayer ? [primaryLayer, ...additionalLayers] : additionalLayers; + const layerContexts = [ + { id: "primary", buckets: insightBuckets(insight) }, + ...insightLayers(insight).map((l) => ({ id: l.id, buckets: l.buckets })), + ]; + const { routedByLayerId } = routeLocalIdRefFiltersToLayers(insightFilters(insight), layerContexts); + + return layers + .map((layer) => attachLayerSpecificFilters(layer, routedByLayerId)) + .map(sanitizeLayerForEmbedding); +} + +export function buildGeoChartNextGlobalFilters(insight: IInsightDefinition): IFilter[] { + const layerContexts = [ + { id: "primary", buckets: insightBuckets(insight) }, + ...insightLayers(insight).map((l) => ({ id: l.id, buckets: l.buckets })), + ]; + return routeLocalIdRefFiltersToLayers(insightFilters(insight), layerContexts).globalFilters; +} + +function attachLayerSpecificFilters(layer: IGeoLayer, routedByLayerId: Map): IGeoLayer { + const layerMeasureFilters = routedByLayerId.get(layer.id) ?? []; + if (!layerMeasureFilters.length) { + return layer; + } + + const existingLayerFilters = layer.filters ?? []; + return { + ...layer, + filters: [...existingLayerFilters, ...layerMeasureFilters], + }; +} + +function sanitizeLayerForEmbedding(layer: IGeoLayer): IGeoLayer { + const base = { + id: layer.id, + type: layer.type, + ...(layer.name ? { name: layer.name } : {}), + ...(layer.color ? { color: layer.color } : {}), + ...(layer.segmentBy ? { segmentBy: layer.segmentBy } : {}), + ...(layer.tooltipText ? { tooltipText: layer.tooltipText } : {}), + ...(layer.filters?.some((f) => f !== null && f !== undefined) ? { filters: layer.filters } : {}), + ...(layer.sortBy?.length ? { sortBy: layer.sortBy } : {}), + }; + + if (layer.type === "area") { + const areaLayer: IGeoLayerArea = { + ...base, + type: "area", + area: layer.area, + }; + return areaLayer; + } + + const pushpinLayer: IGeoLayerPushpin = { + ...base, + type: "pushpin", + latitude: layer.latitude, + longitude: layer.longitude, + ...(layer.size ? { size: layer.size } : {}), + }; + return pushpinLayer; +} diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoLayerFilterSanitization.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoLayerFilterSanitization.ts deleted file mode 100644 index 206068e6305..00000000000 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoLayerFilterSanitization.ts +++ /dev/null @@ -1,147 +0,0 @@ -// (C) 2025-2026 GoodData Corporation - -import { - type IFilter, - attributeLocalId, - isAttribute, - isLocalIdRef, - isMeasure, - isMeasureValueFilter, - isRankingFilter, - measureLocalId, -} from "@gooddata/sdk-model"; -import type { IGeoLayer } from "@gooddata/sdk-ui-geo/next"; - -export function getGeoLayerLocalIds(layer: IGeoLayer): { - attributeLocalIds: Set; - measureLocalIds: Set; -} { - const attributeLocalIds = new Set(); - const measureLocalIds = new Set(); - - const addItem = (item: unknown): void => { - if (isAttribute(item)) { - attributeLocalIds.add(attributeLocalId(item)); - } else if (isMeasure(item)) { - measureLocalIds.add(measureLocalId(item)); - } - }; - - if (layer.type === "pushpin") { - addItem(layer.latitude); - addItem(layer.longitude); - addItem(layer.size); - addItem(layer.color); - addItem(layer.segmentBy); - addItem(layer.tooltipText); - } else { - addItem(layer.area); - addItem(layer.color); - addItem(layer.segmentBy); - addItem(layer.tooltipText); - } - - return { attributeLocalIds, measureLocalIds }; -} - -/** - * GeoChartNext executes each layer separately, but AD supplies a single global filters array. - * Measure-based filters (MVF, ranking) using localId refs must only be applied to layers that - * contain the referenced measure/attributes, otherwise backend normalization fails. - */ -export function sanitizeGeoLayerGlobalFilters(layer: IGeoLayer, filters: IFilter[]): IFilter[] { - if (!filters.length) { - return filters; - } - - const { attributeLocalIds, measureLocalIds } = getGeoLayerLocalIds(layer); - - // TEMP DEBUG: remove once MVF layer matching is fully validated in AD - // eslint-disable-next-line no-console - console.log("[geoLayerFilterSanitization]", { - layer: { id: layer.id, type: layer.type, name: layer.name }, - layerLocalIds: { - attributes: Array.from(attributeLocalIds), - measures: Array.from(measureLocalIds), - }, - incomingMvfs: filters.filter(isMeasureValueFilter).map((f) => ({ - measure: isLocalIdRef(f.measureValueFilter.measure) - ? f.measureValueFilter.measure.localIdentifier - : "", - dimensionality: (f.measureValueFilter.dimensionality ?? []) - .filter(isLocalIdRef) - .map((d) => d.localIdentifier), - })), - }); - - return filters.filter((filter) => { - if (isMeasureValueFilter(filter)) { - const { measure, dimensionality = [] } = filter.measureValueFilter; - - if (isLocalIdRef(measure) && !measureLocalIds.has(measure.localIdentifier)) { - // eslint-disable-next-line no-console - console.log("[geoLayerFilterSanitization][drop-mvf]", { - layerId: layer.id, - reason: "missing-measure-localId", - measure: measure.localIdentifier, - }); - return false; - } - - // If dimensionality contains localId refs not present in this layer, drop the entire filter. - // This matches AD semantics: MVF is bound to specific attribute(s); if they are not in the layer, - // the filter must not be applied (and would otherwise dangle during backend normalization). - const missingDimensionality = dimensionality - .filter(isLocalIdRef) - .map((ref) => ref.localIdentifier) - .filter((id) => !attributeLocalIds.has(id)); - - if (missingDimensionality.length > 0) { - // eslint-disable-next-line no-console - console.log("[geoLayerFilterSanitization][drop-mvf]", { - layerId: layer.id, - reason: "missing-dimensionality-localId", - measure: isLocalIdRef(measure) ? measure.localIdentifier : "", - missingDimensionality, - }); - return false; - } - - return true; - } - - if (isRankingFilter(filter)) { - const { measure, attributes = [] } = filter.rankingFilter; - - if (isLocalIdRef(measure) && !measureLocalIds.has(measure.localIdentifier)) { - // eslint-disable-next-line no-console - console.log("[geoLayerFilterSanitization][drop-ranking]", { - layerId: layer.id, - reason: "missing-measure-localId", - measure: measure.localIdentifier, - }); - return false; - } - - const missingAttributes = attributes - .filter(isLocalIdRef) - .map((ref) => ref.localIdentifier) - .filter((id) => !attributeLocalIds.has(id)); - - if (missingAttributes.length > 0) { - // eslint-disable-next-line no-console - console.log("[geoLayerFilterSanitization][drop-ranking]", { - layerId: layer.id, - reason: "missing-attribute-localId", - measure: isLocalIdRef(measure) ? measure.localIdentifier : "", - missingAttributes, - }); - return false; - } - - return true; - } - - return true; - }); -} diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/tests/GeoEmbeddingCodeLayers.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/tests/GeoEmbeddingCodeLayers.test.ts new file mode 100644 index 00000000000..63fa6cdb14b --- /dev/null +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/tests/GeoEmbeddingCodeLayers.test.ts @@ -0,0 +1,68 @@ +// (C) 2025-2026 GoodData Corporation + +import { type MockedFunction, beforeEach, describe, expect, it, vi } from "vitest"; + +import { newAttribute, newInsightDefinition } from "@gooddata/sdk-model"; +import { type IGeoLayerArea, type IGeoLayerPushpin } from "@gooddata/sdk-ui-geo/next"; + +import { GeoAreaChartDescriptor } from "../../geoAreaChart/GeoAreaChartDescriptor.js"; +import { buildGeoChartNextLayers } from "../geoEmbeddingLayers.js"; +import { GeoPushpinChartNextDescriptor } from "../GeoPushpinChartNextDescriptor.js"; + +vi.mock("../geoEmbeddingLayers.js", () => ({ + buildGeoChartNextLayers: vi.fn(), + buildGeoChartNextGlobalFilters: vi.fn(() => []), +})); + +const buildGeoChartNextLayersMock = buildGeoChartNextLayers as unknown as MockedFunction< + typeof buildGeoChartNextLayers +>; + +describe("Geo embedding code layers", () => { + const areaDescriptor = new GeoAreaChartDescriptor(); + const pushpinDescriptor = new GeoPushpinChartNextDescriptor(); + const dummyInsight = newInsightDefinition("local:geoInsight"); + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("generates GeoChartNext with layers for Geo Area descriptor", () => { + const areaLayer: IGeoLayerArea = { + id: "primary", + type: "area", + area: newAttribute("label.area", (attribute) => attribute.localId("area")), + }; + buildGeoChartNextLayersMock.mockReturnValue([areaLayer]); + + const code = areaDescriptor.getEmbeddingCode(dummyInsight); + + expect(code).toContain(" { + const pushpinLayer: IGeoLayerPushpin = { + id: "primary", + type: "pushpin", + latitude: newAttribute("label.lat", (attribute) => attribute.localId("lat")), + longitude: newAttribute("label.lng", (attribute) => attribute.localId("lng")), + }; + buildGeoChartNextLayersMock.mockReturnValue([pushpinLayer]); + + const code = pushpinDescriptor.getEmbeddingCode(dummyInsight); + + expect(code).toContain(" { + buildGeoChartNextLayersMock.mockReturnValue([]); + + const code = areaDescriptor.getEmbeddingCode(dummyInsight); + + expect(code).toBe(""); + }); +}); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx index 86e340edca8..cb9d508cd63 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx @@ -108,7 +108,7 @@ export class PluggableHeadline extends AbstractPluggableVisualization { } public unmount(): void { - this.unmountFun([this.getElement(), this.getConfigPanelElement()]); + this.unmountFun([this.getElement()!, this.getConfigPanelElement()!]); } public getExtendedReferencePoint( @@ -134,7 +134,7 @@ export class PluggableHeadline extends AbstractPluggableVisualization { !primaryMeasure || !hasDerivedBucketItems(primaryMeasure, mappedReferencePoint.buckets); } else { const numberOfSecondaryMeasure = - newReferencePoint.uiConfig.buckets[BucketNames.SECONDARY_MEASURES].itemsLimit; + newReferencePoint.uiConfig?.buckets[BucketNames.SECONDARY_MEASURES]?.itemsLimit ?? 0; const limitedBuckets = limitNumberOfMeasuresInBuckets( newReferencePoint.buckets, numberOfSecondaryMeasure + 1, @@ -145,11 +145,11 @@ export class PluggableHeadline extends AbstractPluggableVisualization { let secondaryMeasures = allMeasures.length > 1 ? allMeasures.slice(1, numberOfSecondaryMeasure + 1) : null; - const primaryDerivedMeasure = findDerivedBucketItem(primaryMeasure, allMeasures); + const primaryDerivedMeasure = findDerivedBucketItem(primaryMeasure!, allMeasures); if ( this.keepPrimaryDerivedMeasureOnly && primaryDerivedMeasure && - !isArithmeticBucketItem(primaryMeasure) + !isArithmeticBucketItem(primaryMeasure!) ) { secondaryMeasures = [primaryDerivedMeasure]; } @@ -157,8 +157,8 @@ export class PluggableHeadline extends AbstractPluggableVisualization { newReferencePoint = setHeadlineRefPointBuckets( newReferencePoint, - primaryMeasure, - secondaryMeasures, + primaryMeasure!, + secondaryMeasures!, ); } @@ -188,8 +188,8 @@ export class PluggableHeadline extends AbstractPluggableVisualization { return executionFactory .forInsight(insight) .withDimensions(newDimension([MeasureGroupIdentifier])) - .withDateFormat(dateFormat) - .withExecConfig(executionConfig); + .withDateFormat(dateFormat!) + .withExecConfig(executionConfig!); } protected override checkBeforeRender(insight: IInsightDefinition): boolean { @@ -229,7 +229,7 @@ export class PluggableHeadline extends AbstractPluggableVisualization { buckets, filters: [...(insightFilters(insight) || [])], sortItems: [...(insightSorts(insight) || [])], - executionConfig: options.executionConfig, + executionConfig: options.executionConfig!, dateFormat: options.dateFormat, }); @@ -247,11 +247,11 @@ export class PluggableHeadline extends AbstractPluggableVisualization { onDataView={this.onDataView} pushData={this.pushData} onError={this.onError} - LoadingComponent={null} - ErrorComponent={null} + LoadingComponent={undefined} + ErrorComponent={undefined} onExportReady={this.onExportReady} />, - this.getElement(), + this.getElement()!, ); } @@ -353,7 +353,7 @@ export class PluggableHeadline extends AbstractPluggableVisualization { private buildDefaultMigrationProperties(): HeadlineControlProperties { return { comparison: { - ...HEADLINE_DEFAULT_MIGRATION_CONTROL_PROPERTIES.comparison, + ...HEADLINE_DEFAULT_MIGRATION_CONTROL_PROPERTIES.comparison!, labelConfig: { unconditionalValue: this.intl.formatMessage({ id: "visualizations.headline.tertiary.title", diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketConversion.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketConversion.ts index 9572d5cd24a..29ae02fe9d7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketConversion.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketConversion.ts @@ -16,14 +16,17 @@ import { export function singleSecondaryMeasureBucketConversion( propName: TPropKey, bucketName: string, -): IInsightToPropConversion { +): IInsightToPropConversion { return bucketConversion(propName, sdkModelPropMetas.Measure.Single, bucketName, false, bucketMeasure); } export function multipleSecondaryMeasuresBucketConversion< TProps extends object, TPropKey extends keyof TProps, ->(propName: TPropKey, bucketName: string): IInsightToPropConversion { +>( + propName: TPropKey, + bucketName: string, +): IInsightToPropConversion { return bucketConversion(propName, sdkModelPropMetas.Measure.Multiple, bucketName, true, bucketMeasures); } @@ -37,13 +40,13 @@ export function bucketConversion< bucketName: string, shouldProcessBucketItem: boolean, bucketItemAccessor: (bucket: IBucket) => TReturnType, -): IInsightToPropConversion { +): IInsightToPropConversion { return { propName, propType, itemAccessor(insight) { const bucket = insightBucket(insight, bucketName); - return shouldProcessBucketItem && bucket && bucketItemAccessor(bucket); + return shouldProcessBucketItem && bucket ? bucketItemAccessor(bucket) : undefined; }, }; } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketHelper.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketHelper.ts index aa7b47f3dfa..333f7c0a1c1 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketHelper.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/headlineBucketHelper.ts @@ -12,14 +12,14 @@ import { isDerivedBucketItem, } from "../../../utils/bucketHelper.js"; -export function findSecondMasterMeasure(allMeasures: IBucketItem[]): IBucketItem { +export function findSecondMasterMeasure(allMeasures: IBucketItem[]): IBucketItem | null { const masterBucketItems = findMasterBucketItems(allMeasures); return masterBucketItems.length > 1 ? masterBucketItems[1] : null; } export function tryToMapForeignBuckets( extendedReferencePoint: Readonly, -): IExtendedReferencePoint { +): IExtendedReferencePoint | null { const newReferencePoint = setHeadlineRefPointBuckets(extendedReferencePoint); const totalBuckets = extendedReferencePoint.buckets.length; let allMeasuresCompatible = true; @@ -35,13 +35,13 @@ export function tryToMapForeignBuckets( continue; } - const targetBucketUiConfig = newReferencePoint.uiConfig.buckets[targetBucket.localIdentifier]; + const targetBucketUiConfig = newReferencePoint.uiConfig?.buckets[targetBucket.localIdentifier]; if (!targetBucketUiConfig?.enabled) { allMeasuresCompatible = false; continue; } - const measuresFitToLimit = sourceBucket.items.length <= targetBucketUiConfig.itemsLimit; + const measuresFitToLimit = sourceBucket.items.length <= targetBucketUiConfig.itemsLimit!; if (!measuresFitToLimit) { allMeasuresCompatible = false; continue; @@ -81,15 +81,15 @@ export function setHeadlineRefPointBuckets( } export function findComplementaryOverTimeComparisonMeasure( - primaryMeasure: IBucketItem, + primaryMeasure: IBucketItem | null, allMeasures: IBucketItem[], -): IBucketItem { +): IBucketItem | null { if (!primaryMeasure) { return null; } if (isDerivedBucketItem(primaryMeasure)) { - return findMasterBucketItem(primaryMeasure, allMeasures) || null; + return findMasterBucketItem(primaryMeasure, allMeasures) ?? null; } const derivedOfPrimaryMeasure = findDerivedBucketItems(primaryMeasure, allMeasures); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/PluggableHeadline.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/PluggableHeadline.test.tsx index 8b4fab8eada..0dc4af81b49 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/PluggableHeadline.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/PluggableHeadline.test.tsx @@ -158,8 +158,8 @@ describe("PluggableHeadline", () => { const renderEl = getLastRenderEl(mockRenderFun, mockElement); expect(renderEl).toBeDefined(); - expect(renderEl.type).toBe(CoreHeadline); - expect(renderEl.props.config.enableCompactSize).toEqual(true); + expect(renderEl!.type).toBe(CoreHeadline); + expect(renderEl!.props.config!.enableCompactSize).toEqual(true); }); it("should correctly set config.disableDrillUnderline from FeatureFlag disableKpiDashboardHeadlineUnderline", () => { @@ -179,8 +179,8 @@ describe("PluggableHeadline", () => { ); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.type).toBe(CoreHeadline); - expect(renderEl.props.config.disableDrillUnderline).toEqual(true); + expect(renderEl!.type).toBe(CoreHeadline); + expect(renderEl!.props.config!.disableDrillUnderline).toEqual(true); }); }); @@ -270,7 +270,7 @@ describe("PluggableHeadline", () => { const extendedReferencePoint = await headline.getExtendedReferencePoint(referencePoint); expect(extendedReferencePoint.buckets).toEqual(referencePoint.buckets); - expect(extendedReferencePoint.uiConfig.customError).toEqual({ + expect(extendedReferencePoint.uiConfig!.customError).toEqual({ heading: "No primary metric in your visualization", text: "Add a primary metric to your visualization, or switch to table.\n" + @@ -570,7 +570,7 @@ describe("PluggableHeadline", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toMatchSnapshot(); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toMatchSnapshot(); }); describe("placing new derived items", () => { @@ -917,8 +917,8 @@ describe("PluggableHeadline", () => { ); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.type).toBe(CoreHeadline); - expect(renderEl.props.config.comparison).toEqual({ + expect(renderEl!.type).toBe(CoreHeadline); + expect(renderEl!.props.config!.comparison).toEqual({ enabled: true, }); }); @@ -938,9 +938,17 @@ describe("PluggableHeadline", () => { ); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.type).toBe(CoreHeadline); - expect(renderEl.props.config.comparison).toEqual({ + expect(renderEl!.type).toBe(CoreHeadline); + expect(renderEl!.props.config!.comparison).toEqual({ enabled: true, + calculationType: CalculateAs.CHANGE, + format: "#,##0%", + colorConfig: { + disabled: true, + }, + labelConfig: { + unconditionalValue: "Versus", + }, }); }); @@ -960,8 +968,8 @@ describe("PluggableHeadline", () => { ); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.type).toBe(CoreHeadline); - expect(renderEl.props.config.comparison).toEqual({ + expect(renderEl!.type).toBe(CoreHeadline); + expect(renderEl!.props.config!.comparison).toEqual({ enabled: true, calculationType: CalculateAs.CHANGE, format: "#,##0%", @@ -989,8 +997,8 @@ describe("PluggableHeadline", () => { ); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.type).toBe(CoreHeadline); - expect(renderEl.props.config.comparison).toEqual({ + expect(renderEl!.type).toBe(CoreHeadline); + expect(renderEl!.props.config!.comparison).toEqual({ enabled: true, calculationType: CalculateAs.CHANGE, format: "#,##0%", diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/headlineBucketHelper.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/headlineBucketHelper.test.ts index afca2182d2e..f29498371b8 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/headlineBucketHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/tests/headlineBucketHelper.test.ts @@ -84,7 +84,7 @@ describe("headlineBucketHelper", () => { const referencePoint = createReferencePoint(buckets, DEFAULT_HEADLINE_UICONFIG); const newReferencePoint = tryToMapForeignBuckets(referencePoint); - expect(newReferencePoint.buckets).toEqual([ + expect(newReferencePoint!.buckets).toEqual([ { localIdentifier: "measures", items: [referencePointMocks.masterMeasureItems[0]], @@ -110,7 +110,7 @@ describe("headlineBucketHelper", () => { const referencePoint = createReferencePoint(buckets, DEFAULT_HEADLINE_UICONFIG); const newReferencePoint = tryToMapForeignBuckets(referencePoint); - expect(newReferencePoint.buckets).toEqual([ + expect(newReferencePoint!.buckets).toEqual([ { localIdentifier: "measures", items: [referencePointMocks.masterMeasureItems[0]], @@ -136,7 +136,7 @@ describe("headlineBucketHelper", () => { const referencePoint = createReferencePoint(buckets, DEFAULT_HEADLINE_UICONFIG); const newReferencePoint = tryToMapForeignBuckets(referencePoint); - expect(newReferencePoint.buckets).toEqual([ + expect(newReferencePoint!.buckets).toEqual([ { localIdentifier: "measures", items: [referencePointMocks.masterMeasureItems[0]], @@ -166,7 +166,7 @@ describe("headlineBucketHelper", () => { const referencePoint = createReferencePoint(buckets, DEFAULT_HEADLINE_UICONFIG); const newReferencePoint = tryToMapForeignBuckets(referencePoint); - expect(newReferencePoint.buckets).toEqual([ + expect(newReferencePoint!.buckets).toEqual([ { localIdentifier: "measures", items: [referencePointMocks.masterMeasureItems[0]], @@ -192,7 +192,7 @@ describe("headlineBucketHelper", () => { const referencePoint = createReferencePoint(buckets, DEFAULT_HEADLINE_UICONFIG); const newReferencePoint = tryToMapForeignBuckets(referencePoint); - expect(newReferencePoint.buckets).toEqual([ + expect(newReferencePoint!.buckets).toEqual([ { localIdentifier: "measures", items: [referencePointMocks.masterMeasureItems[0]], diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx index 97c11a69416..6cf7532fd4c 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx @@ -160,7 +160,7 @@ describe("PluggableHeatmap", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/getInsightWithDrillDownAppliedMock.ts index 80cf4b1b0c6..97b8d313447 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/getInsightWithDrillDownAppliedMock.ts @@ -15,8 +15,8 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; const { Department, Region, Won } = ReferenceMd; const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; export const targetUri = "target-uri"; @@ -34,8 +34,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, primaryLabel: { uri: departmentUri, }, @@ -55,8 +60,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, primaryLabel: { uri: regionUri, }, @@ -66,11 +76,11 @@ export const intersection: IDrillEventIntersectionElement[] = [ { header: { measureHeaderItem: { - name: Won.measure.title, + name: Won.measure.title!, format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/PluggableLineChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/PluggableLineChart.test.tsx index f2948349832..0e4d74f5e0a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/PluggableLineChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/PluggableLineChart.test.tsx @@ -249,7 +249,7 @@ describe("PluggableLineChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([ + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, OverTimeComparisonTypes.PREVIOUS_PERIOD, ]); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/getInsightWithDrillDownAppliedMock.ts index 97786114232..dd69cc58a2a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/tests/getInsightWithDrillDownAppliedMock.ts @@ -15,8 +15,8 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; const { Department, Region, Won } = ReferenceMd; const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; export const targetUri = "target-uri"; @@ -34,8 +34,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, primaryLabel: { uri: departmentUri, }, @@ -55,8 +60,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, primaryLabel: { uri: regionUri, }, @@ -70,7 +80,7 @@ export const intersection: IDrillEventIntersectionElement[] = [ format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/tests/PluggablePieChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/tests/PluggablePieChart.test.tsx index d4d4285aca3..8d0b473b13e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/tests/PluggablePieChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/tests/PluggablePieChart.test.tsx @@ -127,7 +127,7 @@ describe("PluggablePieChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx index 5385c87451c..b94be5b8eb3 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx @@ -159,7 +159,7 @@ const PROPERTIES_AFFECTING_REFERENCE_POINT = ["measureGroupDimension"]; * - |Rows| ≥ 1 ⇒ [attributeSort(Rows[0])] */ export class PluggablePivotTable extends AbstractPluggableVisualization { - private environment: VisualizationEnvironment; + private environment: VisualizationEnvironment | undefined; private renderFun: RenderFunction; private unmountFun: UnmountFunction; private readonly settings: ISettings; @@ -181,7 +181,7 @@ export class PluggablePivotTable extends AbstractPluggableVisualization { } public unmount(): void { - this.unmountFun([this.getElement(), this.getConfigPanelElement()]); + this.unmountFun([this.getElement()!, this.getConfigPanelElement()!]); } public getExtendedReferencePoint( @@ -207,8 +207,8 @@ export class PluggablePivotTable extends AbstractPluggableVisualization { const previousColumnAttributes = previousReferencePoint && getColumnAttributes(previousReferencePoint.buckets); - const filters: IBucketFilter[] = newReferencePoint.filters - ? newReferencePoint.filters.items.flatMap((item) => item.filters) + const filters: IBucketFilter[] = newReferencePoint?.filters?.items + ? newReferencePoint.filters.items.flatMap((item) => item.filters ?? []) : []; const rowTotals = removeInvalidTotals(getTotalsFromBucket(buckets, BucketNames.ATTRIBUTE), filters); @@ -352,8 +352,8 @@ export class PluggablePivotTable extends AbstractPluggableVisualization { .forInsight(insight) .withDimensions(...this.getDimensions(insight, customVisualizationConfig)) .withSorting(...(getPivotTableSortItems(insight) ?? [])) - .withDateFormat(dateFormat) - .withExecConfig(executionConfig); + .withDateFormat(dateFormat!) + .withExecConfig(executionConfig!); } protected initializeProperties(visualizationProperties: IVisualizationProperties): void { @@ -412,7 +412,14 @@ export class PluggablePivotTable extends AbstractPluggableVisualization { return; } - const { locale, custom, dimensions, config = {}, customVisualizationConfig = {}, theme } = options; + const { + locale, + custom = {}, + dimensions, + config = {}, + customVisualizationConfig = {}, + theme, + } = options; const { maxHeight, maxWidth } = config; const height = dimensions?.height; const { drillableItems } = custom; @@ -431,7 +438,7 @@ export class PluggablePivotTable extends AbstractPluggableVisualization { const tableConfig: IPivotTableConfig = { ...createPivotTableConfig( config, - this.environment, + this.environment!, this.settings, this.backendCapabilities, columnWidths, @@ -443,7 +450,7 @@ export class PluggablePivotTable extends AbstractPluggableVisualization { measureGroupDimension, }; - const pivotTableProps: ICorePivotTableProps & { theme: ITheme } = { + const pivotTableProps: ICorePivotTableProps & { theme?: ITheme } = { ...this.createCorePivotTableProps(), execution, drillableItems, @@ -564,7 +571,7 @@ export class PluggablePivotTable extends AbstractPluggableVisualization { ); if (!isEqual(columnWidths, adaptedColumnWidths)) { - this.visualizationProperties.controls["columnWidths"] = adaptedColumnWidths; + this.visualizationProperties.controls!["columnWidths"] = adaptedColumnWidths; this.pushData({ properties: { controls: { @@ -624,7 +631,7 @@ export function createPivotTableConfig( environment: VisualizationEnvironment, settings: ISettings, capabilities: IBackendCapabilities, - columnWidths: ColumnWidthItem[], + columnWidths?: ColumnWidthItem[], ): IPivotTableConfig { let tableConfig: IPivotTableConfig = { separators: config.separators, @@ -695,7 +702,7 @@ export function createPivotTableConfig( * can seriously mess up the pivot table in return: the column resizing is susceptible to race conditions and timing * issues. Because of the flurry of calls, the table may not render or may render not resized at all. */ -function getPivotTableSortItems(insight: IInsightDefinition): ISortItem[] { +function getPivotTableSortItems(insight: IInsightDefinition): ISortItem[] | undefined { const sorts = insightSorts(insight); const mesureGroupDimension = getMeasureGroupDimensionFromProperties(insightProperties(insight)); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/sortItemsHelpers.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/sortItemsHelpers.ts index cdc66b3101c..a0c3a72d999 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/sortItemsHelpers.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/sortItemsHelpers.ts @@ -144,7 +144,7 @@ export function addDefaultSort( sortItems: ISortItem[], filters: IBucketFilter[], rowAttributes: IBucketItem[], - previousRowAttributes: IBucketItem[], + previousRowAttributes: IBucketItem[] | undefined, columnAttributes: IBucketItem[] = [], tableSortingCheckDisabled?: boolean, ): ISortItem[] { @@ -175,8 +175,7 @@ export function addDefaultSort( // disabling the eslint rule to maintain readability // eslint-disable-next-line sonarjs/prefer-single-boolean-return if ( - previousFirstRow && - sortItem.attributeSortItem.attributeIdentifier === previousFirstRow.localIdentifier && + sortItem.attributeSortItem.attributeIdentifier === previousFirstRow?.localIdentifier && sortItem.attributeSortItem.direction === "asc" ) { return false; @@ -234,7 +233,7 @@ export function isSortItemVisible( } export function getSanitizedSortItems( - sortItems: ISortItem[], + sortItems: ISortItem[] | undefined, measureGroupDimension: MeasureGroupDimension, ): ISortItem[] { // Measure sort is not supported on transposed table (metrics in rows). diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx index 47ce31183c7..a0301202bcd 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx @@ -163,9 +163,9 @@ describe("PluggablePivotTable", () => { const renderEl = getLastRenderEl(mockRenderFun, mockElement); expect(renderEl).toBeDefined(); - expect(renderEl.type).toBe(CorePivotTable); + expect(renderEl!.type).toBe(CorePivotTable); - expect(renderEl.props.onColumnResized).toBeInstanceOf(Function); + expect(renderEl!.props.onColumnResized).toBeInstanceOf(Function); }); it("should render PivotTable passing down all the necessary properties", () => { @@ -176,7 +176,7 @@ describe("PluggablePivotTable", () => { const renderEl = getLastRenderEl(mockRenderFun, mockElement); expect(renderEl).toBeDefined(); - expect(renderEl.type).toBe(CorePivotTable); + expect(renderEl!.type).toBe(CorePivotTable); // TODO should verify props ideally }); @@ -280,16 +280,16 @@ describe("PluggablePivotTable", () => { it("should return a new reference point with filtered sortItems (in this case identical)", () => { return extendedReferencePointPromise.then((extendedReferencePoint) => { - const expectedSortItems: ISortItem[] = sourceReferencePoint.properties.sortItems; - expect(extendedReferencePoint.properties.sortItems).toEqual(expectedSortItems); + const expectedSortItems: ISortItem[] = sourceReferencePoint.properties!.sortItems!; + expect(extendedReferencePoint.properties!.sortItems).toEqual(expectedSortItems); }); }); it("should return a new reference point with columnWidths", () => { return extendedReferencePointPromise.then((extendedReferencePoint) => { const expectedColumnWidths: ColumnWidthItem[] = - sourceReferencePoint.properties.controls["columnWidths"]; - expect(extendedReferencePoint.properties.controls["columnWidths"]).toEqual( + sourceReferencePoint.properties!.controls!["columnWidths"]; + expect(extendedReferencePoint.properties!.controls!["columnWidths"]).toEqual( expectedColumnWidths, ); }); @@ -299,13 +299,13 @@ describe("PluggablePivotTable", () => { const emptyControlsReferencePoint: IReferencePoint = { ...sourceReferencePoint, properties: { - sortItems: sourceReferencePoint.properties.sortItems, + sortItems: sourceReferencePoint.properties!.sortItems, }, }; const promise: Promise = pivotTable.getExtendedReferencePoint(emptyControlsReferencePoint); return promise.then((extendedReferencePoint) => { - expect(extendedReferencePoint.properties.controls).toBeUndefined(); + expect(extendedReferencePoint.properties!.controls).toBeUndefined(); }); }); }); @@ -344,8 +344,8 @@ describe("PluggablePivotTable", () => { it("should return a new reference point with filtered sortItems (in this case identical)", () => { return extendedReferencePointPromise.then((extendedReferencePoint) => { - const expectedSortItems: ISortItem[] = sourceReferencePoint.properties.sortItems; - expect(extendedReferencePoint.properties.sortItems).toEqual(expectedSortItems); + const expectedSortItems: ISortItem[] = sourceReferencePoint.properties!.sortItems!; + expect(extendedReferencePoint.properties!.sortItems).toEqual(expectedSortItems); }); }); }); @@ -373,7 +373,7 @@ describe("PluggablePivotTable", () => { const extendedReferencePointPromise: Promise = pivotTable.getExtendedReferencePoint(mockPivotTableReferencePoint); return extendedReferencePointPromise.then((extendedReferencePoint) => { - expect(extendedReferencePoint.properties.sortItems).toEqual(expectedSortItems); + expect(extendedReferencePoint.properties!.sortItems).toEqual(expectedSortItems); }); }); @@ -406,7 +406,7 @@ describe("PluggablePivotTable", () => { const extendedReferencePointPromise: Promise = pivotTable.getExtendedReferencePoint(mockPivotTableReferencePoint); return extendedReferencePointPromise.then((extendedReferencePoint) => { - expect(extendedReferencePoint.properties.controls["columnWidths"]).toEqual( + expect(extendedReferencePoint.properties!.controls!["columnWidths"]).toEqual( expectedColumnWidthItems, ); }); @@ -464,7 +464,7 @@ describe("PluggablePivotTable", () => { it("should return a new reference point without sortItems (default)", () => { return extendedReferencePointPromise.then((extendedReferencePoint) => { - expect(extendedReferencePoint.properties.sortItems).toBeUndefined(); + expect(extendedReferencePoint.properties!.sortItems).toBeUndefined(); }); }); }); @@ -635,7 +635,7 @@ const measureReferenceBucketItem: IBucketItem = { type: "metric", localIdentifier: "measure", attribute: "aa5JBkFDa7sJ", - granularity: null, + granularity: undefined, filters: [], }; @@ -648,8 +648,8 @@ const dateReferenceBucketItem: IBucketItem = { }; const attributeReferenceBucketItem: IBucketItem = { - aggregation: null, - showInPercent: null, + aggregation: undefined, + showInPercent: undefined, granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute", type: "attribute", @@ -705,12 +705,12 @@ describe("getColumnAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_columns", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, { @@ -721,12 +721,12 @@ describe("getColumnAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_stack", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, { @@ -737,12 +737,12 @@ describe("getColumnAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_segment", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, ]); @@ -760,12 +760,12 @@ describe("getRowAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_attribute", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, { @@ -776,12 +776,12 @@ describe("getRowAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_attributes", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, { @@ -792,12 +792,12 @@ describe("getRowAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_view", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, { @@ -808,12 +808,12 @@ describe("getRowAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_trend", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, ]); @@ -829,12 +829,12 @@ describe("getRowAttributes", () => { type: "date", }, { - aggregation: null, + aggregation: undefined, attribute: "attr.restaurantlocation.locationname", filters: [], granularity: "attr.restaurantlocation.locationname", localIdentifier: "attribute_area", - showInPercent: null, + showInPercent: undefined, type: "attribute", }, ]); @@ -852,7 +852,7 @@ describe("createPivotTableConfig", () => { ]; const Scenarios: Array< - [string, IGdcConfig, VisualizationEnvironment | undefined, ISettings, ColumnWidthItem[]] + [string, IGdcConfig, VisualizationEnvironment | undefined, ISettings, ColumnWidthItem[] | undefined] > = [ ["config without menus for dashboard env", {}, "dashboards", {}, undefined], ["config with menus for non-dashboard env", {}, "none", {}, undefined], @@ -920,7 +920,7 @@ describe("createPivotTableConfig", () => { }; it.each(Scenarios)("should create valid %s", (_desc, config, env, settings, columnWidths) => { expect( - createPivotTableConfig(config, env, settings, AllTotalCapabilities, columnWidths), + createPivotTableConfig(config, env!, settings, AllTotalCapabilities, columnWidths), ).toMatchSnapshot(); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/getInsightWithDrillDownAppliedMock.ts index 83162824b31..0023e8370f1 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/getInsightWithDrillDownAppliedMock.ts @@ -104,11 +104,11 @@ const measureHeader: IMeasureDescriptor = { format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }; -const departmentDirectSalesUri = ReferenceData.Department.DirectSales.uri; +const departmentDirectSalesUri = ReferenceData.Department.DirectSales.uri!; const departmentHeaderAttributeUri = "departmentHeaderAttributeUri"; const departmentHeader: IDrillIntersectionAttributeItem = { attributeHeaderItem: { @@ -122,15 +122,20 @@ const departmentHeader: IDrillIntersectionAttributeItem = { ref: { uri: departmentHeaderAttributeUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentHeaderAttributeUri }, + uri: departmentHeaderAttributeUri, + }, primaryLabel: { uri: departmentHeaderAttributeUri, }, }, }; -const statusLostUri = ReferenceData.Status.Lost.uri; +const statusLostUri = ReferenceData.Status.Lost.uri!; const statusHeaderAttributeUri = "statusHeaderAttributeUri"; const statusHeader: IDrillIntersectionAttributeItem = { attributeHeaderItem: { @@ -144,15 +149,20 @@ const statusHeader: IDrillIntersectionAttributeItem = { ref: { uri: statusHeaderAttributeUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: statusHeaderAttributeUri }, + uri: statusHeaderAttributeUri, + }, primaryLabel: { uri: statusHeaderAttributeUri, }, }, }; -const regionEastCoastUri = ReferenceData.Region.EastCoast.uri; +const regionEastCoastUri = ReferenceData.Region.EastCoast.uri!; const regionHeaderAttributeUri = "regionHeaderAttributeUri"; const regionHeader: IDrillIntersectionAttributeItem = { attributeHeaderItem: { @@ -166,8 +176,13 @@ const regionHeader: IDrillIntersectionAttributeItem = { ref: { uri: regionHeaderAttributeUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionHeaderAttributeUri }, + uri: regionHeaderAttributeUri, + }, primaryLabel: { uri: regionHeaderAttributeUri, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts index c5243f1f958..1bd8d7d2e58 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts @@ -28,14 +28,14 @@ import { } from "../sortItemsHelpers.js"; const createAttributeBucketItem = (localIdentifier: string, attributeName: string): IBucketItem => ({ - aggregation: null, - showInPercent: null, - operator: null, - operandLocalIdentifiers: null, - granularity: null, - masterLocalIdentifier: null, + aggregation: null as unknown as undefined, + showInPercent: null as unknown as undefined, + operator: null as unknown as undefined, + operandLocalIdentifiers: null as unknown as undefined, + granularity: null as unknown as undefined, + masterLocalIdentifier: null as unknown as undefined, localIdentifier, - showOnSecondaryAxis: null, + showOnSecondaryAxis: null as unknown as undefined, type: "attribute", filters: [], attribute: attributeName, @@ -203,8 +203,8 @@ describe("addDefaultSort", () => { }; const allCountriesExceptGermanyFilter: IBucketFilter = { - attribute: countryColumn.attribute, - displayFormRef: countryColumn.dfRef, + attribute: countryColumn.attribute!, + displayFormRef: countryColumn.dfRef!, isInverted: true, selectedElements: [ { @@ -216,8 +216,8 @@ describe("addDefaultSort", () => { }; const onlyPolandFilter: IBucketFilter = { - attribute: countryColumn.attribute, - displayFormRef: countryColumn.dfRef, + attribute: countryColumn.attribute!, + displayFormRef: countryColumn.dfRef!, isInverted: false, selectedElements: [ { @@ -333,8 +333,8 @@ describe("isSortItemVisible", () => { selectedElements: IBucketFilterElement[], isInverted: boolean, ): IBucketFilter => ({ - attribute: countryColumn.attribute, - displayFormRef: countryColumn.dfRef, + attribute: countryColumn.attribute!, + displayFormRef: countryColumn.dfRef!, isInverted, totalElementsCount: 5, selectedElements, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts index a2410c827f4..3b0cf1d6cd7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts @@ -52,7 +52,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { previousRowAttributes, previousColumnAttributes, [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([validAttributeColumnWidthItem, validMeasureColumnWidthItem]); @@ -74,7 +74,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { previousRowAttributes, previousColumnAttributes, [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([ @@ -95,7 +95,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { [], [], [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([validAllMeasureColumnWidthItem]); @@ -112,7 +112,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { [], [], [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([]); @@ -129,7 +129,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { [], [], [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([validWeakMeasureColumnWidthItem]); @@ -148,7 +148,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { [], [], [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([validWeakMeasureColumnWidthItem]); @@ -168,7 +168,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { [], [], [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([validWeakMeasureColumnWidthItem]); @@ -198,7 +198,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { [], [], [filter], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([]); @@ -228,7 +228,7 @@ describe("adaptReferencePointWidthItemsToPivotTable", () => { [], [], [filter], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([validMeasureColumnWidthItem]); @@ -258,7 +258,7 @@ describe("adaptReferencePointWidthItemsToPivotTable transposed", () => { [], [], [], - undefined as MeasureGroupDimension, + undefined as unknown as MeasureGroupDimension, ); expect(result).toEqual([validSliceMeasureColumnWidthItem, validMixedValuesColumnWidthItem]); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/widthItemsHelpers.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/widthItemsHelpers.ts index d6aa22144e5..223bdff0178 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/widthItemsHelpers.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/widthItemsHelpers.ts @@ -140,7 +140,7 @@ const columnWidthLocatorsAndMeasuresHaveSameValues = ( function transformToWeakMeasureColumnWidthItem( columnWidth: IMeasureColumnWidthItem, -): IWeakMeasureColumnWidthItem { +): IWeakMeasureColumnWidthItem | undefined { if ( isAbsoluteColumnWidth(columnWidth.measureColumnWidthItem.width) && columnWidth.measureColumnWidthItem.locators.length === 1 && @@ -169,7 +169,7 @@ function adaptWidthItemsToPivotTable( columnAttributes: IBucketItem[], isAdaptPropertiesToInsight?: boolean, measureGroupDimension?: MeasureGroupDimension, -): ColumnWidthItem[] { +): ColumnWidthItem[] | undefined { if (!originalColumnWidths) { return originalColumnWidths; } @@ -284,7 +284,7 @@ export function adaptReferencePointWidthItemsToPivotTable( previousColumnAttributes: IBucketItem[], filters: IBucketFilter[], measureGroupDimension: MeasureGroupDimension, -): ColumnWidthItem[] { +): ColumnWidthItem[] | undefined { const measureLocalIdentifiers = measures.map((measure) => measure.localIdentifier); const rowAttributeLocalIdentifiers = rowAttributes.map((rowAttribute) => rowAttribute.localIdentifier); const columnAttributeLocalIdentifiers = columnAttributes.map( @@ -323,7 +323,7 @@ export function adaptMdObjectWidthItemsToPivotTable( originalColumnWidths: ColumnWidthItem[], insight: IInsightDefinition, measureGroupDimension?: MeasureGroupDimension, -): ColumnWidthItem[] { +): ColumnWidthItem[] | undefined { const rowBucket = insightBucket(insight, BucketNames.ATTRIBUTE); const columnBucket = insightBucket(insight, BucketNames.COLUMNS); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx index a7fc2bbc8da..0cd48672f8d 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx @@ -129,7 +129,7 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { private unmountFun: UnmountFunction; private readonly settings: ISettings; private backendCapabilities: IBackendCapabilities; - private environment: VisualizationEnvironment; + private environment: VisualizationEnvironment | undefined; constructor(props: IVisConstruct) { super(props); @@ -147,7 +147,7 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { } public unmount(): void { - this.unmountFun([this.getElement(), this.getConfigPanelElement()]); + this.unmountFun([this.getElement()!, this.getConfigPanelElement()!]); } public getExtendedReferencePoint( @@ -174,7 +174,7 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { previousReferencePoint && getColumnAttributes(previousReferencePoint.buckets); const filters: IBucketFilter[] = newReferencePoint.filters - ? newReferencePoint.filters.items.flatMap((item) => item.filters) + ? newReferencePoint.filters.items.flatMap((item) => item.filters ?? []) : []; const rowTotals = removeInvalidTotals(getTotalsFromBucket(buckets, BucketNames.ATTRIBUTE), filters); @@ -303,8 +303,8 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { .forInsight(insight) .withDimensions(...this.getDimensions(insight, sanitizedConfig)) .withSorting(...sortItems) - .withDateFormat(dateFormat) - .withExecConfig(executionConfig); + .withDateFormat(dateFormat!) + .withExecConfig(executionConfig!); } protected initializeProperties(visualizationProperties: IVisualizationProperties): void { @@ -359,7 +359,7 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { if (!insightHasDataDefined(insight)) { // Unmount the visualization to clear stale data when buckets become empty. // Without this, the old data would remain rendered even after removing all metrics/attributes. - this.unmountFun([this.getElement()]); + this.unmountFun([this.getElement()] as HTMLElement[]); } return super.checkBeforeRender(insight); } @@ -375,7 +375,7 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { return; } - const { customVisualizationConfig = {}, theme, custom, config } = options; + const { customVisualizationConfig = {}, theme, custom = {}, config = {} } = options; const { drillableItems } = custom; const execution = this.getExecution(options, insight, executionFactory); @@ -403,10 +403,10 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { const columnHeadersPosition: ColumnHeadersPosition = customVisualizationConfig?.columnHeadersPosition ?? columnHeadersPositionFromInsight; const growToFit = this.environment === DASHBOARDS_ENVIRONMENT; - const { isInEditMode } = config; + const isInEditMode = config?.isInEditMode; const pagination = getPaginationFromProperties(insightProperties(insight)); const tableConfig: PivotTableNextConfig = { - ...createPivotTableNextConfig(config, this.environment, this.settings), + ...createPivotTableNextConfig(config!, this.environment!, this.settings), ...customVisualizationConfig, measureGroupDimension, columnHeadersPosition, @@ -501,7 +501,8 @@ export class PluggablePivotTableNext extends AbstractPluggableVisualization { measureGroupDimension, ); - if (!isEqual(columnWidths, adaptedColumnWidths)) { + if (!isEqual(columnWidths, adaptedColumnWidths) && this.visualizationProperties) { + this.visualizationProperties.controls = this.visualizationProperties.controls ?? {}; this.visualizationProperties.controls["columnWidths"] = adaptedColumnWidths; this.pushData({ properties: { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.ts index b7a6808f215..7264fef9f7d 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.ts @@ -22,9 +22,12 @@ const AG_GRID_TOKEN_PLACEHOLDER: PivotTableNextConfig = { agGridToken: "", }; -export function isPivotTableNext(insightDefinition: IInsightDefinition, settings: ISettings): boolean { +export function isPivotTableNext( + insightDefinition: IInsightDefinition, + settings: ISettings | undefined, +): boolean { const uri = insightVisualizationUrl(insightDefinition); - return settings?.enableNewPivotTable && uri === "local:table"; + return !!settings?.enableNewPivotTable && uri === "local:table"; } export function pivotTableNextConfigFromInsight( diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/sortHelpers.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/sortHelpers.ts index 10779725f67..b961480bbd9 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/sortHelpers.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/sortHelpers.ts @@ -156,8 +156,7 @@ export const addDefaultSort = ( // disabling the eslint rule to maintain readability // eslint-disable-next-line sonarjs/prefer-single-boolean-return if ( - previousFirstRow && - sortItem.attributeSortItem.attributeIdentifier === previousFirstRow.localIdentifier && + sortItem.attributeSortItem.attributeIdentifier === previousFirstRow?.localIdentifier && sortItem.attributeSortItem.direction === "asc" ) { return false; @@ -211,7 +210,7 @@ export const isSortItemVisible = ( : isMeasureSortItemVisible(sortItem, filters, columnAttributes); export const getSanitizedSortItems = ( - sortItems: ISortItem[], + sortItems: ISortItem[] | undefined, measureGroupDimension: MeasureGroupDimension, ): ISortItem[] => { // Measure sort is not supported on transposed table (metrics in rows). @@ -232,7 +231,7 @@ export const getSanitizedSortItems = ( * can seriously mess up the pivot table in return: the column resizing is susceptible to race conditions and timing * issues. Because of the flurry of calls, the table may not render or may render not resized at all. */ -export const getPivotTableSortItems = (insight: IInsightDefinition): ISortItem[] => { +export const getPivotTableSortItems = (insight: IInsightDefinition): ISortItem[] | undefined => { const sorts = insightSorts(insight); const mesureGroupDimension = getMeasureGroupDimensionFromProperties(insightProperties(insight)); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/widthItemsHelpers.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/widthItemsHelpers.ts index fd5b25c9856..e8597228f03 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/widthItemsHelpers.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/widthItemsHelpers.ts @@ -169,7 +169,7 @@ const adaptWidthItemsToPivotTable = ( columnAttributes: IBucketItem[], isAdaptPropertiesToInsight?: boolean, measureGroupDimension?: MeasureGroupDimension, -): ColumnWidthItem[] => { +): ColumnWidthItem[] | undefined => { if (!originalColumnWidths) { return originalColumnWidths; } @@ -284,7 +284,7 @@ export const adaptReferencePointWidthItemsToPivotTable = ( previousColumnAttributes: IBucketItem[], filters: IBucketFilter[], measureGroupDimension: MeasureGroupDimension, -): ColumnWidthItem[] => { +): ColumnWidthItem[] | undefined => { const measureLocalIdentifiers = measures.map((measure) => measure.localIdentifier); const rowAttributeLocalIdentifiers = rowAttributes.map((rowAttribute) => rowAttribute.localIdentifier); const columnAttributeLocalIdentifiers = columnAttributes.map( @@ -323,7 +323,7 @@ export const adaptMdObjectWidthItemsToPivotTable = ( originalColumnWidths: ColumnWidthItem[], insight: IInsightDefinition, measureGroupDimension?: MeasureGroupDimension, -): ColumnWidthItem[] => { +): ColumnWidthItem[] | undefined => { const rowBucket = insightBucket(insight, BucketNames.ATTRIBUTE); const columnBucket = insightBucket(insight, BucketNames.COLUMNS); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/PluggableRepeater.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/PluggableRepeater.tsx index c34646fad24..60a47eb9a8e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/PluggableRepeater.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/PluggableRepeater.tsx @@ -88,10 +88,10 @@ import { AbstractPluggableVisualization } from "../AbstractPluggableVisualizatio * */ export class PluggableRepeater extends AbstractPluggableVisualization { - private environment: VisualizationEnvironment; + private environment: VisualizationEnvironment | undefined; private renderFun: RenderFunction; private unmountFun: UnmountFunction; - protected colors: IColorConfiguration; + protected colors: IColorConfiguration | undefined; constructor(props: IVisConstruct) { super(props); @@ -104,7 +104,7 @@ export class PluggableRepeater extends AbstractPluggableVisualization { } public unmount(): void { - this.unmountFun([this.getElement(), this.getConfigPanelElement()]); + this.unmountFun([this.getElement()!, this.getConfigPanelElement()!]); } public getExtendedReferencePoint = async ( @@ -135,12 +135,12 @@ export class PluggableRepeater extends AbstractPluggableVisualization { const dimensions = this.getRepeaterDimensions(insight); const attributeBucket = insightBucket(insight, BucketNames.ATTRIBUTE); const viewBucket = insightBucket(insight, BucketNames.VIEW); - const rowAttribute = attributeBucket.items[0] as IAttribute; + const rowAttribute = attributeBucket?.items[0] as IAttribute; const columnsBucket = insightBucket(insight, BucketNames.COLUMNS); const extendedConfig = this.getExtendedConfig(options, insight); const sanitizedBuckets = constructRepeaterBuckets( rowAttribute, - columnsBucket?.items, + columnsBucket!.items, viewBucket?.items?.[0] as IAttribute, extendedConfig?.inlineVisualizations, ); @@ -149,7 +149,7 @@ export class PluggableRepeater extends AbstractPluggableVisualization { return executionFactory .forInsight(insightWithSanitizedBuckets) .withDimensions(...dimensions) - .withDateFormat(dateFormat); + .withDateFormat(dateFormat!); } public override getBucketsToUpdate( @@ -168,7 +168,7 @@ export class PluggableRepeater extends AbstractPluggableVisualization { const rowAttributeWasSwapped = currentRowAttribute && nextRowAttribute && - !currentRowAttribute.displayForms.some((currentDf) => + !currentRowAttribute.displayForms?.some((currentDf) => areObjRefsEqual(currentDf.ref, nextRowAttribute.dfRef), ); @@ -193,12 +193,12 @@ export class PluggableRepeater extends AbstractPluggableVisualization { private insightHasColumns(insight: IInsightDefinition): boolean { const bucket = insightBucket(insight, BucketNames.COLUMNS); - return bucket?.items?.length > 0; + return (bucket?.items?.length ?? 0) > 0; } private insightHasRows(insight: IInsightDefinition): boolean { const bucket = insightBucket(insight, BucketNames.ATTRIBUTE); - return bucket?.items?.length > 0; + return (bucket?.items?.length ?? 0) > 0; } protected override mergeDerivedBucketItems( @@ -295,7 +295,7 @@ export class PluggableRepeater extends AbstractPluggableVisualization { return columnSizing as IRepeaterColumnSizing; } - private buildColorMapping(colorMapping?: IColorMappingItem[]): IColorMapping[] { + private buildColorMapping(colorMapping?: IColorMappingItem[]): IColorMapping[] | undefined { const validColorMapping = compact(colorMapping).map( (mapItem): IColorMapping => ({ predicate: ColorUtils.getColorMappingPredicate(mapItem.id), @@ -303,7 +303,7 @@ export class PluggableRepeater extends AbstractPluggableVisualization { }), ); - return validColorMapping?.length > 0 ? validColorMapping : null; + return validColorMapping?.length > 0 ? validColorMapping : undefined; } private getExtendedConfig(options: IVisProps, insight: IInsightDefinition) { @@ -325,7 +325,7 @@ export class PluggableRepeater extends AbstractPluggableVisualization { if (this.visualizationProperties) { resultingData.properties = getValidProperties( this.visualizationProperties, - data.colors.colorAssignments, + data.colors?.colorAssignments, ); this.visualizationProperties = resultingData.properties; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/tests/PluggableSankeyChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/tests/PluggableSankeyChart.test.tsx index d1e86110199..872b748705d 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/tests/PluggableSankeyChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/tests/PluggableSankeyChart.test.tsx @@ -107,7 +107,7 @@ describe("PluggableSankeyChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/tests/PluggableScatterPlot.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/tests/PluggableScatterPlot.test.tsx index c22f14e56c4..3a477a42c98 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/tests/PluggableScatterPlot.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/tests/PluggableScatterPlot.test.tsx @@ -186,7 +186,7 @@ describe("PluggableScatterPlot", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx index f0cdf53902a..ceda47d9909 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx @@ -68,7 +68,7 @@ describe("PluggableColumnBarCharts", () => { describe("optional stacking", () => { const options: IVisProps = { - dimensions: { height: null }, + dimensions: { height: undefined }, locale: "en-US", custom: {}, messages, @@ -225,7 +225,7 @@ describe("PluggableColumnBarCharts", () => { referencePointMocks.oneMeasuresOneCategoryOneStackItemWithStackMeasuresToPercent; let extendedReferencePoint = await columnChart.getExtendedReferencePoint(initialState); // 'Stack to 100%' checkbox is checked - expect(extendedReferencePoint.properties.controls).toEqual({ + expect(extendedReferencePoint.properties!.controls).toEqual({ stackMeasuresToPercent: true, }); @@ -234,14 +234,14 @@ describe("PluggableColumnBarCharts", () => { referencePointMocks.oneMeasuresOneCategoryWithStackMeasuresToPercent; extendedReferencePoint = await columnChart.getExtendedReferencePoint(stateWithStackByItemRemoved); // 'Stack to 100%' and 'Stack Measures' checkboxes are hidden - expect(extendedReferencePoint.properties.controls).toBeFalsy(); + expect(extendedReferencePoint.properties!.controls).toBeFalsy(); // step3: add one more measure const stateWithNewMeasureAdded = referencePointMocks.twoMeasuresOneCategoryWithStackMeasuresToPercent; extendedReferencePoint = await columnChart.getExtendedReferencePoint(stateWithNewMeasureAdded); // column chart should be stacked in percent with 'Stack to 100%' and 'Stack Measures' checkboxes are checked - expect(extendedReferencePoint.properties.controls).toEqual({ + expect(extendedReferencePoint.properties!.controls).toEqual({ stackMeasures: true, stackMeasuresToPercent: true, }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts index 5bffc39e0c4..18301e84a62 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts @@ -161,9 +161,9 @@ describe("drillDownUtil", () => { intersectionWithOuterRegionResult, } = reverseAndTrimIntersectionMock; - const invalidScenarios: Array<[string, IDrillEventIntersectionElement[]?]> = [ + const invalidScenarios: Array<[string, IDrillEventIntersectionElement[] | undefined]> = [ ["undefined", undefined], - ["null", null], + ["null", null!], // null is not valid type testing backward compatibility ["empty", []], ]; it.each(invalidScenarios)( diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/getInsightWithDrillDownAppliedMock.ts index cf8ae12ab71..a76ea702388 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/getInsightWithDrillDownAppliedMock.ts @@ -41,8 +41,8 @@ export const insightDefinition: IInsightDefinition = newInsightDefinition("visua const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; export const expectedInsightDefinitionWithStackByDrillToDepartment: IInsightDefinition = newInsightDefinition( "visualizationClass-url", @@ -128,7 +128,7 @@ export const measureHeader: IMeasureDescriptor = { format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }; @@ -144,8 +144,13 @@ export const westCoastHeader: IDrillIntersectionAttributeItem = { ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, primaryLabel: { uri: regionUri, }, @@ -164,8 +169,13 @@ export const directSalesHeader: IDrillIntersectionAttributeItem = { ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, primaryLabel: { uri: departmentUri, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/reverseAndTrimIntersectionMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/reverseAndTrimIntersectionMock.ts index c84ab0f1b3f..bc94a2ec050 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/reverseAndTrimIntersectionMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/reverseAndTrimIntersectionMock.ts @@ -15,8 +15,8 @@ const drillConfigRegion: IDrillDownDefinition = { const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; const directSalesHeader: IDrillEventIntersectionElement = { header: { @@ -31,8 +31,14 @@ const directSalesHeader: IDrillEventIntersectionElement = { ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, + primaryLabel: { uri: departmentUri }, } as IAttributeDescriptorBody, }, }; @@ -50,8 +56,14 @@ const westCoastHeader: IDrillEventIntersectionElement = { ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, + primaryLabel: { uri: regionUri }, } as IAttributeDescriptorBody, }, }; @@ -59,11 +71,11 @@ const westCoastHeader: IDrillEventIntersectionElement = { const measureHeader: IDrillEventIntersectionElement = { header: { measureHeaderItem: { - name: Won.measure.title, + name: Won.measure.title!, format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }, }; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/testHelpers.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/testHelpers.ts index daa8a09728b..adbfd3e67b6 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/testHelpers.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/testHelpers.ts @@ -4,6 +4,7 @@ import { type ReactElement } from "react"; import { type Mock } from "vitest"; +import { type IDataView } from "@gooddata/sdk-backend-spi"; import { type IAttribute, type IInsight, @@ -11,7 +12,12 @@ import { localIdRef, uriRef, } from "@gooddata/sdk-model"; -import { type IDrillEvent, type IDrillEventIntersectionElement, type VisType } from "@gooddata/sdk-ui"; +import { + type IDrillEvent, + type IDrillEventIntersectionElement, + type VisElementType, + type VisType, +} from "@gooddata/sdk-ui"; import { type IDrillDownDefinition } from "../../../interfaces/Visualization.js"; @@ -41,11 +47,11 @@ export function insightDefinitionToInsight( export function createDrillEvent(type: VisType, intersection: IDrillEventIntersectionElement[]): IDrillEvent { return { - dataView: null, + dataView: null as unknown as IDataView, drillContext: { type, intersection, - element: null, + element: null as unknown as VisElementType, }, }; } diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx index 7a6e3983e4d..5b374289426 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx @@ -135,7 +135,7 @@ describe("PluggableTreemap", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); it("should remove all derived measures and arithmetic measures created from derived measures", async () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/getInsightWithDrillDownAppliedMock.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/getInsightWithDrillDownAppliedMock.ts index 97786114232..dd69cc58a2a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/getInsightWithDrillDownAppliedMock.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/getInsightWithDrillDownAppliedMock.ts @@ -15,8 +15,8 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; const { Department, Region, Won } = ReferenceMd; const regionUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1024"; const departmentUri = "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/1027"; -const westCoastUri = ReferenceData.Region.WestCoast.uri; -const directSalesUri = ReferenceData.Department.DirectSales.uri; +const westCoastUri = ReferenceData.Region.WestCoast.uri!; +const directSalesUri = ReferenceData.Department.DirectSales.uri!; export const targetUri = "target-uri"; @@ -34,8 +34,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: departmentUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: departmentUri }, + uri: departmentUri, + }, primaryLabel: { uri: departmentUri, }, @@ -55,8 +60,13 @@ export const intersection: IDrillEventIntersectionElement[] = [ ref: { uri: regionUri, }, - identifier: null, - formOf: null, + identifier: "mock-identifier", + formOf: { + identifier: "mock-attribute", + name: "Mock Attribute", + ref: { uri: regionUri }, + uri: regionUri, + }, primaryLabel: { uri: regionUri, }, @@ -70,7 +80,7 @@ export const intersection: IDrillEventIntersectionElement[] = [ format: "#,##0.00", localIdentifier: Won.measure.localIdentifier, uri: "/gdc/md/lmnivlu3sowt63jvr2mo1wlse5fyv203/obj/9203", - identifier: null, + identifier: undefined, }, }, }, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/tests/PluggableWaterfallChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/tests/PluggableWaterfallChart.test.tsx index 0e3919c515b..5961a659f55 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/tests/PluggableWaterfallChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/tests/PluggableWaterfallChart.test.tsx @@ -155,7 +155,7 @@ describe("PluggableWaterfallChart", () => { referencePointMocks.emptyReferencePoint, ); - expect(extendedReferencePoint.uiConfig.supportedOverTimeComparisonTypes).toEqual([]); + expect(extendedReferencePoint.uiConfig!.supportedOverTimeComparisonTypes).toEqual([]); }); }); @@ -196,7 +196,7 @@ describe("PluggableWaterfallChart", () => { }, }); - expect(extendedReferencePoint.properties.controls["total"].measures).toEqual([ + expect(extendedReferencePoint.properties!.controls!["total"].measures).toEqual([ referencePointMocks.masterMeasureItems[1].localIdentifier, ]); }); @@ -222,7 +222,7 @@ describe("PluggableWaterfallChart", () => { }, }); - expect(extendedReferencePoint.properties.controls["total"].measures).toEqual([]); + expect(extendedReferencePoint.properties!.controls!["total"].measures).toEqual([]); }); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx index a74ab79f217..8c9f307cc25 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx @@ -82,7 +82,7 @@ export class PluggableXirr extends AbstractPluggableVisualization { } public unmount(): void { - this.unmountFun([this.getElement(), this.getConfigPanelElement()]); + this.unmountFun([this.getElement()!, this.getConfigPanelElement()!]); } public getExtendedReferencePoint = async ( @@ -123,7 +123,7 @@ export class PluggableXirr extends AbstractPluggableVisualization { return executionFactory .forInsight(insight) .withDimensions(...this.getXirrDimensions(insight)) - .withDateFormat(dateFormat); + .withDateFormat(dateFormat!); } protected renderVisualization( @@ -142,13 +142,13 @@ export class PluggableXirr extends AbstractPluggableVisualization { drillableItems={drillableItems} onDrill={this.onDrill} locale={locale} - config={updateConfigWithSettings(config, this.settings)} + config={updateConfigWithSettings(config!, this.settings!)} afterRender={this.afterRender} onLoadingChanged={this.onLoadingChanged} pushData={this.pushData} onError={this.onError} - LoadingComponent={null} - ErrorComponent={null} + LoadingComponent={undefined} + ErrorComponent={undefined} />, this.getElement(), ); diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/tests/PluggableXirr.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/tests/PluggableXirr.test.ts index 9dd44be26c0..d83232e41f6 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/tests/PluggableXirr.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/tests/PluggableXirr.test.ts @@ -100,8 +100,8 @@ describe("PluggableXirr", () => { xirr.update(options, testMocks.insightWithSingleMeasure, emptyPropertiesMeta, executionFactory); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.type).toBe(CoreXirr); - expect(renderEl.props.config.enableCompactSize).toBe(true); + expect(renderEl!.type).toBe(CoreXirr); + expect(renderEl!.props.config!.enableCompactSize).toBe(true); }); it("should correctly set config.disableDrillUnderline from FeatureFlag disableKpiDashboardHeadlineUnderline", () => { @@ -117,8 +117,8 @@ describe("PluggableXirr", () => { xirr.update(options, testMocks.insightWithSingleMeasure, emptyPropertiesMeta, executionFactory); const renderEl = getLastRenderEl(mockRenderFun, mockElement); - expect(renderEl.type).toBe(CoreXirr); - expect(renderEl.props.config.disableDrillUnderline).toBe(true); + expect(renderEl!.type).toBe(CoreXirr); + expect(renderEl!.props.config!.disableDrillUnderline).toBe(true); }); }); diff --git a/libs/sdk-ui-ext/src/internal/components/tests/BaseVisualization.test.tsx b/libs/sdk-ui-ext/src/internal/components/tests/BaseVisualization.test.tsx index c9acab77291..c15bbdc461a 100644 --- a/libs/sdk-ui-ext/src/internal/components/tests/BaseVisualization.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/tests/BaseVisualization.test.tsx @@ -1,7 +1,7 @@ // (C) 2019-2025 GoodData Corporation import { render, screen, waitFor } from "@testing-library/react"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { dummyBackend } from "@gooddata/sdk-backend-mockingbird"; import { type IExecutionFactory, type IPreparedExecution } from "@gooddata/sdk-backend-spi"; @@ -484,7 +484,7 @@ describe("BaseVisualization", () => { }); afterEach(() => { - getExtendedReferencePointMock = null; + getExtendedReferencePointMock = undefined as unknown as Mock; visualizationCatalog = defaultVisualizationsCatalog; }); @@ -511,7 +511,7 @@ describe("BaseVisualization", () => { async () => { createComponent({ ...defaultProps, - referencePoint: null, + referencePoint: undefined, visualizationCatalog, }); @@ -530,7 +530,7 @@ describe("BaseVisualization", () => { createComponent({ ...defaultProps, visualizationCatalog, - onExtendedReferencePointChanged: null, + onExtendedReferencePointChanged: undefined, }); await waitFor(() => { diff --git a/libs/sdk-ui-ext/src/internal/interfaces/ConfigurationPanel.ts b/libs/sdk-ui-ext/src/internal/interfaces/ConfigurationPanel.ts index 55485df7ef3..293ce1c64d2 100644 --- a/libs/sdk-ui-ext/src/internal/interfaces/ConfigurationPanel.ts +++ b/libs/sdk-ui-ext/src/internal/interfaces/ConfigurationPanel.ts @@ -9,12 +9,12 @@ export interface IConfigItemSubsection { disabled: boolean; configPanelDisabled: boolean; axis: AxisType; - properties: IVisualizationProperties; - pushData(data: IPushData): void; + properties?: IVisualizationProperties; + pushData?(data: IPushData): void; } export interface IHeadlinePanelConfig { - separators: ISeparators; + separators?: ISeparators; comparisonColorPalette: IColorPalette; supportsAttributeHierarchies: boolean; } diff --git a/libs/sdk-ui-ext/src/internal/interfaces/MinMaxControl.ts b/libs/sdk-ui-ext/src/internal/interfaces/MinMaxControl.ts index a7e2c1df927..361cc40e596 100644 --- a/libs/sdk-ui-ext/src/internal/interfaces/MinMaxControl.ts +++ b/libs/sdk-ui-ext/src/internal/interfaces/MinMaxControl.ts @@ -4,9 +4,9 @@ import { type IVisualizationProperties } from "./Visualization.js"; export interface IMinMaxControlProps { isDisabled: boolean; basePath: string; - pushData: (data: any) => any; - properties: IVisualizationProperties; - propertiesMeta: any; + pushData?: (data: any) => any; + properties?: IVisualizationProperties; + propertiesMeta?: any; } export interface IMinMaxScaleState { diff --git a/libs/sdk-ui-ext/src/internal/interfaces/Visualization.ts b/libs/sdk-ui-ext/src/internal/interfaces/Visualization.ts index f9df7143a73..b02bbf5f2ad 100644 --- a/libs/sdk-ui-ext/src/internal/interfaces/Visualization.ts +++ b/libs/sdk-ui-ext/src/internal/interfaces/Visualization.ts @@ -44,7 +44,7 @@ import { type ChartInlineVisualizationType } from "@gooddata/sdk-ui-charts"; import { type IDefaultControlProperties } from "./ControlProperties.js"; import { type IAvailableSortsGroup, type ISortConfig } from "./SortConfig.js"; -export type RenderFunction = (component: any, target: Element) => void; +export type RenderFunction = (component: any, target: Element | null) => void; export type UnmountFunction = (elementsOrSelectors?: (string | HTMLElement)[]) => void; @@ -88,7 +88,7 @@ export interface ICustomProps { export interface IDimensions { width?: number; // Note: will not be optional once we start sending it - height: number; + height?: number; } /** @@ -250,7 +250,7 @@ export interface IBucketItem { format?: string; granularity?: string; showInPercent?: boolean; - showOnSecondaryAxis?: boolean; + showOnSecondaryAxis?: boolean | null; isTotalMeasure?: boolean; isThresholdMeasure?: boolean; sort?: ISort; @@ -404,7 +404,7 @@ export interface IReferences { } export interface IExtendedReferencePoint extends IReferencePoint { - uiConfig: IUiConfig; + uiConfig?: IUiConfig | null; } /** @@ -449,7 +449,7 @@ export interface IVisualization { props: IVisProps, insight: IInsightDefinition, executionFactory: IExecutionFactory, - ): IPreparedExecution; + ): IPreparedExecution | null; /** * Get additional visualization executions for multi-layer visualizations. diff --git a/libs/sdk-ui-ext/src/internal/tests/mocks/referencePointMocks.ts b/libs/sdk-ui-ext/src/internal/tests/mocks/referencePointMocks.ts index 69b37888028..279439fe588 100644 --- a/libs/sdk-ui-ext/src/internal/tests/mocks/referencePointMocks.ts +++ b/libs/sdk-ui-ext/src/internal/tests/mocks/referencePointMocks.ts @@ -21,33 +21,33 @@ export const masterMeasureItems: IBucketItem[] = [ { localIdentifier: "m1", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "aazb6kroa3iC", - showInPercent: null, - showOnSecondaryAxis: null, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, }, { localIdentifier: "m2", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "af2Ewj9Re2vK", - showInPercent: null, - showOnSecondaryAxis: null, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, }, { localIdentifier: "m3", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "dt.opportunitysnapshot.snapshotdate", - showInPercent: null, + showInPercent: null as unknown as undefined, showOnSecondaryAxis: true, }, { localIdentifier: "m4", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "acfWntEMcom0", - showInPercent: null, + showInPercent: null as unknown as undefined, showOnSecondaryAxis: true, }, ]; @@ -56,29 +56,29 @@ export const derivedMeasureItems: IBucketItem[] = [ { localIdentifier: "m1_pop", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "aazb6kroa3iC", - showInPercent: null, - showOnSecondaryAxis: null, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, masterLocalIdentifier: "m1", overTimeComparisonType: OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, }, { localIdentifier: "m2_pop", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "af2Ewj9Re2vK", - showInPercent: null, - showOnSecondaryAxis: null, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, masterLocalIdentifier: "m2", overTimeComparisonType: OverTimeComparisonTypes.PREVIOUS_PERIOD, }, { localIdentifier: "m3_pop", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "dt.opportunitysnapshot.snapshotdate", - showInPercent: null, + showInPercent: null as unknown as undefined, showOnSecondaryAxis: true, masterLocalIdentifier: "m3", overTimeComparisonType: OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, @@ -86,9 +86,9 @@ export const derivedMeasureItems: IBucketItem[] = [ { localIdentifier: "m4_pop", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "acfWntEMcom0", - showInPercent: null, + showInPercent: null as unknown as undefined, showOnSecondaryAxis: true, masterLocalIdentifier: "m4", overTimeComparisonType: OverTimeComparisonTypes.PREVIOUS_PERIOD, @@ -96,20 +96,20 @@ export const derivedMeasureItems: IBucketItem[] = [ { localIdentifier: "m5_pop", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "acfWntEMcom0", - showInPercent: null, - showOnSecondaryAxis: null, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, masterLocalIdentifier: "m4", overTimeComparisonType: OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, }, { localIdentifier: "m6_pop", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "acfWntEMcom0", - showInPercent: null, - showOnSecondaryAxis: null, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, masterLocalIdentifier: "am3", overTimeComparisonType: OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, }, @@ -119,70 +119,70 @@ export const arithmeticMeasureItems: IBucketItem[] = [ { localIdentifier: "am1", type: "metric", - aggregation: null, - attribute: null, - showInPercent: null, - showOnSecondaryAxis: null, + aggregation: null as unknown as undefined, + attribute: null as unknown as undefined, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, operator: "sum", operandLocalIdentifiers: ["m1", "m2"], }, { localIdentifier: "am2", type: "metric", - aggregation: null, - attribute: null, - showInPercent: null, - showOnSecondaryAxis: null, + aggregation: null as unknown as undefined, + attribute: null as unknown as undefined, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, operator: "sum", operandLocalIdentifiers: ["m1", "am1"], }, { localIdentifier: "am3", type: "metric", - aggregation: null, - attribute: null, - showInPercent: null, - showOnSecondaryAxis: null, + aggregation: null as unknown as undefined, + attribute: null as unknown as undefined, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, operator: "sum", operandLocalIdentifiers: ["m1", "m1"], }, { localIdentifier: "am4", type: "metric", - aggregation: null, - attribute: null, - showInPercent: null, - showOnSecondaryAxis: null, + aggregation: null as unknown as undefined, + attribute: null as unknown as undefined, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, operator: "sum", operandLocalIdentifiers: ["m1_pop", "m1"], }, { localIdentifier: "am5", type: "metric", - aggregation: null, - attribute: null, - showInPercent: null, - showOnSecondaryAxis: null, + aggregation: null as unknown as undefined, + attribute: null as unknown as undefined, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, operator: "sum", operandLocalIdentifiers: ["m3", "m4"], }, { localIdentifier: "am6", type: "metric", - aggregation: null, - attribute: null, - showInPercent: null, - showOnSecondaryAxis: null, + aggregation: null as unknown as undefined, + attribute: null as unknown as undefined, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, operator: "sum", operandLocalIdentifiers: ["m2_pop", "m1"], }, { localIdentifier: "am7", type: "metric", - aggregation: null, - attribute: null, - showInPercent: null, - showOnSecondaryAxis: null, + aggregation: null as unknown as undefined, + attribute: null as unknown as undefined, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, operator: "sum", operandLocalIdentifiers: ["m1", "m3"], }, @@ -291,7 +291,7 @@ export const dateFilterBucketAllTime: IFilters = { }, }, ], - aggregation: null, + aggregation: null as unknown as undefined, }, ], }; @@ -315,7 +315,7 @@ export const samePeriodPrevYearFiltersBucket: IFilters = { }, }, ], - aggregation: null, + aggregation: null as unknown as undefined, dateDatasetRef, }, ], @@ -340,7 +340,7 @@ export const twoDateFiltersBucket: IFilters = { }, }, ], - aggregation: null, + aggregation: null as unknown as undefined, dateDatasetRef, }, { @@ -359,7 +359,7 @@ export const twoDateFiltersBucket: IFilters = { }, }, ], - aggregation: null, + aggregation: null as unknown as undefined, dateDatasetRef, }, ], @@ -421,14 +421,14 @@ export const attributeItems: IBucketItem[] = [ { localIdentifier: "a1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", dfRef: uriRef("a1/df"), }, { localIdentifier: "a2", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.stage.iswon", dfRef: uriRef("a2/df"), }, @@ -451,7 +451,7 @@ export const geoAttributeItems: IBucketItem[] = [ { localIdentifier: "a1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.country", locationDisplayFormRef: uriRef("/geo/attribute/displayform/uri/1"), dfRef: { uri: "/geo/attribute/displayform/uri/2" }, @@ -459,13 +459,13 @@ export const geoAttributeItems: IBucketItem[] = [ { localIdentifier: "a2", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.city", }, { localIdentifier: "a3", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.country", locationDisplayFormRef: uriRef("/geo/attribute/displayform/uri/1"), dfRef: { uri: "/geo/attribute/displayform/uri/2" }, @@ -473,7 +473,7 @@ export const geoAttributeItems: IBucketItem[] = [ { id: "attr.owner.country_name", ref: { uri: "/geo/attribute/displayform/uri/2" }, - type: undefined, + type: "GDC.text", title: "Country name", isDefault: true, }, @@ -499,7 +499,7 @@ export const geoAttributeFilters: IFiltersBucketItem[] = [ { localIdentifier: "a1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.country", filters: [ { @@ -519,7 +519,7 @@ export const geoAttributeFilters: IFiltersBucketItem[] = [ { localIdentifier: "a2", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.city", filters: [ { @@ -542,7 +542,7 @@ export const attributeFilters: IFiltersBucketItem[] = [ { localIdentifier: "a1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", filters: [ { @@ -562,7 +562,7 @@ export const attributeFilters: IFiltersBucketItem[] = [ { localIdentifier: "a2", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.stage.iswon", filters: [ { @@ -599,8 +599,8 @@ export const dateFilterItem: IBucketItem = { localIdentifier: "a1", type: "date", attribute: "attr.datedataset", - aggregation: null, - showInPercent: null, + aggregation: null as unknown as undefined, + showInPercent: null as unknown as undefined, filters: [dateFilter], }; @@ -608,8 +608,8 @@ export const dateItem: IBucketItem = { localIdentifier: "a1", type: "date", attribute: "attr.datedataset", - aggregation: null, - showInPercent: null, + aggregation: null as unknown as undefined, + showInPercent: null as unknown as undefined, dateDatasetRef: idRef("ds1"), }; @@ -617,8 +617,8 @@ export const dateItem2: IBucketItem = { localIdentifier: "a2", type: "date", attribute: "attr.datedataset.2", - aggregation: null, - showInPercent: null, + aggregation: null as unknown as undefined, + showInPercent: null as unknown as undefined, dateDatasetRef: idRef("ds2"), }; @@ -626,18 +626,18 @@ export const dateItem3: IBucketItem = { localIdentifier: "a3", type: "date", attribute: "attr.datedataset.3", - aggregation: null, - showInPercent: null, + aggregation: null as unknown as undefined, + showInPercent: null as unknown as undefined, dateDatasetRef: idRef("ds3"), }; export const overTimeComparisonDateItem: IBucketItem = { - aggregation: null, - showInPercent: null, + aggregation: null as unknown as undefined, + showInPercent: null as unknown as undefined, operator: null, operandLocalIdentifiers: null, - granularity: null, - masterLocalIdentifier: null, + granularity: null as unknown as undefined, + masterLocalIdentifier: null as unknown as undefined, localIdentifier: "2fb4a818526f4ca18c926b1a11adc859", filters: [dateFilterSamePeriodPreviousYear], attribute: "attr.datedataset", @@ -648,8 +648,8 @@ export const dateItemWithDateDataset: IBucketItem = { localIdentifier: "a1", type: "date", attribute: "attr.datedataset", - aggregation: null, - showInPercent: null, + aggregation: null as unknown as undefined, + showInPercent: null as unknown as undefined, dateDatasetRef, }; @@ -2769,7 +2769,7 @@ export const overTimeComparisonRecommendationRefPoint: IReferencePoint = { type: "date", attribute: "attr.datedataset", filters: [dateFilter], - aggregation: null, + aggregation: null as unknown as undefined, }, ], }, @@ -3177,7 +3177,7 @@ export const dateAttributeOnStackBucketReferencePoint: IReferencePoint = { type: "date", attribute: DATE_DATASET_ATTRIBUTE, filters: [dateFilter], - aggregation: null, + aggregation: null as unknown as undefined, }, ], }, @@ -4170,7 +4170,7 @@ export const tableWith20MeasuresAndAttributesAnd1Column: IReferencePoint = { { localIdentifier: "c1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "column.attribute", dfRef: uriRef("c1/df"), }, @@ -4202,7 +4202,7 @@ export const tableWith20MeasuresAndDerivedMeasuresNoRowsAnd1Column: IReferencePo { localIdentifier: "c1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "column.attribute", dfRef: uriRef("c1/df"), }, @@ -4245,9 +4245,9 @@ export const tableWith50MeasuresAndDerivedMeasuresNoRowsNoColumns: IReferencePoi export const thresholdMeasure: IBucketItem = { localIdentifier: "thresholdMeasure", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "aazb6kroa3iC", - showInPercent: null, - showOnSecondaryAxis: null, + showInPercent: null as unknown as undefined, + showOnSecondaryAxis: null as unknown as undefined, isThresholdMeasure: true, }; diff --git a/libs/sdk-ui-ext/src/internal/tests/mocks/testMocks.ts b/libs/sdk-ui-ext/src/internal/tests/mocks/testMocks.ts index 5babb3c8b96..2ae542b3152 100644 --- a/libs/sdk-ui-ext/src/internal/tests/mocks/testMocks.ts +++ b/libs/sdk-ui-ext/src/internal/tests/mocks/testMocks.ts @@ -82,10 +82,10 @@ export const insightWithSinglePrimaryAndSecondaryMeasureNoIdentifier: IInsight = filters: [], sorts: [], properties: {}, - identifier: undefined, + identifier: "test-insight-primary-secondary", uri: "/gdc/md/project/obj/1234", ref: { - identifier: undefined, + identifier: "test-insight-primary-secondary", }, title: "Dummy insight with single primary and secondary measure", }, diff --git a/libs/sdk-ui-ext/src/internal/tests/testDataProvider.ts b/libs/sdk-ui-ext/src/internal/tests/testDataProvider.ts index ec4d18fcf03..13c47f764f0 100644 --- a/libs/sdk-ui-ext/src/internal/tests/testDataProvider.ts +++ b/libs/sdk-ui-ext/src/internal/tests/testDataProvider.ts @@ -40,7 +40,7 @@ export const createTestProperties = ( }; }; -export const newInsight = ( +export const newInsight = ( buckets: IBucket[], options?: { title?: string; diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts b/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts index 0e4dcc7982b..842d9ff7325 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts @@ -22,7 +22,7 @@ import { } from "../interfaces/Visualization.js"; function getTypeOfDerivedToKeep( - supportedTypes: OverTimeComparisonType[], + supportedTypes: OverTimeComparisonType[] | undefined, appliedType: OverTimeComparisonType, ) { return isEmpty(supportedTypes) || isEqual(supportedTypes, [OverTimeComparisonTypes.NOTHING]) @@ -36,11 +36,11 @@ export function configureOverTimeComparison( let newExtendedReferencePoint = cloneDeep(extendedReferencePoint); const { buckets, filters, uiConfig } = newExtendedReferencePoint; - const { supportedOverTimeComparisonTypes } = uiConfig; + const { supportedOverTimeComparisonTypes } = uiConfig ?? {}; const appliedComparisonType = getComparisonTypeFromFilters(filters); const isSelectedComparisonSupportedByVis = - supportedOverTimeComparisonTypes.includes(appliedComparisonType); + !!supportedOverTimeComparisonTypes?.includes(appliedComparisonType); const derivedOfTypeToKeep = getTypeOfDerivedToKeep( supportedOverTimeComparisonTypes, appliedComparisonType, @@ -100,9 +100,10 @@ export function configurePercent( }); } - const bucketUiConfig: IBucketUiConfig = - extendedReferencePoint.uiConfig.buckets[bucket.localIdentifier]; - if (bucketUiConfig.accepts.indexOf(METRIC) >= 0) { + const bucketUiConfig: IBucketUiConfig | undefined = + extendedReferencePoint?.uiConfig?.buckets?.[bucket.localIdentifier]; + + if (bucketUiConfig && (bucketUiConfig?.accepts?.indexOf(METRIC) ?? -1) >= 0) { bucketUiConfig.isShowInPercentEnabled = showInPercentEnabled; } }); diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts b/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts index bb98226732d..2b8786e4d60 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts @@ -36,7 +36,6 @@ import { type IBucketItem, type IBucketOfFun, type IBucketUiConfig, - type IBucketsUiConfig, type IDateFilter, type IExtendedReferencePoint, type IFilters, @@ -47,7 +46,7 @@ import { type IVisualizationProperties, } from "../interfaces/Visualization.js"; -export function isDateFilter(filter: IBucketFilter): filter is IDateFilter { +export function isDateFilter(filter: IBucketFilter | undefined): filter is IDateFilter { return !!filter && (filter as IDateFilter).attribute === DATE_DATASET_ATTRIBUTE; } @@ -55,7 +54,7 @@ export function isFiltersBucketItem(filter: IFiltersBucketItem): filter is IFilt return filter?.attribute === DATE_DATASET_ATTRIBUTE; } -export function isAttributeFilter(filter: IBucketFilter): filter is IAttributeFilter { +export function isAttributeFilter(filter: IBucketFilter | undefined): filter is IAttributeFilter { const filterAsAttributeFilter: IAttributeFilter = filter as IAttributeFilter; return ( !!filter && @@ -64,7 +63,7 @@ export function isAttributeFilter(filter: IBucketFilter): filter is IAttributeFi ); } -export function isMeasureValueFilter(filter: IBucketFilter): filter is IMeasureValueFilter { +export function isMeasureValueFilter(filter: IBucketFilter | undefined): filter is IMeasureValueFilter { if (filter === undefined || filter === null) { return false; } @@ -79,7 +78,7 @@ export function isActiveMeasureValueFilter(filter: IBucketFilter): boolean { return !!filter.condition; } -export function isRankingFilter(filter: IBucketFilter): filter is IRankingFilter { +export function isRankingFilter(filter: IBucketFilter | undefined): filter is IRankingFilter { const filterAsRankingFilter = filter as IRankingFilter; return ( !!filter && @@ -102,7 +101,7 @@ export function sanitizeFilters( }; const filteredFilters = newReferencePoint.filters.items.filter((filterBucketItem: IFiltersBucketItem) => { - const filter = filterBucketItem.filters[0]; + const filter = filterBucketItem.filters?.[0]; if (isAttributeFilter(filter) || isDateFilter(filter)) { if (filterBucketItem.autoCreated === false) { @@ -176,7 +175,9 @@ export function isDerivedBucketItem(measureItem: IBucketItem): boolean { return !!measureItem.masterLocalIdentifier; } -export function isArithmeticBucketItem(bucketItem: IBucketItem): boolean { +export function isArithmeticBucketItem( + bucketItem: IBucketItem, +): bucketItem is IBucketItem & { operandLocalIdentifiers: string[] } { return !!bucketItem.operandLocalIdentifiers; } @@ -192,22 +193,26 @@ function findDerivedTypesReferencedByArithmeticMeasure( measure: IBucketItem, allMeasures: IBucketItem[], visitedMeasures: Set, -): Set { - return measure.operandLocalIdentifiers.reduce( - (types: Set, operandIdentifier: string) => { +): Set | undefined { + return measure.operandLocalIdentifiers?.reduce( + (types: Set, operandIdentifier: string | null) => { if (operandIdentifier === null || visitedMeasures.has(operandIdentifier)) { return types; } - const operand: IBucketItem = findMeasureByLocalIdentifier(operandIdentifier, allMeasures); + const operand = findMeasureByLocalIdentifier(operandIdentifier, allMeasures); if (operand === undefined) { return types; } if (isArithmeticBucketItem(operand)) { visitedMeasures.add(operandIdentifier); - findDerivedTypesReferencedByArithmeticMeasure(operand, allMeasures, visitedMeasures).forEach( + findDerivedTypesReferencedByArithmeticMeasure(operand, allMeasures, visitedMeasures)?.forEach( (type: OverTimeComparisonType) => types.add(type), ); - } else if (isDerivedBucketItem(operand) && !types.has(operand.overTimeComparisonType)) { + } else if ( + isDerivedBucketItem(operand) && + operand.overTimeComparisonType && + !types.has(operand.overTimeComparisonType) + ) { types.add(operand.overTimeComparisonType); } return types; @@ -239,7 +244,7 @@ export function getDerivedTypesFromArithmeticMeasure( allMeasures, new Set(), ); - return Array.from(overTimeComparisonTypes); + return Array.from(overTimeComparisonTypes ?? []); } export function filterOutDerivedMeasures(measures: IBucketItem[]): IBucketItem[] { @@ -294,7 +299,7 @@ export function isDateBucketItem(bucketItem: IBucketItem): boolean { export const isNotDateBucketItem = negate(isDateBucketItem); -export function getDateFilter(filtersBucket: IFilters): IDateFilter { +export function getDateFilter(filtersBucket: IFilters): IDateFilter | null { if (!filtersBucket) { return null; } @@ -358,10 +363,14 @@ export function setBucketTitles( referencePoint: IExtendedReferencePoint, visualizationType: string, intl?: IntlShape, -): IUiConfig { +): IUiConfig | null | undefined { const buckets = referencePoint?.buckets; const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); + if (!updatedUiConfig) { + return updatedUiConfig; + } + buckets.forEach((bucket) => { const localIdentifier = bucket.localIdentifier ?? ""; // skip disabled buckets @@ -383,12 +392,15 @@ export function setBucketTitles( return updatedUiConfig; } -export function generateBucketTitleId(localIdentifier: string, visualizationType: string): string { - return titles[`${localIdentifier}_${visualizationType}`].id; +export function generateBucketTitleId( + localIdentifier: string, + visualizationType: string, +): string | undefined { + return titles[`${localIdentifier}_${visualizationType}`]?.id; } -function generateBucketSubtitleId(localIdentifier: string, visualizationType: string): string { - return subtitles[`${localIdentifier}_${visualizationType}`].id; +function generateBucketSubtitleId(localIdentifier: string, visualizationType: string): string | undefined { + return subtitles[`${localIdentifier}_${visualizationType}`]?.id; } export function getItemsCount(buckets: IBucketOfFun[], localIdentifier: string): number { @@ -424,7 +436,7 @@ export function getBucketItemsByType( const bucketItems: IBucketItem[] = getBucketItems(buckets, localIdentifier); bucketItems.forEach((item: IBucketItem) => { - if (types.includes(item.type)) { + if (item.type && types.includes(item.type)) { itemsOfType.push(item); } }); @@ -440,15 +452,19 @@ export function getPreferredBucketItems( return bucket?.items ?? []; } -function getPreferredBucket(buckets: IBucketOfFun[], preference: string[], type: string[]): IBucketOfFun { - return preference.reduce((result: IBucketOfFun, preference: string) => { +function getPreferredBucket( + buckets: IBucketOfFun[], + preference: string[], + type: string[], +): IBucketOfFun | undefined { + return preference.reduce((result: IBucketOfFun | undefined, preference: string) => { if (result) { return result; } return buckets.find((bucket: IBucketOfFun) => { const preferenceMatch = bucket.localIdentifier === preference; - const typeMatch = (bucket?.items ?? []).every((item) => type.indexOf(item.type) !== -1); + const typeMatch = (bucket?.items ?? []).every((item) => type.indexOf(item.type!) !== -1); return preferenceMatch && typeMatch; }); @@ -457,7 +473,7 @@ function getPreferredBucket(buckets: IBucketOfFun[], preference: string[], type: function getAllBucketItemsByType(bucket: IBucketOfFun, types: string[]): IBucketItem[] { return bucket.items.reduce((resultItems: IBucketItem[], item: IBucketItem): IBucketItem[] => { - if (types.includes(item.type)) { + if (item.type && types.includes(item.type)) { resultItems.push(item); } return resultItems; @@ -499,7 +515,7 @@ function getUniqueAttributes(buckets: IBucketOfFun[]): IBucketItem[] { return uniqBy(attributes, (attribute) => attribute?.attribute); } -export function getMeasuresFromMdObject(insight: IInsightDefinition): IMeasure[] { +export function getMeasuresFromMdObject(insight: IInsightDefinition | undefined): IMeasure[] { if (!insight) { return []; } @@ -663,7 +679,7 @@ function hasItemsAboveLimit(bucket: IBucketOfFun, itemsLimit: number): boolean { return masterBucketItems.length > itemsLimit; } -function applyItemsLimit(bucket: IBucketOfFun, itemsLimit: number): IBucketOfFun { +function applyItemsLimit(bucket: IBucketOfFun, itemsLimit: number | undefined): IBucketOfFun { if (itemsLimit !== undefined && hasItemsAboveLimit(bucket, itemsLimit)) { const newBucket = cloneDeep(bucket); @@ -673,15 +689,18 @@ function applyItemsLimit(bucket: IBucketOfFun, itemsLimit: number): IBucketOfFun return bucket; } -function applyUiConfigOnBucket(bucket: IBucketOfFun, bucketUiConfig: IBucketUiConfig): IBucketOfFun { +function applyUiConfigOnBucket( + bucket: IBucketOfFun, + bucketUiConfig: IBucketUiConfig | undefined, +): IBucketOfFun { return applyItemsLimit(bucket, bucketUiConfig?.itemsLimit); } export function applyUiConfig(referencePoint: IExtendedReferencePoint): IExtendedReferencePoint { const buckets: IBucketOfFun[] = referencePoint.buckets; - const uiConfig: IBucketsUiConfig = referencePoint.uiConfig.buckets; + const uiConfig = referencePoint.uiConfig?.buckets; const newBuckets: IBucketOfFun[] = buckets.map((bucket: IBucketOfFun) => - applyUiConfigOnBucket(bucket, uiConfig[bucket.localIdentifier]), + applyUiConfigOnBucket(bucket, uiConfig?.[bucket.localIdentifier]), ); set(referencePoint, "buckets", newBuckets); return referencePoint; @@ -691,7 +710,7 @@ export function hasBucket(buckets: IBucketOfFun[], localIdentifier: string): boo return buckets.some((bucket) => bucket.localIdentifier === localIdentifier); } -export function findBucket(buckets: IBucketOfFun[], localIdentifier: string): IBucketOfFun { +export function findBucket(buckets: IBucketOfFun[], localIdentifier: string): IBucketOfFun | undefined { return buckets.find((bucket) => bucket?.localIdentifier === localIdentifier); } @@ -731,7 +750,7 @@ export function removeAllDerivedMeasures( export function findMasterBucketItem( derivedBucketItem: IBucketItem, bucketItems: IBucketItem[], -): IBucketItem { +): IBucketItem | undefined { return bucketItems.find((item) => item.localIdentifier === derivedBucketItem.masterLocalIdentifier); } @@ -751,7 +770,7 @@ export function findDerivedBucketItems( export function findDerivedBucketItem( masterBucketItem: IBucketItem, bucketItems: IBucketItem[], -): IBucketItem { +): IBucketItem | undefined { return bucketItems.find( (bucketItem) => bucketItem.masterLocalIdentifier === masterBucketItem.localIdentifier, ); @@ -972,7 +991,7 @@ export function isShowOnSecondaryAxis(item: IBucketItem): boolean { return item?.showOnSecondaryAxis ?? false; } -export function setMeasuresShowOnSecondaryAxis(items: IBucketItem[], value: boolean): IBucketItem[] { +export function setMeasuresShowOnSecondaryAxis(items: IBucketItem[], value: boolean | null): IBucketItem[] { return items.map((item: IBucketItem) => ({ ...item, [SHOW_ON_SECONDARY_AXIS]: value, @@ -1105,8 +1124,8 @@ const asLocalIdentifier = (measure: IMeasure) => measure.measure.localIdentifier * @param properties - the properties of the insight */ export function getChartFillIgnoredMeasureIdsFromMdObject( - insight: IInsightDefinition, - properties: IVisualizationProperties, + insight: IInsightDefinition | undefined, + properties: IVisualizationProperties | undefined, ): string[] { if (!insight) { return []; @@ -1117,8 +1136,8 @@ export function getChartFillIgnoredMeasureIdsFromMdObject( if (isComboChart(insightType)) { // each combo chart measure bucket can be set to represent a different chart (column, area, line) const lineChartBuckets: string[] = [ - ...(isLineChart(properties.controls?.["primaryChartType"]) ? [BucketNames.MEASURES] : []), - ...(isLineChart(properties.controls?.["secondaryChartType"]) + ...(isLineChart(properties?.controls?.["primaryChartType"]) ? [BucketNames.MEASURES] : []), + ...(isLineChart(properties?.controls?.["secondaryChartType"]) ? [BucketNames.SECONDARY_MEASURES] : []), ]; diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts b/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts index bc594fde1bf..85ef2a2a31e 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts @@ -68,7 +68,7 @@ export function filteredByDerivedMeasure(buckets: IBucketOfFun[], filters: IFilt return allBucketFilters .filter(isMeasureValueFilter) .some((measureValueFilter) => - derivedMeasuresLocalIdentifiers.includes(measureValueFilter.measureLocalIdentifier), + derivedMeasuresLocalIdentifiers.includes(measureValueFilter.measureLocalIdentifier!), ); } @@ -204,9 +204,9 @@ export function hasNonAllTimeFilter(filters: IFilters): boolean { return !isEmpty(filterInterval); } -function hasNoRankingFilter(_: IBucketOfFun[], filters: IFilters): boolean { - const allBucketFilters = filters.items.flatMap((filterItem) => filterItem.filters); - return !allBucketFilters.some(isRankingFilter); +function hasNoRankingFilter(_: IBucketOfFun[], filters?: IFilters): boolean { + const allBucketFilters = filters?.items.flatMap((filterItem) => filterItem.filters); + return !allBucketFilters?.some(isRankingFilter); } export function isShowInPercentAllowed( diff --git a/libs/sdk-ui-ext/src/internal/utils/colors.ts b/libs/sdk-ui-ext/src/internal/utils/colors.ts index 59860efc77c..1af08b1de56 100644 --- a/libs/sdk-ui-ext/src/internal/utils/colors.ts +++ b/libs/sdk-ui-ext/src/internal/utils/colors.ts @@ -33,8 +33,8 @@ export function getSearchedItems(inputItems: IColoredItem[], searchString: strin }); } -export function getColoredInputItems(colors: IColorConfiguration): IColoredItem[] { - let inputItems: IColoredItem[] = []; +export function getColoredInputItems(colors: IColorConfiguration | undefined): IColoredItem[] { + let inputItems: (IColoredItem | undefined)[] = []; if (colors?.colorAssignments) { inputItems = colors.colorAssignments.map((assignmentItem: IColorAssignment, index: number) => { @@ -56,7 +56,7 @@ export function getColoredInputItems(colors: IColorConfiguration): IColoredItem[ }); } - return inputItems; + return inputItems.filter((item): item is IColoredItem => item !== undefined); } function getMeasureMappingIdentifier(item: IMeasureDescriptor): string { @@ -104,7 +104,7 @@ export function getProperties( export function getValidProperties( properties: IVisualizationProperties, - colorAssignments: IColorAssignment[], + colorAssignments: IColorAssignment[] | undefined, ): IVisualizationProperties { if (!properties?.controls?.["colorMapping"]) { return properties; @@ -115,11 +115,11 @@ export function getValidProperties( const { id } = mappingItem; const colorValue = mappingItem.color.value; - const assignmentValid = colorAssignments.find((colorAssignment: IColorAssignment) => { + const assignmentValid = colorAssignments?.find((colorAssignment: IColorAssignment) => { if (isMeasureDescriptor(colorAssignment.headerItem)) { return ( colorAssignment.headerItem.measureHeaderItem.localIdentifier === id && - isEqual(colorAssignment.color.value, colorValue) + isEqual(colorAssignment.color?.value, colorValue) ); } else if (isResultAttributeHeader(colorAssignment.headerItem)) { return colorAssignment.headerItem.attributeHeaderItem.uri === id; diff --git a/libs/sdk-ui-ext/src/internal/utils/comparisonHelper.ts b/libs/sdk-ui-ext/src/internal/utils/comparisonHelper.ts index 605c27712a5..0d5d7620d9e 100644 --- a/libs/sdk-ui-ext/src/internal/utils/comparisonHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/comparisonHelper.ts @@ -38,7 +38,7 @@ export function getNumberSubFormat(properties: IVisualizationProperties 0; const columnsBucket = bucketsFind(insightBuckets(insight), BucketNames.COLUMNS); diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts index 5f0f8341a4e..f03036c0730 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts @@ -142,8 +142,7 @@ function walkProps( const rhsValue = extendedFactoryNotationFor(value, additionalFactories ?? []); - const needsType = language === "ts" && meta.typeImport; - if (needsType) { + if (language === "ts" && meta.typeImport) { const typeDeclaration = meta.cardinality === "array" ? `${meta.typeImport.name}[]` : meta.typeImport.name; importsUsed.push(meta.typeImport); diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts index 56395fd6616..26d87e94cbf 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts @@ -65,7 +65,7 @@ function firstBucketItem(bucket: IBucket): IAttributeOrMeasure | undefined { export function singleAttributeBucketConversion( propName: TPropKey, bucketName: string, -): IInsightToPropConversion { +): IInsightToPropConversion { return bucketConversion(propName, sdkModelPropMetas.Attribute.Single, bucketName, bucketAttribute); } @@ -75,7 +75,7 @@ export function singleAttributeBucketConversion( propName: TPropKey, bucketName: string, -): IInsightToPropConversion { +): IInsightToPropConversion { return bucketConversion(propName, sdkModelPropMetas.Attribute.Multiple, bucketName, bucketAttributes); } @@ -85,7 +85,7 @@ export function multipleAttributesBucketConversion( propName: TPropKey, bucketName: string, -): IInsightToPropConversion { +): IInsightToPropConversion { return bucketConversion(propName, sdkModelPropMetas.Measure.Single, bucketName, bucketMeasure); } @@ -95,7 +95,7 @@ export function singleMeasureBucketConversion( propName: TPropKey, bucketName: string, -): IInsightToPropConversion { +): IInsightToPropConversion { return bucketConversion(propName, sdkModelPropMetas.Measure.Multiple, bucketName, bucketMeasures); } @@ -105,7 +105,10 @@ export function multipleMeasuresBucketConversion(propName: TPropKey, bucketName: string): IInsightToPropConversion { +>( + propName: TPropKey, + bucketName: string, +): IInsightToPropConversion { return bucketConversion( propName, sdkModelPropMetas.AttributeOrMeasure.Single, @@ -120,7 +123,10 @@ export function singleAttributeOrMeasureBucketConversion< export function multipleAttributesOrMeasuresBucketConversion< TProps extends object, TPropKey extends keyof TProps, ->(propName: TPropKey, bucketName: string): IInsightToPropConversion { +>( + propName: TPropKey, + bucketName: string, +): IInsightToPropConversion { return bucketConversion(propName, sdkModelPropMetas.AttributeOrMeasure.Multiple, bucketName, bucketItems); } diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convertor.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convertor.ts index 31d576d14ce..8d102c271bb 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convertor.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convertor.ts @@ -54,19 +54,19 @@ export function bucketConversion< propType: PropMeta, bucketName: string, bucketItemAccessor: (bucket: IBucket) => TReturnType, -): IInsightToPropConversion { +): IInsightToPropConversion { return { propName, propType, itemAccessor(insight) { const bucket = insightBucket(insight, bucketName); - return bucket && bucketItemAccessor(bucket); + return bucket ? bucketItemAccessor(bucket) : undefined; }, }; } export type ConversionSpec = { - [K in keyof TProps]: IInsightToPropConversion; + [K in keyof TProps]: IInsightToPropConversion; }; /** diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/normalizeInsight.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/normalizeInsight.ts index 38d04547c42..573fa7f1d0c 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/normalizeInsight.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/normalizeInsight.ts @@ -1,23 +1,48 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type LocalIdMap, Normalizer } from "@gooddata/sdk-backend-base"; import { + type IAttribute, + type IAttributeOrMeasure, + type IFilter, type IInsightDefinition, + type IInsightLayerDefinition, + type ILocatorItem, + type IMeasure, + type ObjRefInScope, type VisualizationProperties, + attributeDisplayFormRef, attributeLocalId, bucketItems, bucketTotals, + defWithFilters, insightBuckets, + insightFilters, + insightLayers, insightProperties, insightSetBuckets, insightSetFilters, + insightSetLayers, insightSetProperties, insightSetSorts, + insightSorts, isAttribute, + isAttributeLocator, + isAttributeSort, + isLocalIdRef, + isMeasure, + isMeasureLocator, + isMeasureSort, + isMeasureValueFilter, + isRankingFilter, + isTotalLocator, + localIdRef, + measureItem, measureLocalId, newBucket, - newDefForInsight, + newDefForBuckets, newTotal, + serializeObjRef, } from "@gooddata/sdk-model"; function normalizeProperties( @@ -46,22 +71,77 @@ function normalizeProperties( * @internal */ export function normalizeInsight(insight: IInsightDefinition): IInsightDefinition { - const execution = newDefForInsight("foo", insight); + const originalFilters = insightFilters(insight); + const { safeFilters, measureBasedFilters } = splitMeasureBasedFilters(originalFilters); + + const { attributes, measures } = collectUniqueItems(insight); + + const syntheticBuckets = [ + ...(attributes.length ? [newBucket("attributes", ...attributes)] : []), + ...(measures.length ? [newBucket("measures", ...measures)] : []), + ]; + + // Normalize local ids across root buckets and all insight layers. + // We only feed “safe” filters to the normalizer to avoid throwing on dangling localIdRefs in MVF/ranking. + const execution = defWithFilters(newDefForBuckets("foo", syntheticBuckets), safeFilters); const { n2oMap, normalized } = Normalizer.normalize(execution, { keepRemovableProperties: true }); const o2nMap: LocalIdMap = Object.fromEntries( Object.entries(n2oMap).map(([normalized, original]) => [original, normalized]), ); - const processedBuckets = insightBuckets(insight).map((originalBucket) => { + const processedBuckets = normalizeBuckets( + insightBuckets(insight), + o2nMap, + normalized.attributes, + normalized.measures, + ); + const processedLayers = normalizeLayers( + insightLayers(insight), + o2nMap, + normalized.attributes, + normalized.measures, + ); + + const properties = insightProperties(insight); + const processedProperties = properties && normalizeProperties(properties, o2nMap); + + const processedSorts = normalizeSorts(insightSorts(insight), o2nMap); + + const normalizedMeasureBasedFilters = measureBasedFilters.map((f) => normalizeFilterLocalIds(f, o2nMap)); + const mergedFilters = mergeFiltersPreservingOrder( + originalFilters, + normalized.filters, + normalizedMeasureBasedFilters, + ); + + return insightSetProperties( + insightSetSorts( + insightSetLayers( + insightSetFilters(insightSetBuckets(insight, processedBuckets), mergedFilters), + processedLayers, + ), + processedSorts, + ), + processedProperties, + ); +} + +function normalizeBuckets( + buckets: ReturnType, + o2nMap: LocalIdMap, + normalizedAttributes: IAttribute[], + normalizedMeasures: IMeasure[], +): ReturnType { + return buckets.map((originalBucket) => { // put back stuff deleted by the normalizer const processedItems = bucketItems(originalBucket).map((originalBucketItem) => { if (isAttribute(originalBucketItem)) { const normalizedId = o2nMap[attributeLocalId(originalBucketItem)]; - return normalized.attributes.find((attr) => attributeLocalId(attr) === normalizedId); + return normalizedAttributes.find((attr) => attributeLocalId(attr) === normalizedId); } else { const normalizedId = o2nMap[measureLocalId(originalBucketItem)]; - return normalized.measures.find((measure) => measureLocalId(measure) === normalizedId); + return normalizedMeasures.find((measure) => measureLocalId(measure) === normalizedId); } }); @@ -70,17 +150,296 @@ export function normalizeInsight(insight: IInsightDefinition): IInsightDefinitio return newTotal(type, o2nMap[measureIdentifier], o2nMap[attributeIdentifier], alias); }); - return newBucket(originalBucket.localIdentifier, ...processedItems, ...processedTotals); + return newBucket(originalBucket.localIdentifier!, ...processedItems, ...processedTotals); }); +} - const properties = insightProperties(insight); - const processedProperties = properties && normalizeProperties(properties, o2nMap); +function splitMeasureBasedFilters(filters: IFilter[]): { + safeFilters: IFilter[]; + measureBasedFilters: IFilter[]; +} { + const safeFilters: IFilter[] = []; + const measureBasedFilters: IFilter[] = []; - return insightSetProperties( - insightSetSorts( - insightSetFilters(insightSetBuckets(insight, processedBuckets), normalized.filters), - normalized.sortBy, - ), - processedProperties, - ); + for (const filter of filters) { + if (isMeasureValueFilter(filter) || isRankingFilter(filter)) { + measureBasedFilters.push(filter); + } else { + safeFilters.push(filter); + } + } + + return { safeFilters, measureBasedFilters }; +} + +function mergeFiltersPreservingOrder( + originalFilters: IFilter[], + normalizedSafeFilters: IFilter[], + normalizedMeasureBasedFilters: IFilter[], +): IFilter[] { + let safeFilterIdx = 0; + let measureFilterIdx = 0; + return originalFilters.map((filter) => { + if (isMeasureValueFilter(filter) || isRankingFilter(filter)) { + const normalized = normalizedMeasureBasedFilters[measureFilterIdx] ?? filter; + measureFilterIdx += 1; + return normalized; + } + + const normalized = normalizedSafeFilters[safeFilterIdx]; + safeFilterIdx += 1; + return normalized; + }); +} + +function normalizeFilterLocalIds(filter: IFilter, o2nMap: LocalIdMap): IFilter { + if (isMeasureValueFilter(filter)) { + return normalizeMeasureValueFilterLocalIds(filter, o2nMap); + } + + if (isRankingFilter(filter)) { + return normalizeRankingFilterLocalIds(filter, o2nMap); + } + + return filter; +} + +function normalizeMeasureValueFilterLocalIds(filter: IFilter, o2nMap: LocalIdMap): IFilter { + if (!isMeasureValueFilter(filter)) { + return filter; + } + + const mappedMeasure = mapLocalIdRef(filter.measureValueFilter.measure, o2nMap); + const mappedDimensionality = mapOptionalLocalIdRefs(filter.measureValueFilter.dimensionality, o2nMap); + + return { + measureValueFilter: { + ...filter.measureValueFilter, + measure: mappedMeasure, + ...(mappedDimensionality ? { dimensionality: mappedDimensionality } : {}), + }, + }; +} + +function normalizeRankingFilterLocalIds(filter: IFilter, o2nMap: LocalIdMap): IFilter { + if (!isRankingFilter(filter)) { + return filter; + } + + const mappedMeasure = mapLocalIdRef(filter.rankingFilter.measure, o2nMap); + const mappedAttributes = mapOptionalLocalIdRefs(filter.rankingFilter.attributes, o2nMap); + + return { + rankingFilter: { + ...filter.rankingFilter, + measure: mappedMeasure, + ...(mappedAttributes ? { attributes: mappedAttributes } : {}), + }, + }; +} + +function mapLocalIdRef(ref: ObjRefInScope, o2nMap: LocalIdMap): ObjRefInScope { + if (!isLocalIdRef(ref)) { + return ref; + } + + const mapped = o2nMap[ref.localIdentifier]; + if (!mapped) { + return ref; + } + + return localIdRef(mapped); +} + +function mapOptionalLocalIdRefs( + refs: ObjRefInScope[] | undefined, + o2nMap: LocalIdMap, +): ObjRefInScope[] | undefined { + if (!refs) { + return undefined; + } + + return refs.map((ref) => mapLocalIdRef(ref, o2nMap)); +} + +function normalizeSorts( + sorts: ReturnType, + o2nMap: LocalIdMap, +): ReturnType { + const mapId = (id: string): string => o2nMap[id] ?? id; + + return sorts.map((sort) => { + if (isAttributeSort(sort)) { + const id = sort.attributeSortItem.attributeIdentifier; + return { + attributeSortItem: { + ...sort.attributeSortItem, + attributeIdentifier: mapId(id), + }, + }; + } + + if (isMeasureSort(sort)) { + return { + measureSortItem: { + ...sort.measureSortItem, + locators: sort.measureSortItem.locators.map((locator) => + normalizeMeasureSortLocatorLocalIds(locator, mapId), + ), + }, + }; + } + + return sort; + }); +} + +function normalizeMeasureSortLocatorLocalIds( + locator: ILocatorItem, + mapId: (id: string) => string, +): ILocatorItem { + if (isAttributeLocator(locator)) { + const id = locator.attributeLocatorItem.attributeIdentifier; + return { + attributeLocatorItem: { + ...locator.attributeLocatorItem, + attributeIdentifier: mapId(id), + }, + }; + } + + if (isTotalLocator(locator)) { + const id = locator.totalLocatorItem.attributeIdentifier; + return { + totalLocatorItem: { + ...locator.totalLocatorItem, + attributeIdentifier: mapId(id), + }, + }; + } + + if (isMeasureLocator(locator)) { + const id = locator.measureLocatorItem.measureIdentifier; + return { + measureLocatorItem: { + ...locator.measureLocatorItem, + measureIdentifier: mapId(id), + }, + }; + } + + return locator; +} + +function normalizeLayers( + layers: IInsightLayerDefinition[], + o2nMap: LocalIdMap, + normalizedAttributes: IAttribute[], + normalizedMeasures: IMeasure[], +): IInsightLayerDefinition[] { + return layers.map((layer) => ({ + ...layer, + buckets: normalizeBuckets(layer.buckets, o2nMap, normalizedAttributes, normalizedMeasures), + ...(layer.sorts ? { sorts: normalizeSorts(layer.sorts, o2nMap) } : {}), + ...(layer.filters ? { filters: layer.filters.map((f) => normalizeFilterLocalIds(f, o2nMap)) } : {}), + ...(layer.properties ? { properties: normalizeProperties(layer.properties, o2nMap) } : {}), + })); +} + +function collectUniqueItems(insight: IInsightDefinition): { attributes: IAttribute[]; measures: IMeasure[] } { + const attributes: IAttribute[] = []; + const measures: IMeasure[] = []; + const attributesByLocalId = new Map(); + const measuresByLocalId = new Map(); + + const register = createUniqueItemRegistrar({ + attributes, + measures, + attributesByLocalId, + measuresByLocalId, + }); + + forEachInsightBucketItem(insight, register); + + return { attributes, measures }; +} + +function forEachInsightBucketItem( + insight: IInsightDefinition, + onItem: (item: IAttributeOrMeasure) => void, +): void { + for (const bucket of insightBuckets(insight)) { + for (const item of bucketItems(bucket)) { + onItem(item); + } + } + + for (const layer of insightLayers(insight)) { + for (const bucket of layer.buckets) { + for (const item of bucketItems(bucket)) { + onItem(item); + } + } + } +} + +function createUniqueItemRegistrar(ctx: { + attributes: IAttribute[]; + measures: IMeasure[]; + attributesByLocalId: Map; + measuresByLocalId: Map; +}): (item: IAttributeOrMeasure) => void { + const registerAttribute = (item: IAttribute): void => { + const id = attributeLocalId(item); + const refKey = serializeObjRef(attributeDisplayFormRef(item)); + registerUniqueItem( + ctx.attributesByLocalId, + id, + refKey, + item, + ctx.attributes, + `Conflicting attribute localId '${id}' across insight/layer buckets.`, + ); + }; + + const registerMeasure = (item: IMeasure): void => { + const id = measureLocalId(item); + const itemRef = measureItem(item); + const refKey = itemRef ? serializeObjRef(itemRef) : "undefined"; + registerUniqueItem( + ctx.measuresByLocalId, + id, + refKey, + item, + ctx.measures, + `Conflicting measure localId '${id}' across insight/layer buckets.`, + ); + }; + + return (item: IAttributeOrMeasure): void => { + if (isAttribute(item)) { + registerAttribute(item); + } else if (isMeasure(item)) { + registerMeasure(item); + } + }; +} + +function registerUniqueItem( + byLocalId: Map, + localId: string, + refKey: string, + item: T, + out: T[], + conflictMessage: string, +): void { + const existing = byLocalId.get(localId); + if (existing && existing !== refKey) { + throw new Error(conflictMessage); + } + + if (!existing) { + byLocalId.set(localId, refKey); + out.push(item); + } } diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/tests/getReactEmbeddingCodeGenerator.test.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/tests/getReactEmbeddingCodeGenerator.test.ts index 466a2fd475f..416308546bc 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/tests/getReactEmbeddingCodeGenerator.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/tests/getReactEmbeddingCodeGenerator.test.ts @@ -39,7 +39,7 @@ describe("getReactEmbeddingCodeGenerator", () => { describe("height test", () => { type Scenario = [string, number | string]; const scenarios: Scenario[] = [ - ["without height", undefined], + ["without height", undefined!], ["with height as number", 1000], ["with height as string", "20rem"], ]; @@ -53,7 +53,7 @@ describe("getReactEmbeddingCodeGenerator", () => { type Scenario = [string, string[]]; const scenarios: Scenario[] = [ ["no props to omit defined in empty array", []], - ["no props to omit defined as undefined", undefined], + ["no props to omit defined as undefined", undefined!], ["omit one prop", ["prop"]], ["omit all props", ["prop", "another"]], ]; diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/tests/normalizeInsight.test.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/tests/normalizeInsight.test.ts new file mode 100644 index 00000000000..5c6f37d5d58 --- /dev/null +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/tests/normalizeInsight.test.ts @@ -0,0 +1,81 @@ +// (C) 2025-2026 GoodData Corporation + +import { describe, expect, it } from "vitest"; + +import { + bucketItems, + idRef, + insightBuckets, + insightFilters, + isLocalIdRef, + isMeasure, + isMeasureValueFilter, + localIdRef, + measureLocalId, + newBucket, + newInsightDefinition, + newMeasure, + newMeasureValueFilter, +} from "@gooddata/sdk-model"; +import { BucketNames } from "@gooddata/sdk-ui"; + +import { normalizeInsight } from "../normalizeInsight.js"; + +describe("normalizeInsight", () => { + it("does not throw when insight contains dangling localId references in filters", () => { + const insight = newInsightDefinition("local:test", (builder) => + builder + .buckets([ + newBucket( + BucketNames.MEASURES, + newMeasure(idRef("m1", "measure"), (m) => m.localId("m_in_bucket")), + ), + ]) + .filters([newMeasureValueFilter(localIdRef("dangling_local_id"), "EQUAL_TO", 1)]), + ); + + expect(() => normalizeInsight(insight)).not.toThrow(); + const normalized = normalizeInsight(insight); + expect(normalized).toBeDefined(); + + const [filter] = insightFilters(normalized); + expect(isMeasureValueFilter(filter)).toBe(true); + if (isMeasureValueFilter(filter)) { + const measureRef = filter.measureValueFilter.measure; + expect(isLocalIdRef(measureRef)).toBe(true); + if (isLocalIdRef(measureRef)) { + // unknown/dangling localIdRef cannot be normalized, must remain intact + expect(measureRef.localIdentifier).toBe("dangling_local_id"); + } + } + }); + + it("rewrites MVF localIdRef to match normalized bucket item localId", () => { + const insight = newInsightDefinition("local:test", (builder) => + builder + .buckets([ + newBucket( + BucketNames.MEASURES, + newMeasure(idRef("m1", "measure"), (m) => m.localId("m_in_bucket")), + ), + ]) + .filters([newMeasureValueFilter(localIdRef("m_in_bucket"), "EQUAL_TO", 1)]), + ); + + const normalized = normalizeInsight(insight); + + const bucket = insightBuckets(normalized)[0]; + const normalizedMeasure = bucketItems(bucket).find(isMeasure); + expect(normalizedMeasure).toBeDefined(); + + const [filter] = insightFilters(normalized); + expect(isMeasureValueFilter(filter)).toBe(true); + if (normalizedMeasure && isMeasureValueFilter(filter)) { + const measureRef = filter.measureValueFilter.measure; + expect(isLocalIdRef(measureRef)).toBe(true); + if (isLocalIdRef(measureRef)) { + expect(measureRef.localIdentifier).toBe(measureLocalId(normalizedMeasure)); + } + } + }); +}); diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts index 231e847fd80..4eda9788ef2 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts @@ -46,7 +46,7 @@ const getInsightViewSpecification = ( }, }, }, - locale: localeForInsightView(ctx), + locale: localeForInsightView(ctx!), }; if (includeConfiguration) { diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.ts index f2f76b37370..a7babd24ef7 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.ts @@ -25,7 +25,7 @@ export function configForInsightView( insight: IInsightDefinition, settings?: ISettings, ): PropWithMeta | undefined { - if (isGeoChart(insight) && !settings.enableNewGeoPushpin) { + if (isGeoChart(insight) && !settings?.enableNewGeoPushpin) { return geoConfigForInsightViewComponent(); } if (isPivotTableNext(insight, settings)) { @@ -44,7 +44,9 @@ export function configForInsightView( }; } -export function localeForInsightView(ctx: IEmbeddingCodeContext): PropWithMeta | undefined { +export function localeForInsightView( + ctx: IEmbeddingCodeContext, +): PropWithMeta | undefined { const val = resolveLocale(ctx?.settings?.locale); return { diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/tests/insightViewCodeGenerator.test.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/tests/insightViewCodeGenerator.test.ts index f6c652f35b5..bac4c6a18f7 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/tests/insightViewCodeGenerator.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/tests/insightViewCodeGenerator.test.ts @@ -14,7 +14,7 @@ describe("insightViewCodeGenerator tests", () => { it("should generate code for insight", () => { const insight = recordedInsights(ReferenceRecordings.Recordings).find( (insight) => insightUri(insight) === INSIGHT_URI, - ); + )!; expect( insightViewCodeGenerator(insight, { context: { @@ -62,7 +62,7 @@ describe("insightViewCodeGenerator tests", () => { it("should generate code for insight with non default locale", () => { const insight = recordedInsights(ReferenceRecordings.Recordings).find( (insight) => insightUri(insight) === INSIGHT_URI, - ); + )!; expect( insightViewCodeGenerator(insight, { context: { @@ -81,7 +81,7 @@ describe("insightViewCodeGenerator tests", () => { it("should generate code without the insight configuration", () => { const insight = recordedInsights(ReferenceRecordings.Recordings).find( (insight) => insightUri(insight) === INSIGHT_URI, - ); + )!; expect( insightViewEmbeddedCodeGenerator(insight, { context: { diff --git a/libs/sdk-ui-ext/src/internal/utils/filters/routeLocalIdRefFiltersToLayers.ts b/libs/sdk-ui-ext/src/internal/utils/filters/routeLocalIdRefFiltersToLayers.ts new file mode 100644 index 00000000000..6a854a9f3ad --- /dev/null +++ b/libs/sdk-ui-ext/src/internal/utils/filters/routeLocalIdRefFiltersToLayers.ts @@ -0,0 +1,118 @@ +// (C) 2026 GoodData Corporation + +import { + type IBucket, + type IFilter, + attributeLocalId, + bucketItems, + isAttribute, + isLocalIdRef, + isMeasure, + isMeasureValueFilter, + isRankingFilter, + measureLocalId, +} from "@gooddata/sdk-model"; + +export interface ILayerBucketsContext { + id: string; + buckets: IBucket[]; +} + +export interface ILayerLocalIds { + attributeLocalIds: Set; + measureLocalIds: Set; +} + +export interface IRoutedLocalIdRefFilters { + /** + * Filters that are safe to apply to all layers (attribute/date filters + measure-based filters that do NOT use localIdRef). + */ + globalFilters: IFilter[]; + /** + * Measure-based filters (MVF/ranking) that use localIdRef, routed to layers where referenced localIds exist. + */ + routedByLayerId: Map; +} + +function collectLayerLocalIdsFromBuckets(buckets: IBucket[]): ILayerLocalIds { + const attributeLocalIds = new Set(); + const measureLocalIds = new Set(); + + for (const bucket of buckets) { + for (const item of bucketItems(bucket)) { + if (isAttribute(item)) { + attributeLocalIds.add(attributeLocalId(item)); + } else if (isMeasure(item)) { + measureLocalIds.add(measureLocalId(item)); + } + } + } + + return { attributeLocalIds, measureLocalIds }; +} + +function isLocalIdRefBasedMeasureFilter(filter: IFilter): boolean { + if (isMeasureValueFilter(filter)) { + const { measure, dimensionality = [] } = filter.measureValueFilter; + return isLocalIdRef(measure) || dimensionality.some(isLocalIdRef); + } + + if (isRankingFilter(filter)) { + const { measure, attributes = [] } = filter.rankingFilter; + return isLocalIdRef(measure) || attributes.some(isLocalIdRef); + } + + return false; +} + +function isMeasureFilterApplicableToLayer(filter: IFilter, layerLocalIds: ILayerLocalIds): boolean { + if (isMeasureValueFilter(filter)) { + const { measure, dimensionality = [] } = filter.measureValueFilter; + + const hasMissingMeasure = + isLocalIdRef(measure) && !layerLocalIds.measureLocalIds.has(measure.localIdentifier); + + const hasMissingDimensionality = dimensionality + .filter(isLocalIdRef) + .some((ref) => !layerLocalIds.attributeLocalIds.has(ref.localIdentifier)); + + return !hasMissingMeasure && !hasMissingDimensionality; + } + + if (isRankingFilter(filter)) { + const { measure, attributes = [] } = filter.rankingFilter; + + const hasMissingMeasure = + isLocalIdRef(measure) && !layerLocalIds.measureLocalIds.has(measure.localIdentifier); + + const hasMissingAttributes = attributes + .filter(isLocalIdRef) + .some((ref) => !layerLocalIds.attributeLocalIds.has(ref.localIdentifier)); + + return !hasMissingMeasure && !hasMissingAttributes; + } + + return true; +} + +/** + * Splits filters into: + * - filters safe to apply to all layers (includes measure-based filters that do not use localIdRef) + * - measure-based filters using localIdRef (MVF/ranking) routed to layers where referenced localIds exist + */ +export function routeLocalIdRefFiltersToLayers( + globalFilters: IFilter[], + layers: ILayerBucketsContext[], +): IRoutedLocalIdRefFilters { + const routable = globalFilters.filter(isLocalIdRefBasedMeasureFilter); + const safeGlobal = globalFilters.filter((f) => !isLocalIdRefBasedMeasureFilter(f)); + + const routedByLayerId = new Map(); + for (const layer of layers) { + const localIds = collectLayerLocalIdsFromBuckets(layer.buckets); + const applicable = routable.filter((filter) => isMeasureFilterApplicableToLayer(filter, localIds)); + routedByLayerId.set(layer.id, applicable); + } + + return { globalFilters: safeGlobal, routedByLayerId }; +} diff --git a/libs/sdk-ui-ext/src/internal/utils/forecastHelper.ts b/libs/sdk-ui-ext/src/internal/utils/forecastHelper.ts index 59f3d2e6eb8..8da2975b04b 100644 --- a/libs/sdk-ui-ext/src/internal/utils/forecastHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/forecastHelper.ts @@ -8,7 +8,7 @@ import { type IReferencePoint } from "../interfaces/Visualization.js"; export function isForecastEnabled( referencePoint: IReferencePoint | undefined, insight: IInsightDefinition | undefined, - type: ChartType, + type: ChartType | undefined, ) { switch (type) { case "line": { @@ -34,6 +34,9 @@ function lineChartBuckets( // Keep on mind that we are not able to check if trends item is date // but this method is used on dashboard where is not necessary to be so strict if (!referencePoint) { + if (!insight) { + return false; + } const buckets = insightBuckets(insight); const measures = bucketsFind(buckets, (b) => b.localIdentifier === BucketNames.MEASURES); const trends = bucketsFind(buckets, (b) => b.localIdentifier === BucketNames.TREND); @@ -57,7 +60,11 @@ function lineChartBuckets( ); } -function lineChartNotSorts(insight: IInsightDefinition) { +function lineChartNotSorts(insight: IInsightDefinition | undefined) { + //NOTE: No insight, can't be forecast + if (!insight) { + return false; + } const { sorts } = insight.insight; //NOTE: No sort, can be forecast diff --git a/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts b/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts index 8f04dfaf66b..54ea1c84474 100644 --- a/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts @@ -34,7 +34,7 @@ import { export function getSupportedPropertiesControls( visualizationControlsProperties: IVisualizationProperties["controls"], - supportedPropertiesList: string[], + supportedPropertiesList: string[] | undefined, ): IVisualizationProperties { const clonedControls = cloneDeep(visualizationControlsProperties); if (supportedPropertiesList) { @@ -47,7 +47,7 @@ export function getSupportedPropertiesControls( return {}; } -export function hasColorMapping(properties: IVisualizationProperties): boolean { +export function hasColorMapping(properties: IVisualizationProperties | undefined): boolean { return !!properties?.controls?.["colorMapping"]; } @@ -91,8 +91,8 @@ export function isEmptyObject(obj: object): boolean { } export function getSupportedProperties( - visualizationProperties: IVisualizationProperties, - supportedPropertiesList: string[], + visualizationProperties: IVisualizationProperties | undefined, + supportedPropertiesList: string[] | undefined, ): IVisualizationProperties { const controls = visualizationProperties?.controls ?? {}; const supportedControls = getSupportedPropertiesControls(controls, supportedPropertiesList); @@ -143,7 +143,8 @@ export function getReferencePointWithSupportedProperties( export function getReferencePointWithTotalLabelsInitialized( referencePoint: IExtendedReferencePoint, ): IExtendedReferencePoint { - const dataLabelVisibility = referencePoint.properties.controls?.["dataLabels"]?.visible; + const properties = referencePoint.properties; + const dataLabelVisibility = properties?.controls?.["dataLabels"]?.visible; const stacks = getStackItems(referencePoint.buckets); // Initialize total labels visibility with data labels visibility value. @@ -151,19 +152,19 @@ export function getReferencePointWithTotalLabelsInitialized( // is not defined and if current chart configuration allows configuring total labels. if ( !(dataLabelVisibility === null || dataLabelVisibility === undefined) && - (referencePoint.properties.controls?.["dataLabels"]?.totalsVisible === null || - referencePoint.properties.controls?.["dataLabels"]?.totalsVisible === undefined) && - !isStackingToPercent(referencePoint.properties) && - (stacks.length || isStackingMeasure(referencePoint.properties)) + (properties?.controls?.["dataLabels"]?.totalsVisible === null || + properties?.controls?.["dataLabels"]?.totalsVisible === undefined) && + !isStackingToPercent(properties ?? {}) && + (stacks.length || isStackingMeasure(properties ?? {})) ) { return { ...referencePoint, properties: { - ...referencePoint.properties, + ...properties, controls: { - ...referencePoint.properties.controls, + ...properties?.controls, dataLabels: { - ...referencePoint.properties.controls["dataLabels"], + ...properties?.controls?.["dataLabels"], totalsVisible: dataLabelVisibility, }, }, @@ -243,7 +244,9 @@ export function getHighchartsAxisNameConfiguration( return result; } - axisNameConfig.position = AXIS_NAME_POSITION_MAPPING[axisNameConfig.position]; + if (axisNameConfig.position) { + axisNameConfig.position = AXIS_NAME_POSITION_MAPPING[axisNameConfig.position]; + } result[axis] = { ...controlProperties[axis], name: axisNameConfig, diff --git a/libs/sdk-ui-ext/src/internal/utils/sort.ts b/libs/sdk-ui-ext/src/internal/utils/sort.ts index 2815437806b..0b0df3455a9 100644 --- a/libs/sdk-ui-ext/src/internal/utils/sort.ts +++ b/libs/sdk-ui-ext/src/internal/utils/sort.ts @@ -95,15 +95,18 @@ function getDefaultBarChartSort( } export function getDefaultTreemapSortFromBuckets( - viewBy: IBucket, - segmentBy: IBucket, - measures: IMeasure[], + viewBy: IBucket | undefined, + segmentBy: IBucket | undefined, + measures: IMeasure[] | undefined, ): ISortItem[] { const viewAttr = viewBy ? bucketAttributes(viewBy) : []; const stackAttr = segmentBy ? bucketAttributes(segmentBy) : []; if (!isEmpty(viewAttr) && !isEmpty(stackAttr)) { - return [newAttributeSort(viewAttr[0], "asc"), ...measures.map((m) => newMeasureSort(m, "desc"))]; + return [ + newAttributeSort(viewAttr[0], "asc"), + ...(measures ?? []).map((m) => newMeasureSort(m, "desc")), + ]; } return []; @@ -117,7 +120,7 @@ function getDefaultTreemapSort(insight: IInsightDefinition): ISortItem[] { ); } -function getDefaultHeatmapSortFromBuckets(viewBy: IBucket): ISortItem[] { +function getDefaultHeatmapSortFromBuckets(viewBy: IBucket | undefined): ISortItem[] { const viewAttr = viewBy ? bucketAttributes(viewBy) : []; if (!isEmpty(viewAttr)) { return [newAttributeSort(viewAttr[0], "desc")]; @@ -244,11 +247,11 @@ function isValidMeasureSort(measureSort: IMeasureSortItem, availableSort: IAvail } function handleDifferentOrder( - currentSort: ISortItem[], + currentSort: (ISortItem | undefined)[], availableSortGroup: IAvailableSortsGroup, previousAvailableSorts: IAvailableSortsGroup[], ): { - modifiedSorts?: ISortItem[]; + modifiedSorts?: (ISortItem | undefined)[]; reusedItem?: ISortItem; } { const correspondingGroupIndex = previousAvailableSorts.findIndex((previousSortGroup) => @@ -258,7 +261,7 @@ function handleDifferentOrder( if (correspondingGroupIndex !== -1) { const reusedItem = reuseSortItemType(currentSort[correspondingGroupIndex], availableSortGroup); - const modifiedSorts = [...currentSort]; + const modifiedSorts: (ISortItem | undefined)[] = [...currentSort]; modifiedSorts[correspondingGroupIndex] = undefined; // clear reused item to not affect other availableGroups return { modifiedSorts, @@ -276,7 +279,7 @@ function reuseAttributeValueSortItem(currentSortItem: ISortItem, availableSortGr function reuseAttributeAreaSortItem(currentSortItem: ISortItem, availableSortGroup: IAvailableSortsGroup) { const currentSortDirection = sortDirection(currentSortItem); // reuse it whole - if (availableSortGroup.attributeSort.areaSortEnabled) { + if (availableSortGroup.attributeSort?.areaSortEnabled) { return newAttributeAreaSort(availableSortGroup.itemId.localIdentifier, currentSortDirection); } // reuse numeric sort type @@ -300,16 +303,16 @@ function reuseMetricSortItem(currentSortItem: IMeasureSortItem, availableSortGro return newMeasureSortFromLocators(availableMetricSort.locators, currentSortDirection); } // reuse numeric sort type in form of area sort - if (availableSortGroup.attributeSort.areaSortEnabled) { + if (availableSortGroup.attributeSort?.areaSortEnabled) { return newAttributeAreaSort(availableSortGroup.itemId.localIdentifier, currentSortDirection); } return undefined; } -function reuseSortItemType(currentSortItem: ISortItem, availableSortGroup: IAvailableSortsGroup) { +function reuseSortItemType(currentSortItem: ISortItem | undefined, availableSortGroup: IAvailableSortsGroup) { if (currentSortItem) { - if (isAttributeValueSort(currentSortItem) && availableSortGroup.attributeSort.normalSortEnabled) { + if (isAttributeValueSort(currentSortItem) && availableSortGroup.attributeSort?.normalSortEnabled) { return reuseAttributeValueSortItem(currentSortItem, availableSortGroup); } if (isAttributeAreaSort(currentSortItem)) { @@ -344,7 +347,7 @@ export function validateCurrentSort( if (previousSort.length === 0) { return []; } - let sortsToReuse = [...previousSort]; + let sortsToReuse: (ISortItem | undefined)[] = [...previousSort]; const completelyReused = availableSorts.map((availableSortGroup) => { // reuse existing sort item with only changed order // it may affect also items in current sort - set to undefined when item already reused @@ -354,7 +357,7 @@ export function validateCurrentSort( previousAvailableSorts, ); if (reusedItem) { - sortsToReuse = modifiedSorts; + sortsToReuse = modifiedSorts!; return reusedItem; } @@ -376,13 +379,13 @@ export function getCustomSortDisabledExplanation( relevantMeasures: IBucketItem[], relevantAttributes: IBucketItem[], intl: IntlShape, -): string { +): string | undefined { if (relevantAttributes.length === 0 && relevantMeasures.length >= 2) { - return getTranslation(messages["explanationMeasure"].id, intl); + return getTranslation(messages["explanationMeasure"].id!, intl); } if (relevantAttributes.length === 0) { - return getTranslation(messages["explanationAttribute"].id, intl); + return getTranslation(messages["explanationAttribute"].id!, intl); } return undefined; diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/bucketConfig.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/bucketConfig.test.ts index c220a423844..bf6eb5cf978 100644 --- a/libs/sdk-ui-ext/src/internal/utils/tests/bucketConfig.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/tests/bucketConfig.test.ts @@ -111,7 +111,7 @@ describe("configure Percent and Over Time Comparison helper functions", () => { it("should force-mark show in percent as not enabled in measure bucket ui config", () => { const referencePoint = getSingleMeasureNoFilterReferencePoint(1); - referencePoint.uiConfig.buckets["measures"].isShowInPercentEnabled = true; + referencePoint.uiConfig!.buckets["measures"].isShowInPercentEnabled = true; const newReferencePoint: IExtendedReferencePoint = configurePercent( cloneDeep(referencePoint), @@ -362,7 +362,7 @@ describe("configure Percent and Over Time Comparison helper functions", () => { it("should keep derived measures when UI config contains used comparison type", () => { const referencePoint = getOverTimeComparisonReferencePoint(dateFilterWithSamePeriodPreviousYear); - referencePoint.uiConfig.supportedOverTimeComparisonTypes = [ + referencePoint.uiConfig!.supportedOverTimeComparisonTypes = [ OverTimeComparisonTypes.SAME_PERIOD_PREVIOUS_YEAR, ]; @@ -391,7 +391,7 @@ describe("configure Percent and Over Time Comparison helper functions", () => { it("should remove all derived measures when UI config is empty", () => { const referencePoint = getOverTimeComparisonReferencePoint(dateFilterWithSamePeriodPreviousYear); - referencePoint.uiConfig.supportedOverTimeComparisonTypes = []; + referencePoint.uiConfig!.supportedOverTimeComparisonTypes = []; const newReferencePoint = configureOverTimeComparison(cloneDeep(referencePoint)); @@ -412,7 +412,7 @@ describe("configure Percent and Over Time Comparison helper functions", () => { it("should remove all derived measures when UI config contains only NOTHING option", () => { const referencePoint = getOverTimeComparisonReferencePoint(dateFilterWithSamePeriodPreviousYear); - referencePoint.uiConfig.supportedOverTimeComparisonTypes = [OverTimeComparisonTypes.NOTHING]; + referencePoint.uiConfig!.supportedOverTimeComparisonTypes = [OverTimeComparisonTypes.NOTHING]; const newReferencePoint = configureOverTimeComparison(cloneDeep(referencePoint)); diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/bucketHelper.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/bucketHelper.test.ts index f5a0d40ffe0..3fdf818cb5d 100644 --- a/libs/sdk-ui-ext/src/internal/utils/tests/bucketHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/tests/bucketHelper.test.ts @@ -177,7 +177,7 @@ describe("sanitizeFilters", () => { it("should handle reference point without filters", () => { const newReferencePoint = cloneDeep(referencePointMocks.measureValueFilterReferencePoint); - delete newReferencePoint.filters; + delete (newReferencePoint as Partial).filters; const extendedReferencePoint: IExtendedReferencePoint = { ...newReferencePoint, uiConfig: DEFAULT_BASE_CHART_UICONFIG, @@ -495,8 +495,8 @@ describe("getBucketItemsWithExcludeByType", () => { describe("isDateBucketItem", () => { it("should not fail when passed null or undefined", () => { - expect(isDateBucketItem(null)).toBe(false); - expect(isDateBucketItem(undefined)).toBe(false); + expect(isDateBucketItem(null as unknown as IBucketItem)).toBe(false); + expect(isDateBucketItem(undefined as unknown as IBucketItem)).toBe(false); }); it("should not fail when passed incomplete bucket item", () => { @@ -526,7 +526,7 @@ describe("isDateBucketItem", () => { describe("getDateFilter", () => { it("should handle empty filter bucket", () => { - expect(getDateFilter(undefined)).toBeNull(); + expect(getDateFilter(undefined as unknown as IFilters)).toBeNull(); }); it("should get date filter from filter bucket", () => { diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/bucketRules.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/bucketRules.test.ts index f7817a3c305..ef2401b9233 100644 --- a/libs/sdk-ui-ext/src/internal/utils/tests/bucketRules.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/tests/bucketRules.test.ts @@ -80,9 +80,9 @@ describe("overTimeComparisonRecommendationEnabled", () => { const newMetric: IBucketItem = { localIdentifier: "m2", type: "metric", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "aazb6kroa3iC", - showInPercent: null, + showInPercent: null as unknown as undefined, }; set(editedReferencePoint, ["buckets", 0, "items", 1], newMetric); @@ -115,7 +115,7 @@ describe("comparisonAndTrendingRecommendationEnabled", () => { const newCategory: IBucketItem = { localIdentifier: "v1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", }; @@ -143,7 +143,7 @@ describe("percentRecommendationEnabled", () => { const newStack: IBucketItem = { localIdentifier: "s1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", }; @@ -185,7 +185,7 @@ describe("previousPeriodRecommendationEnabled", () => { const newMetric: IBucketItem = { localIdentifier: "m2", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", }; @@ -283,7 +283,7 @@ describe("partial rules", () => { { localIdentifier: "v1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", }, ], @@ -303,13 +303,13 @@ describe("partial rules", () => { { localIdentifier: "v1", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", }, { localIdentifier: "v2", type: "attribute", - aggregation: null, + aggregation: null as unknown as undefined, attribute: "attr.owner.department", }, ], diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/colors.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/colors.test.ts index 6185b993eee..9cda80576cd 100644 --- a/libs/sdk-ui-ext/src/internal/utils/tests/colors.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/tests/colors.test.ts @@ -110,7 +110,7 @@ describe("color utils", () => { ]); const result = getValidProperties(properties, attributeColorAssignments); - expect(result.controls["colorMapping"]).toEqual(null); + expect(result.controls!["colorMapping"]).toEqual(null); }); it("should erase measure color mapping if items are not in color assignment", () => { @@ -123,7 +123,7 @@ describe("color utils", () => { const properties = getProperties(colorMapping); const result = getValidProperties(properties, measureColorAssignments); - expect(result.controls["colorMapping"]).toEqual(null); + expect(result.controls!["colorMapping"]).toEqual(null); }); it("should keep measure color mapping for items which are in color assignment", () => { @@ -145,7 +145,7 @@ describe("color utils", () => { const properties = getProperties(richColorMapping); const result = getValidProperties(properties, measureColorAssignments); - expect(result.controls["colorMapping"]).toEqual(colorMapping); + expect(result.controls!["colorMapping"]).toEqual(colorMapping); }); it("should keep attribute header color mapping for items which are in color assignment", () => { @@ -170,7 +170,7 @@ describe("color utils", () => { properties, attributeHeaderColorAssignments as unknown as IColorAssignment[], ); - expect(result.controls["colorMapping"]).toEqual(colorMapping); + expect(result.controls!["colorMapping"]).toEqual(colorMapping); }); it("should keep attribute header color mapping defined by identifier (Tiger) for items which are in color assignment", () => { @@ -195,7 +195,7 @@ describe("color utils", () => { properties, tigerAttributeHeaderColorAssignments as unknown as IColorAssignment[], ); - expect(result.controls["colorMapping"]).toEqual(colorMapping); + expect(result.controls!["colorMapping"]).toEqual(colorMapping); }); it("should keep color mapping for the waterfall color header which are in color assignment", () => { @@ -217,7 +217,7 @@ describe("color utils", () => { const properties = getProperties(richColorMapping); const result = getValidProperties(properties, waterfallColorHeaderColorAssignments); - expect(result.controls["colorMapping"]).toEqual(colorMapping); + expect(result.controls!["colorMapping"]).toEqual(colorMapping); }); }); diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/comparisonHelper.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/comparisonHelper.test.ts index f9a7ba01147..323630dc994 100644 --- a/libs/sdk-ui-ext/src/internal/utils/tests/comparisonHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/tests/comparisonHelper.test.ts @@ -130,7 +130,7 @@ describe("comparisonHelper", () => { it("Should return true when color config is empty", () => { expect(isComparisonDefaultColors({})).toBeTruthy(); - expect(isComparisonDefaultColors(null)).toBeTruthy(); + expect(isComparisonDefaultColors(undefined)).toBeTruthy(); expect(isComparisonDefaultColors(undefined)).toBeTruthy(); }); }); diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/dimensions.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/dimensions.test.ts index 8ce2c65e986..3ac6828ab45 100644 --- a/libs/sdk-ui-ext/src/internal/utils/tests/dimensions.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/tests/dimensions.test.ts @@ -58,7 +58,7 @@ function addMeasure(visualization: IInsightDefinition, index: number): IInsightD m.localId(`m${index}`).title(`# Users Opened AD ${index}`), ); - const bucket = insightBucket(newVis); + const bucket = insightBucket(newVis)!; bucket.items.push(measure); return newVis; @@ -74,7 +74,7 @@ function addAttribute( a.localId(`a${index}`), ); - const bucket = getVisualizationBucket(newVis, bucketName); + const bucket = getVisualizationBucket(newVis, bucketName)!; bucket.items.push(attribute); return newVis; @@ -87,14 +87,14 @@ function addTotals( ): IInsightDefinition { const newVis = cloneDeep(visualization); - const bucket = getVisualizationBucket(newVis, bucketName); + const bucket = getVisualizationBucket(newVis, bucketName)!; if (!bucket.totals) { bucket.totals = []; } newTotals.forEach((total) => { - bucket.totals.push(total); + bucket.totals!.push(total); }); return newVis; diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/propertiesHelper.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/propertiesHelper.test.ts index e458f37a9b0..b763826759c 100644 --- a/libs/sdk-ui-ext/src/internal/utils/tests/propertiesHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/tests/propertiesHelper.test.ts @@ -46,7 +46,7 @@ describe("propertiesHelper", () => { }; it("should return empty object if no supported properties list is defined", () => { - expect(getSupportedPropertiesControls(null, null)).toEqual({}); + expect(getSupportedPropertiesControls(undefined, undefined)).toEqual({}); }); it("should return empty object when supported properties list is empty", () => { @@ -79,7 +79,7 @@ describe("propertiesHelper", () => { describe("getSupportedProperties", () => { it("should return empty object when properties are null", () => { - const result = getSupportedProperties(null, []); + const result = getSupportedProperties(undefined, []); expect(result).toEqual({}); }); diff --git a/libs/sdk-ui-ext/src/internal/utils/tests/routeLocalIdRefFiltersToLayers.test.ts b/libs/sdk-ui-ext/src/internal/utils/tests/routeLocalIdRefFiltersToLayers.test.ts new file mode 100644 index 00000000000..80bafd74b00 --- /dev/null +++ b/libs/sdk-ui-ext/src/internal/utils/tests/routeLocalIdRefFiltersToLayers.test.ts @@ -0,0 +1,75 @@ +// (C) 2026 GoodData Corporation + +import { describe, expect, it } from "vitest"; + +import { + attributeLocalId, + idRef, + localIdRef, + newAbsoluteDateFilter, + newAttribute, + newBucket, + newMeasure, + newMeasureValueFilter, + newMeasureValueFilterWithOptions, + newRankingFilter, +} from "@gooddata/sdk-model"; + +import { routeLocalIdRefFiltersToLayers } from "../filters/routeLocalIdRefFiltersToLayers.js"; + +describe("routeLocalIdRefFiltersToLayers", () => { + it("routes MVF/ranking using localIdRef only to applicable layers", () => { + const a1 = newAttribute(idRef("attr.df", "displayForm"), (a) => a.localId("a1")); + const m1 = newMeasure(idRef("m1", "measure"), (m) => m.localId("m1")); + + const mvfWithDimensionality = newMeasureValueFilterWithOptions(localIdRef("m1"), { + operator: "GREATER_THAN", + value: 0, + dimensionality: [localIdRef("a1")], + }); + const ranking = newRankingFilter(localIdRef("m1"), [localIdRef("a1")], "TOP", 1); + + const date = newAbsoluteDateFilter(idRef("ds", "dataSet"), "2024-01-01", "2024-12-31"); + + const layerWithAttributeAndMeasure = { + id: "layerA", + buckets: [newBucket("attributes", a1), newBucket("measures", m1)], + }; + const layerMissingAttribute = { + id: "layerB", + buckets: [newBucket("measures", m1)], + }; + + // sanity: ensure our attribute localId is what we route by + expect(attributeLocalId(a1)).toBe("a1"); + + const result = routeLocalIdRefFiltersToLayers( + [mvfWithDimensionality, ranking, date], + [layerWithAttributeAndMeasure, layerMissingAttribute], + ); + + // date filter stays global; localIdRef-based MVF/ranking are removed from globals and routed + expect(result.globalFilters).toEqual([date]); + expect(result.routedByLayerId.get("layerA")).toEqual([mvfWithDimensionality, ranking]); + expect(result.routedByLayerId.get("layerB")).toEqual([]); + }); + + it("keeps MVF/ranking without localIdRef in global filters", () => { + const mvfByIdentifier = newMeasureValueFilter(idRef("m1", "measure"), "GREATER_THAN", 1); + + const layer = { + id: "layerA", + buckets: [ + newBucket( + "measures", + newMeasure(idRef("m1", "measure"), (m) => m.localId("m1")), + ), + ], + }; + + const result = routeLocalIdRefFiltersToLayers([mvfByIdentifier], [layer]); + + expect(result.globalFilters).toEqual([mvfByIdentifier]); + expect(result.routedByLayerId.get("layerA")).toEqual([]); + }); +}); diff --git a/libs/sdk-ui-ext/src/internal/utils/translations.ts b/libs/sdk-ui-ext/src/internal/utils/translations.ts index 35f2fc2b254..07e32fcd6d9 100644 --- a/libs/sdk-ui-ext/src/internal/utils/translations.ts +++ b/libs/sdk-ui-ext/src/internal/utils/translations.ts @@ -13,10 +13,13 @@ import { translationUtils } from "@gooddata/util"; import type { IDropdownItem } from "../interfaces/Dropdown.js"; export function getTranslation( - translationId: string, - intl: IntlShape, + translationId: string | undefined, + intl?: IntlShape, values: { [key: string]: string } = {}, ): string { + if (!translationId) { + return ""; + } return intl ? intl.formatMessage({ id: translationId }, values) : translationId; } diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts index 1dcfe6ec8a2..5a55ba2ac69 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts @@ -32,30 +32,30 @@ function getWarningMessageForMeasuresBucket( viewItems: IBucketItem[], ) { return categoriesCount > 1 - ? getBucketItemsWarningMessage(messages["metricView"].id, intl, viewItems) - : getBucketItemsWarningMessage(messages["metricStack"].id, intl, stackItems); + ? getBucketItemsWarningMessage(messages["metricView"].id!, intl, viewItems) + : getBucketItemsWarningMessage(messages["metricStack"].id!, intl, stackItems); } function getWarningMessageForViewByBucket(intl: IntlShape, measuresCount: number, stackItems: IBucketItem[]) { return measuresCount > 1 - ? getTranslation(messages["categoryView"].id, intl) - : getBucketItemsWarningMessage(messages["viewStack"].id, intl, stackItems); + ? getTranslation(messages["categoryView"].id!, intl) + : getBucketItemsWarningMessage(messages["viewStack"].id!, intl, stackItems); } function getWarningMessageForStackByBucket(intl: IntlShape, categoriesCount: number) { return categoriesCount > 1 - ? getTranslation(messages["stackView"].id, intl) - : getTranslation(messages["measureStack"].id, intl); + ? getTranslation(messages["stackView"].id!, intl) + : getTranslation(messages["measureStack"].id!, intl); } function setAreaChartBucketWarningMessages( referencePoint: IExtendedReferencePoint, messageConfig: { [bucketName: string]: string }, -): IUiConfig { +): IUiConfig | null | undefined { const buckets = referencePoint?.buckets ?? []; const updatedUiConfig = referencePoint?.uiConfig; - return buckets.reduce((uiConfig: IUiConfig, bucket: IBucketOfFun) => { + return buckets.reduce((uiConfig: IUiConfig | null | undefined, bucket: IBucketOfFun) => { const localIdentifier = bucket?.localIdentifier ?? ""; const bucketUiConfig = uiConfig?.buckets?.[localIdentifier]; const isEnabled = bucketUiConfig?.enabled ?? false; @@ -68,6 +68,10 @@ function setAreaChartBucketWarningMessages( const warningMessage = messageConfig[localIdentifier]; + if (!uiConfig) { + return uiConfig; + } + return set(uiConfig, [BUCKETS, localIdentifier, "warningMessage"], warningMessage); }, updatedUiConfig); } diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/baseChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/baseChartUiConfigHelper.ts index cd11f9f88b6..6d3bb692bc5 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/baseChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/baseChartUiConfigHelper.ts @@ -40,11 +40,15 @@ const barStackIcon = "local:bar/bucket-title-stack.svg"; function setBaseChartBucketWarningMessages( referencePoint: IExtendedReferencePoint, intl?: IntlShape, -): IUiConfig { +): IUiConfig | null | undefined { const buckets = referencePoint?.buckets ?? []; const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); const stackItems = getStackItems(buckets, [ATTRIBUTE, DATE]); + if (!updatedUiConfig) { + return updatedUiConfig; + } + buckets.forEach((bucket: IBucketOfFun) => { const localIdentifier = bucket?.localIdentifier ?? ""; const bucketUiConfig = updatedUiConfig?.buckets?.[localIdentifier]; @@ -56,10 +60,10 @@ function setBaseChartBucketWarningMessages( if (!bucketUiConfig?.canAddItems) { let warningMessage; - if (bucket.localIdentifier === BucketNames.MEASURES) { - warningMessage = getBucketItemsWarningMessage(messages["metricStack"].id, intl, stackItems); - } else if (bucket.localIdentifier === BucketNames.STACK) { - warningMessage = getTranslation(messages["categoryStack"].id, intl); + if (bucket.localIdentifier === BucketNames.MEASURES && intl) { + warningMessage = getBucketItemsWarningMessage(messages["metricStack"].id!, intl, stackItems); + } else if (bucket.localIdentifier === BucketNames.STACK && intl) { + warningMessage = getTranslation(messages["categoryStack"].id!, intl); } if (warningMessage) { @@ -173,7 +177,7 @@ function getBucketItemsIcons(bucket: IBucketItem[], intl: IntlShape): string { } export function getBucketItemsWarningMessage( - messageId: string, + messageId: string | undefined, intl: IntlShape, bucketItems: IBucketItem[], ): string { diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/bulletChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/bulletChartUiConfigHelper.ts index a69b5c8cc1e..75e6f1d8305 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/bulletChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/bulletChartUiConfigHelper.ts @@ -25,7 +25,7 @@ export function getBulletChartUiConfig( ): IExtendedReferencePoint { const referencePointConfigured = cloneDeep(referencePoint); - referencePointConfigured[UICONFIG] = setBucketTitles(referencePointConfigured, visualizationType, intl); + referencePointConfigured[UICONFIG] = setBucketTitles(referencePointConfigured, visualizationType, intl)!; const buckets = referencePoint?.buckets ?? []; @@ -58,8 +58,8 @@ export function getBulletChartUiConfig( if (primaryMeasuresCount === 0 && (secondaryMeasuresCount !== 0 || tertiaryMeasuresCount !== 0)) { referencePointConfigured[UICONFIG].customError = { - heading: getTranslation(messages["heading"].id, intl), - text: getTranslation(messages["text"].id, intl), + heading: getTranslation(messages["heading"].id!, intl), + text: getTranslation(messages["text"].id!, intl), }; } diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/comboChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/comboChartUiConfigHelper.ts index 6aa805078f3..021442f84ff 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/comboChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/comboChartUiConfigHelper.ts @@ -73,7 +73,7 @@ export function setComboChartUiConfig( referencePointConfigured?.properties?.controls?.["secondaryChartType"] ?? LINE, ]; - const updatedUiConfig: IUiConfig = setBucketTitles(referencePointConfigured, visualizationType, intl); + const updatedUiConfig: IUiConfig = setBucketTitles(referencePointConfigured, visualizationType, intl)!; const isDualAxis = referencePointConfigured?.properties?.controls?.["dualAxis"] ?? true; setCanStackInPercent(updatedUiConfig, chartTypes[1], isDualAxis); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/donutChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/donutChartUiConfigHelper.ts index 741a55acd69..72f461e827b 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/donutChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/donutChartUiConfigHelper.ts @@ -16,7 +16,7 @@ const donutViewIcon = "local:donut/bucket-title-view.svg"; export function setDonutChartUiConfig(referencePoint: IExtendedReferencePoint): IExtendedReferencePoint { const referencePointConfigured = cloneDeep(referencePoint); - Object.assign(referencePointConfigured[UICONFIG], disabledOpenAsReportConfig); + Object.assign(referencePointConfigured[UICONFIG]!, disabledOpenAsReportConfig); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.MEASURES, "icon"], donutMeasuresIcon); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.VIEW, "icon"], donutViewIcon); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/funnelChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/funnelChartUiConfigHelper.ts index 19c067e5a1e..1f80cb4315d 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/funnelChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/funnelChartUiConfigHelper.ts @@ -17,7 +17,7 @@ const funnelViewIcon = "local:funnel/bucket-title-view.svg"; export function setFunnelChartUiConfig(referencePoint: IExtendedReferencePoint): IExtendedReferencePoint { const referencePointConfigured = cloneDeep(referencePoint); - Object.assign(referencePointConfigured[UICONFIG], disabledOpenAsReportConfig); + Object.assign(referencePointConfigured[UICONFIG]!, disabledOpenAsReportConfig); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.MEASURES, "icon"], funnelMeasuresIcon); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.VIEW, "icon"], funnelViewIcon); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/geoAreaChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/geoAreaChartUiConfigHelper.ts index 112819a963a..0115a8d5133 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/geoAreaChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/geoAreaChartUiConfigHelper.ts @@ -13,7 +13,7 @@ const geoAreaBucketAreaIcon = "local:geoPushpin/bucket-title-location-icon.svg"; const geoAreaBucketColorIcon = "local:geoPushpin/bucket-title-color-icon.svg"; const geoAreaBucketSegmentIcon = "local:geoPushpin/bucket-title-segment-icon.svg"; -function setBucketIcon(uiConfig: IUiConfig, bucketName: string, icon: string) { +function setBucketIcon(uiConfig: IUiConfig | null | undefined, bucketName: string, icon: string) { if (!uiConfig) { return; } diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/headlineUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/headlineUiConfigHelper.ts index 4ed5f8e3d47..87950719fa1 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/headlineUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/headlineUiConfigHelper.ts @@ -4,6 +4,7 @@ import { cloneDeep, set } from "lodash-es"; import { type IntlShape } from "react-intl"; import { + type IColor, type IColorPalette, type IColorPaletteItem, type IInsightDefinition, @@ -69,7 +70,7 @@ export function getHeadlineUiConfig(referencePoint: IReferencePoint, intl: IntlS }, VisualizationTypes.HEADLINE, intl, - ); + )!; set(uiConfig, [BUCKETS, BucketNames.MEASURES, "canAddItems"], viewCanAddPrimaryItems); set(uiConfig, [BUCKETS, BucketNames.SECONDARY_MEASURES, "canAddItems"], viewCanAddSecondaryItems); @@ -82,8 +83,8 @@ export function getHeadlineUiConfig(referencePoint: IReferencePoint, intl: IntlS if (primaryMeasuresCount === 0 && secondaryMeasuresCount !== 0) { uiConfig.customError = { - heading: getTranslation(messages["heading"].id, intl), - text: getTranslation(messages["text"].id, intl), + heading: getTranslation(messages["heading"].id!, intl), + text: getTranslation(messages["text"].id!, intl), }; } @@ -100,7 +101,7 @@ export function getHeadlineUiConfig(referencePoint: IReferencePoint, intl: IntlS export function buildHeadlineVisualizationConfig( visualizationProperties: IVisualizationProperties, - settings: ISettings, + settings: ISettings | undefined, options: IVisProps, ): IChartConfig { const { config, customVisualizationConfig } = options; @@ -134,11 +135,14 @@ export function getHeadlineSupportedProperties( }; } -export function isComparisonEnabled(insight: IInsightDefinition) { +export function isComparisonEnabled(insight: IInsightDefinition | undefined): boolean { + if (!insight) { + return false; + } const primaryMeasure = insightPrimaryMeasure(insight); const secondaryMeasures = insightSecondaryMeasures(insight); - return primaryMeasure && secondaryMeasures?.length === 1; + return !!(primaryMeasure && secondaryMeasures?.length === 1); } export function getComparisonDefaultCalculationType(insight: IInsightDefinition) { @@ -149,7 +153,7 @@ export function getComparisonDefaultCalculationType(insight: IInsightDefinition) return secondaryIsDerivedMeasure ? CalculateAs.CHANGE : CalculateAs.RATIO; } -export function getComparisonColorPalette(theme: ITheme): IColorPalette { +export function getComparisonColorPalette(theme?: ITheme): IColorPalette { const themeKpi = theme?.kpi; const themePalette = theme?.palette; @@ -166,7 +170,7 @@ export function getComparisonColorPalette(theme: ITheme): IColorPalette { function getComparisonColorPaletteItem( comparisonColorType: ComparisonColorType, - firstPriorityThemeColor: ThemeColor, + firstPriorityThemeColor?: ThemeColor, secondPriorityThemeColor?: ThemeColor, ): IColorPaletteItem { const firstPriorityRgbColor = firstPriorityThemeColor ? parseRGBString(firstPriorityThemeColor) : null; @@ -174,15 +178,15 @@ function getComparisonColorPaletteItem( return { guid: comparisonColorType, fill: - firstPriorityRgbColor || - secondPriorityRgbColor || - getComparisonRgbColor(null, comparisonColorType), + firstPriorityRgbColor ?? + secondPriorityRgbColor ?? + getComparisonRgbColor(undefined as unknown as IColor, comparisonColorType), }; } -function insightPrimaryMeasure(insight: IInsightDefinition): IMeasure { +function insightPrimaryMeasure(insight: IInsightDefinition): IMeasure | undefined { const primaryBucket = insightBucket(insight, BucketNames.MEASURES); - return primaryBucket && bucketMeasure(primaryBucket); + return primaryBucket ? bucketMeasure(primaryBucket) : undefined; } function insightSecondaryMeasures(insight: IInsightDefinition): IMeasure[] { diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts index 0a0fcd049cf..dd66a44eee5 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts @@ -31,6 +31,10 @@ function setLineChartBucketWarningMessages(referencePoint: IExtendedReferencePoi const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); const stackItems = getStackItems(buckets, [ATTRIBUTE, DATE]); + if (!updatedUiConfig) { + return updatedUiConfig; + } + buckets.forEach((bucket) => { const localIdentifier = bucket?.localIdentifier ?? ""; const bucketUiConfig = updatedUiConfig?.buckets?.[localIdentifier]; @@ -42,10 +46,14 @@ function setLineChartBucketWarningMessages(referencePoint: IExtendedReferencePoi if (!bucketUiConfig?.canAddItems) { let warningMessage; - if (bucket.localIdentifier === BucketNames.MEASURES) { - warningMessage = getBucketItemsWarningMessage(messages["metricSegment"].id, intl, stackItems); - } else if (bucket.localIdentifier === BucketNames.SEGMENT) { - warningMessage = getTranslation(messages["categorySegment"].id, intl); + if (bucket.localIdentifier === BucketNames.MEASURES && intl) { + warningMessage = getBucketItemsWarningMessage( + messages["metricSegment"].id!, + intl, + stackItems, + ); + } else if (bucket.localIdentifier === BucketNames.SEGMENT && intl) { + warningMessage = getTranslation(messages["categorySegment"].id!, intl); } if (warningMessage) { diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pieChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pieChartUiConfigHelper.ts index 42bb0d7995a..4644526f65d 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pieChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pieChartUiConfigHelper.ts @@ -23,6 +23,10 @@ function setPieChartBucketWarningMessages(referencePoint: IExtendedReferencePoin const buckets = referencePoint?.buckets; const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); + if (!updatedUiConfig) { + return updatedUiConfig; + } + buckets.forEach((bucket) => { const localIdentifier = bucket?.localIdentifier ?? ""; const bucketUiConfig = updatedUiConfig?.buckets?.[localIdentifier]; @@ -35,7 +39,7 @@ function setPieChartBucketWarningMessages(referencePoint: IExtendedReferencePoin if (!bucketUiConfig?.canAddItems) { let warningMessageId; if (bucket.localIdentifier === BucketNames.VIEW) { - warningMessageId = messages["category"].id; + warningMessageId = messages["category"].id!; } if (warningMessageId) { diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableNextUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableNextUiConfigHelper.ts index e67e34b98ac..626a2180194 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableNextUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableNextUiConfigHelper.ts @@ -46,6 +46,10 @@ function setPivotTableNextBucketWarningMessages(referencePoint: IExtendedReferen const buckets = referencePoint?.buckets; const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); + if (!updatedUiConfig) { + return updatedUiConfig; + } + const hasColumns = !hasNoColumns(buckets); buckets.forEach((bucket) => { const localIdentifier = bucket?.localIdentifier ?? ""; @@ -56,13 +60,13 @@ function setPivotTableNextBucketWarningMessages(referencePoint: IExtendedReferen let warningMessageValues = {}; if (bucket.localIdentifier === BucketNames.COLUMNS) { - warningMessageId = messages["columns"].id; + warningMessageId = messages["columns"].id!; warningMessageValues = { oldLimit: MAX_METRICS_COUNT, oldRowsLimit: MAX_TABLE_CATEGORIES_COUNT, }; } else if (hasColumns) { - warningMessageId = messages["measuresAttributes"].id; + warningMessageId = messages["measuresAttributes"].id!; if (bucket.localIdentifier === BucketNames.MEASURES) { warningMessageValues = { diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableUiConfigHelper.ts index 4a0251c74d4..ab22915fca6 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pivotTableUiConfigHelper.ts @@ -46,6 +46,10 @@ function setPivotTableBucketWarningMessages(referencePoint: IExtendedReferencePo const buckets = referencePoint?.buckets; const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); + if (!updatedUiConfig) { + return updatedUiConfig; + } + const hasColumns = !hasNoColumns(buckets); buckets.forEach((bucket) => { const localIdentifier = bucket?.localIdentifier ?? ""; @@ -56,13 +60,13 @@ function setPivotTableBucketWarningMessages(referencePoint: IExtendedReferencePo let warningMessageValues = {}; if (bucket.localIdentifier === BucketNames.COLUMNS) { - warningMessageId = messages["columns"].id; + warningMessageId = messages["columns"].id!; warningMessageValues = { oldLimit: MAX_METRICS_COUNT, oldRowsLimit: MAX_TABLE_CATEGORIES_COUNT, }; } else if (hasColumns) { - warningMessageId = messages["measuresAttributes"].id; + warningMessageId = messages["measuresAttributes"].id!; if (bucket.localIdentifier === BucketNames.MEASURES) { warningMessageValues = { diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pyramidChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pyramidChartUiConfigHelper.ts index f711c1e16ad..42eacabab52 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pyramidChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/pyramidChartUiConfigHelper.ts @@ -16,7 +16,7 @@ const pyramidViewIcon = "local:pyramid/bucket-title-view.svg"; export function setPyramidChartUiConfig(referencePoint: IExtendedReferencePoint): IExtendedReferencePoint { const referencePointConfigured = cloneDeep(referencePoint); - Object.assign(referencePointConfigured[UICONFIG], disabledOpenAsReportConfig); + Object.assign(referencePointConfigured[UICONFIG]!, disabledOpenAsReportConfig); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.MEASURES, "icon"], pyramidMeasuresIcon); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.VIEW, "icon"], pyramidViewIcon); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/sankeyChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/sankeyChartUiConfigHelper.ts index a29a2bda293..d2909a4f7a4 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/sankeyChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/sankeyChartUiConfigHelper.ts @@ -42,11 +42,11 @@ const getBucketItems = (extendedReferencePoint: IReferencePoint) => { ); if (!attributeFrom) { - attributeFrom = attributesWithoutAttributeFromTo.shift(); + attributeFrom = attributesWithoutAttributeFromTo.shift()!; } if (!attributeTo) { - attributeTo = attributesWithoutAttributeFromTo.shift(); + attributeTo = attributesWithoutAttributeFromTo.shift()!; } return { diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/bulletChartUiConfigHelper.test.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/bulletChartUiConfigHelper.test.ts index d78a44a6bca..048ddbdbb06 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/bulletChartUiConfigHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/bulletChartUiConfigHelper.test.ts @@ -25,23 +25,25 @@ describe("bulletChartUiConfigHelper", () => { describe("'canAddItems' property", () => { it("should set 'canAddItems' bucket property falsy if it already contains a measure", () => { - expect(extendedReferencePoint.uiConfig.buckets["measures"].canAddItems).toBeFalsy(); + expect(extendedReferencePoint.uiConfig!.buckets["measures"].canAddItems).toBeFalsy(); }); it("should set 'canAddItems' bucket property truthy if it has no measures", () => { expect( - extendedReferencePoint.uiConfig.buckets["secondary_measures"].canAddItems, + extendedReferencePoint.uiConfig!.buckets["secondary_measures"].canAddItems, + ).toBeTruthy(); + expect( + extendedReferencePoint.uiConfig!.buckets["tertiary_measures"].canAddItems, ).toBeTruthy(); - expect(extendedReferencePoint.uiConfig.buckets["tertiary_measures"].canAddItems).toBeTruthy(); }); }); describe("'icon' property", () => { it("should set 'icon' property in 'measures', 'secondary_measures', 'tertiary_measures' and 'view' buckets", () => { - expect(extendedReferencePoint.uiConfig.buckets["measures"].icon).toBeDefined(); - expect(extendedReferencePoint.uiConfig.buckets["secondary_measures"].icon).toBeDefined(); - expect(extendedReferencePoint.uiConfig.buckets["tertiary_measures"].icon).toBeDefined(); - expect(extendedReferencePoint.uiConfig.buckets["view"].icon).toBeDefined(); + expect(extendedReferencePoint.uiConfig!.buckets["measures"].icon).toBeDefined(); + expect(extendedReferencePoint.uiConfig!.buckets["secondary_measures"].icon).toBeDefined(); + expect(extendedReferencePoint.uiConfig!.buckets["tertiary_measures"].icon).toBeDefined(); + expect(extendedReferencePoint.uiConfig!.buckets["view"].icon).toBeDefined(); }); }); @@ -56,8 +58,8 @@ describe("bulletChartUiConfigHelper", () => { VisualizationTypes.BULLET, ); - expect(extendedReferencePoint.uiConfig.customError).toHaveProperty("heading"); - expect(extendedReferencePoint.uiConfig.customError).toHaveProperty("text"); + expect(extendedReferencePoint.uiConfig!.customError).toHaveProperty("heading"); + expect(extendedReferencePoint.uiConfig!.customError).toHaveProperty("text"); }); it("should keep 'customError' property empty if there is a measure in bucket 'measure'", () => { @@ -69,7 +71,7 @@ describe("bulletChartUiConfigHelper", () => { intl, VisualizationTypes.BULLET, ); - expect(extendedReferencePoint.uiConfig.customError).toBeUndefined(); + expect(extendedReferencePoint.uiConfig!.customError).toBeUndefined(); }); }); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelper.test.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelper.test.ts index d0c0484c6a1..fe498a32e46 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelper.test.ts @@ -26,9 +26,9 @@ describe("comboChartUiConfigHelper", () => { const secondaryMeasureBucket = referencePoint?.uiConfig?.buckets?.["secondary_measures"]; const viewBucket = referencePoint?.uiConfig?.buckets?.["view"]; - expect(primaryMeasureBucket.title).toEqual("Metrics"); - expect(secondaryMeasureBucket.title).toEqual("Metrics"); - expect(viewBucket.title).toEqual("View by"); + expect(primaryMeasureBucket!.title).toEqual("Metrics"); + expect(secondaryMeasureBucket!.title).toEqual("Metrics"); + expect(viewBucket!.title).toEqual("View by"); }); it.each([ @@ -51,10 +51,10 @@ describe("comboChartUiConfigHelper", () => { const primaryMeasureBucket = referencePoint?.uiConfig?.buckets?.["measures"]; const secondaryMeasureBucket = referencePoint?.uiConfig?.buckets?.["secondary_measures"]; - expect(primaryMeasureBucket.icon).toBeDefined(); - expect(secondaryMeasureBucket.icon).toBeDefined(); - expect(primaryMeasureBucket.subtitle).toEqual(primarySubtitle); - expect(secondaryMeasureBucket.subtitle).toEqual(secondarySubtitle); + expect(primaryMeasureBucket!.icon).toBeDefined(); + expect(secondaryMeasureBucket!.icon).toBeDefined(); + expect(primaryMeasureBucket!.subtitle).toEqual(primarySubtitle); + expect(secondaryMeasureBucket!.subtitle).toEqual(secondarySubtitle); }, ); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelperDeprecated.test.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelperDeprecated.test.ts index 785be02907a..9b1a0d81ea4 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelperDeprecated.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/comboChartUiConfigHelperDeprecated.test.ts @@ -29,9 +29,9 @@ describe("comboChartUiConfigHelper", () => { const secondaryMeasureBucket = referencePoint?.uiConfig?.buckets?.["secondary_measures"]; const viewBucket = referencePoint?.uiConfig?.buckets?.["view"]; - expect(primaryMeasureBucket.title).toEqual("Metrics"); - expect(secondaryMeasureBucket.title).toEqual("Metrics"); - expect(viewBucket.title).toEqual("View by"); + expect(primaryMeasureBucket!.title).toEqual("Metrics"); + expect(secondaryMeasureBucket!.title).toEqual("Metrics"); + expect(viewBucket!.title).toEqual("View by"); }); it("should set bucket subtitles & icons", () => { @@ -43,10 +43,10 @@ describe("comboChartUiConfigHelper", () => { const primaryMeasureBucket = referencePoint?.uiConfig?.buckets?.["measures"]; const secondaryMeasureBucket = referencePoint?.uiConfig?.buckets?.["secondary_measures"]; - expect(primaryMeasureBucket.icon).toBeDefined(); - expect(secondaryMeasureBucket.icon).toBeDefined(); - expect(primaryMeasureBucket.subtitle).toEqual("Column"); - expect(secondaryMeasureBucket.subtitle).toEqual("Line"); + expect(primaryMeasureBucket!.icon).toBeDefined(); + expect(secondaryMeasureBucket!.icon).toBeDefined(); + expect(primaryMeasureBucket!.subtitle).toEqual("Column"); + expect(secondaryMeasureBucket!.subtitle).toEqual("Line"); }); }); }); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/headlineUiConfigHelper.test.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/headlineUiConfigHelper.test.ts index 9f0d6a79414..012daa895ca 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/headlineUiConfigHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/headlineUiConfigHelper.test.ts @@ -252,7 +252,7 @@ describe("headlineUiConfigHelper", () => { it("should return a color palette with positive, negative, and equals colors when kpi.secondaryInfoColor is empty", () => { const themeWithoutSecondaryInfoColor = cloneDeep(theme); - delete themeWithoutSecondaryInfoColor.kpi.secondaryInfoColor; + delete themeWithoutSecondaryInfoColor.kpi!.secondaryInfoColor; expect(getComparisonColorPalette(themeWithoutSecondaryInfoColor)).toMatchSnapshot(); }); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/sankeyChartUIConfigHelper.test.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/sankeyChartUIConfigHelper.test.ts index f09a2ba977f..e981be14211 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/sankeyChartUIConfigHelper.test.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/tests/sankeyChartUIConfigHelper.test.ts @@ -5,7 +5,7 @@ import { describe, expect, it } from "vitest"; import { BucketNames } from "@gooddata/sdk-ui"; import { ATTRIBUTE, DATE, METRIC } from "../../../constants/bucket.js"; -import { type IExtendedReferencePoint } from "../../../interfaces/Visualization.js"; +import { type IExtendedReferencePoint, type IFilters } from "../../../interfaces/Visualization.js"; import { configBuckets } from "../sankeyChartUiConfigHelper.js"; describe("SankeyChartUIHelper", () => { @@ -27,7 +27,7 @@ describe("SankeyChartUIHelper", () => { }, ], uiConfig: undefined, - filters: undefined, + filters: undefined as unknown as IFilters, }; const config = configBuckets(referencePoint); expect(config).toMatchSnapshot(); @@ -59,7 +59,7 @@ describe("SankeyChartUIHelper", () => { }, ], uiConfig: undefined, - filters: undefined, + filters: undefined as unknown as IFilters, }; const config = configBuckets(referencePoint); expect(config).toMatchSnapshot(); @@ -81,7 +81,7 @@ describe("SankeyChartUIHelper", () => { }, ], uiConfig: undefined, - filters: undefined, + filters: undefined as unknown as IFilters, }; const config = configBuckets(referencePoint); expect(config).toMatchSnapshot(); @@ -103,7 +103,7 @@ describe("SankeyChartUIHelper", () => { }, ], uiConfig: undefined, - filters: undefined, + filters: undefined as unknown as IFilters, }; const config = configBuckets(referencePoint); expect(config).toMatchSnapshot(); @@ -130,7 +130,7 @@ describe("SankeyChartUIHelper", () => { }, ], uiConfig: undefined, - filters: undefined, + filters: undefined as unknown as IFilters, }; const config = configBuckets(referencePoint); expect(config).toMatchSnapshot(); @@ -157,7 +157,7 @@ describe("SankeyChartUIHelper", () => { }, ], uiConfig: undefined, - filters: undefined, + filters: undefined as unknown as IFilters, }; const config = configBuckets(referencePoint); expect(config).toMatchSnapshot(); @@ -180,7 +180,7 @@ describe("SankeyChartUIHelper", () => { }, ], uiConfig: undefined, - filters: undefined, + filters: undefined as unknown as IFilters, }; const config = configBuckets(referencePoint); expect(config).toMatchSnapshot(); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts index 0987edadc42..3beacc89f21 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts @@ -25,6 +25,10 @@ function setTreemapBucketWarningMessages(referencePoint: IExtendedReferencePoint const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); const viewItems = getViewItems(buckets, [ATTRIBUTE, DATE]); + if (!updatedUiConfig) { + return updatedUiConfig; + } + buckets.forEach((bucket) => { const localIdentifier = bucket?.localIdentifier ?? ""; const bucketUiConfig = updatedUiConfig?.buckets?.[localIdentifier]; @@ -34,7 +38,7 @@ function setTreemapBucketWarningMessages(referencePoint: IExtendedReferencePoint return; } - if (!bucketUiConfig?.canAddItems) { + if (!bucketUiConfig?.canAddItems && intl) { let warningMessage; if (bucket.localIdentifier === BucketNames.MEASURES) { warningMessage = getBucketItemsWarningMessage(messages["metricView"].id, intl, viewItems); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/waterfallChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/waterfallChartUiConfigHelper.ts index 588b4f5f0e6..95a451bc88a 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/waterfallChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/waterfallChartUiConfigHelper.ts @@ -23,6 +23,10 @@ function setWaterfallChartBucketWarningMessages(referencePoint: IExtendedReferen const buckets = referencePoint?.buckets; const updatedUiConfig = cloneDeep(referencePoint?.uiConfig); + if (!updatedUiConfig) { + return updatedUiConfig; + } + buckets.forEach((bucket) => { const localIdentifier = bucket?.localIdentifier ?? ""; const bucketUiConfig = updatedUiConfig?.buckets?.[localIdentifier]; @@ -33,7 +37,7 @@ function setWaterfallChartBucketWarningMessages(referencePoint: IExtendedReferen } if (!bucketUiConfig?.canAddItems && bucket.localIdentifier === BucketNames.VIEW) { - const warningMessage = getTranslation(messages["category"].id, intl); + const warningMessage = getTranslation(messages["category"].id!, intl); set(updatedUiConfig, [BUCKETS, localIdentifier, "warningMessage"], warningMessage); } }); diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/xirrUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/xirrUiConfigHelper.ts index 86679577528..a8576b0ae10 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/xirrUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/xirrUiConfigHelper.ts @@ -30,14 +30,14 @@ function getCustomError( } export const getXirrUiConfig = (referencePoint: IReferencePoint, intl: IntlShape): IUiConfig => { - const uiConfig = setBucketTitles( + const uiConfig: IUiConfig = setBucketTitles( { ...referencePoint, uiConfig: getDefaultXirrUiConfig(), }, VisualizationTypes.XIRR, intl, - ); + )!; const buckets = referencePoint?.buckets ?? []; diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx index 38293b50b0d..c8c644ea8dc 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx @@ -20,7 +20,7 @@ export interface INotificationsPanelButtonComponentProps { /** * Ref to the button element - is required for proper alignment of the notification panel. */ - buttonRef: RefObject; + buttonRef: RefObject; /** * Opens the notification panel. diff --git a/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx b/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx index 6411e0bb27f..1bcf4289d43 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx @@ -127,7 +127,7 @@ export function useNotifications({ async (notificationId: string) => { assertOrganizationReady(organizationStatus, "markAsRead"); - await organizationService.notifications().markNotificationAsRead(notificationId); + await organizationService!.notifications().markNotificationAsRead(notificationId); setMarkedAsReadNotifications((prev) => [...prev, notificationId]); }, [organizationStatus, organizationService, setMarkedAsReadNotifications], @@ -137,7 +137,7 @@ export function useNotifications({ assertOrganizationReady(organizationStatus, "markAllAsRead"); assertNotificationsReady(notificationsStatus, "markAllAsRead"); - await organizationService.notifications().markAllNotificationsAsRead(); + await organizationService!.notifications().markAllNotificationsAsRead(); notificationsReset(); unreadNotificationsReset(); diff --git a/libs/sdk-ui-ext/tsconfig.build.json b/libs/sdk-ui-ext/tsconfig.build.json index 61373b9fbbf..e24b9205fbf 100644 --- a/libs/sdk-ui-ext/tsconfig.build.json +++ b/libs/sdk-ui-ext/tsconfig.build.json @@ -6,7 +6,6 @@ "noCheck": true, "baseUrl": ".", "rootDir": "./src", - "outDir": "./esm", - "strictNullChecks": false + "outDir": "./esm" } } diff --git a/libs/sdk-ui-ext/tsconfig.json b/libs/sdk-ui-ext/tsconfig.json index 50ad1dec3dd..09db70a363f 100644 --- a/libs/sdk-ui-ext/tsconfig.json +++ b/libs/sdk-ui-ext/tsconfig.json @@ -4,6 +4,5 @@ "noEmit": true, "skipLibCheck": true, "types": ["./vitest-matchers.d.ts"], - "strictNullChecks": false } } diff --git a/libs/sdk-ui-filters/package.json b/libs/sdk-ui-filters/package.json index 04af99a16fa..43126121527 100644 --- a/libs/sdk-ui-filters/package.json +++ b/libs/sdk-ui-filters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-filters", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - Filter Components", "repository": { "type": "git", @@ -96,8 +96,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-gen-ai/api/sdk-ui-gen-ai.api.md b/libs/sdk-ui-gen-ai/api/sdk-ui-gen-ai.api.md index d5d076097d6..9753a8314c3 100644 --- a/libs/sdk-ui-gen-ai/api/sdk-ui-gen-ai.api.md +++ b/libs/sdk-ui-gen-ai/api/sdk-ui-gen-ai.api.md @@ -167,6 +167,8 @@ export interface GenAIAssistantProps { disableFullControl?: boolean; disableManage?: boolean; eventHandlers?: ChatEventHandler[]; + excludeTags?: string[]; + includeTags?: string[]; LandingScreenComponentProvider?: () => ComponentType; locale?: string; objectTypes?: GenAIObjectType[]; diff --git a/libs/sdk-ui-gen-ai/package.json b/libs/sdk-ui-gen-ai/package.json index 960963fbd7c..3ea97c1e26c 100644 --- a/libs/sdk-ui-gen-ai/package.json +++ b/libs/sdk-ui-gen-ai/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-gen-ai", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData GenAI SDK", "repository": { "type": "git", @@ -114,8 +114,8 @@ "@types/react": "19.1.11", "@types/react-dom": "19.1.7", "@types/react-redux": "7.1.34", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx index 1087b9f27a4..a28c553c3c4 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx @@ -81,6 +81,14 @@ export interface GenAIAssistantProps { * A list of object types to search for. */ objectTypes?: GenAIObjectType[]; + /** + * Only objects with these tags will be included + */ + includeTags?: string[]; + /** + * Objects with these tags will be excluded + */ + excludeTags?: string[]; /** * When provided, the function will be called with the store dispatch function @@ -106,8 +114,18 @@ export type GenAIChatProps = GenAIAssistantProps; * @public */ export function GenAIAssistant(props: GenAIAssistantProps) { - const { backend, workspace, locale, colorPalette, eventHandlers, settings, objectTypes, onDispatcher } = - props; + const { + backend, + workspace, + locale, + colorPalette, + eventHandlers, + settings, + objectTypes, + includeTags, + excludeTags, + onDispatcher, + } = props; const effectiveBackend = useBackendStrict(backend); const effectiveWorkspace = useWorkspaceStrict(workspace); const genAIStore = useGenAIStore(effectiveBackend, effectiveWorkspace, { @@ -115,6 +133,8 @@ export function GenAIAssistant(props: GenAIAssistantProps) { eventHandlers, settings, objectTypes, + includeTags, + excludeTags, }); useEffect(() => { diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx index 5cf27770fed..1c0cfe6fecf 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx @@ -27,6 +27,8 @@ export type GenAIChatDialogProps = { canAnalyze?: boolean; canFullControl?: boolean; objectTypes?: GenAIObjectType[]; + includeTags?: string[]; + excludeTags?: string[]; settings?: IUserWorkspaceSettings; onOpen: () => void; onClose: () => void; @@ -54,6 +56,8 @@ export function GenAIChatDialog({ settings, returnFocusTo, objectTypes, + includeTags, + excludeTags, canManage = false, canAnalyze = false, canFullControl = false, @@ -71,6 +75,8 @@ export function GenAIChatDialog({ colorPalette, settings, objectTypes, + includeTags, + excludeTags, }); const open = useRef(onOpen); diff --git a/libs/sdk-ui-gen-ai/src/components/GlobalError.tsx b/libs/sdk-ui-gen-ai/src/components/GlobalError.tsx index 78209b2c733..44aa5f81409 100644 --- a/libs/sdk-ui-gen-ai/src/components/GlobalError.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GlobalError.tsx @@ -1,16 +1,17 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type ReactNode, useState } from "react"; import { useIntl } from "react-intl"; import { ErrorComponent } from "@gooddata/sdk-ui"; -import { Button, Typography } from "@gooddata/sdk-ui-kit"; +import { Button, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; type GlobalErrorProps = { errorMessage?: string; errorDescription?: string; errorDetails?: string; + errorTraceId?: string; clearing?: boolean; clearError?: () => void; buttonsBefore?: ReactNode; @@ -20,11 +21,15 @@ export function GlobalError({ errorMessage, errorDescription, errorDetails, + errorTraceId, buttonsBefore, clearing, clearError, }: GlobalErrorProps) { const intl = useIntl(); + const onCopyTraceId = () => { + void navigator.clipboard.writeText(errorTraceId ?? ""); + }; const [showMore, setShowMore] = useState(false); const hasShowMoreButton = Boolean(errorDetails && !showMore); @@ -40,14 +45,18 @@ export function GlobalError({ />
- {buttonsBefore} - {clearError ? ( -
) : null} {hasShowMoreButton ? (
); diff --git a/libs/sdk-ui-gen-ai/src/components/KeyDriverAnalysis.tsx b/libs/sdk-ui-gen-ai/src/components/KeyDriverAnalysis.tsx index 94c0d1b8f12..4bc29f6e691 100644 --- a/libs/sdk-ui-gen-ai/src/components/KeyDriverAnalysis.tsx +++ b/libs/sdk-ui-gen-ai/src/components/KeyDriverAnalysis.tsx @@ -9,18 +9,24 @@ import { type ISeparators } from "@gooddata/sdk-model"; import type { IKdaDefinition } from "@gooddata/sdk-ui-dashboard"; import { IntlWrapper, KdaDialogController, KdaStoreProvider } from "@gooddata/sdk-ui-dashboard/internal"; -import { keyDriverAnalysisSelector, settingsSelector } from "../store/chatWindow/chatWindowSelectors.js"; +import { + keyDriverAnalysisSelector, + settingsSelector, + tagsSelector, +} from "../store/chatWindow/chatWindowSelectors.js"; import { type RootState, setKeyDriverAnalysisAction } from "../store/index.js"; interface KeyDriverAnalysisProps { keyDriverAnalysis?: IKdaDefinition; separators?: ISeparators; locale?: string; + includeTags?: string[]; + excludeTags?: string[]; setKeyDriverAnalysis?: typeof setKeyDriverAnalysisAction; } function KeyDriverAnalysisComponent(props: KeyDriverAnalysisProps) { - const { keyDriverAnalysis, separators, locale, setKeyDriverAnalysis } = props; + const { keyDriverAnalysis, separators, locale, includeTags, excludeTags, setKeyDriverAnalysis } = props; const intl = useIntl(); const onRequestedDefinitionChange = useCallback( @@ -42,6 +48,8 @@ function KeyDriverAnalysisComponent(props: KeyDriverAnalysisProps) { separators={separators} showCloseButton locale={locale ?? intl.locale} + includeTags={includeTags} + excludeTags={excludeTags} onRequestedDefinitionChange={onRequestedDefinitionChange} /> @@ -55,10 +63,13 @@ const mapDispatchToProps: KeyDriverAnalysisProps = { const mapStateToProps = (state: RootState): KeyDriverAnalysisProps => { const settings = settingsSelector(state); + const tags = tagsSelector(state); return { keyDriverAnalysis: keyDriverAnalysisSelector(state), locale: settings?.locale, separators: settings?.separators, + includeTags: tags?.includeTags, + excludeTags: tags?.excludeTags, }; }; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx index 5b632341235..c42f61669c0 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { FormattedMessage } from "react-intl"; import { useSelector } from "react-redux"; @@ -54,14 +54,10 @@ export function MessageContents({ ); case "routing": - // Show routing when reasoning FF is disabled (original behavior) - return ( - + // When reasoning visibility is enabled, routing/use-case reasoning must not be shown. + // It would overlap with the model-provided reasoning answer and create confusion. + return isReasoningEnabled ? null : ( + ); case "reasoning": // Skip reasoning here - shown in dropdown when FF is enabled diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningDropdown.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningDropdown.tsx index d4864c40c69..08e0337d197 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningDropdown.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningDropdown.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type ReactNode, useState } from "react"; @@ -11,17 +11,21 @@ import { type ReasoningContents } from "../../model.js"; type ReasoningDropdownProps = { children: ReactNode; - isComplete: boolean; + isReasoningFinished: boolean; lastReasoningStepTitle: string | undefined; }; -export function ReasoningDropdown({ children, isComplete, lastReasoningStepTitle }: ReasoningDropdownProps) { +export function ReasoningDropdown({ + children, + isReasoningFinished, + lastReasoningStepTitle, +}: ReasoningDropdownProps) { const [isExpanded, setIsExpanded] = useState(false); const intl = useIntl(); const thoughtProcessText = intl.formatMessage({ id: "gd.gen-ai.routing.thinking-process" }); const thinkingText = intl.formatMessage({ id: "gd.gen-ai.state.thinking" }); - const displayText = isComplete + const displayText = isReasoningFinished ? thoughtProcessText : lastReasoningStepTitle ? lastReasoningStepTitle + "..." @@ -30,12 +34,12 @@ export function ReasoningDropdown({ children, isComplete, lastReasoningStepTitle // Announce reasoning intent changes to screen readers. // The parent log has aria-relevant="additions" which only announces new elements, // but we want to announce text updates (e.g., "Thinking..." → "Creating a visualization...") - const liveRegionText = isComplete ? undefined : displayText; + const liveRegionText = isReasoningFinished ? undefined : displayText; return (
{/* Visually hidden live region to announce reasoning intent changes */} diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx index 3ac60b357c2..e111f99eebf 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useSelector } from "react-redux"; @@ -23,8 +23,23 @@ export function ReasoningMessage({ content, messageState }: IReasoningMessagePro // Collect reasoning items for the dropdown const reasoningItems = content.filter(isReasoningContents); + // Treat dropdown as "complete" once any real (non-reasoning) answer content exists + const hasRenderedAnswer = content.some((item) => { + if (item.type === "reasoning") return false; + if (item.type === "routing") return false; // routing is hidden when reasoning FF is enabled + + if (item.type === "text" || item.type === "error") { + return item.text.trim().length > 0; + } + + // search / semanticSearch / visualization / changeAnalysis => all render meaningful output + return true; + }); + + const isReasoningFinished = isComplete || hasRenderedAnswer; + // Show dropdown when reasoning is enabled and (response is still streaming or contains reasoning items) - const shouldShowDropdown = isReasoningEnabled && (!isComplete || reasoningItems.length > 0); + const shouldShowDropdown = isReasoningEnabled && (!isReasoningFinished || reasoningItems.length > 0); if (!shouldShowDropdown) { return null; @@ -37,10 +52,13 @@ export function ReasoningMessage({ content, messageState }: IReasoningMessagePro const lastReasoningStepTitle = getLastReasoningStepTitle(reasoningItems); // Show placeholder when streaming and no reasoning yet - const showThinkingPlaceholder = !isComplete && totalReasoningSteps === 0; + const showThinkingPlaceholder = !isReasoningFinished && totalReasoningSteps === 0; return ( - + {/* Show placeholder while waiting for reasoning */} {showThinkingPlaceholder ?
: null} {/* Show reasoning steps once available */} diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx index 305d2efa673..b388ee62b7f 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import cx from "classnames"; @@ -11,24 +11,8 @@ export type RoutingContentsProps = { isReasoningEnabled?: boolean; }; -export function RoutingContentsComponent({ - content, - useMarkdown = true, - isReasoningEnabled = false, -}: RoutingContentsProps) { - if (isReasoningEnabled) { - return ( -
-
-
-
- {content.text} -
-
-
- ); - } - +// TODO: Remove this component when reasoning is in GA +export function RoutingContentsComponent({ content, useMarkdown = true }: RoutingContentsProps) { const className = cx("gd-gen-ai-chat__messages__content", "gd-gen-ai-chat__messages__content--routing"); return ( diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx index 94d38d6cd8e..ae27baffc0f 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type AriaAttributes, @@ -29,6 +29,7 @@ import { isMeasureDescriptor, } from "@gooddata/sdk-model"; import { + type ExplicitDrill, type GoodDataSdkError, type IDrillEvent, type IHeaderPredicate, @@ -383,6 +384,16 @@ function VisualizationContentsComponentCore({ const moreButtonDescId = useId(); + const drillableItems = useMemo(() => { + if (enableChangeAnalysis) { + if (visualization.visualizationType === "TABLE") { + return metrics.filter(Boolean).map(headerPredicate); + } + return [dimensions[0], dimensions[1]].filter(Boolean).map((x) => x.attribute.displayForm); + } + return undefined; + }, [dimensions, enableChangeAnalysis, metrics, visualization.visualizationType]); + return (
{content.text} @@ -554,6 +565,7 @@ function VisualizationContentsComponentCore({ handleSuccess, handlerDrill, { + drillableItems, enableChangeAnalysis, enableNewPivotTable, enableAccessibleChartTooltip, @@ -593,6 +605,7 @@ function VisualizationContentsComponentCore({ handleSuccess, handlerDrill, { + drillableItems, enableChangeAnalysis, enableAccessibleChartTooltip, }, @@ -610,6 +623,7 @@ function VisualizationContentsComponentCore({ handleSuccess, handlerDrill, { + drillableItems, enableChangeAnalysis, enableAccessibleChartTooltip, }, @@ -627,6 +641,7 @@ function VisualizationContentsComponentCore({ handleSuccess, handlerDrill, { + drillableItems, enableChangeAnalysis, enableAccessibleChartTooltip, }, @@ -643,6 +658,7 @@ function VisualizationContentsComponentCore({ handleSuccess, handlerDrill, { + drillableItems, enableChangeAnalysis, enableNewPivotTable, enableAccessibleChartTooltip, @@ -661,6 +677,7 @@ function VisualizationContentsComponentCore({ handleSuccess, handlerDrill, { + drillableItems, enableChangeAnalysis, }, ); @@ -738,6 +755,7 @@ const renderBarChart = ( onSuccess: OnExportReady, onDrill: OnFiredDrillEvent, props: { + drillableItems?: ExplicitDrill[]; enableAccessibleChartTooltip?: boolean; enableChangeAnalysis?: boolean; }, @@ -757,11 +775,7 @@ const renderBarChart = ( stackMeasures: metrics.length > 1 && dimensions.length === 2, enableAccessibleTooltip: props.enableAccessibleChartTooltip, }} - drillableItems={ - props.enableChangeAnalysis - ? [dimensions[0], dimensions[1]].filter(Boolean).map((x) => x.attribute.displayForm) - : undefined - } + drillableItems={props.drillableItems} onDrill={onDrill} filters={filters} onError={onError} @@ -782,6 +796,7 @@ const renderColumnChart = ( onSuccess: OnExportReady, onDrill: OnFiredDrillEvent, props: { + drillableItems?: ExplicitDrill[]; enableAccessibleChartTooltip?: boolean; enableChangeAnalysis?: boolean; }, @@ -801,11 +816,7 @@ const renderColumnChart = ( stackMeasures: metrics.length > 1 && dimensions.length === 2, enableAccessibleTooltip: props.enableAccessibleChartTooltip, }} - drillableItems={ - props.enableChangeAnalysis - ? [dimensions[0], dimensions[1]].filter(Boolean).map((x) => x.attribute.displayForm) - : undefined - } + drillableItems={props.drillableItems} onDrill={onDrill} filters={filters} onError={onError} @@ -826,6 +837,7 @@ const renderLineChart = ( onSuccess: OnExportReady, onDrill: OnFiredDrillEvent, props: { + drillableItems?: ExplicitDrill[]; enableAccessibleChartTooltip?: boolean; enableChangeAnalysis?: boolean; }, @@ -844,11 +856,7 @@ const renderLineChart = ( colorPalette, enableAccessibleTooltip: props.enableAccessibleChartTooltip, }} - drillableItems={ - props.enableChangeAnalysis - ? [dimensions[0], dimensions[1]].filter(Boolean).map((x) => x.attribute.displayForm) - : undefined - } + drillableItems={props.drillableItems} onDrill={onDrill} onError={onError} onLoadingChanged={onLoadingChanged} @@ -868,6 +876,7 @@ const renderPieChart = ( onSuccess: OnExportReady, onDrill: OnFiredDrillEvent, props: { + drillableItems?: ExplicitDrill[]; enableAccessibleChartTooltip?: boolean; enableChangeAnalysis?: boolean; }, @@ -884,11 +893,7 @@ const renderPieChart = ( colorPalette, enableAccessibleTooltip: props.enableAccessibleChartTooltip, }} - drillableItems={ - props.enableChangeAnalysis - ? [dimensions[0], dimensions[1]].filter(Boolean).map((x) => x.attribute.displayForm) - : undefined - } + drillableItems={props.drillableItems} onDrill={onDrill} onError={onError} onLoadingChanged={onLoadingChanged} @@ -907,6 +912,7 @@ const renderTable = ( onSuccess: OnExportReady, onDrill: OnFiredDrillEvent, props: { + drillableItems?: ExplicitDrill[]; enableAccessibleChartTooltip?: boolean; enableNewPivotTable?: boolean; enableChangeAnalysis?: boolean; @@ -922,9 +928,7 @@ const renderTable = ( filters={filters} sortBy={sortBy} config={props.enableNewPivotTable ? { agGridToken: props.agGridToken } : undefined} - drillableItems={ - props.enableChangeAnalysis ? metrics.filter(Boolean).map(headerPredicate) : undefined - } + drillableItems={props.drillableItems} onDrill={onDrill} onError={onError} onLoadingChanged={onLoadingChanged} @@ -936,7 +940,7 @@ const renderTable = ( const renderHeadline = ( locale: string, metrics: IMeasure[], - dimensions: IAttribute[], + _dimensions: IAttribute[], filters: IFilter[], colorPalette: IColorPalette | undefined, onError: OnError, @@ -944,6 +948,7 @@ const renderHeadline = ( onSuccess: OnExportReady, onDrill: OnFiredDrillEvent, props: { + drillableItems?: ExplicitDrill[]; enableChangeAnalysis?: boolean; }, ) => ( @@ -957,11 +962,7 @@ const renderHeadline = ( ...getHeadlineComparison(metrics), colorPalette, }} - drillableItems={ - props.enableChangeAnalysis - ? [dimensions[0], dimensions[1]].filter(Boolean).map((x) => x.attribute.displayForm) - : undefined - } + drillableItems={props.drillableItems} onDrill={onDrill} onError={onError} onLoadingChanged={onLoadingChanged} diff --git a/libs/sdk-ui-gen-ai/src/hooks/useGenAIStore.ts b/libs/sdk-ui-gen-ai/src/hooks/useGenAIStore.ts index 1e3a7a75813..227e43099b8 100644 --- a/libs/sdk-ui-gen-ai/src/hooks/useGenAIStore.ts +++ b/libs/sdk-ui-gen-ai/src/hooks/useGenAIStore.ts @@ -11,6 +11,7 @@ import { setColorPaletteAction, setObjectTypesAction, setSettingsAction, + setTagsAction, } from "../store/chatWindow/chatWindowSlice.js"; import { type ChatEventHandler, EventDispatcher } from "../store/events.js"; import { getStore } from "../store/index.js"; @@ -24,9 +25,11 @@ export const useGenAIStore = ( colorPalette?: IColorPalette; settings?: IUserWorkspaceSettings; objectTypes?: GenAIObjectType[]; + includeTags?: string[]; + excludeTags?: string[]; }, ): EnhancedStore => { - const { eventHandlers, colorPalette, settings, objectTypes } = opts; + const { eventHandlers, colorPalette, settings, objectTypes, includeTags, excludeTags } = opts; // Instantiate EventDispatcher. It's a designed to hold a reference to the handlers, so that // we don't update the context every time a new array of handlers is passed. @@ -74,6 +77,18 @@ export const useGenAIStore = ( } }, [objectTypes, optionsDispatcher, store]); + useEffect(() => { + if (includeTags || excludeTags) { + optionsDispatcher.setTags(includeTags, excludeTags); + store.dispatch( + setTagsAction({ + includeTags, + excludeTags, + }), + ); + } + }, [includeTags, excludeTags, optionsDispatcher, store]); + useEffect(() => { if (eventHandlers) { eventDispatcher.setHandlers(eventHandlers); diff --git a/libs/sdk-ui-gen-ai/src/localization/bundles/en-US.json b/libs/sdk-ui-gen-ai/src/localization/bundles/en-US.json index a49ee28db54..0ab4e9e280f 100644 --- a/libs/sdk-ui-gen-ai/src/localization/bundles/en-US.json +++ b/libs/sdk-ui-gen-ai/src/localization/bundles/en-US.json @@ -8,9 +8,25 @@ "crowdinContext": "User instruction on how to recover from a global error in the AI chatbot" }, "gd.gen-ai.global-error.button-details": { - "text": "See details", + "text": "See the raw error response for details", "crowdinContext": "Button label to show more detailed error information" }, + "gd.gen-ai.global-error.traceId": { + "text": "Error trace ID", + "crowdinContext": "Button label to show more detailed error information" + }, + "gd.gen-ai.global-error.traceId.copy": { + "text": "Copy to clipboard", + "crowdinContext": "Button label to copy error trace ID to clipboard" + }, + "gd.gen-ai.global-error.details.title": { + "text": "Raw error response", + "crowdinContext": "Chatbot error details title for showing raw error response json" + }, + "gd.gen-ai.global-error.details.title.tooltip": { + "text": "The raw error response shows back-end information about the error that has occurred. It is visible only to the administrators.", + "crowdinContext": "Chatbot error details title tooltip for showing raw error response json" + }, "gd.gen-ai.global-error.button-clear": { "text": "Restart chatbot", "crowdinContext": "Button label to restart the AI chatbot and clear the current session" diff --git a/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx b/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx index b2342617879..77918bf21d1 100644 --- a/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx +++ b/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx @@ -1,10 +1,14 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type PropsWithChildren, createContext, useMemo } from "react"; import { useIntl } from "react-intl"; -import { AnalyticalBackendErrorTypes, isAnalyticalBackendError } from "@gooddata/sdk-backend-spi"; +import { + AnalyticalBackendErrorTypes, + isAnalyticalBackendError, + isUnexpectedResponseError, +} from "@gooddata/sdk-backend-spi"; import { type IWorkspacePermissions } from "@gooddata/sdk-model"; import { useWorkspaceStrict } from "@gooddata/sdk-ui"; @@ -26,6 +30,9 @@ export function PermissionsProvider({ children }: PropsWithChildren) { const { result, loading, error } = useWorkspacePermissions(workspace); const value = useMemo(() => ({ permissions: result, loading }), [loading, result]); + if (isUnexpectedResponseError(error)) { + return ; + } if (isAnalyticalBackendError(error) && error.abeType === AnalyticalBackendErrorTypes.UNEXPECTED) { return ; } diff --git a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts index 1e874499e99..66b787e368e 100644 --- a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts +++ b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts @@ -36,6 +36,16 @@ export const objectTypesSelector: (state: RootState) => GenAIObjectType[] | unde (state) => state.objectTypes, ); +export const tagsSelector: (state: RootState) => { + includeTags: string[] | undefined; + excludeTags: string[] | undefined; +} = createSelector(chatWindowSliceSelector, (state) => { + return { + includeTags: state.includeTags, + excludeTags: state.excludeTags, + }; +}); + export const keyDriverAnalysisSelector: (state: RootState) => IKdaDefinition | undefined = createSelector( chatWindowSliceSelector, (state) => state.keyDriverAnalysis, diff --git a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSlice.ts b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSlice.ts index de6bd0e3651..bd06509f9c0 100644 --- a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSlice.ts +++ b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSlice.ts @@ -31,6 +31,14 @@ type ChatWindowSliceState = { * Object types to use for the chat UI. */ objectTypes?: GenAIObjectType[]; + /** + * Only objects with these tags will be included + */ + includeTags?: string[]; + /** + * Objects with these tags will be excluded + */ + excludeTags?: string[]; }; export const chatWindowSliceName = "chatWindow"; @@ -41,6 +49,8 @@ const initialState: ChatWindowSliceState = { colorPalette: undefined, settings: undefined, objectTypes: undefined, + includeTags: undefined, + excludeTags: undefined, }; const chatWindowSlice = createSlice({ @@ -80,6 +90,15 @@ const chatWindowSlice = createSlice({ ) => { state.objectTypes = objectTypes; }, + setTagsAction: ( + state, + { + payload: { includeTags, excludeTags }, + }: PayloadAction<{ includeTags?: string[]; excludeTags?: string[] }>, + ) => { + state.includeTags = includeTags; + state.excludeTags = excludeTags; + }, copyToClipboardAction: (state, _action: PayloadAction<{ content: string }>) => state, }, }); @@ -93,4 +112,5 @@ export const { copyToClipboardAction, setKeyDriverAnalysisAction, setObjectTypesAction, + setTagsAction, } = chatWindowSlice.actions; diff --git a/libs/sdk-ui-gen-ai/src/store/messages/messagesSlice.ts b/libs/sdk-ui-gen-ai/src/store/messages/messagesSlice.ts index 4380a7f6ef9..a173fe6246b 100644 --- a/libs/sdk-ui-gen-ai/src/store/messages/messagesSlice.ts +++ b/libs/sdk-ui-gen-ai/src/store/messages/messagesSlice.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import { type PayloadAction, type Reducer, createSlice } from "@reduxjs/toolkit"; @@ -11,7 +11,6 @@ import { type Message, type UserMessage, isAssistantMessage, - isTextContents, isUserMessage, isVisualizationContents, makeErrorContents, @@ -209,15 +208,6 @@ const messagesSlice = createSlice({ const assistantMessage = getAssistantMessageStrict(state, payload.assistantMessageId); assistantMessage.id = payload.interactionId ?? assistantMessage.id; - // When streaming a visualization, we want to replace any existing text contents or previous visualization - // to avoid duplication (text -> visualization transition or visualization updates) - const hasVisualization = payload.contents.some(isVisualizationContents); - if (hasVisualization) { - assistantMessage.content = assistantMessage.content.filter( - (c) => !isTextContents(c) && !isVisualizationContents(c), - ); - } - assistantMessage.content.push(...payload.contents); assistantMessage.cancelled = false; diff --git a/libs/sdk-ui-gen-ai/src/store/options.ts b/libs/sdk-ui-gen-ai/src/store/options.ts index 995e60915c3..457eb4f21b2 100644 --- a/libs/sdk-ui-gen-ai/src/store/options.ts +++ b/libs/sdk-ui-gen-ai/src/store/options.ts @@ -11,6 +11,8 @@ export class OptionsDispatcher { private colorPalette: IColorPalette | undefined = undefined; private settings: IUserWorkspaceSettings | undefined = undefined; private objectTypes: GenAIObjectType[] | undefined = undefined; + private includeTags: string[] | undefined = undefined; + private excludeTags: string[] | undefined = undefined; public setColorPalette(colorPalette: IColorPalette | undefined): void { this.colorPalette = colorPalette; @@ -35,4 +37,16 @@ export class OptionsDispatcher { public getObjectTypes(): GenAIObjectType[] | undefined { return this.objectTypes; } + + public setTags(includeTags: string[] | undefined, excludeTags: string[] | undefined): void { + this.includeTags = includeTags; + this.excludeTags = excludeTags; + } + + public getTags(): { includeTags: string[] | undefined; excludeTags: string[] | undefined } { + return { + includeTags: this.includeTags, + excludeTags: this.excludeTags, + }; + } } diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/converters/interactionsToMessages.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/converters/interactionsToMessages.ts index 3b15a281113..d796b270034 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/converters/interactionsToMessages.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/converters/interactionsToMessages.ts @@ -1,4 +1,4 @@ -// (C) 2024-2025 GoodData Corporation +// (C) 2024-2026 GoodData Corporation import type { IGenAIChatEvaluation } from "@gooddata/sdk-backend-spi"; import type { IGenAIChatInteraction } from "@gooddata/sdk-model"; @@ -98,20 +98,24 @@ export const processContents = ( } else if (item.textResponse) { contents.push(makeTextContents(item.textResponse, [])); } - + const reasoningText = primaryText ?? ""; if (item.semanticSearch) { - const semanticSearch = - showReasoning && primaryText - ? { ...item.semanticSearch, reasoning: primaryText } - : item.semanticSearch; + const semanticSearch = showReasoning + ? { + ...item.semanticSearch, + // When reasoning is enabled, always prefer the model-provided answer (or textResponse fallback) + // and do not temporarily show legacy/use-case reasoning while streaming. + reasoning: reasoningText, + } + : item.semanticSearch; contents.push(makeSemanticSearchContents(semanticSearch)); } else if (item.foundObjects?.reasoning) { - const reasoning = showReasoning && primaryText ? primaryText : item.foundObjects.reasoning; + const reasoning = showReasoning ? reasoningText : item.foundObjects.reasoning; contents.push(makeSearchContents(reasoning, item.foundObjects.objects)); } if (item.createdVisualizations?.reasoning) { - const reasoning = showReasoning && primaryText ? primaryText : item.createdVisualizations.reasoning; + const reasoning = showReasoning ? reasoningText : item.createdVisualizations.reasoning; contents.push( makeVisualizationContents( reasoning, diff --git a/libs/sdk-ui-gen-ai/styles/scss/main.scss b/libs/sdk-ui-gen-ai/styles/scss/main.scss index 8939a3bb26f..d26f803e5a8 100644 --- a/libs/sdk-ui-gen-ai/styles/scss/main.scss +++ b/libs/sdk-ui-gen-ai/styles/scss/main.scss @@ -39,31 +39,91 @@ flex-direction: column; gap: 15px; - &__buttons { + &__buttons_first { display: flex; flex-direction: row; justify-content: center; gap: 15px; } - &__details { - padding: 6px; - border: 1px solid kit-variables.$gd-border-color; - border-radius: 3px; - background: kit-variables.$gd-color-light; + &__buttons { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 10px; } - &__details pre { - margin: 0; - color: kit-variables.$gd-color-link; - font-size: 12px; + &__trace-id { + color: var(--gd-palette-complementary-6); + text-align: center; + font-size: 14px; + font-style: normal; font-weight: 400; - line-height: 18px; - padding: 0; - resize: none; - tab-size: 2; - text-align: left; - white-space: pre-wrap; + line-height: 21px; + display: flex; + align-items: center; + justify-content: center; + + &-name { + text-decoration: underline; + text-decoration-style: dashed; + } + } + + &__details { + &__content { + display: flex; + flex-direction: column; + height: 233px; + padding-top: 5px; + align-items: flex-start; + align-self: stretch; + border-radius: 3px; + border: 1px solid var(--gd-palette-complementary-3); + } + + &__content-title { + display: flex; + padding: 0 10px; + align-items: center; + gap: 5px; + align-self: stretch; + flex-grow: 0; + } + + &__content-title-text { + flex: 1 0 0; + color: var(--gd-palette-complementary-6); + font-feature-settings: + "liga" off, + "clig" off; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 23px; /* 164.286% */ + } + + &__content-description { + display: flex; + padding: 10px; + align-items: flex-start; + gap: 10px; + align-self: stretch; + border-radius: 0 0 3px 3px; + border-top: 1px solid var(--gd-palette-complementary-3); + background: var(--gray-100-fcfcfd-com-0, #fcfcfd); + margin: 0; + color: var(--gd-palette-complementary-7); + font-family: "Andale Mono", serif; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 18px; + overflow: auto; + white-space: normal; + word-break: break-word; + } } } } diff --git a/libs/sdk-ui-geo/package.json b/libs/sdk-ui-geo/package.json index 6fb02d67eac..13ab04d0430 100644 --- a/libs/sdk-ui-geo/package.json +++ b/libs/sdk-ui-geo/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-geo", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - Geo Charts", "repository": { "type": "git", @@ -92,8 +92,8 @@ "@types/react": "19.1.11", "@types/react-dom": "19.1.7", "@types/react-measure": "^2.0.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/ChevronIcon.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/ChevronIcon.tsx index d19701223de..2aada82a36d 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/ChevronIcon.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/ChevronIcon.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type ReactElement, memo } from "react"; @@ -43,7 +43,7 @@ export const ChevronIcon = memo(function ChevronIcon({ return ( ); }); diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartNextLegendOverlay.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartNextLegendOverlay.tsx index 86b227bf4e8..536c8e8079a 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartNextLegendOverlay.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartNextLegendOverlay.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { type ReactElement, useCallback, useMemo } from "react"; @@ -74,6 +74,11 @@ export function GeoChartNextLegendOverlay({ const enabled = useMemo(() => legendConfig.enabled, [legendConfig.enabled]); + // Don't render until container is measured (needed for height calculations) + if (!chartContainerRect?.client?.height) { + return null; + } + return ( ; +type SectionRefs = Record; + +type SectionHeights = Record; + +// Section header height (matches CSS variable --gd-geo-multi-layer-legend__section-header-height) +const COLLAPSED_SECTION_HEIGHT = 34; + +/** + * Hook to manage flexible height distribution for collapsible sections. + * + * Measures section heights and calculates which sections + * should flex-grow based on their content height vs fair share of container. + * We start from 0, calculate container height and grow to the available space to achieve equal share. + */ +function useFlexibleHeightSections(sections: ILegendSection[], expandedState: ExpandedState) { + const containerRef = useRef(null); + const sectionRefs = useRef({}); + // Full heights (measured once on first render when all sections are expanded, + // we can't measure after collapse/expand due to animation time) + const fullContainerHeight = useRef(null); + const fullSectionHeights = useRef({}); + + const [containerHeight, setContainerHeight] = useState(undefined); + const [flexibleSections, setFlexibleSections] = useState([]); + + // Ref callback to store section refs by layerId + const setSectionRef = useCallback((layerId: string) => { + return (element: HTMLDivElement | null) => { + if (element) { + sectionRefs.current[layerId] = element; + } else { + delete sectionRefs.current[layerId]; + } + }; + }, []); + + // Get ref object for a section by layerId + const getSectionRef = useCallback((layerId: string): HTMLDivElement | undefined => { + return sectionRefs.current?.[layerId]; + }, []); + + // Calculate which sections need flex-grow based on cached or measured heights + useLayoutEffect(() => { + const container = containerRef.current; + if (!container) return; + + // On first render, cache container height and section heights + if (fullContainerHeight.current === null) { + fullContainerHeight.current = container.clientHeight; + sections.forEach((section) => { + const el = sectionRefs.current[section.layerId]; + fullSectionHeights.current[section.layerId] = el?.scrollHeight ?? 0; + }); + } + + const availableContainerHeight = fullContainerHeight.current ?? 0; + + // Calculate using cached heights for expanded sections, COLLAPSED_SECTION_HEIGHT for collapsed + const flexibleLayerIds: string[] = []; + let totalContentHeight = 0; + const expandedCount = sections.filter((s) => expandedState[s.layerId] ?? true).length; + + // Sum of all collapsed section heights + const collapsedHeight = (sections.length - expandedCount) * COLLAPSED_SECTION_HEIGHT; + // Equal share of available space for expanded sections + const equalShare = + expandedCount > 0 + ? (availableContainerHeight - collapsedHeight) / expandedCount + : availableContainerHeight; + + sections.forEach((section) => { + const isExpanded = expandedState[section.layerId] ?? true; + const sectionHeight = isExpanded + ? (fullSectionHeights.current[section.layerId] ?? 0) + : COLLAPSED_SECTION_HEIGHT; + if (isExpanded && sectionHeight > equalShare) { + flexibleLayerIds.push(section.layerId); + } + totalContentHeight += sectionHeight; + }); + setFlexibleSections(flexibleLayerIds); + setContainerHeight(Math.min(availableContainerHeight, totalContentHeight)); + }, [expandedState, sections]); + + return { + containerRef, + setSectionRef, + getSectionRef, + containerHeight, + flexibleSections, + }; +} + /** * Props for MultiLayerLegendPanel component. * @@ -102,6 +195,10 @@ export const MultiLayerLegendPanel = memo(function MultiLayerLegendPanel({ // Manage expanded/collapsed state for each section const [expandedState, setExpandedState] = useState(() => initializeExpandedState(model)); + // Flexible height management + const { containerRef, getSectionRef, setSectionRef, containerHeight, flexibleSections } = + useFlexibleHeightSections(model.sections, expandedState); + const handleExpandedChange = useCallback((layerId: string, expanded: boolean) => { setExpandedState((prev) => ({ ...prev, @@ -146,10 +243,14 @@ export const MultiLayerLegendPanel = memo(function MultiLayerLegendPanel({ const panelClassName = cx("gd-geo-multi-layer-legend", `gd-geo-multi-layer-legend--${corner}`); - const panelStyle = maxHeightPx ? { maxHeight: maxHeightPx, overflowY: "auto" as const } : undefined; + const panelStyle = { + ...(containerHeight && { height: containerHeight }), + ...(maxHeightPx && { maxHeight: maxHeightPx, overflowY: "auto" as const }), + }; return (
( void; + + /** + * The section's root DOM element (for internal CSS reading). + * Provided by parent from its refs store. + */ + sectionElement?: HTMLDivElement; + /** * Callback when expand/collapse state changes. */ @@ -109,6 +127,9 @@ export const MultiLayerLegendSection = memo(function MultiLayerLegendSection({ isExpanded = true, isVisible = true, showToggle = true, + isFlexible = false, + setSectionRef, + sectionElement, onExpandedChange, onVisibilityChange, onItemClick, @@ -116,7 +137,6 @@ export const MultiLayerLegendSection = memo(function MultiLayerLegendSection({ const displayTitle = section.layerTitle; const titleId = `${sectionId}-title`; const toggleId = `${sectionId}-toggle`; - const sectionRef = useRef(null); const isFirstRenderRef = useRef(true); const expandTimeoutRef = useRef(undefined); @@ -148,7 +168,7 @@ export const MultiLayerLegendSection = memo(function MultiLayerLegendSection({ }, []); const getToggleDurationMs = useCallback((): number => { - const element = sectionRef.current; + const element = sectionElement; if (!element || typeof window === "undefined") { return 200; } @@ -174,7 +194,7 @@ export const MultiLayerLegendSection = memo(function MultiLayerLegendSection({ } return 200; - }, []); + }, [sectionElement]); useEffect(() => { if (!isExpanded) { @@ -249,6 +269,7 @@ export const MultiLayerLegendSection = memo(function MultiLayerLegendSection({ "gd-geo-multi-layer-legend__section--collapsed": !isExpanded, "gd-geo-multi-layer-legend__section--scroll-enabled": isScrollEnabled, "gd-geo-multi-layer-legend__section--hidden": !isVisible, + "gd-geo-multi-layer-legend__section--flexible": isFlexible && isExpanded, }); return ( @@ -258,7 +279,7 @@ export const MultiLayerLegendSection = memo(function MultiLayerLegendSection({ aria-labelledby={titleId} data-testid={`gd-geo-legend-section-${section.layerId}`} onTransitionEnd={handleSectionTransitionEnd} - ref={sectionRef} + ref={setSectionRef} >
{ const result = insightLayerToGeoLayer(layerDef); - if (!result || result.type !== "pushpin") { + if (result?.type !== "pushpin") { throw new Error("Expected pushpin layer"); } @@ -64,7 +64,7 @@ describe("layerConversion", () => { const result = insightLayerToGeoLayer(layerDef); - if (!result || result.type !== "pushpin") { + if (result?.type !== "pushpin") { throw new Error("Expected pushpin layer"); } @@ -90,7 +90,7 @@ describe("layerConversion", () => { const result = insightLayerToGeoLayer(layerDef); - if (!result || result.type !== "pushpin") { + if (result?.type !== "pushpin") { throw new Error("Expected pushpin layer"); } @@ -118,7 +118,7 @@ describe("layerConversion", () => { const layers = insightLayersToGeoLayers([invalidLayer, locationOnlyLayer, validLayer]); expect(layers).toHaveLength(1); const firstLayer = layers[0]; - if (!firstLayer || firstLayer.type !== "pushpin") { + if (firstLayer?.type !== "pushpin") { throw new Error("Expected pushpin layer"); } expect(firstLayer.id).toBe(validLayer.id); diff --git a/libs/sdk-ui-geo/styles/scss/_geo-multi-layer-legend.scss b/libs/sdk-ui-geo/styles/scss/_geo-multi-layer-legend.scss index 9f1051370bd..1e63bd6ed9a 100644 --- a/libs/sdk-ui-geo/styles/scss/_geo-multi-layer-legend.scss +++ b/libs/sdk-ui-geo/styles/scss/_geo-multi-layer-legend.scss @@ -34,7 +34,7 @@ $legend-toggle-active-bg: var(--gd-palette-primary-base, #14b2e2); font-family: kit-variables.$gd-font-primary; font-size: 12px; line-height: 1.4; - // Single source of truth for section header height (hardcoded OK per request). + // Section header height, matches js variable COLLAPSED_SECTION_HEIGHT. --gd-geo-multi-layer-legend__section-header-height: 34px; // Single source of truth for expand/collapse timing. --gd-geo-multi-layer-legend__toggle-duration: 0.2s; @@ -71,69 +71,32 @@ $legend-toggle-active-bg: var(--gd-palette-primary-base, #14b2e2); // ========================================================================== // SECTION = One layer's legend // ========================================================================== - // - // NOTES - WHAT DOESN'T WORK (DO NOT REPEAT): - // - flex-basis: 0 on all sections → Legend not visible - // - Changing flex on collapse/expand → Causes flicker (instant size change before animation) - // - max-height on collapsed → No animation (instant snap) - // - position: absolute on collapsed content → No animation - // - visibility/opacity hidden on content → Doesn't prevent LAYOUT flicker - // - flex: 1 1 auto on all sections → Headers overflow (bad distribution) - // - transition: flex-grow → Still flickers (doesn't prevent instant size to content) - // - // WORKING: CSS Grid animation (grid-template-rows) for content expand/collapse - // PROBLEM: Section size comes from flex, grid only affects content inside - // FUNDAMENTAL ISSUE: On collapse, flex-basis:auto makes section size to content before animation - // &__section { - // Use CSS Grid on section itself - animate rows instead of relying on flex display: grid; - // IMPORTANT: fixed header row height prevents "header shrinking" during flex redistribution. grid-template-rows: var(--gd-geo-multi-layer-legend__section-header-height) 0fr; // header fixed, content 0fr (collapsed) - align-content: start; // Prevent centering (causes bounce) - // Do NOT animate flex distribution on expand (causes "bouncing"/headers slipping out). - // On collapse, delay flex redistribution until after the grid row collapses to 0fr, but ANIMATE that redistribution - // to avoid the end-of-collapse "snap/bounce". - transition: - grid-template-rows var(--gd-geo-multi-layer-legend__toggle-duration) ease-out, - flex-grow var(--gd-geo-multi-layer-legend__toggle-duration) ease-out - var(--gd-geo-multi-layer-legend__toggle-duration), - flex-shrink var(--gd-geo-multi-layer-legend__toggle-duration) ease-out - var(--gd-geo-multi-layer-legend__toggle-duration); + align-content: start; + transition: grid-template-rows var(--gd-geo-multi-layer-legend__toggle-duration) ease-out; overflow: hidden; - // Never allow the section to shrink below the header height (prevents header overflow during transitions). min-height: var(--gd-geo-multi-layer-legend__section-header-height); - // Flex item properties - collapsed sections take only header height - flex-grow: 0; - flex-shrink: 0; - // Use fixed basis so expanded sections share remaining space evenly without "auto" jumps. - flex-basis: 0%; - // Expanded: content row becomes 1fr, participate in flex distribution + // Flex item: by default, take natural height + flex: 0 0 auto; + + // Expanded: show full section content &--expanded { grid-template-rows: var(--gd-geo-multi-layer-legend__section-header-height) 1fr; - flex-shrink: 1; // Can shrink to make room for siblings - flex-grow: 1; // Take available space - // Expand should apply flex sizing immediately (no delay), but keep the grid animation. - transition: - grid-template-rows var(--gd-geo-multi-layer-legend__toggle-duration) ease-out, - flex-grow 0s linear 0s, - flex-shrink 0s linear 0s; + } + + // Flexible sections (exceed equal share): grow to fill available space, become scrollable + &--flexible { + flex: 1 0 0; + overflow-y: auto; } // Border between sections (not on first) & + & { border-top: 1px solid $legend-divider-color; } - - // Hidden layer styling (dimmed) - &--hidden { - .gd-geo-multi-layer-legend__section-title { - opacity: 0.5; - } - // Content styling is in &__section-content block to ensure it comes after - // --scroll-enabled in cascade order (so hidden state wins over scroll-enabled's opacity: 1). - } } // Section header with layer title, chevron, and toggle @@ -149,10 +112,7 @@ $legend-toggle-active-bg: var(--gd-palette-primary-base, #14b2e2); user-select: none; // Never shrink - header must always be visible flex-shrink: 0; - - &:hover { - background-color: var(--gd-palette-complementary-0-from-theme, #f8fafb); - } + min-width: 0; &:focus { outline: none; @@ -353,10 +313,6 @@ $legend-toggle-active-bg: var(--gd-palette-primary-base, #14b2e2); padding: 0 2px; margin: 0 -2px; - &:hover { - background-color: var(--gd-palette-complementary-0-from-theme, #f8fafb); - } - &:focus { outline: none; } diff --git a/libs/sdk-ui-kit/api/sdk-ui-kit.api.md b/libs/sdk-ui-kit/api/sdk-ui-kit.api.md index ed7ed193685..393b845f1be 100644 --- a/libs/sdk-ui-kit/api/sdk-ui-kit.api.md +++ b/libs/sdk-ui-kit/api/sdk-ui-kit.api.md @@ -6898,7 +6898,7 @@ export interface UiAsyncTableColumn { // (undocumented) getTextContent?: (item: T) => string | ReactNode; // (undocumented) - getTextHref?: (item: T) => string; + getTextHref?: (item: T) => string | undefined; // (undocumented) getTextTitle?: (item: T) => string; // (undocumented) diff --git a/libs/sdk-ui-kit/package.json b/libs/sdk-ui-kit/package.json index da6ce340abd..b342bf8279e 100644 --- a/libs/sdk-ui-kit/package.json +++ b/libs/sdk-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-kit", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK - UI Building Components", "repository": { "type": "git", @@ -130,8 +130,8 @@ "@types/react-measure": "^2.0.12", "@types/react-portal": "^4.0.7", "@types/tinycolor2": "^1.4.2", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx index 710ddd6f598..bd391b73599 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useCallback, useEffect, useMemo, useState } from "react"; @@ -23,12 +23,12 @@ export function UiAsyncTableHeader({ small, largeRow, }: UiAsyncTableHeaderProps) { - const { handleKeyDown, isFocused } = useHeaderKeyboardNavigation(columns, handleColumnClick); + const { handleKeyDown, isFocused, isFocusable } = useHeaderKeyboardNavigation(columns, handleColumnClick); const intl = useIntl(); return (
( () => columns.map((_, index) => index).filter((index) => columns[index].sortable), [columns], ); + const isFocusable = focusableIndexes.length > 0; const handleKeyDown = useMemo(() => { + if (!isFocusable) { + return undefined; + } return makeTabsKeyboardNavigation({ onSelect: () => { - if (columns[focusableIndexes[focusedIndexPosition]].sortable) { - handleColumnClick(columns[focusableIndexes[focusedIndexPosition]].key); + const focusedColumnIndex = focusableIndexes[focusedIndexPosition]; + if (focusedColumnIndex === undefined) { + return; + } + const focusedColumn = columns[focusedColumnIndex]; + if (focusedColumn?.sortable) { + handleColumnClick(focusedColumn.key); } }, onFocusNext: () => { @@ -117,17 +126,28 @@ function useHeaderKeyboardNavigation( setFocusedIndexPosition(focusableIndexes.length - 1); }, }); - }, [handleColumnClick, focusedIndexPosition, setFocusedIndexPosition, focusableIndexes, columns]); + }, [ + handleColumnClick, + focusedIndexPosition, + setFocusedIndexPosition, + focusableIndexes, + columns, + isFocusable, + ]); const isFocused = useCallback( (index: number) => { + if (!isFocusable) { + return false; + } return focusableIndexes[focusedIndexPosition] === index; }, - [focusableIndexes, focusedIndexPosition], + [focusableIndexes, focusedIndexPosition, isFocusable], ); return { handleKeyDown, isFocused, + isFocusable, }; } diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx index 992eb922c0d..0b8d33b7945 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx @@ -218,7 +218,7 @@ const useRenderCellContent = ({ isLarge }: { isLarge: getTextContent: ((item: T) => string | ReactNode) | undefined, getMultiLineTextContent: ((item: T) => Array) | undefined, getTextTitle: ((item: T) => string) | undefined, - getTextHref: ((item: T) => string) | undefined, + getTextHref: ((item: T) => string | undefined) | undefined, renderSuffixIcon: ((item: T) => ReactNode) | undefined, focusedElementRef: Ref, isCellFocused: boolean, diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/types.ts b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/types.ts index 90abb703bf4..89e28aa041b 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/types.ts +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/types.ts @@ -113,7 +113,7 @@ export interface UiAsyncTableColumn { getMultiLineTextContent?: (item: T) => Array; getTextContent?: (item: T) => string | ReactNode; getTextTitle?: (item: T) => string; - getTextHref?: (item: T) => string; + getTextHref?: (item: T) => string | undefined; bold?: boolean; sortable?: boolean; align?: "left" | "center" | "right"; diff --git a/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx b/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx index 8f8527b7702..941895df46f 100644 --- a/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx @@ -51,7 +51,7 @@ export function UiListbox({ }: UiListboxProps): ReactNode { const isItemFocusable = useCallback( (item?: IUiListboxItem) => { - if (!item || item.type !== "interactive") { + if (item?.type !== "interactive") { return false; } @@ -157,7 +157,7 @@ export function UiListbox({ setFocusedIndex(undefined); }, onSelect: (e) => { - if (focusedItem && focusedItem.type === "interactive") { + if (focusedItem?.type === "interactive") { handleSelectItem(focusedItem, { type: "keyboard", newTab: e.ctrlKey || e.metaKey, @@ -243,4 +243,4 @@ export function UiListbox({ } const makeItemId = (listboxId: string, item?: IUiListboxItem) => - item && item.type === "interactive" ? `item-${listboxId}-${item.id}` : undefined; + item?.type === "interactive" ? `item-${listboxId}-${item.id}` : undefined; diff --git a/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx b/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx index c73392236c1..d63f1e3b577 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx @@ -131,7 +131,7 @@ function CoreHeaderWorkspacePicker({ renderItem={({ item }) => { const title = item?.title; const isDemo = item?.isDemo; - const isSelected = selectedWorkspace && item && selectedWorkspace.id === item.id; + const isSelected = selectedWorkspace?.id === item?.id; return ( +
{children} {onClose ? ( diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx index 55cd1a20af6..a066318552f 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx @@ -39,8 +39,7 @@ export const PresetsDropdown = memo(function PresetsDropdown(props: IMeasureNumb const renderPresetOption = useCallback( (preset: IFormatPreset, index?: number) => { - const isPresetItemSelected = - selectedPreset && preset.localIdentifier === selectedPreset.localIdentifier; + const isPresetItemSelected = preset.localIdentifier === selectedPreset?.localIdentifier; return ( { return () => { - if (!loadStatus || loadStatus.status !== "success") { + if (loadStatus?.status !== "success") { return; } diff --git a/libs/sdk-ui-pivot/package.json b/libs/sdk-ui-pivot/package.json index b97c49fbf45..5a20b711333 100644 --- a/libs/sdk-ui-pivot/package.json +++ b/libs/sdk-ui-pivot/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pivot", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - Pivot Table", "repository": { "type": "git", @@ -91,8 +91,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx index e690077c93f..b0306cdb597 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx @@ -102,11 +102,11 @@ export function HeaderMenu({ return; } - if (item.data && item.data.type === "aggregation") { + if (item.data?.type === "aggregation") { onAggregationsItemClick(item.data); - } else if (item.data && item.data.type === "textWrapping") { + } else if (item.data?.type === "textWrapping") { onTextWrappingItemClick(item.data); - } else if (item.data && item.data.type === "sorting") { + } else if (item.data?.type === "sorting") { onSortingItemClick(item.data); } diff --git a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx index 63bc1bc11d8..917cfc64ac8 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx @@ -86,7 +86,7 @@ export type AggregationsMenuItemData = { export function HeaderInteractiveItem(props: IUiMenuInteractiveItemProps) { const { item } = props; - if (item.data && item.data.type === "disabledItem" && item.data.disabledTooltip) { + if (item.data?.type === "disabledItem" && item.data.disabledTooltip) { return ( {...props} /> diff --git a/libs/sdk-ui-pivot/src/next/features/styling/cell.ts b/libs/sdk-ui-pivot/src/next/features/styling/cell.ts index 710398ae9bc..b9a02568e54 100644 --- a/libs/sdk-ui-pivot/src/next/features/styling/cell.ts +++ b/libs/sdk-ui-pivot/src/next/features/styling/cell.ts @@ -358,8 +358,7 @@ const isAttributeGroupedCell = (params: CommonCellParams, colId: string): boolea const currentCellData = data?.cellDataByColId?.[colId]; if ( - !currentCellData || - currentCellData.type !== "attributeHeader" || + currentCellData?.type !== "attributeHeader" || currentCellData.columnDefinition.type !== "attribute" ) { return false; @@ -416,7 +415,7 @@ const isRowFirstOfGroup = (params: CommonCellParams, attributeColId: string): bo } const currentCellData = data?.cellDataByColId?.[attributeColId]; - if (!currentCellData || currentCellData.columnDefinition.type !== "attribute") { + if (currentCellData?.columnDefinition.type !== "attribute") { return false; } @@ -429,7 +428,7 @@ const isRowFirstOfGroup = (params: CommonCellParams, attributeColId: string): bo } const nextCellData = nextRow.data.cellDataByColId?.[attributeColId]; - if (!nextCellData || nextCellData.columnDefinition.type !== "attribute") { + if (nextCellData?.columnDefinition.type !== "attribute") { return false; } @@ -452,7 +451,7 @@ const isRowFirstOfGroup = (params: CommonCellParams, attributeColId: string): bo } const previousCellData = previousRow.data.cellDataByColId?.[attributeColId]; - if (!previousCellData || previousCellData.columnDefinition.type !== "attribute") { + if (previousCellData?.columnDefinition.type !== "attribute") { return true; } diff --git a/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts b/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts index 6cab39586d6..7bdfe2f3890 100644 --- a/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts +++ b/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts @@ -22,7 +22,7 @@ export const getHeaderCellClassName = (params: HeaderClassParams scope.type === "attributeScope"); diff --git a/libs/sdk-ui-semantic-search/package.json b/libs/sdk-ui-semantic-search/package.json index f107b5ff3cb..bd23a6c1838 100644 --- a/libs/sdk-ui-semantic-search/package.json +++ b/libs/sdk-ui-semantic-search/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-semantic-search", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK TypeScript & React skeleton", "repository": { "type": "git", @@ -83,8 +83,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-tests-e2e/package.json b/libs/sdk-ui-tests-e2e/package.json index c2ae415de33..7a9879470e6 100644 --- a/libs/sdk-ui-tests-e2e/package.json +++ b/libs/sdk-ui-tests-e2e/package.json @@ -95,8 +95,8 @@ "@types/react": "19.1.11", "@types/react-dom": "19.1.7", "@types/react-router-dom": "^5.1.5", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitejs/plugin-react": "^4.6.0", "axios": "^1.9.0", "core-js": "^3.34.0", diff --git a/libs/sdk-ui-tests/package.json b/libs/sdk-ui-tests/package.json index 4a938db2900..a7de21e8d99 100644 --- a/libs/sdk-ui-tests/package.json +++ b/libs/sdk-ui-tests/package.json @@ -96,8 +96,8 @@ "@types/react": "19.1.11", "@types/react-dom": "19.1.7", "@types/spark-md5": "^3.0.1", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "babel-loader": "^8.0.5", "babel-plugin-require-context-hook": "^1.0.0", diff --git a/libs/sdk-ui-theme-provider/package.json b/libs/sdk-ui-theme-provider/package.json index c8507810404..da758780473 100644 --- a/libs/sdk-ui-theme-provider/package.json +++ b/libs/sdk-ui-theme-provider/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-theme-provider", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK - Theme provider", "repository": { "type": "git", @@ -70,8 +70,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-theme-provider/src/variablesSpec/validate/parse.ts b/libs/sdk-ui-theme-provider/src/variablesSpec/validate/parse.ts index a8d513f314d..b4bbc9ba3d0 100644 --- a/libs/sdk-ui-theme-provider/src/variablesSpec/validate/parse.ts +++ b/libs/sdk-ui-theme-provider/src/variablesSpec/validate/parse.ts @@ -51,7 +51,7 @@ function parseCssDeclarationValueToVariableUsages(value: string): CssVariableUsa parsedValue.walk((node) => { if (node.type === "function" && node.value === "var") { const [firstNode, _comma, ...rest] = node.nodes; - if (firstNode && firstNode.type === "word") { + if (firstNode?.type === "word") { const variableName = firstNode.value.startsWith("--") ? firstNode.value : `--${firstNode.value}`; diff --git a/libs/sdk-ui-vis-commons/package.json b/libs/sdk-ui-vis-commons/package.json index 8c6f95406a2..297620d13ca 100644 --- a/libs/sdk-ui-vis-commons/package.json +++ b/libs/sdk-ui-vis-commons/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-vis-commons", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - common functionality for different types of visualizations", "repository": { "type": "git", @@ -80,8 +80,8 @@ "@types/react": "19.1.11", "@types/react-dom": "19.1.7", "@types/react-measure": "^2.0.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui-web-components/package.json b/libs/sdk-ui-web-components/package.json index c56f6b24f2e..d7768e88a59 100644 --- a/libs/sdk-ui-web-components/package.json +++ b/libs/sdk-ui-web-components/package.json @@ -80,8 +80,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui/.eslintrc.cjs b/libs/sdk-ui/.eslintrc.cjs index 17463bbc81c..adf58a487aa 100644 --- a/libs/sdk-ui/.eslintrc.cjs +++ b/libs/sdk-ui/.eslintrc.cjs @@ -21,6 +21,7 @@ module.exports = { "@typescript-eslint/no-unsafe-return": "off", "@typescript-eslint/naming-convention": "off", "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-base-to-string": "off", "@typescript-eslint/no-unsafe-enum-comparison": "off", "@typescript-eslint/no-redundant-type-constituents": "off", "@typescript-eslint/prefer-promise-reject-errors": "off", diff --git a/libs/sdk-ui/package.json b/libs/sdk-ui/package.json index 2b6c52778c5..3837733ba3c 100644 --- a/libs/sdk-ui/package.json +++ b/libs/sdk-ui/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData.UI SDK - Core", "repository": { "type": "git", @@ -90,8 +90,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", diff --git a/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts b/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts index 2000408704d..8d52c476064 100644 --- a/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts +++ b/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts @@ -262,9 +262,7 @@ export function attributeItemNameMatch(name: string): IHeaderPredicate { } return (header: IMappingHeader, _context: IHeaderPredicateContext): boolean => { - return isResultAttributeHeader(header) - ? header.attributeHeaderItem && header.attributeHeaderItem.name === name - : false; + return isResultAttributeHeader(header) ? header.attributeHeaderItem?.name === name : false; }; } diff --git a/libs/sdk-ui/src/base/results/internal/resultMetaMethods.ts b/libs/sdk-ui/src/base/results/internal/resultMetaMethods.ts index dbe52b6166f..0f0c7a937a5 100644 --- a/libs/sdk-ui/src/base/results/internal/resultMetaMethods.ts +++ b/libs/sdk-ui/src/base/results/internal/resultMetaMethods.ts @@ -233,7 +233,7 @@ class ResultMetaMethods implements IResultMetaMethods { } public hasNoHeadersInDim(dim: number): boolean { - return this.dataView.headerItems[dim] && this.dataView.headerItems[dim].length === 0; + return this.dataView.headerItems[dim]?.length === 0; } public allHeaders(): IResultHeader[][][] { diff --git a/libs/util/package.json b/libs/util/package.json index 587ab840706..17f29bb3edd 100644 --- a/libs/util/package.json +++ b/libs/util/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/util", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData Utility Functions", "repository": { "type": "git", @@ -50,8 +50,8 @@ "@microsoft/api-documenter": "^7.17.0", "@microsoft/api-extractor": "^7.52.8", "@types/lodash-es": "^4.17.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/skel/sdk-skel-ts/package.json b/skel/sdk-skel-ts/package.json index 9cd0784e4a3..1fcb8fdbc72 100644 --- a/skel/sdk-skel-ts/package.json +++ b/skel/sdk-skel-ts/package.json @@ -54,8 +54,8 @@ "@microsoft/api-documenter": "^7.17.0", "@microsoft/api-extractor": "^7.52.8", "@types/lodash-es": "^4.17.12", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/skel/sdk-skel-tsx/package.json b/skel/sdk-skel-tsx/package.json index 7d83c6b53de..84ba58e5ea0 100644 --- a/skel/sdk-skel-tsx/package.json +++ b/skel/sdk-skel-tsx/package.json @@ -65,8 +65,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/tools/app-toolkit/package.json b/tools/app-toolkit/package.json index aafaad42d18..e3680850c7a 100644 --- a/tools/app-toolkit/package.json +++ b/tools/app-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/app-toolkit", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "CLI with useful tools for creating and maintaining GoodData web applications.", "repository": { "type": "git", @@ -81,8 +81,8 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", "@types/tar": "^6.1.0", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/tools/applink/package.json b/tools/applink/package.json index bab81b1ffc7..0db8d94f0c3 100644 --- a/tools/applink/package.json +++ b/tools/applink/package.json @@ -52,8 +52,8 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", "@types/watchpack": "^2.4.4", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "blessed": "^0.1.81", "commander": "^8.1.0", "cross-spawn": "7.0.6", diff --git a/tools/catalog-export/package.json b/tools/catalog-export/package.json index cd8fa025b00..19363f001fd 100644 --- a/tools/catalog-export/package.json +++ b/tools/catalog-export/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/catalog-export", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK Catalog Export tooling", "repository": { "type": "git", @@ -66,8 +66,8 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", "@types/prettier": "~1.18.2", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/tools/catalog-export/src/loaders/tiger/index.ts b/tools/catalog-export/src/loaders/tiger/index.ts index 54e77c35193..6d02bb0b848 100644 --- a/tools/catalog-export/src/loaders/tiger/index.ts +++ b/tools/catalog-export/src/loaders/tiger/index.ts @@ -1,11 +1,11 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import open from "open"; import ora from "ora"; import { type ITigerClient, type JsonApiWorkspaceOutList, jsonApiHeaders } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesWorkspaces } from "@gooddata/api-client-tiger/entitiesObjects"; -import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/profile"; +import { EntitiesApi_GetAllEntitiesWorkspaces } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; +import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile"; import { createTigerClient } from "./tigerClient.js"; import { tigerLoad } from "./tigerLoad.js"; diff --git a/tools/catalog-export/src/loaders/tiger/tigerAnalyticalDashboards.ts b/tools/catalog-export/src/loaders/tiger/tigerAnalyticalDashboards.ts index d3d918b688c..81d8c11e5cc 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerAnalyticalDashboards.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerAnalyticalDashboards.ts @@ -1,7 +1,7 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { type ITigerClientBase, MetadataUtilities } from "@gooddata/api-client-tiger"; -import { DashboardsApi_GetAllEntitiesAnalyticalDashboards } from "@gooddata/api-client-tiger/entitiesObjects"; +import { DashboardsApi_GetAllEntitiesAnalyticalDashboards } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type ObjectMeta } from "../../base/types.js"; diff --git a/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts b/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts index b24acc9590e..70575626860 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts @@ -1,4 +1,5 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation + import { type ITigerClientBase, type JsonApiAttributeOutList, @@ -11,7 +12,7 @@ import { EntitiesApi_GetAllEntitiesAttributes, EntitiesApi_GetAllEntitiesFacts, EntitiesApi_GetAllEntitiesMetrics, -} from "@gooddata/api-client-tiger/entitiesObjects"; +} from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { convertAttribute, createLabelMap } from "./tigerCommon.js"; import { type Attribute, type Catalog, type Fact, type Metric } from "../../base/types.js"; diff --git a/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts b/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts index fdf0cfc62fa..e81b2473cc6 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts @@ -1,4 +1,4 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { type ITigerClientBase, @@ -7,7 +7,7 @@ import { type JsonApiDatasetOut, MetadataUtilities, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesAttributes } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesAttributes } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type DatasetMap, diff --git a/tools/catalog-export/src/loaders/tiger/tigerInsights.ts b/tools/catalog-export/src/loaders/tiger/tigerInsights.ts index 2d69eb15269..6317871ef08 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerInsights.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerInsights.ts @@ -1,11 +1,11 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { type ITigerClientBase, MetadataUtilities, ValidateRelationsHeader, } from "@gooddata/api-client-tiger"; -import { EntitiesApi_GetAllEntitiesVisualizationObjects } from "@gooddata/api-client-tiger/entitiesObjects"; +import { EntitiesApi_GetAllEntitiesVisualizationObjects } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type ObjectMeta } from "../../base/types.js"; diff --git a/tools/dashboard-plugin-template/package.json b/tools/dashboard-plugin-template/package.json index b281ae3336c..ad6e72b77b6 100644 --- a/tools/dashboard-plugin-template/package.json +++ b/tools/dashboard-plugin-template/package.json @@ -81,8 +81,8 @@ "@types/raf": "^3.4.0", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "babel-loader": "^8.0.5", "case-sensitive-paths-webpack-plugin": "^2.4.0", "css-loader": "^6.7.1", diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json index 5bde4e6901e..2b056d0f153 100644 --- a/tools/eslint-config/package.json +++ b/tools/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/eslint-config", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "repository": { "type": "git", "url": "https://github.com/gooddata/gooddata-ui-sdk.git", @@ -42,8 +42,8 @@ "devDependencies": { "@testing-library/dom": "10.4.0", "@types/node": "^22.13.0", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "@vitest/eslint-plugin": "1.3.5", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", @@ -70,8 +70,8 @@ "vite-node": "^5.2.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", "eslint-import-resolver-typescript": "4.4.4", diff --git a/tools/eslint-config/src/configurations/typescript.ts b/tools/eslint-config/src/configurations/typescript.ts index 2423886a848..0a594b841bb 100644 --- a/tools/eslint-config/src/configurations/typescript.ts +++ b/tools/eslint-config/src/configurations/typescript.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import type { IConfiguration } from "../types.js"; @@ -6,11 +6,11 @@ export const typescript: IConfiguration = { packages: [ { name: "@typescript-eslint/parser", - version: "8.46.0", + version: "8.52.0", }, { name: "@typescript-eslint/eslint-plugin", - version: "8.46.0", + version: "8.52.0", }, ], override: { diff --git a/tools/i18n-toolkit/package.json b/tools/i18n-toolkit/package.json index 77c8540b802..37cdd3b2c5a 100644 --- a/tools/i18n-toolkit/package.json +++ b/tools/i18n-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/i18n-toolkit", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "Localization validator to validate localization complexity and intl and html format.", "repository": { "type": "git", @@ -63,8 +63,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "dotenv": "16.0.3", "eslint": "^8.57.1", diff --git a/tools/mock-handling/package.json b/tools/mock-handling/package.json index e5d9ba2e972..81767c20e9c 100644 --- a/tools/mock-handling/package.json +++ b/tools/mock-handling/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/mock-handling", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK Mock data capture and management tool", "repository": { "type": "git", @@ -62,8 +62,8 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", "@types/prettier": "~1.18.2", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/tools/plugin-toolkit/package.json b/tools/plugin-toolkit/package.json index 451c0f21b0e..6221eedf6d3 100644 --- a/tools/plugin-toolkit/package.json +++ b/tools/plugin-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/plugin-toolkit", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData Set of Tools for working with Plugins", "repository": { "type": "git", @@ -80,8 +80,8 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", "@types/tar": "^6.1.0", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8", diff --git a/tools/react-app-template/package.json b/tools/react-app-template/package.json index 9a4b7126ffc..8d750ba67f8 100644 --- a/tools/react-app-template/package.json +++ b/tools/react-app-template/package.json @@ -65,8 +65,8 @@ "@gooddata/sdk-ui-kit": "workspace:*", "@types/react": "19.1.11", "@types/react-dom": "19.1.7", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "case-sensitive-paths-webpack-plugin": "^2.4.0", "css-loader": "^6.7.1", "dependency-cruiser": "^14.1.2", diff --git a/tools/reference-workspace-mgmt/package.json b/tools/reference-workspace-mgmt/package.json index 238c8bcf0cd..738ff6a820c 100644 --- a/tools/reference-workspace-mgmt/package.json +++ b/tools/reference-workspace-mgmt/package.json @@ -51,8 +51,8 @@ "@gooddata/fixtures": "3.3.4", "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "dotenv": "16.0.3", "eslint": "^8.57.1", diff --git a/tools/reference-workspace/package.json b/tools/reference-workspace/package.json index 18e5f9502b8..713a304e482 100644 --- a/tools/reference-workspace/package.json +++ b/tools/reference-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/reference-workspace", - "version": "11.16.0-alpha.3", + "version": "11.16.0-alpha.4", "description": "GoodData SDK - Reference Workspace for tests", "repository": { "type": "git", @@ -48,8 +48,8 @@ "@gooddata/eslint-config": "workspace:*", "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.0", - "@typescript-eslint/eslint-plugin": "8.46.0", - "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/eslint-plugin": "8.52.0", + "@typescript-eslint/parser": "8.52.0", "dependency-cruiser": "^14.1.2", "eslint": "^8.57.1", "eslint-config-prettier": "10.1.8",