@gooddata/sdk-backend-tiger 11.36.0-alpha.2 → 11.36.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/backend/features/feature.js +2 -3
  4. package/esm/backend/organization/automations/automationsQuery.js +1 -2
  5. package/esm/backend/uiFeatures.d.ts +7 -10
  6. package/esm/backend/uiFeatures.js +6 -9
  7. package/esm/backend/workspace/automations/automationsQuery.js +1 -2
  8. package/esm/backend/workspace/automations/index.d.ts +0 -1
  9. package/esm/backend/workspace/automations/index.js +6 -14
  10. package/esm/backend/workspace/dashboards/index.js +8 -7
  11. package/esm/backend/workspace/exportDefinitions/exportDefinitionsQuery.js +1 -4
  12. package/esm/backend/workspace/exportDefinitions/index.d.ts +0 -1
  13. package/esm/backend/workspace/exportDefinitions/index.js +7 -16
  14. package/esm/backend/workspace/genAI/ChatConversations.d.ts +2 -2
  15. package/esm/backend/workspace/genAI/ChatConversations.js +1 -6
  16. package/esm/backend/workspace/insights/mocks/visualizationClasses.js +13 -1
  17. package/esm/convertors/fromBackend/AutomationConverter.d.ts +2 -2
  18. package/esm/convertors/fromBackend/AutomationConverter.js +7 -7
  19. package/esm/convertors/fromBackend/ExportDefinitionsConverter.d.ts +3 -3
  20. package/esm/convertors/fromBackend/ExportDefinitionsConverter.js +8 -8
  21. package/esm/convertors/fromBackend/ExportMetadataConverter.d.ts +1 -1
  22. package/esm/convertors/fromBackend/ExportMetadataConverter.js +3 -5
  23. package/esm/convertors/fromBackend/FilterViewConvertor.js +5 -2
  24. package/esm/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.js +11 -3
  25. package/esm/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.d.ts +3 -2
  26. package/esm/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.js +1 -1
  27. package/esm/convertors/fromBackend/genAIConvertor.d.ts +3 -16
  28. package/esm/convertors/fromBackend/genAIConvertor.js +2 -2
  29. package/esm/convertors/toBackend/AnalyticalDashboardConverter.d.ts +9 -5
  30. package/esm/convertors/toBackend/AnalyticalDashboardConverter.js +28 -16
  31. package/esm/convertors/toBackend/AutomationConverter.d.ts +1 -1
  32. package/esm/convertors/toBackend/AutomationConverter.js +6 -6
  33. package/esm/convertors/toBackend/ExportDefinitionsConverter.d.ts +3 -3
  34. package/esm/convertors/toBackend/ExportDefinitionsConverter.js +6 -8
  35. package/package.json +12 -12
@@ -1,3 +1,3 @@
1
- export declare const LIB_VERSION = "11.36.0-alpha.2";
1
+ export declare const LIB_VERSION = "11.36.0-alpha.6";
2
2
  export declare const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-backend-tiger";
package/esm/__version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2021 GoodData Corporation
2
2
  // DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
3
- export const LIB_VERSION = "11.36.0-alpha.2";
3
+ export const LIB_VERSION = "11.36.0-alpha.6";
4
4
  export const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
5
5
  export const LIB_NAME = "@gooddata/sdk-backend-tiger";
@@ -9,6 +9,7 @@ export function mapFeatures(features) {
9
9
  ...loadFeature(features, TigerFeaturesNames.EnableMetricFormatOverrides, "enableMetricFormatOverrides", "BOOLEAN", FeatureFlagsValues.enableMetricFormatOverrides),
10
10
  ...loadFeature(features, TigerFeaturesNames.EnableDescriptions, "enableDescriptions", "BOOLEAN", FeatureFlagsValues.enableDescriptions),
11
11
  ...loadFeature(features, TigerFeaturesNames.EnableFunnelChart, "enableFunnelChart", "BOOLEAN", FeatureFlagsValues.enableFunnelChart),
12
+ ...loadFeature(features, TigerFeaturesNames.EnableRadarChart, "enableRadarChart", "BOOLEAN", FeatureFlagsValues.enableRadarChart),
12
13
  ...loadFeature(features, TigerFeaturesNames.EnablePyramidChart, "enablePyramidChart", "BOOLEAN", FeatureFlagsValues.enablePyramidChart),
13
14
  ...loadFeature(features, TigerFeaturesNames.EnableSankeyChart, "enableSankeyChart", "BOOLEAN", FeatureFlagsValues.enableSankeyChart),
14
15
  ...loadFeature(features, TigerFeaturesNames.EnableDependencyWheelChart, "enableDependencyWheelChart", "BOOLEAN", FeatureFlagsValues.enableDependencyWheelChart),
@@ -84,7 +85,6 @@ export function mapFeatures(features) {
84
85
  ...loadFeature(features, TigerFeaturesNames.EnableInPlatformNotifications, "enableInPlatformNotifications", "BOOLEAN", FeatureFlagsValues.enableInPlatformNotifications),
85
86
  ...loadFeature(features, TigerFeaturesNames.EnableVisualizationFilteringByTags, "enableVisualizationFilteringByTags", "BOOLEAN", FeatureFlagsValues.enableVisualizationFilteringByTags),
86
87
  ...loadFeature(features, TigerFeaturesNames.EnableVisualizationFineTuning, "enableVisualizationFineTuning", "BOOLEAN", FeatureFlagsValues.enableVisualizationFineTuning),
87
- ...loadFeature(features, TigerFeaturesNames.EnableImprovedAdFilters, "enableImprovedAdFilters", "BOOLEAN", FeatureFlagsValues.enableImprovedAdFilters),
88
88
  ...loadFeature(features, TigerFeaturesNames.EnableExternalRecipients, "enableExternalRecipients", "BOOLEAN", FeatureFlagsValues.enableExternalRecipients),
89
89
  ...loadFeature(features, TigerFeaturesNames.EnableDashboardTabularExport, "enableDashboardTabularExport", "BOOLEAN", FeatureFlagsValues.enableDashboardTabularExport),
90
90
  ...loadFeature(features, TigerFeaturesNames.EnableOrchestratedTabularExports, "enableOrchestratedTabularExports", "BOOLEAN", FeatureFlagsValues.enableOrchestratedTabularExports),
@@ -103,7 +103,6 @@ export function mapFeatures(features) {
103
103
  ...loadFeature(features, TigerFeaturesNames.EnableHighchartsAccessibility, "enableHighchartsAccessibility", "BOOLEAN", FeatureFlagsValues.enableHighchartsAccessibility),
104
104
  ...loadFeature(features, TigerFeaturesNames.EnableAccessibleChartTooltip, "enableAccessibleChartTooltip", "BOOLEAN", FeatureFlagsValues.enableAccessibleChartTooltip),
105
105
  ...loadFeature(features, TigerFeaturesNames.EnableExecutionTimestamp, "enableExecutionTimestamp", "BOOLEAN", FeatureFlagsValues.enableExecutionTimestamp),
106
- ...loadFeature(features, TigerFeaturesNames.EnableAutomationFilterContext, "enableAutomationFilterContext", "BOOLEAN", FeatureFlagsValues.enableAutomationFilterContext),
107
106
  ...loadFeature(features, TigerFeaturesNames.EnableDateFilterIdentifiersRollout, "enableDateFilterIdentifiersRollout", "BOOLEAN", FeatureFlagsValues.enableDateFilterIdentifiersRollout),
108
107
  ...loadFeature(features, TigerFeaturesNames.EnableAlertsEvaluationFrequencySetup, "enableAlertsEvaluationFrequencySetup", "BOOLEAN", FeatureFlagsValues.enableAlertsEvaluationFrequencySetup),
109
108
  ...loadFeature(features, TigerFeaturesNames.EnableLineChartTrendThreshold, "enableLineChartTrendThreshold", "BOOLEAN", FeatureFlagsValues.enableLineChartTrendThreshold),
@@ -143,10 +142,10 @@ export function mapFeatures(features) {
143
142
  ...loadFeature(features, TigerFeaturesNames.EnableGenAiVisualizationSummarySkill, "enableGenAiVisualizationSummarySkill", "BOOLEAN", FeatureFlagsValues.enableGenAiVisualizationSummarySkill),
144
143
  ...loadFeature(features, TigerFeaturesNames.EnableGenAiAgenticDataShareOptOut, "enableGenAiAgenticDataShareOptOut", "BOOLEAN", FeatureFlagsValues.enableGenAiAgenticDataShareOptOut),
145
144
  ...loadFeature(features, TigerFeaturesNames.AIChatSearchLimit, "aiChatSearchLimit", "NUMBER", FeatureFlagsValues.aiChatSearchLimit),
146
- ...loadFeature(features, TigerFeaturesNames.EnableEmptyDateValuesFilter, "enableEmptyDateValuesFilter", "BOOLEAN", FeatureFlagsValues.enableEmptyDateValuesFilter),
147
145
  ...loadFeature(features, TigerFeaturesNames.EnableKDEmptyDateValuesFilter, "enableKDEmptyDateValuesFilter", "BOOLEAN", FeatureFlagsValues.enableKDEmptyDateValuesFilter),
148
146
  ...loadFeature(features, TigerFeaturesNames.EnableRichTextWidgetFilterConfiguration, "enableRichTextWidgetFilterConfiguration", "BOOLEAN", FeatureFlagsValues.enableRichTextWidgetFilterConfiguration),
149
147
  ...loadFeature(features, TigerFeaturesNames.EnableDashboardSectionHeadersDateDataSet, "enableDashboardSectionHeadersDateDataSet", "BOOLEAN", FeatureFlagsValues.enableDashboardSectionHeadersDateDataSet),
148
+ ...loadFeature(features, TigerFeaturesNames.EnableAnalyticalDashboardVersion3, "enableAnalyticalDashboardVersion3", "BOOLEAN", FeatureFlagsValues.enableAnalyticalDashboardVersion3),
150
149
  ...loadFeature(features, TigerFeaturesNames.EnableAnomalyDetectionAlert, "enableAnomalyDetectionAlert", "BOOLEAN", FeatureFlagsValues.enableAnomalyDetectionAlert),
151
150
  ...loadFeature(features, TigerFeaturesNames.EnableAnomalyDetectionVisualization, "enableAnomalyDetectionVisualization", "BOOLEAN", FeatureFlagsValues.enableAnomalyDetectionVisualization),
152
151
  ...loadFeature(features, TigerFeaturesNames.EnableAlertOncePerInterval, "enableAlertOncePerInterval", "BOOLEAN", FeatureFlagsValues.enableAlertOncePerInterval),
@@ -102,7 +102,6 @@ export class OrganizationAutomationsQuery {
102
102
  ? ["automationResults"]
103
103
  : [];
104
104
  // Note: Organization-level automations always include user data
105
- const enableAutomationFilterContext = true;
106
105
  const enableNewScheduledExport = true;
107
106
  const requestParams = {
108
107
  ...metaIncludeObj,
@@ -130,7 +129,7 @@ export class OrganizationAutomationsQuery {
130
129
  this.setTotalCount(totalCount);
131
130
  }
132
131
  // Convert workspace automation list to standard automation objects
133
- return res.data.data.map((automationObject) => convertAutomation(automationObject, (res.data?.included ?? []), enableAutomationFilterContext, enableNewScheduledExport));
132
+ return res.data.data.map((automationObject) => convertAutomation(automationObject, (res.data?.included ?? []), enableNewScheduledExport));
134
133
  })
135
134
  .catch((error) => {
136
135
  if (error.httpStatus === 400) {
@@ -89,7 +89,6 @@ export declare enum TigerFeaturesNames {
89
89
  EnableDrilledTooltip = "enableDrilledTooltip",
90
90
  EnableVisualizationFilteringByTags = "enableVisualizationFilteringByTags",
91
91
  EnableVisualizationFineTuning = "enableVisualizationFineTuning",
92
- EnableImprovedAdFilters = "enableImprovedAdFilters",
93
92
  EnableDashboardDescriptionDynamicHeight = "enableDashboardDescriptionDynamicHeight",
94
93
  EnableAmplitudeTracker = "enableAmplitudeTracker",
95
94
  EnableSlideshowExports = "enableSlideshowExports",
@@ -104,7 +103,6 @@ export declare enum TigerFeaturesNames {
104
103
  EnableAnalyticalDesignerCatalogSideload = "enableAnalyticalDesignerCatalogSideload",
105
104
  EnableDashboardShareLink = "enableDashboardShareLink",
106
105
  EnableExecutionTimestamp = "enableExecutionTimestamp",
107
- EnableAutomationFilterContext = "enableAutomationFilterContext",
108
106
  EnableDateFilterIdentifiersRollout = "enableDateFilterIdentifiersRollout",
109
107
  EnableAlertsEvaluationFrequencySetup = "enableAlertsEvaluationFrequencySetup",
110
108
  EnableLineChartTrendThreshold = "enableLineChartTrendThreshold",
@@ -142,10 +140,10 @@ export declare enum TigerFeaturesNames {
142
140
  EnableGenAiAgenticDataShareOptOut = "enableGenAiAgenticDataShareOptOut",
143
141
  EnableGenAiVisualizationSummarySkill = "enableGenAiVisualizationSummarySkill",
144
142
  AIChatSearchLimit = "aiChatSearchLimit",
145
- EnableEmptyDateValuesFilter = "enableEmptyDateValuesFilter",
146
143
  EnableKDEmptyDateValuesFilter = "enableKDEmptyDateValuesFilter",
147
144
  EnableRichTextWidgetFilterConfiguration = "enableRichTextWidgetFilterConfiguration",
148
145
  EnableDashboardSectionHeadersDateDataSet = "enableDashboardSectionHeadersDateDataSet",
146
+ EnableAnalyticalDashboardVersion3 = "enableAnalyticalDashboardVersion3",
149
147
  EnableAnomalyDetectionAlert = "enableAnomalyDetectionAlert",
150
148
  EnableAnomalyDetectionVisualization = "enableAnomalyDetectionVisualization",
151
149
  EnableAlertOncePerInterval = "enableAlertOncePerInterval",
@@ -169,7 +167,8 @@ export declare enum TigerFeaturesNames {
169
167
  EnableUserDataFiltersUi = "enableUserDataFiltersUi",
170
168
  EnableEnhancedInsightPicker = "enableEnhancedInsightPicker",
171
169
  EnableAiAgenticMultiConversations = "enableAiAgenticMultiConversations",
172
- EnableAiLlmAnthropicProvider = "enableAiLlmAnthropicProvider"
170
+ EnableAiLlmAnthropicProvider = "enableAiLlmAnthropicProvider",
171
+ EnableRadarChart = "enableRadarChart"
173
172
  }
174
173
  export type ITigerFeatureFlags = {
175
174
  dashboardEditModeDevRollout: (typeof FeatureFlagsValues)["dashboardEditModeDevRollout"][number];
@@ -179,6 +178,7 @@ export type ITigerFeatureFlags = {
179
178
  enableKPIDashboardExportPDF: (typeof FeatureFlagsValues)["enableKPIDashboardExportPDF"][number];
180
179
  enableSqlDatasets: (typeof FeatureFlagsValues)["enableSqlDatasets"][number];
181
180
  enableFunnelChart: (typeof FeatureFlagsValues)["enableFunnelChart"][number];
181
+ enableRadarChart: (typeof FeatureFlagsValues)["enableRadarChart"][number];
182
182
  enablePyramidChart: (typeof FeatureFlagsValues)["enablePyramidChart"][number];
183
183
  enableSankeyChart: (typeof FeatureFlagsValues)["enableSankeyChart"][number];
184
184
  enableDependencyWheelChart: (typeof FeatureFlagsValues)["enableDependencyWheelChart"][number];
@@ -253,7 +253,6 @@ export type ITigerFeatureFlags = {
253
253
  enableInPlatformNotifications: (typeof FeatureFlagsValues)["enableInPlatformNotifications"][number];
254
254
  enableVisualizationFilteringByTags: (typeof FeatureFlagsValues)["enableVisualizationFilteringByTags"][number];
255
255
  enableVisualizationFineTuning: (typeof FeatureFlagsValues)["enableVisualizationFineTuning"][number];
256
- enableImprovedAdFilters: (typeof FeatureFlagsValues)["enableImprovedAdFilters"][number];
257
256
  enableExternalRecipients: (typeof FeatureFlagsValues)["enableExternalRecipients"][number];
258
257
  enableDashboardTabularExport: (typeof FeatureFlagsValues)["enableDashboardTabularExport"][number];
259
258
  enableOrchestratedTabularExports: (typeof FeatureFlagsValues)["enableOrchestratedTabularExports"][number];
@@ -272,7 +271,6 @@ export type ITigerFeatureFlags = {
272
271
  enableHighchartsAccessibility: (typeof FeatureFlagsValues)["enableHighchartsAccessibility"][number];
273
272
  enableAccessibleChartTooltip: (typeof FeatureFlagsValues)["enableAccessibleChartTooltip"][number];
274
273
  enableExecutionTimestamp: (typeof FeatureFlagsValues)["enableExecutionTimestamp"][number];
275
- enableAutomationFilterContext: (typeof FeatureFlagsValues)["enableAutomationFilterContext"][number];
276
274
  enableDateFilterIdentifiersRollout: (typeof FeatureFlagsValues)["enableDateFilterIdentifiersRollout"][number];
277
275
  enableAlertsEvaluationFrequencySetup: (typeof FeatureFlagsValues)["enableAlertsEvaluationFrequencySetup"][number];
278
276
  enableLineChartTrendThreshold: (typeof FeatureFlagsValues)["enableLineChartTrendThreshold"][number];
@@ -308,10 +306,10 @@ export type ITigerFeatureFlags = {
308
306
  enableAiAgenticMultiConversations: (typeof FeatureFlagsValues)["enableAiAgenticMultiConversations"][number];
309
307
  enableGenAIReasoningVisibility: (typeof FeatureFlagsValues)["enableGenAIReasoningVisibility"][number];
310
308
  aiChatSearchLimit: (typeof FeatureFlagsValues)["aiChatSearchLimit"][number];
311
- enableEmptyDateValuesFilter: (typeof FeatureFlagsValues)["enableEmptyDateValuesFilter"][number];
312
309
  enableKDEmptyDateValuesFilter: (typeof FeatureFlagsValues)["enableKDEmptyDateValuesFilter"][number];
313
310
  enableRichTextWidgetFilterConfiguration: (typeof FeatureFlagsValues)["enableRichTextWidgetFilterConfiguration"][number];
314
311
  enableDashboardSectionHeadersDateDataSet: (typeof FeatureFlagsValues)["enableDashboardSectionHeadersDateDataSet"][number];
312
+ enableAnalyticalDashboardVersion3: (typeof FeatureFlagsValues)["enableAnalyticalDashboardVersion3"][number];
315
313
  enableAnomalyDetectionAlert: (typeof FeatureFlagsValues)["enableAnomalyDetectionAlert"][number];
316
314
  enableAnomalyDetectionVisualization: (typeof FeatureFlagsValues)["enableAnomalyDetectionVisualization"][number];
317
315
  enableAlertOncePerInterval: (typeof FeatureFlagsValues)["enableAlertOncePerInterval"][number];
@@ -348,6 +346,7 @@ export declare const FeatureFlagsValues: {
348
346
  enableKPIDashboardExportPDF: readonly [true, false];
349
347
  enableSqlDatasets: readonly [true, false];
350
348
  enableFunnelChart: readonly [true, false];
349
+ enableRadarChart: readonly [true, false];
351
350
  enablePyramidChart: readonly [true, false];
352
351
  enableSankeyChart: readonly [true, false];
353
352
  enableDependencyWheelChart: readonly [true, false];
@@ -423,7 +422,6 @@ export declare const FeatureFlagsValues: {
423
422
  enableInPlatformNotifications: readonly [true, false];
424
423
  enableVisualizationFilteringByTags: readonly [true, false];
425
424
  enableVisualizationFineTuning: readonly [true, false];
426
- enableImprovedAdFilters: readonly [true, false];
427
425
  enableExternalRecipients: readonly [true, false];
428
426
  enableDashboardTabularExport: readonly [true, false];
429
427
  enableOrchestratedTabularExports: readonly [true, false];
@@ -442,7 +440,6 @@ export declare const FeatureFlagsValues: {
442
440
  enableAnalyticalDesignerCatalogSideload: readonly [true, false];
443
441
  enableDashboardShareLink: readonly [true, false];
444
442
  enableExecutionTimestamp: readonly [true, false];
445
- enableAutomationFilterContext: readonly [true, false];
446
443
  enableDateFilterIdentifiersRollout: readonly [true, false];
447
444
  enableAlertsEvaluationFrequencySetup: readonly [true, false];
448
445
  enableLineChartTrendThreshold: readonly [true, false];
@@ -478,10 +475,10 @@ export declare const FeatureFlagsValues: {
478
475
  enableAiAgenticMultiConversations: readonly [true, false];
479
476
  enableGenAIReasoningVisibility: readonly [false, true];
480
477
  aiChatSearchLimit: readonly [undefined, number];
481
- enableEmptyDateValuesFilter: readonly [true, false];
482
478
  enableKDEmptyDateValuesFilter: readonly [true, false];
483
479
  enableRichTextWidgetFilterConfiguration: readonly [true, false];
484
480
  enableDashboardSectionHeadersDateDataSet: readonly [true, false];
481
+ enableAnalyticalDashboardVersion3: readonly [true, false];
485
482
  enableAnomalyDetectionAlert: readonly [true, false];
486
483
  enableAnomalyDetectionVisualization: readonly [true, false];
487
484
  enableAlertOncePerInterval: readonly [true, false];
@@ -93,7 +93,6 @@ var TigerFeaturesNames;
93
93
  TigerFeaturesNames["EnableDrilledTooltip"] = "enableDrilledTooltip";
94
94
  TigerFeaturesNames["EnableVisualizationFilteringByTags"] = "enableVisualizationFilteringByTags";
95
95
  TigerFeaturesNames["EnableVisualizationFineTuning"] = "enableVisualizationFineTuning";
96
- TigerFeaturesNames["EnableImprovedAdFilters"] = "enableImprovedAdFilters";
97
96
  TigerFeaturesNames["EnableDashboardDescriptionDynamicHeight"] = "enableDashboardDescriptionDynamicHeight";
98
97
  TigerFeaturesNames["EnableAmplitudeTracker"] = "enableAmplitudeTracker";
99
98
  TigerFeaturesNames["EnableSlideshowExports"] = "enableSlideshowExports";
@@ -108,7 +107,6 @@ var TigerFeaturesNames;
108
107
  TigerFeaturesNames["EnableAnalyticalDesignerCatalogSideload"] = "enableAnalyticalDesignerCatalogSideload";
109
108
  TigerFeaturesNames["EnableDashboardShareLink"] = "enableDashboardShareLink";
110
109
  TigerFeaturesNames["EnableExecutionTimestamp"] = "enableExecutionTimestamp";
111
- TigerFeaturesNames["EnableAutomationFilterContext"] = "enableAutomationFilterContext";
112
110
  TigerFeaturesNames["EnableDateFilterIdentifiersRollout"] = "enableDateFilterIdentifiersRollout";
113
111
  TigerFeaturesNames["EnableAlertsEvaluationFrequencySetup"] = "enableAlertsEvaluationFrequencySetup";
114
112
  TigerFeaturesNames["EnableLineChartTrendThreshold"] = "enableLineChartTrendThreshold";
@@ -146,10 +144,10 @@ var TigerFeaturesNames;
146
144
  TigerFeaturesNames["EnableGenAiAgenticDataShareOptOut"] = "enableGenAiAgenticDataShareOptOut";
147
145
  TigerFeaturesNames["EnableGenAiVisualizationSummarySkill"] = "enableGenAiVisualizationSummarySkill";
148
146
  TigerFeaturesNames["AIChatSearchLimit"] = "aiChatSearchLimit";
149
- TigerFeaturesNames["EnableEmptyDateValuesFilter"] = "enableEmptyDateValuesFilter";
150
147
  TigerFeaturesNames["EnableKDEmptyDateValuesFilter"] = "enableKDEmptyDateValuesFilter";
151
148
  TigerFeaturesNames["EnableRichTextWidgetFilterConfiguration"] = "enableRichTextWidgetFilterConfiguration";
152
149
  TigerFeaturesNames["EnableDashboardSectionHeadersDateDataSet"] = "enableDashboardSectionHeadersDateDataSet";
150
+ TigerFeaturesNames["EnableAnalyticalDashboardVersion3"] = "enableAnalyticalDashboardVersion3";
153
151
  TigerFeaturesNames["EnableAnomalyDetectionAlert"] = "enableAnomalyDetectionAlert";
154
152
  TigerFeaturesNames["EnableAnomalyDetectionVisualization"] = "enableAnomalyDetectionVisualization";
155
153
  TigerFeaturesNames["EnableAlertOncePerInterval"] = "enableAlertOncePerInterval";
@@ -174,6 +172,7 @@ var TigerFeaturesNames;
174
172
  TigerFeaturesNames["EnableEnhancedInsightPicker"] = "enableEnhancedInsightPicker";
175
173
  TigerFeaturesNames["EnableAiAgenticMultiConversations"] = "enableAiAgenticMultiConversations";
176
174
  TigerFeaturesNames["EnableAiLlmAnthropicProvider"] = "enableAiLlmAnthropicProvider";
175
+ TigerFeaturesNames["EnableRadarChart"] = "enableRadarChart";
177
176
  })(TigerFeaturesNames || (TigerFeaturesNames = {}));
178
177
  export const DefaultFeatureFlags = {
179
178
  dashboardEditModeDevRollout: true,
@@ -183,6 +182,7 @@ export const DefaultFeatureFlags = {
183
182
  enableKPIDashboardExportPDF: true,
184
183
  enableSqlDatasets: false,
185
184
  enableFunnelChart: true,
185
+ enableRadarChart: false,
186
186
  enablePyramidChart: true,
187
187
  enableSankeyChart: true,
188
188
  enableDependencyWheelChart: true,
@@ -257,7 +257,6 @@ export const DefaultFeatureFlags = {
257
257
  enableInPlatformNotifications: true,
258
258
  enableVisualizationFilteringByTags: false,
259
259
  enableVisualizationFineTuning: false,
260
- enableImprovedAdFilters: true,
261
260
  enableExternalRecipients: true,
262
261
  enableDashboardTabularExport: false,
263
262
  enableOrchestratedTabularExports: false,
@@ -276,7 +275,6 @@ export const DefaultFeatureFlags = {
276
275
  enableHighchartsAccessibility: true,
277
276
  enableAccessibleChartTooltip: false,
278
277
  enableExecutionTimestamp: true,
279
- enableAutomationFilterContext: true,
280
278
  enableDateFilterIdentifiersRollout: true,
281
279
  enableAlertsEvaluationFrequencySetup: true,
282
280
  enableLineChartTrendThreshold: true,
@@ -312,10 +310,10 @@ export const DefaultFeatureFlags = {
312
310
  enableAiAgenticMultiConversations: false,
313
311
  enableGenAIReasoningVisibility: false,
314
312
  aiChatSearchLimit: undefined,
315
- enableEmptyDateValuesFilter: true,
316
313
  enableKDEmptyDateValuesFilter: true,
317
314
  enableRichTextWidgetFilterConfiguration: false,
318
315
  enableDashboardSectionHeadersDateDataSet: false,
316
+ enableAnalyticalDashboardVersion3: false,
319
317
  enableAnomalyDetectionAlert: false,
320
318
  enableAnomalyDetectionVisualization: false,
321
319
  enableAlertOncePerInterval: false,
@@ -351,6 +349,7 @@ export const FeatureFlagsValues = {
351
349
  enableKPIDashboardExportPDF: [true, false],
352
350
  enableSqlDatasets: [true, false],
353
351
  enableFunnelChart: [true, false],
352
+ enableRadarChart: [true, false],
354
353
  enablePyramidChart: [true, false],
355
354
  enableSankeyChart: [true, false],
356
355
  enableDependencyWheelChart: [true, false],
@@ -426,7 +425,6 @@ export const FeatureFlagsValues = {
426
425
  enableInPlatformNotifications: [true, false],
427
426
  enableVisualizationFilteringByTags: [true, false],
428
427
  enableVisualizationFineTuning: [true, false],
429
- enableImprovedAdFilters: [true, false],
430
428
  enableExternalRecipients: [true, false],
431
429
  enableDashboardTabularExport: [true, false],
432
430
  enableOrchestratedTabularExports: [true, false],
@@ -445,7 +443,6 @@ export const FeatureFlagsValues = {
445
443
  enableAnalyticalDesignerCatalogSideload: [true, false],
446
444
  enableDashboardShareLink: [true, false],
447
445
  enableExecutionTimestamp: [true, false],
448
- enableAutomationFilterContext: [true, false],
449
446
  enableDateFilterIdentifiersRollout: [true, false],
450
447
  enableAlertsEvaluationFrequencySetup: [true, false],
451
448
  enableLineChartTrendThreshold: [true, false],
@@ -481,10 +478,10 @@ export const FeatureFlagsValues = {
481
478
  enableAiAgenticMultiConversations: [true, false],
482
479
  enableGenAIReasoningVisibility: [false, true],
483
480
  aiChatSearchLimit: [undefined, {}],
484
- enableEmptyDateValuesFilter: [true, false],
485
481
  enableKDEmptyDateValuesFilter: [true, false],
486
482
  enableRichTextWidgetFilterConfiguration: [true, false],
487
483
  enableDashboardSectionHeadersDateDataSet: [true, false],
484
+ enableAnalyticalDashboardVersion3: [true, false],
488
485
  enableAnomalyDetectionAlert: [true, false],
489
486
  enableAnomalyDetectionVisualization: [true, false],
490
487
  enableAlertOncePerInterval: [true, false],
@@ -95,7 +95,6 @@ export class AutomationsQuery {
95
95
  : [];
96
96
  const filterObj = this.constructFilter();
97
97
  const userSettings = await getSettingsForCurrentUser(this.authCall, this.requestParameters.workspaceId);
98
- const enableAutomationFilterContext = userSettings.enableAutomationFilterContext ?? true;
99
98
  const enableNewScheduledExport = userSettings.enableNewScheduledExport ?? true;
100
99
  const items = await this.authCall((client) => EntitiesApi_GetAllEntitiesAutomations(client.axios, client.basePath, {
101
100
  ...this.requestParameters,
@@ -121,7 +120,7 @@ export class AutomationsQuery {
121
120
  if (!(totalCount === null || totalCount === undefined)) {
122
121
  this.setTotalCount(totalCount);
123
122
  }
124
- return convertAutomationListToAutomations(data, enableAutomationFilterContext, enableNewScheduledExport);
123
+ return convertAutomationListToAutomations(data, enableNewScheduledExport);
125
124
  });
126
125
  return { items, totalCount: this.totalCount };
127
126
  }, this.size, this.page * this.size);
@@ -19,6 +19,5 @@ export declare class TigerWorkspaceAutomationService implements IWorkspaceAutoma
19
19
  resumeAutomation(id: string): Promise<void>;
20
20
  resumeAutomations(ids: string[]): Promise<void>;
21
21
  triggerAutomation(id: string): Promise<void>;
22
- private getEnableAutomationFilterContext;
23
22
  private getEnableNewScheduledExport;
24
23
  }
@@ -15,7 +15,6 @@ export class TigerWorkspaceAutomationService {
15
15
  }
16
16
  getAutomations = async (options) => {
17
17
  const { loadUserData = false } = options ?? {};
18
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
19
18
  const enableNewScheduledExport = await this.getEnableNewScheduledExport();
20
19
  return this.authCall(async (client) => {
21
20
  const result = await EntitiesApi_GetAllEntitiesAutomations(client.axios, client.basePath, {
@@ -30,7 +29,7 @@ export class TigerWorkspaceAutomationService {
30
29
  origin: "NATIVE", // ensures that no inherited automations are returned
31
30
  });
32
31
  const automations = result.data?.data || [];
33
- return automations.map((automation) => convertAutomationFromBackend(automation, result.data.included ?? [], enableAutomationFilterContext, enableNewScheduledExport));
32
+ return automations.map((automation) => convertAutomationFromBackend(automation, result.data.included ?? [], enableNewScheduledExport));
34
33
  });
35
34
  };
36
35
  getAutomationsQuery = (options) => {
@@ -38,7 +37,6 @@ export class TigerWorkspaceAutomationService {
38
37
  };
39
38
  getAutomation = async (id, options) => {
40
39
  const { loadUserData = false } = options ?? {};
41
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
42
40
  const enableNewScheduledExport = await this.getEnableNewScheduledExport();
43
41
  return this.authCall(async (client) => {
44
42
  const result = await EntitiesApi_GetEntityAutomations(client.axios, client.basePath, {
@@ -52,15 +50,14 @@ export class TigerWorkspaceAutomationService {
52
50
  ...(loadUserData ? ["createdBy", "modifiedBy"] : []),
53
51
  ],
54
52
  });
55
- return convertAutomationFromBackend(result.data.data, result.data.included ?? [], enableAutomationFilterContext, enableNewScheduledExport);
53
+ return convertAutomationFromBackend(result.data.data, result.data.included ?? [], enableNewScheduledExport);
56
54
  });
57
55
  };
58
56
  createAutomation = async (automation, options, widgetExecution, overrides) => {
59
57
  const { loadUserData = false } = options ?? {};
60
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
61
58
  const enableNewScheduledExport = await this.getEnableNewScheduledExport();
62
59
  return this.authCall(async (client) => {
63
- const convertedAutomation = convertAutomationToBackend(automation, enableAutomationFilterContext, enableNewScheduledExport, widgetExecution, overrides);
60
+ const convertedAutomation = convertAutomationToBackend(automation, enableNewScheduledExport, widgetExecution, overrides);
64
61
  const result = await EntitiesApi_CreateEntityAutomations(client.axios, client.basePath, {
65
62
  workspaceId: this.workspaceId,
66
63
  jsonApiAutomationInDocument: {
@@ -74,15 +71,14 @@ export class TigerWorkspaceAutomationService {
74
71
  ...(loadUserData ? ["createdBy", "modifiedBy"] : []),
75
72
  ],
76
73
  });
77
- return convertAutomationFromBackend(result.data.data, result.data.included ?? [], enableAutomationFilterContext, enableNewScheduledExport);
74
+ return convertAutomationFromBackend(result.data.data, result.data.included ?? [], enableNewScheduledExport);
78
75
  });
79
76
  };
80
77
  updateAutomation = async (automation, options, widgetExecution, overrides) => {
81
78
  const { loadUserData = false } = options ?? {};
82
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
83
79
  const enableNewScheduledExport = await this.getEnableNewScheduledExport();
84
80
  return this.authCall(async (client) => {
85
- const convertedAutomation = convertAutomationToBackend(automation, enableAutomationFilterContext, enableNewScheduledExport, widgetExecution, overrides);
81
+ const convertedAutomation = convertAutomationToBackend(automation, enableNewScheduledExport, widgetExecution, overrides);
86
82
  const result = await EntitiesApi_UpdateEntityAutomations(client.axios, client.basePath, {
87
83
  objectId: automation.id,
88
84
  workspaceId: this.workspaceId,
@@ -97,7 +93,7 @@ export class TigerWorkspaceAutomationService {
97
93
  ...(loadUserData ? ["createdBy", "modifiedBy"] : []),
98
94
  ],
99
95
  });
100
- return convertAutomationFromBackend(result.data.data, result.data.included ?? [], enableAutomationFilterContext, enableNewScheduledExport);
96
+ return convertAutomationFromBackend(result.data.data, result.data.included ?? [], enableNewScheduledExport);
101
97
  });
102
98
  };
103
99
  deleteAutomation(id) {
@@ -170,10 +166,6 @@ export class TigerWorkspaceAutomationService {
170
166
  });
171
167
  });
172
168
  }
173
- getEnableAutomationFilterContext = async () => {
174
- const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspaceId);
175
- return userSettings.enableAutomationFilterContext ?? true;
176
- };
177
169
  getEnableNewScheduledExport = async () => {
178
170
  const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspaceId);
179
171
  return userSettings.enableNewScheduledExport ?? true;
@@ -128,9 +128,7 @@ export class TigerWorkspaceDashboards {
128
128
  // fallback to default filters later.
129
129
  return null;
130
130
  }
131
- const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspace);
132
- const enableAutomationFilterContext = userSettings.enableAutomationFilterContext ?? true;
133
- const convertedExportMetadata = convertFromBackendExportMetadata(metadata, enableAutomationFilterContext);
131
+ const convertedExportMetadata = convertFromBackendExportMetadata(metadata);
134
132
  const filterContextFromFilters = convertedExportMetadata?.filters
135
133
  ? {
136
134
  filterContext: {
@@ -204,7 +202,8 @@ export class TigerWorkspaceDashboards {
204
202
  const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspace);
205
203
  const isWidgetIdentifiersEnabled = userSettings.enableWidgetIdentifiersRollout ?? true;
206
204
  const enableDashboardSectionHeadersDateDataSet = userSettings.enableDashboardSectionHeadersDateDataSet ?? false;
207
- const dashboardContent = convertAnalyticalDashboard(dashboardWithTabFilterContexts, filterContext?.ref, isWidgetIdentifiersEnabled, enableDashboardSectionHeadersDateDataSet);
205
+ const enableAnalyticalDashboardVersion3 = userSettings.enableAnalyticalDashboardVersion3 ?? false;
206
+ const dashboardContent = convertAnalyticalDashboard(dashboardWithTabFilterContexts, filterContext?.ref, isWidgetIdentifiersEnabled, enableDashboardSectionHeadersDateDataSet, enableAnalyticalDashboardVersion3);
208
207
  const result = await this.authCall((client) => {
209
208
  return DashboardsApi_CreateEntityAnalyticalDashboards(client.axios, client.basePath, {
210
209
  workspaceId: this.workspace,
@@ -262,7 +261,8 @@ export class TigerWorkspaceDashboards {
262
261
  const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspace);
263
262
  const isWidgetIdentifiersEnabled = userSettings.enableWidgetIdentifiersRollout ?? true;
264
263
  const enableDashboardSectionHeadersDateDataSet = userSettings.enableDashboardSectionHeadersDateDataSet ?? false;
265
- const dashboardContent = convertAnalyticalDashboard(updatedDashboardWithTabFilterContexts, filterContext?.ref, isWidgetIdentifiersEnabled, enableDashboardSectionHeadersDateDataSet);
264
+ const enableAnalyticalDashboardVersion3 = userSettings.enableAnalyticalDashboardVersion3 ?? false;
265
+ const dashboardContent = convertAnalyticalDashboard(updatedDashboardWithTabFilterContexts, filterContext?.ref, isWidgetIdentifiersEnabled, enableDashboardSectionHeadersDateDataSet, enableAnalyticalDashboardVersion3);
266
266
  const result = await this.authCall((client) => {
267
267
  return DashboardsApi_UpdateEntityAnalyticalDashboards(client.axios, client.basePath, {
268
268
  workspaceId: this.workspace,
@@ -787,7 +787,7 @@ export class TigerWorkspaceDashboards {
787
787
  };
788
788
  createFilterView = async (filterView) => {
789
789
  try {
790
- const { name, dashboard, isDefault, filterContext, tabLocalIdentifier } = filterView;
790
+ const { name, dashboard, isDefault, filterContext, tabLocalIdentifier, parameters } = filterView;
791
791
  const dashboardId = objRefToIdentifier(dashboard, this.authCall);
792
792
  const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspace);
793
793
  const useDateFilterLocalIdentifiers = userSettings.enableDateFilterIdentifiersRollout ?? true;
@@ -812,7 +812,7 @@ export class TigerWorkspaceDashboards {
812
812
  attributes: {
813
813
  isDefault,
814
814
  title: name,
815
- content: convertFilterViewContextToBackend(filterContext, useDateFilterLocalIdentifiers, tabLocalIdentifier),
815
+ content: convertFilterViewContextToBackend(filterContext, useDateFilterLocalIdentifiers, tabLocalIdentifier, parameters),
816
816
  },
817
817
  relationships: {
818
818
  user: {
@@ -841,6 +841,7 @@ export class TigerWorkspaceDashboards {
841
841
  name: title,
842
842
  filterContext,
843
843
  isDefault: persistedIsDefault ?? false,
844
+ ...(parameters === undefined ? {} : { parameters }),
844
845
  };
845
846
  });
846
847
  }
@@ -4,7 +4,6 @@ import { MetadataUtilities, } from "@gooddata/api-client-tiger";
4
4
  import { EntitiesApi_GetAllEntitiesExportDefinitions } from "@gooddata/api-client-tiger/endpoints/entitiesObjects";
5
5
  import { ServerPaging } from "@gooddata/sdk-backend-base";
6
6
  import { convertExportDefinitionMdObject } from "../../../convertors/fromBackend/ExportDefinitionsConverter.js";
7
- import { getSettingsForCurrentUser } from "../settings/index.js";
8
7
  export class ExportDefinitionsQuery {
9
8
  authCall;
10
9
  requestParameters;
@@ -65,8 +64,6 @@ export class ExportDefinitionsQuery {
65
64
  const filterObj = this.filter.title
66
65
  ? { filter: `title=containsic=${this.filter.title}` } // contains + ignore case
67
66
  : {};
68
- const userSettings = await getSettingsForCurrentUser(this.authCall, this.requestParameters.workspaceId);
69
- const enableAutomationFilterContext = userSettings.enableAutomationFilterContext ?? true;
70
67
  const items = await this.authCall((client) => EntitiesApi_GetAllEntitiesExportDefinitions(client.axios, client.basePath, {
71
68
  ...this.requestParameters,
72
69
  ...metaIncludeObj,
@@ -81,7 +78,7 @@ export class ExportDefinitionsQuery {
81
78
  if (!(totalCount === null || totalCount === undefined)) {
82
79
  this.setTotalCount(totalCount);
83
80
  }
84
- return data.data.map((ed) => convertExportDefinitionMdObject(ed, data.included, enableAutomationFilterContext));
81
+ return data.data.map((ed) => convertExportDefinitionMdObject(ed, data.included));
85
82
  });
86
83
  return { items, totalCount: this.totalCount };
87
84
  }, this.size, this.page * this.size);
@@ -12,5 +12,4 @@ export declare class TigerWorkspaceExportDefinitions implements IWorkspaceExport
12
12
  createExportDefinition: (exportDefinition: IExportDefinitionMetadataObjectDefinition) => Promise<IExportDefinitionMetadataObject>;
13
13
  updateExportDefinition: (ref: ObjRef, exportDefinition: IExportDefinitionMetadataObjectDefinition) => Promise<IExportDefinitionMetadataObject>;
14
14
  deleteExportDefinition: (ref: ObjRef) => Promise<void>;
15
- private getEnableAutomationFilterContext;
16
15
  }
@@ -7,7 +7,6 @@ import { objRefToString, } from "@gooddata/sdk-model";
7
7
  import { convertExportDefinitionMdObject as convertExportDefinitionMdObjectFromBackend } from "../../../convertors/fromBackend/ExportDefinitionsConverter.js";
8
8
  import { convertExportDefinitionMdObjectDefinition as convertExportDefinitionMdObjectDefinitionToBackend, convertExportDefinitionMdObject as convertExportDefinitionMdObjectToBackend, } from "../../../convertors/toBackend/ExportDefinitionsConverter.js";
9
9
  import { objRefToIdentifier } from "../../../utils/api.js";
10
- import { getSettingsForCurrentUser } from "../settings/index.js";
11
10
  import { exportDefinitionsListComparator } from "./comparator.js";
12
11
  import { ExportDefinitionsQuery } from "./exportDefinitionsQuery.js";
13
12
  export class TigerWorkspaceExportDefinitions {
@@ -19,7 +18,6 @@ export class TigerWorkspaceExportDefinitions {
19
18
  }
20
19
  getExportDefinitions = async (options) => {
21
20
  const requestParameters = this.getExportDefinitionsRequestParameters(options);
22
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
23
21
  const allExportDefinitions = await this.authCall((client) => {
24
22
  return MetadataUtilities.getAllPagesOf(client, EntitiesApi_GetAllEntitiesExportDefinitions, requestParameters, { headers: ValidateRelationsHeader })
25
23
  .then(MetadataUtilities.mergeEntitiesResults)
@@ -32,9 +30,9 @@ export class TigerWorkspaceExportDefinitions {
32
30
  const title = ed.attributes?.title;
33
31
  return title && title.toLowerCase().indexOf(lowercaseSearch) > -1;
34
32
  })
35
- .map((ed) => convertExportDefinitionMdObjectFromBackend(ed, res.included, enableAutomationFilterContext));
33
+ .map((ed) => convertExportDefinitionMdObjectFromBackend(ed, res.included));
36
34
  }
37
- return res.data.map((ep) => convertExportDefinitionMdObjectFromBackend(ep, res.included, enableAutomationFilterContext));
35
+ return res.data.map((ep) => convertExportDefinitionMdObjectFromBackend(ep, res.included));
38
36
  });
39
37
  });
40
38
  // Remove when API starts to support sort=modifiedBy,createdBy,insight.title
@@ -65,7 +63,6 @@ export class TigerWorkspaceExportDefinitions {
65
63
  };
66
64
  getExportDefinition = async (ref, options = {}) => {
67
65
  const id = objRefToIdentifier(ref, this.authCall);
68
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
69
66
  const includeUser = options?.loadUserData
70
67
  ? { include: ["createdBy", "modifiedBy"] }
71
68
  : {};
@@ -77,29 +74,27 @@ export class TigerWorkspaceExportDefinitions {
77
74
  if (!response.data) {
78
75
  throw new UnexpectedError(`Export definition for ${objRefToString(ref)} not found!`);
79
76
  }
80
- return convertExportDefinitionMdObjectFromBackend(response.data.data, response.data.included, enableAutomationFilterContext);
77
+ return convertExportDefinitionMdObjectFromBackend(response.data.data, response.data.included);
81
78
  };
82
79
  createExportDefinition = async (exportDefinition) => {
83
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
84
80
  const createResponse = await this.authCall((client) => {
85
81
  return EntitiesApi_CreateEntityExportDefinitions(client.axios, client.basePath, {
86
82
  workspaceId: this.workspace,
87
- jsonApiExportDefinitionPostOptionalIdDocument: convertExportDefinitionMdObjectDefinitionToBackend(exportDefinition, enableAutomationFilterContext),
83
+ jsonApiExportDefinitionPostOptionalIdDocument: convertExportDefinitionMdObjectDefinitionToBackend(exportDefinition),
88
84
  });
89
85
  });
90
- return convertExportDefinitionMdObjectFromBackend(createResponse.data.data, createResponse.data.included, enableAutomationFilterContext);
86
+ return convertExportDefinitionMdObjectFromBackend(createResponse.data.data, createResponse.data.included);
91
87
  };
92
88
  updateExportDefinition = async (ref, exportDefinition) => {
93
89
  const id = objRefToIdentifier(ref, this.authCall);
94
- const enableAutomationFilterContext = await this.getEnableAutomationFilterContext();
95
90
  const updateResponse = await this.authCall((client) => {
96
91
  return EntitiesApi_UpdateEntityExportDefinitions(client.axios, client.basePath, {
97
92
  objectId: id,
98
93
  workspaceId: this.workspace,
99
- jsonApiExportDefinitionInDocument: convertExportDefinitionMdObjectToBackend(exportDefinition, id, enableAutomationFilterContext),
94
+ jsonApiExportDefinitionInDocument: convertExportDefinitionMdObjectToBackend(exportDefinition, id),
100
95
  });
101
96
  });
102
- return convertExportDefinitionMdObjectFromBackend(updateResponse.data.data, updateResponse.data.included, enableAutomationFilterContext);
97
+ return convertExportDefinitionMdObjectFromBackend(updateResponse.data.data, updateResponse.data.included);
103
98
  };
104
99
  deleteExportDefinition = async (ref) => {
105
100
  const id = objRefToIdentifier(ref, this.authCall);
@@ -108,8 +103,4 @@ export class TigerWorkspaceExportDefinitions {
108
103
  workspaceId: this.workspace,
109
104
  }));
110
105
  };
111
- getEnableAutomationFilterContext = async () => {
112
- const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspace);
113
- return userSettings.enableAutomationFilterContext ?? true;
114
- };
115
106
  }
@@ -1,4 +1,4 @@
1
- import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatConversationItemsQuery, type IChatConversationItemsQueryResult, type IChatConversationThread, type IChatConversationThreadQuery, type IChatConversations, type IChatSuggestionsItem } from "@gooddata/sdk-backend-spi";
1
+ import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatConversationItemsQuery, type IChatConversationItemsQueryResult, type IChatConversationThread, type IChatConversationThreadQuery, type IChatConversations } from "@gooddata/sdk-backend-spi";
2
2
  import { type GenAIChatInteractionUserFeedback, type GenAIObjectType, type IAllowedRelationshipType, type IGenAIUserContext } from "@gooddata/sdk-model";
3
3
  import type { DateNormalizer } from "../../../convertors/fromBackend/dateFormatting/types.js";
4
4
  import type { TigerAuthenticatedCallGuard } from "../../../types/index.js";
@@ -102,5 +102,5 @@ export declare class ChatConversationThreadQuery implements IChatConversationThr
102
102
  query(options?: {
103
103
  signal?: AbortSignal;
104
104
  }): Promise<IChatConversationItem[]>;
105
- stream(): ReadableStream<IChatConversationItem | IChatConversationError | IChatSuggestionsItem>;
105
+ stream(): ReadableStream<IChatConversationItem | IChatConversationError>;
106
106
  }
@@ -3,7 +3,7 @@ import { EventSourceParserStream } from "eventsource-parser/stream";
3
3
  import { GenAiApi_DeleteConversation, GenAiApi_GetConversation, GenAiApi_GetConversationItems, GenAiApi_GetConversationResponses, GenAiApi_GetConversations, GenAiApi_PatchConversation, GenAiApi_PatchVisualization, GenAiApi_PostConversationFeedback, GenAiApi_PostConversations, GenAiApi_PostGenerateConversationTitle, GenAiApi_PostMessages, } from "@gooddata/api-client-tiger/endpoints/genAI";
4
4
  import { ServerPaging } from "@gooddata/sdk-backend-base";
5
5
  import { objRefToString, } from "@gooddata/sdk-model";
6
- import { convertChatConversationErrorFromBackend, convertChatConversationFromBackend, convertChatConversationItemFromBackend, convertChatSuggestionItemFromBackend, } from "../../../convertors/fromBackend/genAIConvertor.js";
6
+ import { convertChatConversationErrorFromBackend, convertChatConversationFromBackend, convertChatConversationItemFromBackend, } from "../../../convertors/fromBackend/genAIConvertor.js";
7
7
  /**
8
8
  * Chat conversations service.
9
9
  * @beta
@@ -389,11 +389,6 @@ class ServerSentEventsDataConverter extends TransformStream {
389
389
  else if (event.type === "item" && "item" in event.data) {
390
390
  controller.enqueue(convertChatConversationItemFromBackend(event.data.item, undefined, dateNormalizer, locale, timezone));
391
391
  }
392
- else if (event.type === "response_ended" && event.data) {
393
- if ("suggestions" in event.data) {
394
- controller.enqueue(convertChatSuggestionItemFromBackend(event.data.suggestions));
395
- }
396
- }
397
392
  },
398
393
  });
399
394
  }
@@ -1,4 +1,4 @@
1
- // (C) 2019-2025 GoodData Corporation
1
+ // (C) 2019-2026 GoodData Corporation
2
2
  import { sortBy } from "lodash-es";
3
3
  export const visualizationClasses = sortBy([
4
4
  {
@@ -229,6 +229,18 @@ export const visualizationClasses = sortBy([
229
229
  uri: "/gdc/md/gtl83h4doozbp26q0kf5qg8uiyu5gpyn/obj/1319",
230
230
  },
231
231
  },
232
+ {
233
+ visualizationClass: {
234
+ checksum: "local",
235
+ icon: "local:radar",
236
+ orderIndex: 19.4,
237
+ iconSelected: "local:radar.selected",
238
+ url: "local:radar",
239
+ title: "Radar chart",
240
+ identifier: "gdc.visualization.radar",
241
+ uri: "/gdc/md/gtl83h4doozbp26q0kf5qg8uiyu4glyn/obj/1419",
242
+ },
243
+ },
232
244
  {
233
245
  visualizationClass: {
234
246
  checksum: "local",
@@ -1,7 +1,7 @@
1
1
  import { type JsonApiAutomationOutIncludes, type JsonApiAutomationOutList, type JsonApiAutomationOutWithLinks, type JsonApiWorkspaceAutomationOutWithLinks } from "@gooddata/api-client-tiger";
2
2
  import { type FilterContextItem, type IAutomationMetadataObject, type IFilter } from "@gooddata/sdk-model";
3
- export declare function convertAutomation(automation: JsonApiAutomationOutWithLinks | JsonApiWorkspaceAutomationOutWithLinks, included: JsonApiAutomationOutIncludes[], enableAutomationFilterContext: boolean, enableNewScheduledExport: boolean): IAutomationMetadataObject;
4
- export declare const convertAutomationListToAutomations: (automationList: JsonApiAutomationOutList, enableAutomationFilterContext: boolean, enableNewScheduledExport: boolean) => IAutomationMetadataObject[];
3
+ export declare function convertAutomation(automation: JsonApiAutomationOutWithLinks | JsonApiWorkspaceAutomationOutWithLinks, included: JsonApiAutomationOutIncludes[], enableNewScheduledExport: boolean): IAutomationMetadataObject;
4
+ export declare const convertAutomationListToAutomations: (automationList: JsonApiAutomationOutList, enableNewScheduledExport: boolean) => IAutomationMetadataObject[];
5
5
  /**
6
6
  * Converts a legacy execution-level filter to a dashboard `FilterContextItem`. Used during
7
7
  * lazy migration of XLSX export definitions that historically stored `IFilter[]` instead of
@@ -78,7 +78,7 @@ const convertAutomationResult = (relationships, included) => {
78
78
  }, undefined) ?? results[results.length - 1];
79
79
  return latestResult?.attributes;
80
80
  };
81
- export function convertAutomation(automation, included, enableAutomationFilterContext, enableNewScheduledExport) {
81
+ export function convertAutomation(automation, included, enableNewScheduledExport) {
82
82
  const { id, attributes = {}, relationships = {} } = automation;
83
83
  const { title, description, tags, schedule, alert, details, createdAt, modifiedAt, metadata, state, visualExports, tabularExports, imageExports, slidesExports, rawExports, dashboardTabularExports, externalRecipients, evaluationMode, } = attributes;
84
84
  const { createdBy, modifiedBy } = relationships;
@@ -86,13 +86,13 @@ export function convertAutomation(automation, included, enableAutomationFilterCo
86
86
  const exportDefinitionsIds = relationships?.exportDefinitions?.data?.map((ed) => ed.id) ?? [];
87
87
  const includedExportDefinitions = compact(exportDefinitionsIds.map((exportDefinitionId) => included.find((i) => i.type === "exportDefinition" && i.id === exportDefinitionId)));
88
88
  const exportDefinitions = [
89
- ...includedExportDefinitions.map((ed) => convertExportDefinitionMdObjectFromBackend(ed, undefined, enableAutomationFilterContext)),
89
+ ...includedExportDefinitions.map((ed) => convertExportDefinitionMdObjectFromBackend(ed, undefined)),
90
90
  ...(visualExports?.map((ve) => enableNewScheduledExport
91
- ? wrapExportDefinition(convertVisualExportRequest(ve, enableAutomationFilterContext), ve.requestPayload.metadata)
92
- : convertInlineExportDefinitionMdObject(ve, enableAutomationFilterContext)) ?? []),
91
+ ? wrapExportDefinition(convertVisualExportRequest(ve), ve.requestPayload.metadata)
92
+ : convertInlineExportDefinitionMdObject(ve)) ?? []),
93
93
  ...(tabularExports?.map((te) => enableNewScheduledExport
94
94
  ? wrapExportDefinition(convertTabularExportRequest(te), te.requestPayload.metadata ?? undefined)
95
- : convertInlineExportDefinitionMdObject(te, enableAutomationFilterContext)) ?? []),
95
+ : convertInlineExportDefinitionMdObject(te)) ?? []),
96
96
  ...(imageExports?.map((ie) => wrapExportDefinition(convertImageExportRequest(ie), ie.requestPayload.metadata ?? undefined)) ?? []),
97
97
  ...(slidesExports?.map((se) => wrapExportDefinition(convertSlidesExportRequest(se), se.requestPayload.metadata ?? undefined)) ?? []),
98
98
  ...(dashboardTabularExports?.map((dte) => wrapExportDefinition(convertDashboardTabularExportRequest(dte))) ?? []),
@@ -159,8 +159,8 @@ export function convertAutomation(automation, included, enableAutomationFilterCo
159
159
  deprecated: false,
160
160
  };
161
161
  }
162
- export const convertAutomationListToAutomations = (automationList, enableAutomationFilterContext, enableNewScheduledExport) => {
163
- return automationList.data.map((automationObject) => convertAutomation(automationObject, automationList.included ?? [], enableAutomationFilterContext, enableNewScheduledExport));
162
+ export const convertAutomationListToAutomations = (automationList, enableNewScheduledExport) => {
163
+ return automationList.data.map((automationObject) => convertAutomation(automationObject, automationList.included ?? [], enableNewScheduledExport));
164
164
  };
165
165
  const convertAlert = (alert, state) => {
166
166
  if (!alert) {
@@ -10,11 +10,11 @@ type MetadataObjectDefinition<T extends ITigerFilter | ITigerFilterContextItem =
10
10
  };
11
11
  export declare const wrapExportDefinition: (requestPayload: IExportDefinitionRequestPayload, metadata?: MetadataObjectDefinition<ITigerFilterContextItem> | undefined) => IExportDefinitionMetadataObject;
12
12
  export declare const convertDashboardTabularExportRequest: (exportRequest: JsonApiWorkspaceAutomationOutAttributesDashboardTabularExportsInner) => IExportDefinitionDashboardRequestPayload | IExportDefinitionVisualizationObjectRequestPayload;
13
- export declare const convertVisualExportRequest: (exportRequest: AutomationAutomationVisualExport, enableAutomationFilterContext: boolean) => IExportDefinitionDashboardRequestPayload;
13
+ export declare const convertVisualExportRequest: (exportRequest: AutomationAutomationVisualExport) => IExportDefinitionDashboardRequestPayload;
14
14
  export declare const convertToRawExportRequest: (exportRequest: JsonApiWorkspaceAutomationOutAttributesRawExportsInner) => IExportDefinitionVisualizationObjectRequestPayload;
15
15
  export declare const convertImageExportRequest: (exportRequest: AutomationAutomationImageExport) => IExportDefinitionVisualizationObjectRequestPayload;
16
16
  export declare const convertSlidesExportRequest: (exportRequest: AutomationAutomationSlidesExport) => IExportDefinitionDashboardRequestPayload | IExportDefinitionVisualizationObjectRequestPayload;
17
17
  export declare const convertTabularExportRequest: (exportRequest: AutomationAutomationTabularExport) => IExportDefinitionVisualizationObjectRequestPayload;
18
- export declare const convertExportDefinitionMdObject: (exportDefinitionOut: JsonApiExportDefinitionOutWithLinks, included: JsonApiExportDefinitionOutIncludes[] | undefined, enableAutomationFilterContext: boolean) => IExportDefinitionMetadataObject;
19
- export declare const convertInlineExportDefinitionMdObject: (exportDefinitionOut: AutomationAutomationTabularExport | AutomationAutomationVisualExport, enableAutomationFilterContext: boolean) => IExportDefinitionMetadataObject;
18
+ export declare const convertExportDefinitionMdObject: (exportDefinitionOut: JsonApiExportDefinitionOutWithLinks, included?: JsonApiExportDefinitionOutIncludes[]) => IExportDefinitionMetadataObject;
19
+ export declare const convertInlineExportDefinitionMdObject: (exportDefinitionOut: AutomationAutomationTabularExport | AutomationAutomationVisualExport) => IExportDefinitionMetadataObject;
20
20
  export {};
@@ -80,13 +80,13 @@ export const convertDashboardTabularExportRequest = (exportRequest) => {
80
80
  },
81
81
  };
82
82
  };
83
- export const convertVisualExportRequest = (exportRequest, enableAutomationFilterContext) => {
83
+ export const convertVisualExportRequest = (exportRequest) => {
84
84
  const { requestPayload: { fileName, dashboardId, metadata: metadataObj }, } = exportRequest;
85
85
  const metadata = metadataObj;
86
86
  const filters = convertTigerToSdkFilters(metadata?.filters);
87
87
  const filtersObj = metadata?.filters ? { filters } : {};
88
88
  // Convert filtersByTab from metadata
89
- const filtersByTab = enableAutomationFilterContext && metadata?.filtersByTab
89
+ const filtersByTab = metadata?.filtersByTab
90
90
  ? Object.entries(metadata.filtersByTab).reduce((acc, [tabId, tabFilters]) => {
91
91
  acc[tabId] = convertTigerToSdkFilters(tabFilters) ?? [];
92
92
  return acc;
@@ -196,11 +196,11 @@ export const convertTabularExportRequest = (exportRequest) => {
196
196
  },
197
197
  };
198
198
  };
199
- export const convertExportDefinitionMdObject = (exportDefinitionOut, included = [], enableAutomationFilterContext) => {
199
+ export const convertExportDefinitionMdObject = (exportDefinitionOut, included = []) => {
200
200
  const { id, attributes, links, relationships = {} } = exportDefinitionOut;
201
201
  const { createdBy, modifiedBy } = relationships;
202
202
  const { title = "", description = "", tags = [], requestPayload, createdAt, modifiedAt, } = attributes ?? {};
203
- const request = convertExportDefinitionRequestPayload(requestPayload, enableAutomationFilterContext);
203
+ const request = convertExportDefinitionRequestPayload(requestPayload);
204
204
  return {
205
205
  type: "exportDefinition",
206
206
  id,
@@ -219,9 +219,9 @@ export const convertExportDefinitionMdObject = (exportDefinitionOut, included =
219
219
  unlisted: false,
220
220
  };
221
221
  };
222
- export const convertInlineExportDefinitionMdObject = (exportDefinitionOut, enableAutomationFilterContext) => {
222
+ export const convertInlineExportDefinitionMdObject = (exportDefinitionOut) => {
223
223
  const id = uuid();
224
- const request = convertExportDefinitionRequestPayload(exportDefinitionOut.requestPayload, enableAutomationFilterContext);
224
+ const request = convertExportDefinitionRequestPayload(exportDefinitionOut.requestPayload);
225
225
  const metadata = exportDefinitionOut.requestPayload.metadata;
226
226
  return {
227
227
  type: "exportDefinition",
@@ -237,7 +237,7 @@ export const convertInlineExportDefinitionMdObject = (exportDefinitionOut, enabl
237
237
  unlisted: false,
238
238
  };
239
239
  };
240
- const convertExportDefinitionRequestPayload = (exportRequest, enableAutomationFilterContext) => {
240
+ const convertExportDefinitionRequestPayload = (exportRequest) => {
241
241
  if (isTabularRequest(exportRequest)) {
242
242
  const { widget } = exportRequest.metadata ?? {};
243
243
  const filters = exportRequest.visualizationObjectCustomFilters;
@@ -270,7 +270,7 @@ const convertExportDefinitionRequestPayload = (exportRequest, enableAutomationFi
270
270
  const filters = convertTigerToSdkFilters(metadata?.filters);
271
271
  const filtersObj = filters ? { filters } : {};
272
272
  // Convert filtersByTab from metadata
273
- const filtersByTab = enableAutomationFilterContext && metadata?.filtersByTab
273
+ const filtersByTab = metadata?.filtersByTab
274
274
  ? Object.entries(metadata.filtersByTab).reduce((acc, [tabId, tabFilters]) => {
275
275
  acc[tabId] = convertTigerToSdkFilters(tabFilters) ?? [];
276
276
  return acc;
@@ -1,2 +1,2 @@
1
1
  import { type IExportMetadata } from "../../types/index.js";
2
- export declare const convertExportMetadata: (exportMetadata: any, enableAutomationFilterContext: boolean) => Partial<IExportMetadata> | null;
2
+ export declare const convertExportMetadata: (exportMetadata: any) => Partial<IExportMetadata> | null;
@@ -1,17 +1,15 @@
1
1
  // (C) 2023-2026 GoodData Corporation
2
2
  import { isFilterContextItem } from "@gooddata/sdk-model";
3
3
  import { convertTigerToSdkFilters } from "../shared/storedFilterConverter.js";
4
- export const convertExportMetadata = (exportMetadata, enableAutomationFilterContext) => {
4
+ export const convertExportMetadata = (exportMetadata) => {
5
5
  // Filters, or empty filters === override default filters
6
6
  return {
7
7
  ...(exportMetadata?.filters
8
8
  ? {
9
- filters: enableAutomationFilterContext
10
- ? convertTigerToSdkFilters(exportMetadata.filters)
11
- : exportMetadata.filters,
9
+ filters: convertTigerToSdkFilters(exportMetadata.filters)?.filter(isFilterContextItem) ?? [],
12
10
  }
13
11
  : {}),
14
- ...(exportMetadata?.filtersByTab && enableAutomationFilterContext
12
+ ...(exportMetadata?.filtersByTab
15
13
  ? {
16
14
  filtersByTab: Object.keys(exportMetadata?.filtersByTab).reduce((acc, tabId) => {
17
15
  acc[tabId] =
@@ -1,8 +1,8 @@
1
- // (C) 2024-2025 GoodData Corporation
1
+ // (C) 2024-2026 GoodData Corporation
2
2
  import { invariant } from "ts-invariant";
3
3
  import { AnalyticalDashboardModelV2, } from "@gooddata/api-client-tiger";
4
4
  import { idRef } from "@gooddata/sdk-model";
5
- import { convertFilterViewContextFilters } from "./analyticalDashboards/v2/AnalyticalDashboardConverter.js";
5
+ import { convertDashboardParameter, convertFilterViewContextFilters, } from "./analyticalDashboards/v2/AnalyticalDashboardConverter.js";
6
6
  /**
7
7
  * Convert filter view from API response.
8
8
  * The method expects that API call was made with "include=[user,analyticalDashboard,filterContext]
@@ -30,5 +30,8 @@ export function convertFilterView(data, included = []) {
30
30
  },
31
31
  isDefault: isDefault ?? false,
32
32
  tabLocalIdentifier: content.tabLocalIdentifier,
33
+ ...(content.parameters === undefined
34
+ ? {}
35
+ : { parameters: content.parameters.map(convertDashboardParameter) }),
33
36
  };
34
37
  }
@@ -1,6 +1,6 @@
1
1
  // (C) 2020-2026 GoodData Corporation
2
2
  import { invariant } from "ts-invariant";
3
- import { AnalyticalDashboardModelV1, AnalyticalDashboardModelV2, } from "@gooddata/api-client-tiger";
3
+ import { AnalyticalDashboardModelV1, AnalyticalDashboardModelV2, AnalyticalDashboardModelV3, } from "@gooddata/api-client-tiger";
4
4
  import { idRef, } from "@gooddata/sdk-model";
5
5
  import { convertCertificationFromBackend } from "../CertificationConverter.js";
6
6
  import { cloneWithSanitizedIdsTyped } from "../IdSanitization.js";
@@ -17,7 +17,8 @@ export const convertAnalyticalDashboard = (analyticalDashboard, included) => {
17
17
  const isPrivate = meta?.accessInfo?.private ?? false;
18
18
  // Use type guard for safer access to dashboard content
19
19
  const content = attributes?.content;
20
- const tabs = AnalyticalDashboardModelV2.isAnalyticalDashboard(content)
20
+ const tabs = AnalyticalDashboardModelV2.isAnalyticalDashboard(content) ||
21
+ AnalyticalDashboardModelV3.isAnalyticalDashboard(content)
21
22
  ? cloneWithSanitizedIdsTyped(content.tabs ?? [])
22
23
  : [];
23
24
  // NOTE: `summary` is present on the backend response, but may not be reflected in older generated API typings.
@@ -53,7 +54,14 @@ export function convertDashboard(analyticalDashboard, filterContext) {
53
54
  if (AnalyticalDashboardModelV1.isAnalyticalDashboard(content)) {
54
55
  return convertDashboardV1(analyticalDashboard, filterContext);
55
56
  }
56
- if (AnalyticalDashboardModelV2.isAnalyticalDashboard(content)) {
57
+ // V3 is a strict subset of V2 (tabs-only, no root content). It is routed through the V2
58
+ // fromBackend converter, which synthesizes root-level layout / filter configs from tabs[0]
59
+ // when the wire payload omits them. This is intentional: the in-memory `IDashboard` model
60
+ // still exposes root fields, so V3 documents present the same shape as legacy V2 documents
61
+ // to model consumers. The V3 distinction is re-applied on write — `convertAnalyticalDashboard`
62
+ // (toBackend) strips the root fields when `enableAnalyticalDashboardVersion3` is on.
63
+ if (AnalyticalDashboardModelV2.isAnalyticalDashboard(content) ||
64
+ AnalyticalDashboardModelV3.isAnalyticalDashboard(content)) {
57
65
  return convertDashboardV2(analyticalDashboard, filterContext);
58
66
  }
59
67
  invariant(false, "Unknown analytical dashboard version");
@@ -1,5 +1,6 @@
1
- import { type AnalyticalDashboardModelV2, type JsonApiAnalyticalDashboardOutDocument, type JsonApiAnalyticalDashboardOutIncludes, type JsonApiDashboardPluginOutDocument, type JsonApiDashboardPluginOutWithLinks, type JsonApiFilterContextOutDocument } from "@gooddata/api-client-tiger";
2
- import { type FilterContextItem, type IDashboard, type IDashboardLayout, type IDashboardPlugin, type IDashboardWidget, type IFilterContext } from "@gooddata/sdk-model";
1
+ import { type AnalyticalDashboardModelV2, type ITigerDashboardParameter, type JsonApiAnalyticalDashboardOutDocument, type JsonApiAnalyticalDashboardOutIncludes, type JsonApiDashboardPluginOutDocument, type JsonApiDashboardPluginOutWithLinks, type JsonApiFilterContextOutDocument } from "@gooddata/api-client-tiger";
2
+ import { type FilterContextItem, type IDashboard, type IDashboardLayout, type IDashboardParameter, type IDashboardPlugin, type IDashboardWidget, type IFilterContext } from "@gooddata/sdk-model";
3
+ export declare function convertDashboardParameter(parameter: ITigerDashboardParameter): IDashboardParameter;
3
4
  /**
4
5
  * Converts Tiger-specific analytical dashboard to platform-agnostic dashboard.
5
6
  *
@@ -56,7 +56,7 @@ function setWidgetRefsInLayout(layout) {
56
56
  });
57
57
  }, layout);
58
58
  }
59
- function convertDashboardParameter(parameter) {
59
+ export function convertDashboardParameter(parameter) {
60
60
  return {
61
61
  ref: cloneWithSanitizedIds(parameter.ref),
62
62
  parameterType: parameter.parameterType,
@@ -1,5 +1,5 @@
1
- import { type AiConversationItemResponse, type AiConversationResponse, type AiConversationResponseList } from "@gooddata/api-client-tiger";
2
- import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatSuggestionsItem } from "@gooddata/sdk-backend-spi";
1
+ import { type AiConversationItemResponse, type AiConversationResponse, type AiConversationResponseList, type AiSuggestions } from "@gooddata/api-client-tiger";
2
+ import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatSuggestions } from "@gooddata/sdk-backend-spi";
3
3
  import type { FormattingLocale } from "./dateFormatting/defaultDateFormatter.js";
4
4
  import { type DateNormalizer } from "./dateFormatting/types.js";
5
5
  export declare function convertChatConversationFromBackend(conversation: AiConversationResponse): IChatConversation;
@@ -9,17 +9,4 @@ export declare function convertChatConversationErrorFromBackend(item: Partial<{
9
9
  detail: string;
10
10
  reason: string;
11
11
  }>, traceId?: string): IChatConversationError;
12
- /**
13
- * Represents AI-generated suggestions, which may include a follow-up question
14
- * and a list of actions with associated labels and queries.
15
- *
16
- * TODO: This is mock types, must be loaded from openapi when will be ready
17
- */
18
- export type AiSuggestions = {
19
- followUpQuestion?: string;
20
- actions?: {
21
- label: string;
22
- query: string;
23
- }[];
24
- };
25
- export declare function convertChatSuggestionItemFromBackend(item: AiSuggestions | undefined): IChatSuggestionsItem;
12
+ export declare function convertChatSuggestionItemFromBackend(item: AiSuggestions | null | undefined): IChatSuggestions;
@@ -90,6 +90,7 @@ function convertChatConversationContentFromBackend(content, dateNormalizer, loca
90
90
  throw new Error(`Unexpected part: ${JSON.stringify(part)}`);
91
91
  }
92
92
  }),
93
+ suggestions: convertChatSuggestionItemFromBackend(content.suggestions),
93
94
  };
94
95
  case "toolCall":
95
96
  return {
@@ -192,8 +193,7 @@ function convertSearchRelationships(relationships) {
192
193
  }
193
194
  export function convertChatSuggestionItemFromBackend(item) {
194
195
  return {
195
- type: "suggestions",
196
- followUp: item?.followUpQuestion,
196
+ followUpQuestion: item?.followUpQuestion,
197
197
  actions: item?.actions?.map((action) => ({
198
198
  label: action.label,
199
199
  query: action.query,
@@ -1,6 +1,6 @@
1
- import { type AnalyticalDashboardModelV2 } from "@gooddata/api-client-tiger";
1
+ import { type AnalyticalDashboardModelV2, type AnalyticalDashboardModelV3 } from "@gooddata/api-client-tiger";
2
2
  import { type LayoutPath } from "@gooddata/sdk-backend-spi";
3
- import { type IDashboardDefinition, type IDashboardLayout, type IDashboardPluginDefinition, type IDashboardPluginLink, type IFilterContextDefinition, type ObjRef } from "@gooddata/sdk-model";
3
+ import { type IDashboardDefinition, type IDashboardLayout, type IDashboardParameter, type IDashboardPluginDefinition, type IDashboardPluginLink, type IFilterContextDefinition, type ObjRef } from "@gooddata/sdk-model";
4
4
  /**
5
5
  * Converts platform-agnostic dashboard definition to Tiger-specific analytical dashboard.
6
6
  *
@@ -8,9 +8,13 @@ import { type IDashboardDefinition, type IDashboardLayout, type IDashboardPlugin
8
8
  * @param filterContextRef - Optional filter context reference
9
9
  * @param useWidgetLocalIdentifiers - Whether to preserve widget local identifiers
10
10
  * @param enableDashboardSectionHeadersDateDataSet - Whether to include section headers date data set
11
- * @returns Tiger analytical dashboard (uses ITigerDashboardLayout, ITigerDashboardTab, etc.)
11
+ * @param enableAnalyticalDashboardVersion3 - When true and the dashboard has tabs, produce a V3 analytical
12
+ * dashboard: tabs-only, no root-level layout / filter configs / parameters. V3 cannot be read
13
+ * by SDK versions that only know V2 root-level properties. Opt-in.
14
+ * @returns Tiger analytical dashboard (V2 by default, V3 when the flag is on and tabs are present).
12
15
  */
13
- export declare function convertAnalyticalDashboard(dashboard: IDashboardDefinition, filterContextRef?: ObjRef, useWidgetLocalIdentifiers?: boolean, enableDashboardSectionHeadersDateDataSet?: boolean): AnalyticalDashboardModelV2.IAnalyticalDashboard;
16
+ export declare function convertAnalyticalDashboard(dashboard: IDashboardDefinition, filterContextRef?: ObjRef, useWidgetLocalIdentifiers?: boolean, enableDashboardSectionHeadersDateDataSet?: boolean, enableAnalyticalDashboardVersion3?: false): AnalyticalDashboardModelV2.IAnalyticalDashboard;
17
+ export declare function convertAnalyticalDashboard(dashboard: IDashboardDefinition, filterContextRef?: ObjRef, useWidgetLocalIdentifiers?: boolean, enableDashboardSectionHeadersDateDataSet?: boolean, enableAnalyticalDashboardVersion3?: boolean): AnalyticalDashboardModelV2.IAnalyticalDashboard | AnalyticalDashboardModelV3.IAnalyticalDashboard;
14
18
  /**
15
19
  * Converts platform-agnostic filter context to Tiger-specific filter context.
16
20
  *
@@ -19,7 +23,7 @@ export declare function convertAnalyticalDashboard(dashboard: IDashboardDefiniti
19
23
  * @returns Tiger filter context (uses ITigerFilterContextItem[])
20
24
  */
21
25
  export declare function convertFilterContextToBackend(filterContext: IFilterContextDefinition, useDateFilterLocalIdentifiers?: boolean): AnalyticalDashboardModelV2.IFilterContext;
22
- export declare function convertFilterViewContextToBackend(filterContext: IFilterContextDefinition, useDateFilterLocalIdentifiers?: boolean, tabLocalIdentifier?: string): AnalyticalDashboardModelV2.IFilterContextWithTab;
26
+ export declare function convertFilterViewContextToBackend(filterContext: IFilterContextDefinition, useDateFilterLocalIdentifiers?: boolean, tabLocalIdentifier?: string, parameters?: IDashboardParameter[]): AnalyticalDashboardModelV2.IFilterContextWithTab;
23
27
  export declare function convertDashboardPluginToBackend(plugin: IDashboardPluginDefinition): AnalyticalDashboardModelV2.IDashboardPlugin;
24
28
  export declare function convertDashboardPluginLinkToBackend(pluginLink: IDashboardPluginLink): AnalyticalDashboardModelV2.IDashboardPluginLink;
25
29
  export declare function getDrillToCustomUrlPaths(layout: IDashboardLayout): LayoutPath[];
@@ -76,27 +76,36 @@ function convertDashboardTabToBackend(tab, filterContextRef, useWidgetLocalIdent
76
76
  parameters: tab.parameters?.map(convertDashboardParameterToBackend),
77
77
  };
78
78
  }
79
- /**
80
- * Converts platform-agnostic dashboard definition to Tiger-specific analytical dashboard.
81
- *
82
- * @param dashboard - Platform-agnostic dashboard definition (uses IDashboardLayout, IDashboardTab, etc.)
83
- * @param filterContextRef - Optional filter context reference
84
- * @param useWidgetLocalIdentifiers - Whether to preserve widget local identifiers
85
- * @param enableDashboardSectionHeadersDateDataSet - Whether to include section headers date data set
86
- * @returns Tiger analytical dashboard (uses ITigerDashboardLayout, ITigerDashboardTab, etc.)
87
- */
88
- export function convertAnalyticalDashboard(dashboard, filterContextRef, useWidgetLocalIdentifiers, enableDashboardSectionHeadersDateDataSet) {
89
- // For backward compatibility, if dashboard has tabs, fill root-level properties
90
- // with active/first tab's content so older SDK versions can still read the dashboard
79
+ export function convertAnalyticalDashboard(dashboard, filterContextRef, useWidgetLocalIdentifiers, enableDashboardSectionHeadersDateDataSet, enableAnalyticalDashboardVersion3) {
80
+ const hasTabs = Boolean(dashboard.tabs && dashboard.tabs.length > 0);
81
+ const emitV3 = Boolean(enableAnalyticalDashboardVersion3 && hasTabs);
82
+ const convertedTabs = dashboard.tabs?.map((tab) => convertDashboardTabToBackend(tab, tab.filterContext?.ref, useWidgetLocalIdentifiers));
83
+ if (emitV3) {
84
+ const v3 = {
85
+ version: "3",
86
+ tabs: convertedTabs,
87
+ plugins: dashboard.plugins?.map(convertDashboardPluginLinkToBackend),
88
+ disableCrossFiltering: dashboard.disableCrossFiltering,
89
+ disableUserFilterReset: dashboard.disableUserFilterReset,
90
+ disableUserFilterSave: dashboard.disableUserFilterSave,
91
+ disableFilterViews: dashboard.disableFilterViews,
92
+ evaluationFrequency: dashboard.evaluationFrequency,
93
+ };
94
+ if (enableDashboardSectionHeadersDateDataSet) {
95
+ v3.sectionHeadersDateDataSet = cloneWithSanitizedIds(dashboard.sectionHeadersDateDataSet);
96
+ }
97
+ return v3;
98
+ }
99
+ // V2 path. For backward compatibility, when tabs are present, mirror tabs[0]'s content
100
+ // into root-level properties so older SDK versions can still read the dashboard.
91
101
  let effectiveLayout = dashboard.layout;
92
102
  let effectiveDateFilterConfig = dashboard.dateFilterConfig;
93
103
  let effectiveDateFilterConfigs = dashboard.dateFilterConfigs;
94
104
  let effectiveAttributeFilterConfigs = dashboard.attributeFilterConfigs;
95
105
  let effectiveMeasureValueFilterConfigs = dashboard.measureValueFilterConfigs;
96
106
  let effectiveParameters = dashboard.parameters;
97
- if (dashboard.tabs && dashboard.tabs.length > 0) {
107
+ if (hasTabs) {
98
108
  const effectiveTab = dashboard.tabs[0];
99
- // Use tab's properties for root-level (backward compatibility)
100
109
  effectiveLayout = effectiveTab.layout;
101
110
  effectiveDateFilterConfig = effectiveTab.dateFilterConfig;
102
111
  effectiveDateFilterConfigs = effectiveTab.dateFilterConfigs;
@@ -119,7 +128,7 @@ export function convertAnalyticalDashboard(dashboard, filterContextRef, useWidge
119
128
  disableUserFilterSave: dashboard.disableUserFilterSave,
120
129
  disableFilterViews: dashboard.disableFilterViews,
121
130
  evaluationFrequency: dashboard.evaluationFrequency,
122
- tabs: dashboard.tabs?.map((tab) => convertDashboardTabToBackend(tab, tab.filterContext?.ref, useWidgetLocalIdentifiers)),
131
+ tabs: convertedTabs,
123
132
  version: "2",
124
133
  };
125
134
  if (enableDashboardSectionHeadersDateDataSet) {
@@ -143,11 +152,14 @@ export function convertFilterContextToBackend(filterContext, useDateFilterLocalI
143
152
  version: "2",
144
153
  };
145
154
  }
146
- export function convertFilterViewContextToBackend(filterContext, useDateFilterLocalIdentifiers, tabLocalIdentifier) {
155
+ export function convertFilterViewContextToBackend(filterContext, useDateFilterLocalIdentifiers, tabLocalIdentifier, parameters) {
147
156
  const updatedFilterContext = convertFilterContextToBackend(filterContext, useDateFilterLocalIdentifiers);
148
157
  return {
149
158
  ...updatedFilterContext,
150
159
  tabLocalIdentifier,
160
+ ...(parameters === undefined
161
+ ? {}
162
+ : { parameters: parameters.map(convertDashboardParameterToBackend) }),
151
163
  };
152
164
  }
153
165
  export function convertDashboardPluginToBackend(plugin) {
@@ -1,4 +1,4 @@
1
1
  import { type JsonApiAutomationIn } from "@gooddata/api-client-tiger";
2
2
  import { type IRawExportCustomOverrides } from "@gooddata/sdk-backend-spi";
3
3
  import { type IAutomationMetadataObject, type IAutomationMetadataObjectDefinition, type IExecutionDefinition } from "@gooddata/sdk-model";
4
- export declare function convertAutomation(automation: IAutomationMetadataObject | IAutomationMetadataObjectDefinition, enableAutomationFilterContext: boolean, enableNewScheduledExport: boolean, widgetExecution?: IExecutionDefinition, overrides?: IRawExportCustomOverrides): JsonApiAutomationIn;
4
+ export declare function convertAutomation(automation: IAutomationMetadataObject | IAutomationMetadataObjectDefinition, enableNewScheduledExport: boolean, widgetExecution?: IExecutionDefinition, overrides?: IRawExportCustomOverrides): JsonApiAutomationIn;
@@ -8,7 +8,7 @@ import { convertAttribute } from "./afm/AttributeConverter.js";
8
8
  import { convertMeasure } from "./afm/MeasureConverter.js";
9
9
  import { convertExportDefinitionRequestPayload, convertToDashboardTabularExportRequest, convertToImageExportRequest, convertToRawExportRequest, convertToSlidesExportRequest, convertToTabularExportRequest, convertToVisualExportRequest, convertVisualizationToDashboardTabularExportRequest, } from "./ExportDefinitionsConverter.js";
10
10
  import { toDateDataSetQualifier } from "./ObjRefConverter.js";
11
- export function convertAutomation(automation, enableAutomationFilterContext, enableNewScheduledExport, widgetExecution, overrides) {
11
+ export function convertAutomation(automation, enableNewScheduledExport, widgetExecution, overrides) {
12
12
  const { id, type, description, schedule, evaluationMode, alert, tags, title, recipients, details, notificationChannel, dashboard, metadata, exportDefinitions, } = automation;
13
13
  const relationships = omitBy({
14
14
  recipients: recipients?.length
@@ -33,7 +33,7 @@ export function convertAutomation(automation, enableAutomationFilterContext, ena
33
33
  const evaluationModeObj = evaluationMode ? { evaluationMode } : {};
34
34
  const alertObj = alert
35
35
  ? {
36
- alert: convertAlert(alert, enableAutomationFilterContext),
36
+ alert: convertAlert(alert),
37
37
  }
38
38
  : {};
39
39
  const state = alert ? alert.trigger.state : undefined;
@@ -45,12 +45,12 @@ export function convertAutomation(automation, enableAutomationFilterContext, ena
45
45
  const tabularExportsOld = exportDefinitions
46
46
  ?.filter((ed) => isExportDefinitionVisualizationObjectRequestPayload(ed.requestPayload))
47
47
  .map((ed) => ({
48
- requestPayload: convertExportDefinitionRequestPayload(ed.requestPayload, enableAutomationFilterContext, ed.title),
48
+ requestPayload: convertExportDefinitionRequestPayload(ed.requestPayload, ed.title),
49
49
  }));
50
50
  const visualExportsOld = exportDefinitions
51
51
  ?.filter((ed) => isExportDefinitionDashboardRequestPayload(ed.requestPayload))
52
52
  .map((ed) => ({
53
- requestPayload: convertExportDefinitionRequestPayload(ed.requestPayload, enableAutomationFilterContext, ed.title),
53
+ requestPayload: convertExportDefinitionRequestPayload(ed.requestPayload, ed.title),
54
54
  }));
55
55
  const { tabularExports, visualExports, imageExports, slidesExports, dashboardTabularExports, rawExports, } = (exportDefinitions ?? []).reduce((acc, ed) => {
56
56
  switch (ed.requestPayload.format) {
@@ -182,9 +182,9 @@ export function convertAutomation(automation, enableAutomationFilterContext, ena
182
182
  : {}),
183
183
  };
184
184
  }
185
- const convertAlert = (alert, enableAutomationFilterContext) => {
185
+ const convertAlert = (alert) => {
186
186
  const { condition, execution } = alert;
187
- const { filters: convertedFilters } = convertAfmFilters(execution.measures, execution.filters, enableAutomationFilterContext);
187
+ const { filters: convertedFilters } = convertAfmFilters(execution.measures, execution.filters, true);
188
188
  const base = {
189
189
  execution: {
190
190
  filters: convertedFilters,
@@ -1,7 +1,7 @@
1
1
  import { type AutomationRawExportAutomationRequest, type DashboardTabularExportRequestV2, type ImageExportRequest, type JsonApiExportDefinitionInDocument, type JsonApiExportDefinitionPostOptionalIdDocument, type SlidesExportRequest, type TabularExportRequest, type VisualExportRequest } from "@gooddata/api-client-tiger";
2
2
  import { type IRawExportCustomOverrides } from "@gooddata/sdk-backend-spi";
3
3
  import { type IExecutionDefinition, type IExportDefinitionDashboardRequestPayload, type IExportDefinitionMetadataObjectDefinition, type IExportDefinitionRequestPayload, type IExportDefinitionVisualizationObjectRequestPayload } from "@gooddata/sdk-model";
4
- export declare const convertExportDefinitionMdObjectDefinition: (exportDefinition: IExportDefinitionMetadataObjectDefinition, enableAutomationFilterContext: boolean) => JsonApiExportDefinitionPostOptionalIdDocument;
4
+ export declare const convertExportDefinitionMdObjectDefinition: (exportDefinition: IExportDefinitionMetadataObjectDefinition) => JsonApiExportDefinitionPostOptionalIdDocument;
5
5
  export declare const convertToRawExportRequest: (exportRequest: IExportDefinitionVisualizationObjectRequestPayload, widgetExecution?: IExecutionDefinition | undefined, overrides?: IRawExportCustomOverrides | undefined) => AutomationRawExportAutomationRequest;
6
6
  export declare const convertToImageExportRequest: (exportRequest: IExportDefinitionVisualizationObjectRequestPayload, title?: string | undefined) => ImageExportRequest;
7
7
  export declare const convertToSlidesExportRequest: (exportRequest: IExportDefinitionRequestPayload, title?: string | undefined) => SlidesExportRequest;
@@ -9,5 +9,5 @@ export declare const convertToVisualExportRequest: (exportRequest: IExportDefini
9
9
  export declare const convertToDashboardTabularExportRequest: (exportRequest: IExportDefinitionDashboardRequestPayload) => DashboardTabularExportRequestV2;
10
10
  export declare const convertToTabularExportRequest: (exportRequest: IExportDefinitionRequestPayload, title?: string | undefined) => TabularExportRequest;
11
11
  export declare const convertVisualizationToDashboardTabularExportRequest: (exportRequest: IExportDefinitionVisualizationObjectRequestPayload) => DashboardTabularExportRequestV2;
12
- export declare const convertExportDefinitionRequestPayload: (exportRequest: IExportDefinitionRequestPayload, enableAutomationFilterContext: boolean, title?: string | undefined) => TabularExportRequest | VisualExportRequest;
13
- export declare const convertExportDefinitionMdObject: (exportDefinition: IExportDefinitionMetadataObjectDefinition, identifier: string, enableAutomationFilterContext: boolean) => JsonApiExportDefinitionInDocument;
12
+ export declare const convertExportDefinitionRequestPayload: (exportRequest: IExportDefinitionRequestPayload, title?: string | undefined) => TabularExportRequest | VisualExportRequest;
13
+ export declare const convertExportDefinitionMdObject: (exportDefinition: IExportDefinitionMetadataObjectDefinition, identifier: string) => JsonApiExportDefinitionInDocument;
@@ -7,7 +7,7 @@ import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js";
7
7
  import { convertAfmFilters } from "./afm/AfmFiltersConverter.js";
8
8
  import { convertAttribute } from "./afm/AttributeConverter.js";
9
9
  import { convertMeasure } from "./afm/MeasureConverter.js";
10
- export const convertExportDefinitionMdObjectDefinition = (exportDefinition, enableAutomationFilterContext) => {
10
+ export const convertExportDefinitionMdObjectDefinition = (exportDefinition) => {
11
11
  const { title, description, tags, requestPayload } = exportDefinition;
12
12
  return {
13
13
  data: {
@@ -16,7 +16,7 @@ export const convertExportDefinitionMdObjectDefinition = (exportDefinition, enab
16
16
  title,
17
17
  description,
18
18
  tags,
19
- requestPayload: convertExportDefinitionRequestPayload(requestPayload, enableAutomationFilterContext, title),
19
+ requestPayload: convertExportDefinitionRequestPayload(requestPayload, title),
20
20
  },
21
21
  },
22
22
  };
@@ -278,7 +278,7 @@ export const convertVisualizationToDashboardTabularExportRequest = (exportReques
278
278
  settings,
279
279
  };
280
280
  };
281
- export const convertExportDefinitionRequestPayload = (exportRequest, enableAutomationFilterContext, title) => {
281
+ export const convertExportDefinitionRequestPayload = (exportRequest, title) => {
282
282
  if (isExportDefinitionDashboardRequestPayload(exportRequest)) {
283
283
  const { filters, filtersByTab, dashboard } = exportRequest.content;
284
284
  // Convert filtersByTab to API format
@@ -295,9 +295,7 @@ export const convertExportDefinitionRequestPayload = (exportRequest, enableAutom
295
295
  metadata: {
296
296
  ...(filters
297
297
  ? {
298
- filters: enableAutomationFilterContext
299
- ? convertSdkFiltersToTiger(filters)
300
- : filters,
298
+ filters: convertSdkFiltersToTiger(filters),
301
299
  }
302
300
  : {}),
303
301
  ...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
@@ -333,8 +331,8 @@ export const convertExportDefinitionRequestPayload = (exportRequest, enableAutom
333
331
  },
334
332
  };
335
333
  };
336
- export const convertExportDefinitionMdObject = (exportDefinition, identifier, enableAutomationFilterContext) => {
337
- const postDefinition = convertExportDefinitionMdObjectDefinition(exportDefinition, enableAutomationFilterContext);
334
+ export const convertExportDefinitionMdObject = (exportDefinition, identifier) => {
335
+ const postDefinition = convertExportDefinitionMdObjectDefinition(exportDefinition);
338
336
  return {
339
337
  data: {
340
338
  ...postDefinition.data,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-tiger",
3
- "version": "11.36.0-alpha.2",
3
+ "version": "11.36.0-alpha.6",
4
4
  "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -22,7 +22,7 @@
22
22
  "exports": "./esm/index.js",
23
23
  "dependencies": {
24
24
  "@gooddata/emailjs-mime-codec-new": "3.0.2",
25
- "axios": "^1.9.0",
25
+ "axios": "1.13.5",
26
26
  "date-fns": "4.1.0",
27
27
  "date-fns-tz": "^3.2.0",
28
28
  "eventsource-parser": "~3.0.0",
@@ -33,12 +33,12 @@
33
33
  "ts-invariant": "0.10.3",
34
34
  "tslib": "2.8.1",
35
35
  "uuid": "11.1.0",
36
- "@gooddata/sdk-backend-base": "11.36.0-alpha.2",
37
- "@gooddata/sdk-backend-spi": "11.36.0-alpha.2",
38
- "@gooddata/sdk-code-convertors": "11.36.0-alpha.2",
39
- "@gooddata/api-client-tiger": "11.36.0-alpha.2",
40
- "@gooddata/sdk-model": "11.36.0-alpha.2",
41
- "@gooddata/util": "11.36.0-alpha.2"
36
+ "@gooddata/api-client-tiger": "11.36.0-alpha.6",
37
+ "@gooddata/sdk-backend-base": "11.36.0-alpha.6",
38
+ "@gooddata/sdk-code-convertors": "11.36.0-alpha.6",
39
+ "@gooddata/sdk-model": "11.36.0-alpha.6",
40
+ "@gooddata/sdk-backend-spi": "11.36.0-alpha.6",
41
+ "@gooddata/util": "11.36.0-alpha.6"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@gooddata/fixtures": "3.3.12",
@@ -65,10 +65,10 @@
65
65
  "oxlint-tsgolint": "0.11.4",
66
66
  "typescript": "5.9.3",
67
67
  "vitest": "4.1.0",
68
- "@gooddata/oxlint-config": "11.36.0-alpha.2",
69
- "@gooddata/eslint-config": "11.36.0-alpha.2",
70
- "@gooddata/catalog-export": "11.36.0-alpha.2",
71
- "@gooddata/reference-workspace": "11.36.0-alpha.2"
68
+ "@gooddata/eslint-config": "11.36.0-alpha.6",
69
+ "@gooddata/reference-workspace": "11.36.0-alpha.6",
70
+ "@gooddata/catalog-export": "11.36.0-alpha.6",
71
+ "@gooddata/oxlint-config": "11.36.0-alpha.6"
72
72
  },
73
73
  "scripts": {
74
74
  "_phase:build": "npm run build",