diff --git a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml
index a855b277b..a26ccfeef 100644
--- a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml
+++ b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml
@@ -502,10 +502,10 @@ interactions:
type: label
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
- attributes:
areRelationsValid: true
@@ -573,18 +573,18 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: customer_id
type: attribute
- identifier:
id: campaigns
@@ -615,28 +615,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__state
filterColumnDataType: STRING
@@ -1225,18 +1225,18 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: customer_id
type: attribute
- identifier:
id: campaigns
@@ -1267,28 +1267,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__state
filterColumnDataType: STRING
diff --git a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml
index 7a85267e5..86f1bdfcf 100644
--- a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml
+++ b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml
@@ -502,10 +502,10 @@ interactions:
type: label
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
- attributes:
areRelationsValid: true
@@ -573,18 +573,18 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: customer_id
type: attribute
- identifier:
id: campaigns
@@ -615,28 +615,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__state
filterColumnDataType: STRING
@@ -1225,18 +1225,18 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: customer_id
type: attribute
- identifier:
id: campaigns
@@ -1267,28 +1267,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__state
filterColumnDataType: STRING
@@ -3231,10 +3231,10 @@ interactions:
type: label
metrics:
data:
- - id: revenue
- type: metric
- id: amount_of_orders
type: metric
+ - id: revenue
+ type: metric
type: visualizationObject
- attributes:
areRelationsValid: true
diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml
index d3bf7419a..3010c77d7 100644
--- a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml
+++ b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml
@@ -250,10 +250,10 @@ interactions:
type: label
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
included:
- attributes:
diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml
index bdac7da3e..3ff9553e0 100644
--- a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml
+++ b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml
@@ -237,10 +237,10 @@ interactions:
type: label
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
included:
- attributes:
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml
index 757ae2fb8..434507a6a 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml
@@ -76,6 +76,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml
index 47ea0054e..5ce7349c0 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml
@@ -22,14 +22,14 @@ interactions:
id: demo-test-ds
name: demo-test-ds
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
@@ -58,14 +58,14 @@ interactions:
name: demo-test-ds
password: passw0rd
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
@@ -118,14 +118,14 @@ interactions:
id: demo-test-ds
name: demo-test-ds
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml
index 74cd3e0ea..068c17ca2 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml
@@ -22,14 +22,14 @@ interactions:
id: demo-test-ds
name: demo-test-ds
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
@@ -99,14 +99,14 @@ interactions:
name: demo-test-ds
password: passw0rd
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
@@ -159,14 +159,14 @@ interactions:
id: demo-test-ds
name: demo-test-ds
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml
index 6883ccbba..e02f4b527 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml
@@ -398,7 +398,7 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -406,7 +406,8 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -459,15 +460,18 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -488,14 +492,16 @@ interactions:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 204
message: No Content
@@ -548,15 +554,18 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml
index 02dff26f1..f0003069e 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml
@@ -22,14 +22,14 @@ interactions:
id: demo-test-ds
name: demo-test-ds
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
@@ -71,14 +71,14 @@ interactions:
id: demo-test-ds
name: demo-test-ds
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
@@ -143,6 +143,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
@@ -219,6 +220,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml
index 22b303906..de77d202f 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml
@@ -22,14 +22,14 @@ interactions:
id: demo-test-ds
name: demo-test-ds
permissions:
- - assignee:
- id: demo2
- type: user
- name: MANAGE
- assignee:
id: demoGroup
type: userGroup
name: USE
+ - assignee:
+ id: demo2
+ type: user
+ name: MANAGE
schema: demo
type: POSTGRESQL
url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml
index f720f7bdf..6364fd4b2 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml
@@ -47,6 +47,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml
index 180e5390b..f318862da 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml
@@ -47,6 +47,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
@@ -123,6 +124,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml
index 9c3f56a12..80d4f2ac4 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml
@@ -47,6 +47,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
@@ -123,6 +124,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
@@ -178,6 +180,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
@@ -254,6 +257,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
@@ -330,6 +334,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
@@ -385,6 +390,7 @@ interactions:
string:
data:
attributes:
+ allowedOrigins: []
earlyAccess: enableAlerting
earlyAccessValues:
- enableAlerting
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml
index 07ba7d6a2..465fcd7f1 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml
@@ -502,10 +502,10 @@ interactions:
type: label
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
- attributes:
areRelationsValid: true
@@ -573,32 +573,32 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: campaigns
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: campaign_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: campaign_id
type: attribute
- identifier:
- id: campaigns
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: campaign_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: campaign_id
+ id: customer_id
type: attribute
- identifier:
id: date
@@ -615,28 +615,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__region
filterColumnDataType: STRING
@@ -1225,32 +1225,32 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: campaigns
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: campaign_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: campaign_id
type: attribute
- identifier:
- id: campaigns
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: campaign_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: campaign_id
+ id: customer_id
type: attribute
- identifier:
id: date
@@ -1267,28 +1267,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__region
filterColumnDataType: STRING
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml
index 5f51058ff..9efed801d 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml
@@ -502,10 +502,10 @@ interactions:
type: label
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
- attributes:
areRelationsValid: true
@@ -573,32 +573,32 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: campaigns
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: campaign_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: campaign_id
type: attribute
- identifier:
- id: campaigns
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: campaign_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: campaign_id
+ id: customer_id
type: attribute
- identifier:
id: date
@@ -615,28 +615,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__region
filterColumnDataType: STRING
@@ -1225,32 +1225,32 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: campaigns
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: campaign_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: campaign_id
type: attribute
- identifier:
- id: campaigns
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: campaign_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: campaign_id
+ id: customer_id
type: attribute
- identifier:
id: date
@@ -1267,28 +1267,28 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- filterColumn: wdf__region
filterColumnDataType: STRING
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml
index b741fac0f..66c5a9e89 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml
@@ -422,10 +422,10 @@ interactions:
relationships:
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
- attributes:
areRelationsValid: true
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml
index ce15ac550..c8039ce55 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml
@@ -18,286 +18,290 @@ interactions:
string:
graph:
edges:
- - - id: campaign_channel_id
- type: attribute
- - id: campaign_channels
- type: dataset
- - - id: campaign_channels.category
- type: attribute
- - id: campaign_channels
- type: dataset
- - - id: campaign_id
- type: attribute
- - id: campaigns
- type: dataset
- - - id: campaign_name
- type: attribute
- - id: campaigns
- type: dataset
- - - id: customer_id
- type: attribute
+ - - id: amount_of_active_customers
+ type: metric
- id: amount_of_top_customers
type: metric
- - - id: customer_id
- type: attribute
- - id: amount_of_active_customers
+ - - id: amount_of_active_customers
type: metric
- - - id: customer_id
+ - id: customer_id
type: attribute
- - id: percent_revenue_from_top_10_percent_customers
+ - - id: amount_of_active_customers
type: metric
- - - id: customer_id
- type: attribute
- - id: customers
- type: dataset
- - - id: customer_id
+ - id: customers_trend
+ type: visualizationObject
+ - - id: amount_of_active_customers
+ type: metric
+ - id: order_line_id
type: attribute
- - id: revenue_per_customer
+ - - id: amount_of_active_customers
type: metric
- - - id: customer_id
+ - id: percentage_of_customers_by_region
+ type: visualizationObject
+ - - id: amount_of_orders
+ type: metric
+ - id: amount_of_valid_orders
+ type: metric
+ - - id: amount_of_orders
+ type: metric
+ - id: order_id
type: attribute
- - id: percent_revenue_from_top_10_customers
+ - - id: amount_of_orders
type: metric
- - - id: customer_name
+ - id: product_saleability
+ type: visualizationObject
+ - - id: amount_of_orders
+ type: metric
+ - id: revenue_trend
+ type: visualizationObject
+ - - id: amount_of_top_customers
+ type: metric
+ - id: customer_id
type: attribute
- - id: customers
+ - - id: amount_of_top_customers
+ type: metric
+ - id: revenue
+ type: metric
+ - - id: amount_of_valid_orders
+ type: metric
+ - id: order_status
+ type: label
+ - - id: budget
+ type: fact
+ - id: campaign_channels
type: dataset
- - - id: date.day
+ - - id: campaign
+ type: analyticalDashboard
+ - id: campaign_name_filter
+ type: filterContext
+ - - id: campaign
+ type: analyticalDashboard
+ - id: campaign_spend
+ type: visualizationObject
+ - - id: campaign
+ type: analyticalDashboard
+ - id: revenue_per_usd_vs_spend_by_campaign
+ type: visualizationObject
+ - - id: campaign_channel_id
type: attribute
- - id: date
- type: dataset
- - - id: date.month
+ - id: campaign_channel_id
+ type: label
+ - - id: campaign_channel_id
type: attribute
- - id: date
+ - id: campaign_channels
type: dataset
- - - id: date.quarter
- type: attribute
- - id: date
+ - - id: campaign_channels
type: dataset
- - - id: date.week
+ - id: campaign_channels.category
type: attribute
- - id: date
+ - - id: campaign_channels
type: dataset
- - - id: date.year
- type: attribute
- - id: date
+ - id: campaign_channels_per_category
type: dataset
- - - id: date.year
+ - - id: campaign_channels
+ type: dataset
+ - id: campaigns
+ type: dataset
+ - - id: campaign_channels
+ type: dataset
+ - id: spend
+ type: fact
+ - - id: campaign_channels
+ type: dataset
+ - id: type
type: attribute
- - id: product_revenue_comparison-over_previous_period
+ - - id: campaign_channels.category
+ type: attribute
+ - id: campaign_channels.category
+ type: label
+ - - id: campaign_channels.category
+ type: label
+ - id: campaign_spend
type: visualizationObject
- - - id: order_id
+ - - id: campaign_id
type: attribute
- - id: amount_of_orders
- type: metric
- - - id: order_id
+ - id: campaign_id
+ type: label
+ - - id: campaign_id
type: attribute
- - id: order_lines
+ - id: campaigns
type: dataset
- - - id: order_line_id
+ - - id: campaign_name
type: attribute
- - id: amount_of_active_customers
- type: metric
- - - id: order_line_id
+ - id: campaign_name
+ type: label
+ - - id: campaign_name
type: attribute
- - id: order_lines
+ - id: campaigns
+ type: dataset
+ - - id: campaign_name
+ type: label
+ - id: campaign_name_filter
+ type: filterContext
+ - - id: campaign_name
+ type: label
+ - id: campaign_spend
+ type: visualizationObject
+ - - id: campaign_name
+ type: label
+ - id: revenue_per_usd_vs_spend_by_campaign
+ type: visualizationObject
+ - - id: campaign_name_filter
+ type: filterContext
+ - id: dashboard_plugin
+ type: analyticalDashboard
+ - - id: campaign_spend
+ type: metric
+ - id: campaign_spend
+ type: visualizationObject
+ - - id: campaign_spend
+ type: metric
+ - id: revenue_per_dollar_spent
+ type: metric
+ - - id: campaign_spend
+ type: metric
+ - id: revenue_per_usd_vs_spend_by_campaign
+ type: visualizationObject
+ - - id: campaign_spend
+ type: metric
+ - id: spend
+ type: fact
+ - - id: campaign_spend
+ type: visualizationObject
+ - id: type
+ type: label
+ - - id: campaigns
type: dataset
- - - id: order_status
- type: attribute
- id: order_lines
type: dataset
- - - id: product_id
- type: attribute
- - id: percent_revenue_from_top_10_percent_products
- type: metric
- - - id: product_id
+ - - id: customer_id
type: attribute
- - id: percent_revenue_from_top_10_products
- type: metric
- - - id: product_id
+ - id: customer_id
+ type: label
+ - - id: customer_id
type: attribute
- - id: products
+ - id: customers
type: dataset
- - - id: product_id
+ - - id: customer_id
type: attribute
- - id: percent_revenue_per_product
+ - id: percent_revenue_from_top_10_customers
type: metric
- - - id: product_name
- type: attribute
- - id: products
- type: dataset
- - - id: products.category
+ - - id: customer_id
type: attribute
- - id: products
- type: dataset
- - - id: products.category
+ - id: percent_revenue_from_top_10_percent_customers
+ type: metric
+ - - id: customer_id
type: attribute
- - id: percent_revenue_in_category
+ - id: revenue_per_customer
type: metric
- - - id: region
+ - - id: customer_name
type: attribute
- - id: customers
- type: dataset
- - - id: state
+ - id: customer_name
+ type: label
+ - - id: customer_name
type: attribute
- id: customers
type: dataset
- - - id: type
- type: attribute
- - id: campaign_channels
- type: dataset
- - - id: dashboard_plugin_1
- type: dashboardPlugin
- - id: dashboard_plugin
- type: analyticalDashboard
- - - id: campaign_channels
- type: dataset
- - id: campaign_channels_per_category
- type: dataset
- - - id: campaigns
- type: dataset
- - id: campaign_channels
- type: dataset
- - - id: campaigns
+ - - id: customer_name
+ type: label
+ - id: percent_revenue_per_product_by_customer_and_category
+ type: visualizationObject
+ - - id: customer_name
+ type: label
+ - id: revenue_and_quantity_by_product_and_category
+ type: visualizationObject
+ - - id: customer_name
+ type: label
+ - id: top_10_customers
+ type: visualizationObject
+ - - id: customers
type: dataset
- id: order_lines
type: dataset
- - id: customers
type: dataset
- - id: order_lines
- type: dataset
- - - id: date
+ - id: region
+ type: attribute
+ - - id: customers
type: dataset
- - id: customers_trend
+ - id: state
+ type: attribute
+ - - id: customers_trend
type: visualizationObject
- - - id: date
+ - id: date
type: dataset
- - id: revenue_by_category_trend
+ - - id: customers_trend
type: visualizationObject
- - - id: date
- type: dataset
- - id: revenue_trend
+ - id: date.month
+ type: label
+ - - id: customers_trend
type: visualizationObject
- - - id: date
- type: dataset
- id: product_and_category
type: analyticalDashboard
- - - id: date
- type: dataset
- - id: order_lines
- type: dataset
- - - id: date
- type: dataset
- - id: percentage_of_customers_by_region
- type: visualizationObject
- - - id: date
- type: dataset
- - id: product_revenue_comparison-over_previous_period
- type: visualizationObject
- - - id: products
- type: dataset
- - id: order_lines
- type: dataset
- - - id: budget
- type: fact
- - id: campaign_channels
- type: dataset
- - - id: price
- type: fact
- - id: revenue_and_quantity_by_product_and_category
+ - - id: customers_trend
type: visualizationObject
- - - id: price
- type: fact
- - id: order_lines
- type: dataset
- - - id: price
- type: fact
- - id: order_amount
+ - id: revenue_per_customer
type: metric
- - - id: quantity
- type: fact
- - id: revenue_and_quantity_by_product_and_category
+ - - id: dashboard_plugin
+ type: analyticalDashboard
+ - id: dashboard_plugin_1
+ type: dashboardPlugin
+ - - id: dashboard_plugin
+ type: analyticalDashboard
+ - id: top_10_products
type: visualizationObject
- - - id: quantity
- type: fact
- - id: order_lines
+ - - id: date
type: dataset
- - - id: quantity
- type: fact
- - id: order_amount
- type: metric
- - - id: spend
- type: fact
- - id: campaign_spend
- type: metric
- - - id: spend
- type: fact
- - id: campaign_channels
+ - id: date.day
+ type: attribute
+ - - id: date
type: dataset
- - - id: campaign_channel_id
- type: label
- - id: campaign_channel_id
+ - id: date.month
type: attribute
- - - id: campaign_channels.category
- type: label
- - id: campaign_channels.category
+ - - id: date
+ type: dataset
+ - id: date.quarter
type: attribute
- - - id: campaign_channels.category
- type: label
- - id: campaign_spend
- type: visualizationObject
- - - id: campaign_id
- type: label
- - id: campaign_id
+ - - id: date
+ type: dataset
+ - id: date.week
type: attribute
- - - id: campaign_name
- type: label
- - id: campaign_spend
- type: visualizationObject
- - - id: campaign_name
- type: label
- - id: campaign_name_filter
- type: filterContext
- - - id: campaign_name
- type: label
- - id: campaign_name
+ - - id: date
+ type: dataset
+ - id: date.year
type: attribute
- - - id: campaign_name
- type: label
- - id: revenue_per_usd_vs_spend_by_campaign
+ - - id: date
+ type: dataset
+ - id: order_lines
+ type: dataset
+ - - id: date
+ type: dataset
+ - id: percentage_of_customers_by_region
type: visualizationObject
- - - id: customer_id
- type: label
- - id: customer_id
- type: attribute
- - - id: customer_name
- type: label
- - id: revenue_and_quantity_by_product_and_category
+ - - id: date
+ type: dataset
+ - id: product_and_category
+ type: analyticalDashboard
+ - - id: date
+ type: dataset
+ - id: product_revenue_comparison-over_previous_period
type: visualizationObject
- - - id: customer_name
- type: label
- - id: top_10_customers
+ - - id: date
+ type: dataset
+ - id: revenue_by_category_trend
type: visualizationObject
- - - id: customer_name
- type: label
- - id: percent_revenue_per_product_by_customer_and_category
+ - - id: date
+ type: dataset
+ - id: revenue_trend
type: visualizationObject
- - - id: customer_name
- type: label
- - id: customer_name
- type: attribute
- - id: date.day
- type: label
- - id: date.day
type: attribute
- - - id: date.month
+ - id: date.day
type: label
- - id: date.month
- type: attribute
- - id: date.month
+ type: attribute
+ - id: date.month
type: label
- - id: customers_trend
- type: visualizationObject
- - id: date.month
type: label
- id: percentage_of_customers_by_region
@@ -311,401 +315,397 @@ interactions:
- id: revenue_trend
type: visualizationObject
- - id: date.quarter
- type: label
- - id: date.quarter
type: attribute
- - - id: date.week
+ - id: date.quarter
type: label
- - id: date.week
+ - - id: date.week
type: attribute
- - - id: date.year
+ - id: date.week
type: label
+ - - id: date.year
+ type: attribute
- id: date.year
+ type: label
+ - - id: date.year
type: attribute
+ - id: product_revenue_comparison-over_previous_period
+ type: visualizationObject
- - id: geo__state__location
type: label
- id: state
type: attribute
+ - - id: order_amount
+ type: metric
+ - id: price
+ type: fact
+ - - id: order_amount
+ type: metric
+ - id: quantity
+ type: fact
+ - - id: order_amount
+ type: metric
+ - id: revenue
+ type: metric
- - id: order_id
- type: label
+ type: attribute
- id: order_id
+ type: label
+ - - id: order_id
type: attribute
+ - id: order_lines
+ type: dataset
- - id: order_line_id
- type: label
+ type: attribute
- id: order_line_id
+ type: label
+ - - id: order_line_id
+ type: attribute
+ - id: order_lines
+ type: dataset
+ - - id: order_lines
+ type: dataset
+ - id: order_status
type: attribute
+ - - id: order_lines
+ type: dataset
+ - id: price
+ type: fact
+ - - id: order_lines
+ type: dataset
+ - id: products
+ type: dataset
+ - - id: order_lines
+ type: dataset
+ - id: quantity
+ type: fact
- - id: order_status
+ type: attribute
+ - id: order_status
type: label
- - id: amount_of_valid_orders
- type: metric
- - id: order_status
type: label
- - id: order_status
+ - id: revenue
+ type: metric
+ - - id: percent_revenue
+ type: metric
+ - id: revenue
+ type: metric
+ - - id: percent_revenue
+ type: metric
+ - id: total_revenue
+ type: metric
+ - - id: percent_revenue_from_top_10_customers
+ type: metric
+ - id: revenue
+ type: metric
+ - - id: percent_revenue_from_top_10_customers
+ type: metric
+ - id: revenue_top_10
+ type: metric
+ - - id: percent_revenue_from_top_10_percent_customers
+ type: metric
+ - id: revenue
+ type: metric
+ - - id: percent_revenue_from_top_10_percent_customers
+ type: metric
+ - id: revenue_top_10_percent
+ type: metric
+ - - id: percent_revenue_from_top_10_percent_products
+ type: metric
+ - id: product_id
type: attribute
- - - id: order_status
- type: label
+ - - id: percent_revenue_from_top_10_percent_products
+ type: metric
- id: revenue
type: metric
- - - id: product_id
- type: label
+ - - id: percent_revenue_from_top_10_percent_products
+ type: metric
+ - id: revenue_top_10_percent
+ type: metric
+ - - id: percent_revenue_from_top_10_products
+ type: metric
- id: product_id
type: attribute
- - - id: product_name
+ - - id: percent_revenue_from_top_10_products
+ type: metric
+ - id: revenue
+ type: metric
+ - - id: percent_revenue_from_top_10_products
+ type: metric
+ - id: revenue_top_10
+ type: metric
+ - - id: percent_revenue_in_category
+ type: metric
+ - id: products.category
+ type: attribute
+ - - id: percent_revenue_in_category
+ type: metric
+ - id: revenue
+ type: metric
+ - - id: percent_revenue_in_category
+ type: metric
+ - id: revenue_and_quantity_by_product_and_category
+ type: visualizationObject
+ - - id: percent_revenue_per_product
+ type: metric
+ - id: percent_revenue_per_product_by_customer_and_category
+ type: visualizationObject
+ - - id: percent_revenue_per_product
+ type: metric
+ - id: product_id
+ type: attribute
+ - - id: percent_revenue_per_product
+ type: metric
+ - id: revenue
+ type: metric
+ - - id: percent_revenue_per_product_by_customer_and_category
+ type: visualizationObject
+ - id: product_and_category
+ type: analyticalDashboard
+ - - id: percent_revenue_per_product_by_customer_and_category
+ type: visualizationObject
+ - id: product_name
type: label
- - id: product_saleability
+ - - id: percent_revenue_per_product_by_customer_and_category
type: visualizationObject
- - - id: product_name
+ - id: products.category
+ type: label
+ - - id: percent_revenue_per_product_by_customer_and_category
+ type: visualizationObject
+ - id: revenue
+ type: metric
+ - - id: percentage_of_customers_by_region
+ type: visualizationObject
+ - id: region
type: label
+ - - id: price
+ type: fact
- id: revenue_and_quantity_by_product_and_category
type: visualizationObject
- - - id: product_name
+ - - id: product_and_category
+ type: analyticalDashboard
+ - id: product_breakdown
+ type: visualizationObject
+ - - id: product_and_category
+ type: analyticalDashboard
+ - id: product_categories_pie_chart
+ type: visualizationObject
+ - - id: product_and_category
+ type: analyticalDashboard
+ - id: product_saleability
+ type: visualizationObject
+ - - id: product_and_category
+ type: analyticalDashboard
+ - id: region_filter
+ type: filterContext
+ - - id: product_and_category
+ type: analyticalDashboard
+ - id: revenue_trend
+ type: visualizationObject
+ - - id: product_and_category
+ type: analyticalDashboard
+ - id: top_10_products
+ type: visualizationObject
+ - - id: product_breakdown
+ type: visualizationObject
+ - id: product_name
+ type: label
+ - - id: product_breakdown
+ type: visualizationObject
+ - id: products.category
+ type: label
+ - - id: product_breakdown
+ type: visualizationObject
+ - id: revenue
+ type: metric
+ - - id: product_categories_pie_chart
+ type: visualizationObject
+ - id: product_name
+ type: label
+ - - id: product_categories_pie_chart
+ type: visualizationObject
+ - id: products.category
+ type: label
+ - - id: product_categories_pie_chart
+ type: visualizationObject
+ - id: revenue
+ type: metric
+ - - id: product_id
+ type: attribute
+ - id: product_id
type: label
+ - - id: product_id
+ type: attribute
+ - id: products
+ type: dataset
+ - - id: product_name
+ type: attribute
- id: product_name
+ type: label
+ - - id: product_name
type: attribute
+ - id: products
+ type: dataset
- - id: product_name
type: label
- - id: percent_revenue_per_product_by_customer_and_category
+ - id: product_revenue_comparison-over_previous_period
type: visualizationObject
- - id: product_name
type: label
- - id: revenue_by_product
+ - id: product_saleability
type: visualizationObject
- - id: product_name
type: label
- - id: product_breakdown
+ - id: revenue_and_quantity_by_product_and_category
type: visualizationObject
- - id: product_name
type: label
- - id: product_categories_pie_chart
+ - id: revenue_by_product
type: visualizationObject
- - id: product_name
type: label
- id: top_10_products
type: visualizationObject
- - - id: product_name
- type: label
- - id: product_revenue_comparison-over_previous_period
+ - - id: product_revenue_comparison-over_previous_period
type: visualizationObject
- - - id: products.category
+ - id: products.category
type: label
+ - - id: product_revenue_comparison-over_previous_period
+ type: visualizationObject
+ - id: revenue
+ type: metric
+ - - id: product_saleability
+ type: visualizationObject
+ - id: revenue
+ type: metric
+ - - id: products
+ type: dataset
- id: products.category
type: attribute
- - id: products.category
+ type: attribute
+ - id: products.category
type: label
- - id: revenue-outdoor
- type: metric
- - - id: products.category
- type: label
- - id: revenue_and_quantity_by_product_and_category
- type: visualizationObject
- - id: products.category
type: label
- - id: revenue-home
+ - id: revenue-clothing
type: metric
- - id: products.category
type: label
- - id: percent_revenue_per_product_by_customer_and_category
- type: visualizationObject
- - - id: products.category
- type: label
- - id: revenue_by_category_trend
- type: visualizationObject
+ - id: revenue-electronic
+ type: metric
- - id: products.category
type: label
- - id: revenue-electronic
+ - id: revenue-home
type: metric
- - id: products.category
type: label
- - id: revenue-clothing
+ - id: revenue-outdoor
type: metric
- - id: products.category
type: label
- - id: product_breakdown
+ - id: revenue_and_quantity_by_product_and_category
type: visualizationObject
- - id: products.category
type: label
- - id: product_categories_pie_chart
+ - id: revenue_by_category_trend
type: visualizationObject
- - id: products.category
type: label
- id: top_10_products
type: visualizationObject
- - - id: products.category
- type: label
- - id: product_revenue_comparison-over_previous_period
+ - - id: quantity
+ type: fact
+ - id: revenue_and_quantity_by_product_and_category
type: visualizationObject
- - id: region
- type: label
- - id: region
type: attribute
- - - id: region
+ - id: region
type: label
- - id: percentage_of_customers_by_region
- type: visualizationObject
- - id: region
type: label
- id: region_filter
type: filterContext
- - - id: state
- type: label
- - id: top_10_customers
- type: visualizationObject
- - - id: state
- type: label
- - id: state
- type: attribute
- - - id: type
- type: label
- - id: type
- type: attribute
- - - id: type
- type: label
- - id: campaign_spend
- type: visualizationObject
- - - id: amount_of_active_customers
- type: metric
- - id: amount_of_top_customers
- type: metric
- - - id: amount_of_active_customers
- type: metric
- - id: customers_trend
- type: visualizationObject
- - - id: amount_of_active_customers
- type: metric
- - id: percentage_of_customers_by_region
- type: visualizationObject
- - - id: amount_of_orders
- type: metric
- - id: amount_of_valid_orders
- type: metric
- - - id: amount_of_orders
- type: metric
- - id: product_saleability
- type: visualizationObject
- - - id: amount_of_orders
- type: metric
- - id: revenue_trend
- type: visualizationObject
- - - id: campaign_spend
- type: metric
- - id: campaign_spend
- type: visualizationObject
- - - id: campaign_spend
- type: metric
- - id: revenue_per_usd_vs_spend_by_campaign
- type: visualizationObject
- - - id: campaign_spend
- type: metric
- - id: revenue_per_dollar_spent
- type: metric
- - - id: order_amount
- type: metric
- - id: revenue
- type: metric
- - - id: percent_revenue_in_category
- type: metric
- - id: revenue_and_quantity_by_product_and_category
- type: visualizationObject
- - - id: percent_revenue_per_product
- type: metric
- - id: percent_revenue_per_product_by_customer_and_category
- type: visualizationObject
- - - id: revenue
- type: metric
- - id: amount_of_top_customers
- type: metric
- - - id: revenue
- type: metric
- - id: revenue_top_10_percent
- type: metric
- - - id: revenue
- type: metric
- - id: percent_revenue_from_top_10_percent_customers
- type: metric
- - - id: revenue
- type: metric
- - id: product_saleability
- type: visualizationObject
- - - id: revenue
- type: metric
- - id: revenue_per_customer
- type: metric
- - - id: revenue
- type: metric
- - id: percent_revenue_in_category
- type: metric
- - - id: revenue
- type: metric
- - id: percent_revenue_per_product
- type: metric
- - - id: revenue
- type: metric
- - id: revenue-electronic
- type: metric
- - id: revenue
type: metric
- id: revenue-clothing
type: metric
- - id: revenue
type: metric
- - id: product_breakdown
- type: visualizationObject
- - - id: revenue
- type: metric
- - id: revenue_per_dollar_spent
- type: metric
- - - id: revenue
- type: metric
- - id: percent_revenue_from_top_10_customers
+ - id: revenue-electronic
type: metric
- - id: revenue
type: metric
- - id: percent_revenue_from_top_10_percent_products
+ - id: revenue-home
type: metric
- - id: revenue
type: metric
- - id: percent_revenue
+ - id: revenue-outdoor
type: metric
- - id: revenue
type: metric
- - id: total_revenue
- type: metric
+ - id: revenue_and_quantity_by_product_and_category
+ type: visualizationObject
- - id: revenue
type: metric
- - id: product_revenue_comparison-over_previous_period
+ - id: revenue_by_category_trend
type: visualizationObject
- - id: revenue
type: metric
- - id: revenue-outdoor
- type: metric
+ - id: revenue_by_product
+ type: visualizationObject
- - id: revenue
type: metric
- - id: revenue_top_10
- type: metric
- - - id: revenue
+ - id: revenue_per_customer
type: metric
- - id: revenue_and_quantity_by_product_and_category
- type: visualizationObject
- - id: revenue
type: metric
- - id: percent_revenue_from_top_10_products
+ - id: revenue_per_dollar_spent
type: metric
- - id: revenue
type: metric
- - id: revenue-home
+ - id: revenue_top_10
type: metric
- - id: revenue
type: metric
- - id: percent_revenue_per_product_by_customer_and_category
- type: visualizationObject
- - - id: revenue
+ - id: revenue_top_10_percent
type: metric
- - id: revenue_by_category_trend
- type: visualizationObject
- - id: revenue
type: metric
- id: revenue_trend
type: visualizationObject
- - id: revenue
type: metric
- - id: revenue_by_product
- type: visualizationObject
- - - id: revenue
- type: metric
- - id: product_categories_pie_chart
- type: visualizationObject
- - - id: revenue_per_customer
+ - id: total_revenue
type: metric
- - id: customers_trend
- type: visualizationObject
- - id: revenue_per_dollar_spent
type: metric
- id: revenue_per_usd_vs_spend_by_campaign
type: visualizationObject
- - id: revenue_top_10
type: metric
- - id: top_10_products
+ - id: top_10_customers
type: visualizationObject
- - id: revenue_top_10
type: metric
+ - id: top_10_products
+ type: visualizationObject
+ - - id: state
+ type: attribute
+ - id: state
+ type: label
+ - - id: state
+ type: label
- id: top_10_customers
type: visualizationObject
- - - id: revenue_top_10
- type: metric
- - id: percent_revenue_from_top_10_customers
- type: metric
- - - id: revenue_top_10
- type: metric
- - id: percent_revenue_from_top_10_products
- type: metric
- - - id: revenue_top_10_percent
- type: metric
- - id: percent_revenue_from_top_10_percent_products
- type: metric
- - - id: revenue_top_10_percent
- type: metric
- - id: percent_revenue_from_top_10_percent_customers
- type: metric
- - id: total_revenue
type: metric
- id: total_revenue-no_filters
type: metric
- - - id: total_revenue
- type: metric
- - id: percent_revenue
- type: metric
- - - id: campaign_spend
- type: visualizationObject
- - id: campaign
- type: analyticalDashboard
- - - id: customers_trend
- type: visualizationObject
- - id: product_and_category
- type: analyticalDashboard
- - - id: percent_revenue_per_product_by_customer_and_category
- type: visualizationObject
- - id: product_and_category
- type: analyticalDashboard
- - - id: product_breakdown
- type: visualizationObject
- - id: product_and_category
- type: analyticalDashboard
- - - id: product_categories_pie_chart
- type: visualizationObject
- - id: product_and_category
- type: analyticalDashboard
- - - id: product_saleability
- type: visualizationObject
- - id: product_and_category
- type: analyticalDashboard
- - - id: revenue_per_usd_vs_spend_by_campaign
- type: visualizationObject
- - id: campaign
- type: analyticalDashboard
- - - id: revenue_trend
- type: visualizationObject
- - id: product_and_category
- type: analyticalDashboard
- - - id: top_10_products
- type: visualizationObject
- - id: product_and_category
- type: analyticalDashboard
- - - id: top_10_products
- type: visualizationObject
- - id: dashboard_plugin
- type: analyticalDashboard
- - - id: campaign_name_filter
- type: filterContext
- - id: campaign
- type: analyticalDashboard
- - - id: campaign_name_filter
- type: filterContext
- - id: dashboard_plugin
- type: analyticalDashboard
- - - id: region_filter
- type: filterContext
- - id: product_and_category
- type: analyticalDashboard
+ - - id: type
+ type: attribute
+ - id: type
+ type: label
nodes:
- id: campaign
title: Campaign
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml
index 68d7e0129..9fe301256 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml
@@ -1776,10 +1776,10 @@ interactions:
type: label
labels:
data:
- - id: state
- type: label
- id: geo__state__location
type: label
+ - id: state
+ type: label
type: attribute
- attributes:
areRelationsValid: true
@@ -1847,32 +1847,32 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: campaigns
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: campaign_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: campaign_id
type: attribute
- identifier:
- id: campaigns
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: campaign_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: campaign_id
+ id: customer_id
type: attribute
- identifier:
id: date
@@ -1889,38 +1889,38 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- - filterColumn: wdf__state
+ - filterColumn: wdf__region
filterColumnDataType: STRING
filterId:
- id: wdf__state
+ id: wdf__region
type: workspaceDataFilter
- - filterColumn: wdf__region
+ - filterColumn: wdf__state
filterColumnDataType: STRING
filterId:
- id: wdf__region
+ id: wdf__state
type: workspaceDataFilter
id: order_lines
links:
@@ -2510,32 +2510,32 @@ interactions:
type: attribute
referenceProperties:
- identifier:
- id: products
+ id: campaigns
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: product_id
+ - column: campaign_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: product_id
+ id: campaign_id
type: attribute
- identifier:
- id: campaigns
+ id: customers
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: campaign_id
+ - column: customer_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: campaign_id
+ id: customer_id
type: attribute
- identifier:
id: date
@@ -2552,38 +2552,38 @@ interactions:
id: date
type: date
- identifier:
- id: customers
+ id: products
type: dataset
multivalue: false
sourceColumnDataTypes: null
sourceColumns: null
sources:
- - column: customer_id
+ - column: product_id
dataType: INT
isNullable: true
nullValue: null
target:
- id: customer_id
+ id: product_id
type: attribute
tags:
- Order lines
title: Order lines
type: NORMAL
workspaceDataFilterColumns:
- - dataType: STRING
- name: wdf__state
- dataType: STRING
name: wdf__region
+ - dataType: STRING
+ name: wdf__state
workspaceDataFilterReferences:
- - filterColumn: wdf__state
+ - filterColumn: wdf__region
filterColumnDataType: STRING
filterId:
- id: wdf__state
+ id: wdf__region
type: workspaceDataFilter
- - filterColumn: wdf__region
+ - filterColumn: wdf__state
filterColumnDataType: STRING
filterId:
- id: wdf__region
+ id: wdf__state
type: workspaceDataFilter
id: order_lines
links:
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml
index 1183aab6e..1739f860a 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml
@@ -48,72 +48,78 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryDHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.description"
+ />Campaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign
- channelsTypeTypeCampaign channelsCampaign
- idCampaign
- idCampaignsCampaign idCampaign idCampaignsCampaign
nameCampaign
nameCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -146,24 +164,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -178,16 +187,16 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue
per ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per
+ Dollar SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active CustomersRevenue
- per CustomerActive
- Customers# of Active CustomersRevenue per CustomerActive Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per ProductRevenuePercentage
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />% Revenue per ProductRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueProduct
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenuePrevious
- PeriodThis
- PeriodRevenuePrevious PeriodThis PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of OrdersRevenueNumber
- of Orders# of OrdersRevenueNumber of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantityAvg
- Price%
- Revenue in CategoryRevenueItems
- SoldTotal
- RevenueSum of QuantityAvg Price% Revenue in CategoryRevenueItems SoldTotal RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendRevenue
- per Dollar SpentCampaign SpendRevenue per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue#
- of OrdersNumber
- of OrdersRevenue# of OrdersNumber of OrdersTop 10
CustomersFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Revenue
- / Top 10Revenue / Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10'
headers:
Content-Type:
- application/xml
@@ -495,72 +506,78 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryDHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.description"
+ />Campaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign
- channelsTypeTypeCampaign channelsCampaign
- idCampaign
- idCampaignsCampaign idCampaign idCampaignsCampaign
nameCampaign
nameCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -593,24 +622,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -625,16 +645,16 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue
per ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per
+ Dollar SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active CustomersRevenue
- per CustomerActive
- Customers# of Active CustomersRevenue per CustomerActive Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per ProductRevenuePercentage
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />% Revenue per ProductRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueProduct
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenuePrevious
- PeriodThis
- PeriodRevenuePrevious PeriodThis PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of OrdersRevenueNumber
- of Orders# of OrdersRevenueNumber of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantityAvg
- Price%
- Revenue in CategoryRevenueItems
- SoldTotal
- RevenueSum of QuantityAvg Price% Revenue in CategoryRevenueItems SoldTotal RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendRevenue
- per Dollar SpentCampaign SpendRevenue per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue#
- of OrdersNumber
- of OrdersRevenue# of OrdersNumber of OrdersTop 10
CustomersFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Revenue
- / Top 10Revenue / Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10'
headers:
Content-Type:
- application/xml
@@ -928,8 +950,12 @@ interactions:
body: '
CampaignCampaign.Budget AggBudget
+ Agg.Campaign
+ channels per categoryCampaign channels per category.CampaignCampaign.Free-form
translations are marked by the ''id'' attribute, which is a hash combining
@@ -1003,10 +1029,6 @@ interactions:
id="attribute.campaign_channels.category.title">CategoryCategory.CategoryCategory.Campaign channelsCampaign
- channels.TypeType.TypeType.Campaign channelsCampaign
channels.Campaign idCampaign
id.Campaign
@@ -1020,9 +1042,25 @@ interactions:
id="attribute.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year
+ (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.Order
idOrder id.Order
idOrder id.Order
@@ -1044,29 +1082,17 @@ interactions:
id="attribute.products.category">CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year
- (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Campaign
+ id="attribute.state.tags">CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.Campaign
channelsCampaign channels.Campaign channelsCampaign
channels.Campaign
@@ -1083,15 +1109,15 @@ interactions:
id="dataset.customers">CustomersCustomers.CustomersCustomers.CustomersCustomers.DateDate.DateDate.Order
linesOrder lines.Order
linesOrder lines.Order
linesOrder lines.ProductsProducts.ProductsProducts.ProductsProducts.DateDate.DateDate.ProductsProducts.BudgetBudget.BudgetBudget.Campaign channelsCampaign
@@ -1104,11 +1130,11 @@ interactions:
lines.SpendSpend.SpendSpend.Campaign channelsCampaign
- channels.Budget
- AggBudget Agg.Campaign
- channels per categoryCampaign channels per category.filterContextfilterContext.filterContextfilterContext.Campaign
channel idCampaign channel id.Campaign channel
@@ -1117,9 +1143,6 @@ interactions:
id="label.campaign_channels.category">CategoryCategory.CategoryCategory.Campaign channelsCampaign
- channels.TypeType.TypeType.Campaign channelsCampaign
channels.Campaign idCampaign
id.Campaign
@@ -1133,12 +1156,24 @@ interactions:
id="label.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
+ and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.LocationLocation.LocationLocation.CustomersCustomers.CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
- and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.#
+ id="label.region">RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.#
of Active Customers# of Active Customers.#
of Orders# of Orders.% Revenue from Top 10 Customers.%
Revenue from Top 10% Customers% Revenue from Top 10% Customers.Revenue
- (Outdoor)Revenue (Outdoor).%
Revenue from Top 10% Products% Revenue from Top 10% Products.%
@@ -1218,6 +1243,8 @@ interactions:
(Electronic)Revenue (Electronic).Revenue
(Home)Revenue (Home).Revenue
+ (Outdoor)Revenue (Outdoor).Revenue
per CustomerRevenue per Customer.Revenue
@@ -1395,11 +1422,7 @@ interactions:
the source text includes extra details about its general location.Revenue
- / Top 10Revenue / Top 10.filterContextfilterContext.filterContextfilterContext.'
+ / Top 10Revenue / Top 10.'
headers:
Accept:
- '*/*'
@@ -1446,70 +1469,83 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string: CampaignCampaign.
+
+ Budget AggBudget
+ Agg.Campaign
+ channels per categoryCampaign channels per category.CampaignCampaign.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueSpend breakdown and Revenue.The
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.The first insight shows a breakdown of spend
- by category and campaign. The second shows revenue per $ spend, for each
- campaign, to demonstrate, how campaigns are successful..The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.The first insight shows a
+ breakdown of spend by category and campaign. The second shows revenue per
+ $ spend, for each campaign, to demonstrate, how campaigns are successful..Campaign
- SpendCampaign Spend.Revenue
- per $ vs Spend by CampaignRevenue per $ vs Spend by Campaign.Dashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />Campaign SpendCampaign Spend.Revenue per $ vs Spend by CampaignRevenue per $ vs Spend
+ by Campaign.Dashboard
pluginDashboard plugin.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.DHO
- simpleDHO simple.Product
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />DHO simpleDHO simple.Product
& CategoryProduct & Category.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsTop 10 Products.Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsTop 10 Products.Revenue
- TrendRevenue Trend.Customers
- TrendCustomers Trend.Product
- Categories Pie ChartProduct Categories Pie Chart.Revenue TrendRevenue Trend.Customers TrendCustomers Trend.Product Categories Pie ChartProduct Categories Pie Chart.Product
- BreakdownProduct Breakdown.Product BreakdownProduct Breakdown.Product
- SaleabilityProduct Saleability.Product SaleabilityProduct Saleability.%
- Revenue per Product by Customer and Category% Revenue per
- Product by Customer and Category.Campaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />% Revenue per Product by Customer and Category% Revenue
+ per Product by Customer and Category.Campaign
channel idCampaign channel id.Campaign
channel idCampaign channel id.CategoryCategory.Campaign
channelsCampaign channels.TypeType.TypeType.Campaign channelsCampaign
- channels.Campaign idCampaign
- id.Campaign
+ id="attribute.campaign_id">Campaign
+ idCampaign id.Campaign
idCampaign id.CampaignsCampaigns.Campaign
nameCampaign name.Campaign
@@ -1535,9 +1567,25 @@ interactions:
id="attribute.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year
+ (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.Order
idOrder id.Order
idOrder id.Order
@@ -1559,29 +1607,17 @@ interactions:
id="attribute.products.category">CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year
- (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Campaign
+ id="attribute.state.tags">CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.Campaign
channelsCampaign channels.Campaign channelsCampaign
channels.Campaign
@@ -1598,16 +1634,16 @@ interactions:
id="dataset.customers">CustomersCustomers.CustomersCustomers.CustomersCustomers.DateDate.DateDate.Order
linesOrder lines.Order
linesOrder lines.Order
linesOrder lines.ProductsProducts.ProductsProducts.ProductsProducts.DateDate.DateDate.ProductsProducts.BudgetBudget.BudgetBudget.Campaign channelsCampaign
@@ -1622,11 +1658,11 @@ interactions:
lines.SpendSpend.SpendSpend.Campaign channelsCampaign
- channels.Budget AggBudget
- Agg.Campaign
- channels per categoryCampaign channels per category.filterContextfilterContext.filterContextfilterContext.Campaign
channel idCampaign channel id.Campaign channel
@@ -1635,10 +1671,6 @@ interactions:
id="label.campaign_channels.category">CategoryCategory.CategoryCategory.Campaign channelsCampaign
- channels.TypeType.TypeType.Campaign channelsCampaign
channels.Campaign idCampaign
id.Campaign
@@ -1652,12 +1684,24 @@ interactions:
id="label.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
+ and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.LocationLocation.LocationLocation.CustomersCustomers.CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
- and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.#
+ id="label.region">RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.#
of Active Customers# of Active Customers.#
of Orders# of Orders.# of Top Customers.#
of Valid Orders# of Valid Orders.Campaign
SpendCampaign Spend.Order
@@ -1719,8 +1755,6 @@ interactions:
Revenue from Top 10 Customers% Revenue from Top 10 Customers.%
Revenue from Top 10% Customers% Revenue from Top 10% Customers.Revenue
- (Outdoor)Revenue (Outdoor).%
Revenue from Top 10% Products% Revenue from Top 10% Products.%
@@ -1730,13 +1764,15 @@ interactions:
id="metric.percent_revenue_per_product">%
Revenue per Product% Revenue per Product.RevenueRevenue.Revenue
(Clothing)Revenue (Clothing).Revenue
(Electronic)Revenue (Electronic).Revenue
(Home)Revenue (Home).Revenue
+ (Outdoor)Revenue (Outdoor).Revenue
per CustomerRevenue per Customer.Revenue
@@ -1752,175 +1788,176 @@ interactions:
id="visualizationObject">Campaign
SpendCampaign Spend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign Spend.Campaign SpendCampaign Spend.Customers
TrendCustomers Trend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active Customers.# of Active Customers# of Active Customers.Revenue
- per CustomerRevenue per Customer.Revenue per CustomerRevenue per Customer.Active
- CustomersActive Customers.Active CustomersActive Customers.%
Revenue per Product by Customer and Category% Revenue per
Product by Customer and Category.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per Product% Revenue per Product.% Revenue per Product% Revenue per Product.RevenueRevenue.RevenueRevenue.Percentage
of Customers by RegionPercentage of Customers by Region.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active Customers.# of Active Customers# of Active Customers.Product
BreakdownProduct Breakdown.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.RevenueRevenue.RevenueRevenue.Product
Categories Pie ChartProduct Categories Pie Chart.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% Revenue.% Revenue% Revenue.Product
Revenue Comparison (over previous period)Product Revenue
Comparison (over previous period).Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue.Previous
- PeriodPrevious Period.This
- PeriodThis Period.RevenueRevenue.Previous PeriodPrevious Period.This PeriodThis Period.Product
SaleabilityProduct Saleability.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.#
- of Orders# of Orders.RevenueRevenue.Number
- of OrdersNumber of Orders.# of Orders# of Orders.RevenueRevenue.Number of OrdersNumber of Orders.Revenue
and Quantity by Product and CategoryRevenue and Quantity
by Product and Category.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantitySum of Quantity.Sum of QuantitySum of Quantity.Avg
- PriceAvg Price.%
- Revenue in Category% Revenue in Category.Avg PriceAvg Price.% Revenue in Category% Revenue in Category.RevenueRevenue.Items
- SoldItems Sold.Total
- RevenueTotal Revenue.RevenueRevenue.Items SoldItems Sold.Total RevenueTotal Revenue.Revenue
by Category TrendRevenue by Category Trend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue.RevenueRevenue.Revenue
by ProductRevenue by Product.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.RevenueRevenue.RevenueRevenue.Revenue
per $ vs Spend by CampaignRevenue per $ vs Spend by Campaign.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign Spend.Revenue
- per Dollar SpentRevenue per Dollar Spent.Campaign SpendCampaign Spend.Revenue per Dollar SpentRevenue per Dollar Spent.Revenue
TrendRevenue Trend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue.#
- of Orders# of Orders.Number
- of OrdersNumber of Orders.RevenueRevenue.# of Orders# of Orders.Number of OrdersNumber of Orders.Top
10 CustomersTop 10 Customers.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10Revenue / Top 10.Revenue / Top 10Revenue / Top 10.Top
10 ProductsTop 10 Products.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10Revenue / Top 10.filterContextfilterContext.filterContextfilterContext.
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10Revenue / Top 10.'
headers:
Content-Type:
- application/xml
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml
index 88e75d5ac..fc332def2 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml
@@ -48,72 +48,78 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryDHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.description"
+ />Campaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign
- channelsTypeTypeCampaign channelsCampaign
- idCampaign
- idCampaignsCampaign idCampaign idCampaignsCampaign
nameCampaign
nameCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -146,24 +164,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -178,16 +187,16 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue
per ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per
+ Dollar SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active CustomersRevenue
- per CustomerActive
- Customers# of Active CustomersRevenue per CustomerActive Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per ProductRevenuePercentage
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />% Revenue per ProductRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueProduct
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenuePrevious
- PeriodThis
- PeriodRevenuePrevious PeriodThis PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of OrdersRevenueNumber
- of Orders# of OrdersRevenueNumber of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantityAvg
- Price%
- Revenue in CategoryRevenueItems
- SoldTotal
- RevenueSum of QuantityAvg Price% Revenue in CategoryRevenueItems SoldTotal RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendRevenue
- per Dollar SpentCampaign SpendRevenue per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue#
- of OrdersNumber
- of OrdersRevenue# of OrdersNumber of OrdersTop 10
CustomersFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Revenue
- / Top 10Revenue / Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10'
headers:
Content-Type:
- application/xml
@@ -495,72 +506,78 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryDHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.description"
+ />Campaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign
- channelsTypeTypeCampaign channelsCampaign
- idCampaign
- idCampaignsCampaign idCampaign idCampaignsCampaign
nameCampaign
nameCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -593,24 +622,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -625,16 +645,16 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue
per ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per
+ Dollar SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active CustomersRevenue
- per CustomerActive
- Customers# of Active CustomersRevenue per CustomerActive Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per ProductRevenuePercentage
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />% Revenue per ProductRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueProduct
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenuePrevious
- PeriodThis
- PeriodRevenuePrevious PeriodThis PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of OrdersRevenueNumber
- of Orders# of OrdersRevenueNumber of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantityAvg
- Price%
- Revenue in CategoryRevenueItems
- SoldTotal
- RevenueSum of QuantityAvg Price% Revenue in CategoryRevenueItems SoldTotal RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendRevenue
- per Dollar SpentCampaign SpendRevenue per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue#
- of OrdersNumber
- of OrdersRevenue# of OrdersNumber of OrdersTop 10
CustomersFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Revenue
- / Top 10Revenue / Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10'
headers:
Content-Type:
- application/xml
@@ -928,8 +950,12 @@ interactions:
body: '
CampaignCampaign.Budget AggBudget
+ Agg.Campaign
+ channels per categoryCampaign channels per category.CampaignCampaign.Free-form
translations are marked by the ''id'' attribute, which is a hash combining
@@ -1003,10 +1029,6 @@ interactions:
id="attribute.campaign_channels.category.title">CategoryCategory.CategoryCategory.Campaign channelsCampaign
- channels.TypeType.TypeType.Campaign channelsCampaign
channels.Campaign idCampaign
id.Campaign
@@ -1020,9 +1042,25 @@ interactions:
id="attribute.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year
+ (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.Order
idOrder id.Order
idOrder id.Order
@@ -1044,29 +1082,17 @@ interactions:
id="attribute.products.category">CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year
- (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Campaign
+ id="attribute.state.tags">CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.Campaign
channelsCampaign channels.Campaign channelsCampaign
channels.Campaign
@@ -1083,15 +1109,15 @@ interactions:
id="dataset.customers">CustomersCustomers.CustomersCustomers.CustomersCustomers.DateDate.DateDate.Order
linesOrder lines.Order
linesOrder lines.Order
linesOrder lines.ProductsProducts.ProductsProducts.ProductsProducts.DateDate.DateDate.ProductsProducts.BudgetBudget.BudgetBudget.Campaign channelsCampaign
@@ -1104,11 +1130,11 @@ interactions:
lines.SpendSpend.SpendSpend.Campaign channelsCampaign
- channels.Budget
- AggBudget Agg.Campaign
- channels per categoryCampaign channels per category.filterContextfilterContext.filterContextfilterContext.Campaign
channel idCampaign channel id.Campaign channel
@@ -1117,9 +1143,6 @@ interactions:
id="label.campaign_channels.category">CategoryCategory.CategoryCategory.Campaign channelsCampaign
- channels.TypeType.TypeType.Campaign channelsCampaign
channels.Campaign idCampaign
id.Campaign
@@ -1133,12 +1156,24 @@ interactions:
id="label.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
+ and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.LocationLocation.LocationLocation.CustomersCustomers.Product
idProduct id.Product
idProduct id.ProductsProducts.Product
- nameProduct name.Product
- nameProduct name.ProductsProducts.CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
- and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.#
+ id="label.product_name">Product
+ nameProduct name.Product
+ nameProduct name.ProductsProducts.CategoryCategory.CategoryCategory.ProductsProducts.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.#
of Active Customers# of Active Customers.#
of Orders# of Orders.% Revenue from Top 10 Customers.%
Revenue from Top 10% Customers% Revenue from Top 10% Customers.Revenue
- (Outdoor)Revenue (Outdoor).%
Revenue from Top 10% Products% Revenue from Top 10% Products.%
@@ -1218,6 +1243,8 @@ interactions:
(Electronic)Revenue (Electronic).Revenue
(Home)Revenue (Home).Revenue
+ (Outdoor)Revenue (Outdoor).Revenue
per CustomerRevenue per Customer.Revenue
@@ -1395,11 +1422,7 @@ interactions:
the source text includes extra details about its general location.Revenue
- / Top 10Revenue / Top 10.filterContextfilterContext.filterContextfilterContext.'
+ / Top 10Revenue / Top 10.'
headers:
Accept:
- '*/*'
@@ -1446,70 +1469,83 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string: CampaignCampaign.
+
+ Budget AggBudget
+ Agg.Campaign
+ channels per categoryCampaign channels per category.CampaignCampaign.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueSpend breakdown and Revenue.The
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.The first insight shows a breakdown of spend
- by category and campaign. The second shows revenue per $ spend, for each
- campaign, to demonstrate, how campaigns are successful..The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.The first insight shows a
+ breakdown of spend by category and campaign. The second shows revenue per
+ $ spend, for each campaign, to demonstrate, how campaigns are successful..Campaign
- SpendCampaign Spend.Revenue
- per $ vs Spend by CampaignRevenue per $ vs Spend by Campaign.Dashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />Campaign SpendCampaign Spend.Revenue per $ vs Spend by CampaignRevenue per $ vs Spend
+ by Campaign.Dashboard
pluginDashboard plugin.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.DHO
- simpleDHO simple.Product
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />DHO simpleDHO simple.Product
& CategoryProduct & Category.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsTop 10 Products.Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsTop 10 Products.Revenue
- TrendRevenue Trend.Customers
- TrendCustomers Trend.Product
- Categories Pie ChartProduct Categories Pie Chart.Revenue TrendRevenue Trend.Customers TrendCustomers Trend.Product Categories Pie ChartProduct Categories Pie Chart.Product
- BreakdownProduct Breakdown.Product BreakdownProduct Breakdown.Product
- SaleabilityProduct Saleability.Product SaleabilityProduct Saleability.%
- Revenue per Product by Customer and Category% Revenue per
- Product by Customer and Category.Campaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />% Revenue per Product by Customer and Category% Revenue
+ per Product by Customer and Category.Campaign
channel idCampaign channel id.Campaign
channel idCampaign channel id.CategoryCategory.Campaign
channelsCampaign channels.TypeType.TypeType.Campaign channelsCampaign
- channels.Campaign idCampaign
- id.Campaign
+ id="attribute.campaign_id">Campaign
+ idCampaign id.Campaign
idCampaign id.CampaignsCampaigns.Campaign
nameCampaign name.Campaign
@@ -1535,9 +1567,25 @@ interactions:
id="attribute.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year
+ (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.Order
idOrder id.Order
idOrder id.Order
@@ -1559,29 +1607,17 @@ interactions:
id="attribute.products.category">CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year
- (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Campaign
+ id="attribute.state.tags">CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.Campaign
channelsCampaign channels.Campaign channelsCampaign
channels.Campaign
@@ -1598,16 +1634,16 @@ interactions:
id="dataset.customers">CustomersCustomers.CustomersCustomers.CustomersCustomers.DateDate.DateDate.Order
linesOrder lines.Order
linesOrder lines.Order
linesOrder lines.ProductsProducts.ProductsProducts.ProductsProducts.DateDate.DateDate.ProductsProducts.BudgetBudget.BudgetBudget.Campaign channelsCampaign
@@ -1622,11 +1658,11 @@ interactions:
lines.SpendSpend.SpendSpend.Campaign channelsCampaign
- channels.Budget AggBudget
- Agg.Campaign
- channels per categoryCampaign channels per category.filterContextfilterContext.filterContextfilterContext.Campaign
channel idCampaign channel id.Campaign channel
@@ -1635,10 +1671,6 @@ interactions:
id="label.campaign_channels.category">CategoryCategory.CategoryCategory.Campaign channelsCampaign
- channels.TypeType.TypeType.Campaign channelsCampaign
channels.Campaign idCampaign
id.Campaign
@@ -1652,12 +1684,24 @@ interactions:
id="label.customer_name">Customer
nameCustomer name.Customer
nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Date
+ - DateDate - Date.DateDate.DateDate.Date
+ - Month/YearDate - Month/Year.Month and Year (12/2020)Month
+ and Year (12/2020).DateDate.Date
+ - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
+ and Year (Q1/2020).DateDate.Date
+ - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
+ and Year (W52/2020).DateDate.Date
+ - YearDate - Year.YearYear.DateDate.LocationLocation.LocationLocation.CustomersCustomers.CategoryCategory.CategoryCategory.ProductsProducts.Date
- - DateDate - Date.DateDate.DateDate.Date
- - Week/YearDate - Week/Year.Week and Year (W52/2020)Week
- and Year (W52/2020).DateDate.Date
- - Month/YearDate - Month/Year.Month and Year (12/2020)Month
- and Year (12/2020).DateDate.Date
- - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter
- and Year (Q1/2020).DateDate.Date
- - YearDate - Year.YearYear.DateDate.#
+ id="label.region">RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign
+ channels.#
of Active Customers# of Active Customers.#
of Orders# of Orders.# of Top Customers.#
of Valid Orders# of Valid Orders.Campaign
SpendCampaign Spend.Order
@@ -1719,8 +1755,6 @@ interactions:
Revenue from Top 10 Customers% Revenue from Top 10 Customers.%
Revenue from Top 10% Customers% Revenue from Top 10% Customers.Revenue
- (Outdoor)Revenue (Outdoor).%
Revenue from Top 10% Products% Revenue from Top 10% Products.%
@@ -1730,13 +1764,15 @@ interactions:
id="metric.percent_revenue_per_product">%
Revenue per Product% Revenue per Product.RevenueRevenue.Revenue
(Clothing)Revenue (Clothing).Revenue
(Electronic)Revenue (Electronic).Revenue
(Home)Revenue (Home).Revenue
+ (Outdoor)Revenue (Outdoor).Revenue
per CustomerRevenue per Customer.Revenue
@@ -1752,175 +1788,176 @@ interactions:
id="visualizationObject">Campaign
SpendCampaign Spend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign Spend.Campaign SpendCampaign Spend.Customers
TrendCustomers Trend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active Customers.# of Active Customers# of Active Customers.Revenue
- per CustomerRevenue per Customer.Revenue per CustomerRevenue per Customer.Active
- CustomersActive Customers.Active CustomersActive Customers.%
Revenue per Product by Customer and Category% Revenue per
Product by Customer and Category.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per Product% Revenue per Product.% Revenue per Product% Revenue per Product.RevenueRevenue.RevenueRevenue.Percentage
of Customers by RegionPercentage of Customers by Region.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active Customers.# of Active Customers# of Active Customers.Product
BreakdownProduct Breakdown.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.RevenueRevenue.RevenueRevenue.Product
Categories Pie ChartProduct Categories Pie Chart.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% Revenue.% Revenue% Revenue.Product
Revenue Comparison (over previous period)Product Revenue
Comparison (over previous period).Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue.Previous
- PeriodPrevious Period.This
- PeriodThis Period.RevenueRevenue.Previous PeriodPrevious Period.This PeriodThis Period.Product
SaleabilityProduct Saleability.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.#
- of Orders# of Orders.RevenueRevenue.Number
- of OrdersNumber of Orders.# of Orders# of Orders.RevenueRevenue.Number of OrdersNumber of Orders.Revenue
and Quantity by Product and CategoryRevenue and Quantity
by Product and Category.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantitySum of Quantity.Sum of QuantitySum of Quantity.Avg
- PriceAvg Price.%
- Revenue in Category% Revenue in Category.Avg PriceAvg Price.% Revenue in Category% Revenue in Category.RevenueRevenue.Items
- SoldItems Sold.Total
- RevenueTotal Revenue.RevenueRevenue.Items SoldItems Sold.Total RevenueTotal Revenue.Revenue
by Category TrendRevenue by Category Trend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue.RevenueRevenue.Revenue
by ProductRevenue by Product.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.RevenueRevenue.RevenueRevenue.Revenue
per $ vs Spend by CampaignRevenue per $ vs Spend by Campaign.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign Spend.Revenue
- per Dollar SpentRevenue per Dollar Spent.Campaign SpendCampaign Spend.Revenue per Dollar SpentRevenue per Dollar Spent.Revenue
TrendRevenue Trend.Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue.#
- of Orders# of Orders.Number
- of OrdersNumber of Orders.RevenueRevenue.# of Orders# of Orders.Number of OrdersNumber of Orders.Top
10 CustomersTop 10 Customers.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10Revenue / Top 10.Revenue / Top 10Revenue / Top 10.Top
10 ProductsTop 10 Products.Free-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10Revenue / Top 10.filterContextfilterContext.filterContextfilterContext.
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10Revenue / Top 10.'
headers:
Content-Type:
- application/xml
@@ -1982,72 +2019,78 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryDHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.description"
+ />Campaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign
- channelsTypeTypeCampaign channelsCampaign
- idCampaign
- idCampaignsCampaign idCampaign idCampaignsCampaign
nameCampaign
nameCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -2080,24 +2135,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -2112,16 +2158,16 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue
per ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per
+ Dollar SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active CustomersRevenue
- per CustomerActive
- Customers# of Active CustomersRevenue per CustomerActive Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per ProductRevenuePercentage
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />% Revenue per ProductRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueProduct
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenuePrevious
- PeriodThis
- PeriodRevenuePrevious PeriodThis PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of OrdersRevenueNumber
- of Orders# of OrdersRevenueNumber of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantityAvg
- Price%
- Revenue in CategoryRevenueItems
- SoldTotal
- RevenueSum of QuantityAvg Price% Revenue in CategoryRevenueItems SoldTotal RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendRevenue
- per Dollar SpentCampaign SpendRevenue per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue#
- of OrdersNumber
- of OrdersRevenue# of OrdersNumber of OrdersTop 10
CustomersFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Revenue
- / Top 10Revenue / Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10'
headers:
Content-Type:
- application/xml
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml
index f01409e71..71e9cf70e 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml
@@ -18,72 +18,78 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryDHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.description"
+ />Campaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign
- channelsTypeTypeCampaign channelsCampaign
- idCampaign
- idCampaignsCampaign idCampaign idCampaignsCampaign
nameCampaign
nameCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -116,24 +134,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -148,16 +157,16 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue
per ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per
+ Dollar SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active CustomersRevenue
- per CustomerActive
- Customers# of Active CustomersRevenue per CustomerActive Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per ProductRevenuePercentage
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />% Revenue per ProductRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueProduct
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenuePrevious
- PeriodThis
- PeriodRevenuePrevious PeriodThis PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of OrdersRevenueNumber
- of Orders# of OrdersRevenueNumber of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantityAvg
- Price%
- Revenue in CategoryRevenueItems
- SoldTotal
- RevenueSum of QuantityAvg Price% Revenue in CategoryRevenueItems SoldTotal RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendRevenue
- per Dollar SpentCampaign SpendRevenue per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue#
- of OrdersNumber
- of OrdersRevenue# of OrdersNumber of OrdersTop 10
CustomersFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Revenue
- / Top 10Revenue / Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10'
headers:
Content-Type:
- application/xml
diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml
index e9ca4b40a..b1e95a3bf 100644
--- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml
+++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml
@@ -18,72 +18,78 @@ interactions:
uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve
response:
body:
- string:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
- are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign.
+ The second shows revenue per $ spend, for each campaign, to demonstrate,
+ how campaigns are successful.Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
- the source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryDHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about
+ its general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.description"
+ />Campaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign
- channelsTypeTypeCampaign channelsCampaign
- idCampaign
- idCampaignsCampaign idCampaign idCampaignsCampaign
nameCampaign
nameCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -116,24 +134,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -148,16 +157,16 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue
per ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per
+ Dollar SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendCampaign SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active CustomersRevenue
- per CustomerActive
- Customers# of Active CustomersRevenue per CustomerActive Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue per ProductRevenuePercentage
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />% Revenue per ProductRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of Active Customers# of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueProduct
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.%
- Revenue% RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenuePrevious
- PeriodThis
- PeriodRevenuePrevious PeriodThis PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.#
- of OrdersRevenueNumber
- of Orders# of OrdersRevenueNumber of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Sum
- of QuantityAvg
- Price%
- Revenue in CategoryRevenueItems
- SoldTotal
- RevenueSum of QuantityAvg Price% Revenue in CategoryRevenueItems SoldTotal RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.RevenueRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />RevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Campaign
- SpendRevenue
- per Dollar SpentCampaign SpendRevenue per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue#
- of OrdersNumber
- of OrdersRevenue# of OrdersNumber of OrdersTop 10
CustomersFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about
its general location.Revenue
- / Top 10Revenue / Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining
- the JSON path and the source text's value. Since this hash is hard to read,
+ translations are marked by the ''id'' attribute, which is a hash combining
+ the JSON path and the source text''s value. Since this hash is hard to read,
the source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title"
+ />Revenue / Top 10'
headers:
Content-Type:
- application/xml
@@ -449,67 +460,74 @@ interactions:
code: 200
message: OK
- request:
- body:
+
+ Budget AggCampaign channels per
+ categoryCampaignFree-form
- translations are marked by the 'id' attribute, which is a hash combining the
- JSON path and the source text's value. Since this hash is hard to read, the
- source text includes extra details about its general location.Spend
+ id="1" type="free-form:path" value="$.layout.sections[*].header.title" />Spend
breakdown and RevenueThe
- first insight shows a breakdown of spend by category and campaign. The second
- shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
+ id="1" type="free-form:path" value="$.layout.sections[*].header.description"
+ />The first insight shows a breakdown of spend by category and campaign. The
+ second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns
are successful.Campaign
- SpendRevenue
- per $ vs Spend by CampaignDashboard
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />Campaign SpendRevenue per $ vs Spend by CampaignDashboard
pluginFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.DHO
- simpleProduct
- & CategoryFree-form
- translations are marked by the 'id' attribute, which is a hash combining the
- JSON path and the source text's value. Since this hash is hard to read, the
- source text includes extra details about its general location.Top
- 10 ProductsRevenue
- TrendCustomers
- TrendProduct
- Categories Pie ChartProduct
- BreakdownProduct
- Saleability%
- Revenue per Product by Customer and CategoryCampaign
- channel idCampaign
+ id="1" type="free-form:path" value="$.layout.sections[*].items[*].widget.title"
+ />DHO simpleProduct
+ & CategoryFree-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
+ this hash is hard to read, the source text includes extra details about its
+ general location.Top 10 ProductsRevenue TrendCustomers TrendProduct Categories Pie ChartProduct BreakdownProduct Saleability% Revenue per Product by Customer and CategoryCampaign channel
+ idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateOrder
idOrder
idOrder
@@ -545,24 +575,15 @@ interactions:
id="attribute.products.category">CategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign
channelsCampaign
channelsCampaign
@@ -577,16 +598,15 @@ interactions:
id="dataset.customers">CustomersCustomersCustomersDateDateOrder
linesOrder
linesOrder
linesProductsProductsProductsDateDateProductsBudgetBudgetCampaign channelsSpendSpendCampaign channelsBudget AggCampaign channels per
- categoryCampaign
+ id="filterContext">filterContextfilterContextCampaign
channel idCampaign
channel idCampaign
channelsCategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign
idCampaign
idCampaignsCustomer
nameCustomer
nameCustomersRegionRegionCustomersStateStateCustomersDate
+ - DateDateDateDate
+ - Month/YearMonth
+ and Year (12/2020)DateDate
+ - Quarter/YearQuarter
+ and Year (Q1/2020)DateDate
+ - Week/YearWeek
+ and Year (W52/2020)DateDate
+ - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate
- - DateDateDateDate
- - Week/YearWeek
- and Year (W52/2020)DateDate
- - Month/YearMonth
- and Year (12/2020)DateDate
- - Quarter/YearQuarter
- and Year (Q1/2020)DateDate
- - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels#
of Active Customers# of Orders#
of Top Customers# of Valid OrdersCampaign
SpendOrder Amount%
Revenue from Top 10 Customers%
- Revenue from Top 10% CustomersRevenue (Outdoor)%
+ Revenue from Top 10% Customers%
Revenue from Top 10% Products%
Revenue from Top 10 Products% Revenue per
ProductRevenueRevenue
(Clothing)Revenue (Electronic)Revenue
- (Home)Revenue per CustomerRevenue
- per Dollar SpentRevenue (Outdoor)Revenue
+ per CustomerRevenue per Dollar
+ SpentRevenue / Top 10Revenue
/ Top 10%Campaign
SpendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.Campaign
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Campaign
SpendCustomers
TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.#
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />#
of Active CustomersRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Revenue
per CustomerActive
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.alias" />Active
Customers%
Revenue per Product by Customer and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.%
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />%
Revenue per ProductRevenueRevenuePercentage
of Customers by RegionFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.#
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />#
of Active CustomersProduct
BreakdownFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.RevenueRevenueProduct
Categories Pie ChartFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.%
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />%
RevenueProduct
Revenue Comparison (over previous period)Free-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.RevenueRevenuePrevious
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.alias" />Previous
PeriodThis
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.alias" />This
PeriodProduct
SaleabilityFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.#
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />#
of OrdersRevenueRevenueNumber
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.alias" />Number
of OrdersRevenue
and Quantity by Product and CategoryFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.Sum
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Sum
of QuantityAvg
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Avg
Price%
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />%
Revenue in CategoryRevenueRevenueItems
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.alias" />Items
SoldTotal
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.alias" />Total
RevenueRevenue
by Category TrendFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.RevenueRevenueRevenue
by ProductFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.RevenueRevenueRevenue
per $ vs Spend by CampaignFree-form translations are marked by the 'id' attribute,
- which is a hash combining the JSON path and the source text's value. Since
+ appliesTo="source">Free-form translations are marked by the ''id'' attribute,
+ which is a hash combining the JSON path and the source text''s value. Since
this hash is hard to read, the source text includes extra details about its
general location.Campaign
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Campaign
SpendRevenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Revenue
per Dollar SpentRevenue TrendFree-form
- translations are marked by the 'id' attribute, which is a hash combining the
- JSON path and the source text's value. Since this hash is hard to read, the
- source text includes extra details about its general location.RevenueRevenue#
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />#
of OrdersNumber
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.alias" />Number
of OrdersTop 10 CustomersFree-form
- translations are marked by the 'id' attribute, which is a hash combining the
- JSON path and the source text's value. Since this hash is hard to read, the
- source text includes extra details about its general location.Revenue
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Revenue
/ Top 10Top 10 ProductsFree-form
- translations are marked by the 'id' attribute, which is a hash combining the
- JSON path and the source text's value. Since this hash is hard to read, the
- source text includes extra details about its general location.Revenue
- / Top 10filterContextfilterContext
+ id="1" type="free-form:path" value="$.buckets[*].items[*].measure.title" />Revenue
+ / Top 10'
headers:
Accept:
- '*/*'
diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml
index 98ea039e4..64626d3ba 100644
--- a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml
+++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml
@@ -102,11 +102,11 @@ interactions:
name: Order Amount
localIdentifier: dim_1
links:
- executionResult: EXECUTION_NORMALIZED_3
+ executionResult: EXECUTION_NORMALIZED_CSV
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -114,8 +114,10 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -132,7 +134,7 @@ interactions:
price:
format: ''
title: Sum Of Price
- executionResult: EXECUTION_NORMALIZED_3
+ executionResult: EXECUTION_NORMALIZED_CSV
fileName: test_csv
format: CSV
headers:
@@ -151,18 +153,20 @@ interactions:
response:
body:
string:
- exportResult: EXPORT_NORMALIZED_1
+ exportResult: EXPORT_NORMALIZED_CSV
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 201
message: Created
@@ -179,19 +183,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_1
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -208,19 +214,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_1
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -237,7 +245,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_1
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: "\uFEFF\"state\",\"Custom Title Region\",\"Sum Of Price\",\"Order\
@@ -272,14 +280,16 @@ interactions:
- attachment; filename="=?UTF-8?Q?test=5Fcsv.csv?="; filename*=UTF-8''test_csv.csv
Content-Type:
- text/csv
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml
index 119388e02..1a6be23ad 100644
--- a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml
+++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml
@@ -168,7 +168,7 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -176,7 +176,8 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -201,18 +202,20 @@ interactions:
response:
body:
string:
- exportResult: EXPORT_NORMALIZED_3
+ exportResult: EXPORT_NORMALIZED_CSV
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 201
message: Created
@@ -229,19 +232,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_3
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -258,19 +263,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_3
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -287,19 +294,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_3
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -316,19 +325,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_3
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -345,7 +356,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_3
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_CSV
response:
body:
string: "\uFEFF\"Date - Month/Year\",\"2025-04\",\"2025-05\",\"2025-06\",\"\
@@ -357,14 +368,16 @@ interactions:
- attachment; filename="=?UTF-8?Q?Customers_Trend.csv?="; filename*=UTF-8''Customers%20Trend.csv
Content-Type:
- text/csv
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml
index 339cde91c..ac7d9b3bb 100644
--- a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml
+++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml
@@ -102,11 +102,11 @@ interactions:
name: Order Amount
localIdentifier: dim_1
links:
- executionResult: EXECUTION_NORMALIZED_3
+ executionResult: EXECUTION_NORMALIZED_XLSX
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -114,8 +114,10 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -132,7 +134,7 @@ interactions:
price:
format: ''
title: Sum Of Price
- executionResult: EXECUTION_NORMALIZED_3
+ executionResult: EXECUTION_NORMALIZED_XLSX
fileName: test_xlsx
format: XLSX
headers:
@@ -151,18 +153,20 @@ interactions:
response:
body:
string:
- exportResult: EXPORT_NORMALIZED_2
+ exportResult: EXPORT_NORMALIZED_XLSX
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 201
message: Created
@@ -179,19 +183,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_2
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -208,7 +214,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_2
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: "PK\x03\x04\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\
@@ -490,72 +496,76 @@ interactions:
,\uFFFD\uFFFD\uFFFD\x10tni\uFFFDe\uFFFD\uFFFD\uFFFD1j\x11\uFFFD\u058Ax_\uFFFD\
\uFFFD9\uFFFD\uFFFD\uFFFD\uFFFDg\uFFFD{sg{\x06_{g\uFFFD\uFFFD^.Q[;\uFFFD\
\u4AE5?\uFFFD\uFFFD\uFFFD>\uFFFD\u0781\uFFFD\u0484)Y\uFFFDMz\0G\uFFFD\uFFFD\
- \uFFFD/\x03\uFFFDc/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0yG\x05\
- n%\x01\0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFDj\uFFFD\
- 0\x10\uFFFD\uFFFD}\n\uFFFD\uFFFD-\uFFFDiC\x10\uFFFD\x03m\u0269\uFFFDB]Zz\x13\
- \uFFFD&\x11\uFFFD~\uFFFD\uFFFD:y\uFFFD*\uFFFD\uFFFD$\uFFFDSA\x17if\uFFFD\
- \uFFFD]T.\uFFFD\uFFFDM~\uFFFDyit\uFFFD\uFFFD\x0447B\uFFFDm\uFFFD\u079BU\uFFFD\
- @\uFFFD\x0FL\v\uFFFD\x1A\r\x15:\uFFFDG\uFFFD\uFFFD\uFFFD\uFFFDr\uFFFD\uFFFD\
- \uFFFD\x19\v.H\uFFFDI\x04iO\uFFFD\uFFFD\uFFFD.\x04K1\uFFFD|\a\uFFFD\uFFFD\
- ,:t\x147\uFFFD)\x16\uFFFD\uFFFDm\uFFFDe\uFFFD\uFFFDm\x01\x17\uFFFD\u0331\
- \uFFFD\uFFFD\x04\v\f\x1F\uFFFD\uFFFD\uFFFD\uFFFDhD\n>!\uFFFDk{\uFFFD\uFFFD\
- \x18ZP\uFFFD\uFFFD\uFFFDy\uFFFD\uFFFD7\uFFFDS\uFFFDfA\uFFFD\\8\uFFFD\f\a\
- \v7\uFFFD'qr\uFF5C\uFFFD]\uFFFDe\u076C\uFFFD\uFFFD\uFFFD9\uFFFD\\\uFFFD\uFFFD\
- \uFFFD\uFFFD\uFFFDR\x1FW\uFFFD\x01\u0565\uFFFD\uFFFD;`\uFFFD\uFFFD\uFFFD\
- \u0117\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD+\uFFFDH\x10\uFFFD\uFFFD\
- \uFFFD\uFFFDx\e\a\x19\uFFFD@$1\0\x1D\u2794\uFFFD\uFFFD\uFFFDs\uFFFDBuA\uFFFD\
- yJ\uFFFDS\uFFFDh\nB\x1F\uFFFD)\uFFFD\uFFFD-\uFFFD\uFFFD\uFFFD@56\uFFFD7\uFFFD\
- \x04\x18r_\x7F\uFFFD\uFFFD\x0FPK\x03\x04\x14\0\0\0\b\0\0\0?\0\x04qEc{\x01\
- \0\0\x13\x03\0\0\x10\0\0\0docProps/app.xml\uFFFDR\uFFFDN\uFFFD0\x10\uFFFD\
- \uFFFD\x15\uFFFD\uFFFD\uFFFDi\uFFFDZ\uFFFD\uFFFD1Z\uFFFD]\uFFFD\uFFFD\uFFFD\
- J-p\\\x19g\uFFFDXul\uFFFD3D)_\uFFFD\uFFFD\uFFFD!\uFFFD=\uFFFD\u04DB7O\uFFFD\
- \uFFFD3\x16\uFFFD]c\uFFFD\x16\"\x1A\uFFFD\n6\uFFFD\uFFFD,\x03\uFFFD}i\u073E\
- `\uFFFD\uFFFD?\uFFFD7,CR\uFFFDT\uFFFD;(\uFFFD\x11\uFFFD\uFFFD\uFFFD+\uFFFD\
- \uFFFD>@$\x03\uFFFD%\a\uFFFD\x05\uFFFD\uFFFD\x92s\uFFFD54\ng\uFFFD\uFFFD\
- R\uFFFD\uFFFDQ\uFFFD\u02B8\u7FAA\uFFFD\uFFFD;\uFFFD_\ep\uFFFD\x17y\uFFFD\
- \uFFFDCG\uFFFDJ(\uFFFD\uFFFDh\uFFFDN\uFFFD\u02D6\uFFFDkZz\uFFFD\uFFFD\xE7\
- \uFFFD1$?)~\uFFFD`\uFFFDV\uFFFD\x1E)\uF34E\x1E}E\uFFFD\uFFFDN\uFFFD\x15\
- |\uFFFD\x14\uFFFDh\v\uFFFD5\x1A:\uFFFD\\\uFFFDi)\uFFFDZYX%cY)\uFFFD \uFFFD\
- \a!\u05A0\uFFFD\uFFFDm\uFFFD\uFFFD(EK\uFFFD\x164\uFFFD\uFFFD\uFFFDyKS[\uFFFD\
- \uFFFDE!\uFFFDq\n\u05AAh\uFFFD#v\uFFFD\uFFFD\uFFFD\x01\u06C0\x14\u5CCF\a\
- \uFFFD\x01\b\x05\x1F\uFFFD\x01N\uFFFDSl~\uFFFD\uFFFD H\uFFFDR\uFFFD\uFFFD\
- \ \t_F\uFFFD\x19\uFFFD\uFFFD\x0F\uFFFDFE\uFFFDO\uFFFD\uFFFD4\uFFFDM2\x12\
- \ \uFFFD\uFFFD,v_\"\uFFFD/\uFFFDd\uFFFD\uFFFDMP.\u0350\uFFFD\uFFFDq\a|\f\
- ;\x7F\uFFFD\b\uFFFD\x13\uFFFD$\u0176V\x11\u02B4\uFFFDq\uFFFD#!\uFFFD)Z\uFFFD\
- \uFFFD~U+\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDt\uFFFD\uFFFDr\uFFFD\
- \uFFFD\uFFFD\uFFFD\fk?s\uFFFD\x7F|g\uFFFD\x0EPK\x01\x02\x14\x03\x14\0\0\0\
- \b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\
- \0\0\0\0[Content_Types].xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\uFFFD\
- I\uFFFD\uFFFD\0\0\0K\x02\0\0\v\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x01\
- \0\0_rels/.relsPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0Du[\uFFFD\uFFFD\0\0\
- \0\uFFFD\x02\0\0\x1A\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x02\0\0xl/_rels/workbook.xml.relsPK\x01\
- \x02\x14\x03\x14\0\0\0\b\0\0\0?\0\f\uFFFD\uFFFD\fR\a\0\0 #\0\0\x18\0\0\0\
- \0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x03\0\0xl/worksheets/sheet1.xmlPK\x01\
- \x02\x14\x03\x14\0\0\0\b\0\0\0?\0\b\uFFFD\uFFFD\uFFFDL\x01\0\0)\x02\0\0\x0F\
- \0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD:\v\0\0xl/workbook.xmlPK\x01\x02\x14\x03\
- \x14\0\0\0\b\0\0\0?\0uW\x7F\uFFFD\x12\x02\0\00\x06\0\0\x14\0\0\0\0\0\0\0\
- \0\0\0\0\uFFFD\uFFFD\uFFFD\f\0\0xl/sharedStrings.xmlPK\x01\x02\x14\x03\x14\
- \0\0\0\b\0\0\0?\0]\uFFFD:4\uFFFD\x02\0\0\uFFFD\x0F\0\0\r\0\0\0\0\0\0\0\0\
- \0\0\0\uFFFD\uFFFD\uFFFD\x0E\0\0xl/styles.xmlPK\x01\x02\x14\x03\x14\0\0\0\
- \b\0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\uFFFD\
- \uFFFD\x01\x12\0\0xl/theme/theme1.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0\
- ?\0yG\x05n%\x01\0\0P\x02\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\
- \x17\0\0docProps/core.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\x04qEc{\x01\
- \0\0\x13\x03\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD6\x19\0\0docProps/app.xmlPK\x05\
- \x06\0\0\0\0\n\0\n\0\uFFFD\x02\0\0\uFFFD\x1A\0\0\0\0"
+ \uFFFD/\x03\uFFFDc/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0\u04D2\
+ 2(%\x01\0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFDn\uFFFD\
+ 0\x10\uFFFD\uFFFD}\uFFFD\uFFFD\uFFFD\uFFFD\x0E\uFFFD\uFFFDXI\uFFFD\u068A\
+ S\uFFFD*\uFFFD\uFFFD\uFFFD7\uFFFD^\uFFFD\uFFFD\uFFFDG\uFFFD\u06D0\uFFFD\uFFFD\
+ \x13 \uFFFD\u0129\uFFFD\uFFFD\uFFFD~;\uFFFDr\uFFFD\u062B&\uFFFD\x05\uFFFD\
+ \uFFFD%\uFFFD3\uFFFD\x12\uFFFD\uFFFD\b\uFFFD\uFFFD\x12}\uFFFD\uFFFD\uFFFD\
+ #J|`Z\uFFFD\uFFFDh(Q\a\x1E-\uFFFD\uFFFD\uFFFD[\u028D\uFFFD7g,\uFFFD \uFFFD\
+ '\x11\uFFFD=\uFFFDD\uFFFD\x10,\uFFFD\uFFFD\uFFFD\x1D(\uFFFD\uFFFD\uFFFD\
+ Q\uFFFD\x1A\uFFFDX\uFFFD\uFFFD\uFFFD\uFFFDe\uFFFD\uFFFD\u0540'\uFFFD\u0330\
+ \uFFFD\uFFFD\x04\v\f\uFFFD\uFFFD\u050EDtD\n>\"\uFFFDk\x06\uFFFD\uFFFD\x18\
+ \x1AP\uFFFD\uFFFD\uFFFDy\uFFFD\uFFFD7\uFFFDS\uFFFDf\xE0\\8\uFFFD\f\uFFFD\
+ \uFFFD\uFFFD\u05938\uFFFD\uFFFD^\uFFFD\u01B6m\uFFFDv:Xc\uFFFD\x1CoV\uFFFD\
+ \uFFFD\xEA\uFFFD\uFFFD\uFFFD\uFFFD8\uFFFD\uFFFD\x10\uFFFDr\a,\x18W\x15\uFFFD\
+ \uFFFD\uFFFD\uFFFDk\uFFFD\x0F\uFFFDx\uFFFD\x04\uFFFD\uFFFDE\uFFFD\uFFFD\uFFFD\
+ q\uFFFDC\x1F\uFFFD$\x06\uFFFD\uFFFD\uFFFD'\uFFFDs\uFFFD\uFFFD\uFFFD^\uFFFD\
+ jB&\uFFFD\uFFFD\u0727d\uFFFD&s\uFFFD\uFFFD\uFFFD|\uFFFD#\uFFFD\uFFFD\uFFFD\
+ @u\x1C\uFFFDo\uFFFD\tp\uFFFD}\uFFFD\t\uFFFD?PK\x03\x04\x14\0\0\0\b\0\0\0\
+ ?\0\x04qEc{\x01\0\0\x13\x03\0\0\x10\0\0\0docProps/app.xml\uFFFDR\uFFFDN\uFFFD\
+ 0\x10\uFFFD\uFFFD\x15\uFFFD\uFFFD\uFFFDi\uFFFDZ\uFFFD\uFFFD1Z\uFFFD]\uFFFD\
+ \uFFFD\uFFFDJ-p\\\x19g\uFFFDXul\uFFFD3D)_\uFFFD\uFFFD\uFFFD!\uFFFD=\uFFFD\
+ \u04DB7O\uFFFD\uFFFD3\x16\uFFFD]c\uFFFD\x16\"\x1A\uFFFD\n6\uFFFD\uFFFD,\x03\
+ \uFFFD}i\u073E`\uFFFD\uFFFD?\uFFFD7,CR\uFFFDT\uFFFD;(\uFFFD\x11\uFFFD\uFFFD\
+ \uFFFD+\uFFFD\uFFFD>@$\x03\uFFFD%\a\uFFFD\x05\uFFFD\uFFFD\x92s\uFFFD54\n\
+ g\uFFFD\uFFFDR\uFFFD\uFFFDQ\uFFFD\u02B8\u7FAA\uFFFD\uFFFD;\uFFFD_\ep\uFFFD\
+ \x17y\uFFFD\uFFFDCG\uFFFDJ(\uFFFD\uFFFDh\uFFFDN\uFFFD\u02D6\uFFFDkZz\uFFFD\
+ \uFFFD\xE7\uFFFD1$?)~\uFFFD`\uFFFDV\uFFFD\x1E)\uF34E\x1E}E\uFFFD\uFFFDN\uFFFD\
+ \x15|\uFFFD\x14\uFFFDh\v\uFFFD5\x1A:\uFFFD\\\uFFFDi)\uFFFDZYX%cY)\uFFFD\
+ \ \uFFFD\a!\u05A0\uFFFD\uFFFDm\uFFFD\uFFFD(EK\uFFFD\x164\uFFFD\uFFFD\uFFFD\
+ yKS[\uFFFD\uFFFDE!\uFFFDq\n\u05AAh\uFFFD#v\uFFFD\uFFFD\uFFFD\x01\u06C0\x14\
+ \u5CCF\a\uFFFD\x01\b\x05\x1F\uFFFD\x01N\uFFFDSl~\uFFFD\uFFFD H\uFFFDR\uFFFD\
+ \uFFFD \t_F\uFFFD\x19\uFFFD\uFFFD\x0F\uFFFDFE\uFFFDO\uFFFD\uFFFD4\uFFFD\
+ M2\x12 \uFFFD\uFFFD,v_\"\uFFFD/\uFFFDd\uFFFD\uFFFDMP.\u0350\uFFFD\uFFFD\
+ q\a|\f;\x7F\uFFFD\b\uFFFD\x13\uFFFD$\u0176V\x11\u02B4\uFFFDq\uFFFD#!\uFFFD\
+ )Z\uFFFD\uFFFD~U+\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDt\uFFFD\
+ \uFFFDr\uFFFD\uFFFD\uFFFD\uFFFD\fk?s\uFFFD\x7F|g\uFFFD\x0EPK\x01\x02\x14\
+ \x03\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\0\0\0\0\0\0\
+ \0\0\0\uFFFD\uFFFD\0\0\0\0[Content_Types].xmlPK\x01\x02\x14\x03\x14\0\0\0\
+ \b\0\0\0?\0\uFFFDI\uFFFD\uFFFD\0\0\0K\x02\0\0\v\0\0\0\0\0\0\0\0\0\0\0\uFFFD\
+ \uFFFD\uFFFD\x01\0\0_rels/.relsPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0Du[\uFFFD\
+ \uFFFD\0\0\0\uFFFD\x02\0\0\x1A\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x02\
+ \0\0xl/_rels/workbook.xml.relsPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\f\uFFFD\
+ \uFFFD\fR\a\0\0 #\0\0\x18\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x03\0\0\
+ xl/worksheets/sheet1.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\b\uFFFD\uFFFD\
+ \uFFFDL\x01\0\0)\x02\0\0\x0F\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD:\v\0\0xl/workbook.xmlPK\x01\
+ \x02\x14\x03\x14\0\0\0\b\0\0\0?\0uW\x7F\uFFFD\x12\x02\0\00\x06\0\0\x14\0\
+ \0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\f\0\0xl/sharedStrings.xmlPK\x01\x02\
+ \x14\x03\x14\0\0\0\b\0\0\0?\0]\uFFFD:4\uFFFD\x02\0\0\uFFFD\x0F\0\0\r\0\0\
+ \0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x0E\0\0xl/styles.xmlPK\x01\x02\x14\x03\
+ \x14\0\0\0\b\0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\0\0\0\0\0\
+ \0\0\0\0\uFFFD\uFFFD\x01\x12\0\0xl/theme/theme1.xmlPK\x01\x02\x14\x03\x14\
+ \0\0\0\b\0\0\0?\0\u04D22(%\x01\0\0P\x02\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\uFFFD\
+ \uFFFD\uFFFD\x17\0\0docProps/core.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0\
+ ?\0\x04qEc{\x01\0\0\x13\x03\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD6\x19\
+ \0\0docProps/app.xmlPK\x05\x06\0\0\0\0\n\0\n\0\uFFFD\x02\0\0\uFFFD\x1A\0\
+ \0\0\0"
headers:
Content-Disposition:
- attachment; filename="=?UTF-8?Q?test=5Fxlsx.xlsx?="; filename*=UTF-8''test_xlsx.xlsx
Content-Type:
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml
index 828674174..fcf675413 100644
--- a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml
+++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml
@@ -168,7 +168,7 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -176,7 +176,8 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -201,18 +202,20 @@ interactions:
response:
body:
string:
- exportResult: EXPORT_NORMALIZED_4
+ exportResult: EXPORT_NORMALIZED_XLSX
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 201
message: Created
@@ -229,19 +232,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_4
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -258,19 +263,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_4
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -287,19 +294,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_4
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -316,19 +325,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_4
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -345,19 +356,21 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_4
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: ''
headers:
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 202
message: Accepted
@@ -374,7 +387,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_4
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/EXPORT_NORMALIZED_XLSX
response:
body:
string: "PK\x03\x04\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\
@@ -588,21 +601,22 @@ interactions:
,\uFFFD\uFFFD\uFFFD\x10tni\uFFFDe\uFFFD\uFFFD\uFFFD1j\x11\uFFFD\u058Ax_\uFFFD\
\uFFFD9\uFFFD\uFFFD\uFFFD\uFFFDg\uFFFD{sg{\x06_{g\uFFFD\uFFFD^.Q[;\uFFFD\
\u4AE5?\uFFFD\uFFFD\uFFFD>\uFFFD\u0781\uFFFD\u0484)Y\uFFFDMz\0G\uFFFD\uFFFD\
- \uFFFD/\x03\uFFFDc/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0\x11\uFFFD\
- ,\uFFFD%\x01\0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFDj\uFFFD\
- 0\x10\uFFFD\uFFFD}\n\uFFFD\uFFFD-\uFFFDiC\x10\uFFFD\x03m\u0269\uFFFDBSZz\x13\
- \uFFFD&\x11\uFFFD~\uFFFD\uFFFD:~\uFFFD\u028E\uFFFD$\uFFFDS\uFFFD\uFFFD\uFFFD\
- \uFFFDvvQ\uFFFD<\uFFFD&\uFFFD\x05\uFFFD\uFFFD\x15\uFFFD3\uFFFD\x12\uFFFD\
- \uFFFD\b\uFFFDw\x15z\u07EC\uFFFD\x05J|`Z\uFFFD\uFFFDh\uFFFDP\a\x1E-\uBED2\
- [\u028D\uFFFDWg,\uFFFD \uFFFD'\x11\uFFFD=\uFFFDB\uFFFD\x10,\uFFFD\uFFFD\uFFFD\
- =(\uFFFD\uFFFD\uFFFDQ\uFFFD\x1A\uFFFDX\uFFFD\uFFFD\uFFFDa\uFFFD\uFFFD7\uFFFD\
- \x01.\b\uFFFDc\x05\uFFFD\t\x16\x18\uE069\uFFFD\uFFFDhD\n>!\uFFFDk\x06\uFFFD\
- \uFFFD\x18\x1AP\uFFFD\uFFFD\uFFFDy\uFFFD\uFFFD7\uFFFDS\uFFFDf\xE0\\8\uFFFD\
- \f\uFFFD\uFFFD\uFFFD\u05938\uFFFD\x0F^N\u01B6m\uFFFDv6Xc\uFFFD\x1C\x7F\uFFFD\
- _\u0786US\uFFFD\uFFFDSq@u)8\uFFFD\x0EX0\uFFFD.\uFFFDe\x11\x0F\uFFFD0\x1F\
- \uFFFD\uFFFD\uFFFD[\t\u2C4B\uFFFD\uFFFD\uFFFDq\uFFFDc\x1F\uFFFD$\x06\uFFFD\
- \u01F8'\uFFFDc\uFFFD\uFFFD\uFFFDY\uFFFD\uFFFD \uFFFD<%\uFFFD)Yl\nB\x1FrJ\uFFFD\
- W?\uFFFD\uFFFD\fT\uFFFD\x7F\x13O\uFFFDc\uFFFD\uFFFDOP\uFFFD\x01PK\x03\x04\
+ \uFFFD/\x03\uFFFDc/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0\0a]\uFFFD\
+ &\x01\0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFDn\uFFFD0\x10\
+ \uFFFD\uFFFD}\uFFFD\uFFFD\uFFFD\uFFFD\x0E\uFFFD\b\uFFFD$Hm\u0169H\uFFFD\
+ J\u056A7\uFFFD^\uFFFD\uFFFD\uFFFDG\uFFFD\u06D0\uFFFD\uFFFDI \uFFFD\u0129\
+ \uFFFD\uFFFD\uFFFD~;\uFFFDr\uFFFD\u072B&\uFFFD\x05\uFFFD\uFFFD%\uFFFD3\uFFFD\
+ \x12\uFFFD\uFFFD\b\uFFFD\uFFFD\x12\uFFFDoV\uFFFD\x1C%>0-Xc4\uFFFD\uFFFD\x03\
+ \uFFFD\uFFFD\uFFFD]\uFFFD-\uFFFD\uFFFD\uFFFD\uFFFD3\x16\\\uFFFD\uFFFD\uFFFD\
+ \b\u049Er[\uFFFD]\b\uFFFDb\uFFFD\uFFFD\x0E\x14\uFFFDYt\uFFFD(n\uFFFDS,\uFFFD\
+ \uFFFD\uFFFD\uFFFD2\uFFFD\uFFFDj\uFFFD\x13BfXA`\uFFFD\x05\uFFFD\x0F\uFFFD\
+ \u050EDtD\n>\"\uFFFDkz\uFFFD\uFFFD\x18\x1AP\uFFFD\uFFFD\uFFFDy\uFFFD\uFFFD\
+ 7\uFFFDS\uFFFDfC\uFFFD\\8\uFFFD\f\uFFFD\uFFFD\uFFFD\u05938\uFFFD\uFFFD^\uFFFD\
+ \u01B6m\uFFFDv\uFFFD[c\uFFFD\x1C\x7F\uFFFD_\uFFFD\uFFFDUS\uFFFD\x0F\uFFFD\
+ \u202ABp\uFFFD\x1D\uFFFD`\\U\uFFFD\uFFFD\"\x1E\uFFFDa>\uFFFD\u3277\x12\uFFFD\
+ c\x17\uFFFD\eo\uFFFDE\uFFFD>\x10I\f@\uFFFD\uFFFD'\uFFFDc\uFFFD\uFFFD\uFFFD\
+ Y\uFFFDjB&\uFFFD\uFFFD\u0727d\uFFFD!\v\uFFFD\uFFFD\uFFFDa\uFFFDu\x18y\uFFFD\
+ \x7F\x06\uFFFD\uFFFD\x7F\x13O\uFFFD!\uFFFD\uFFFD'\uFFFD\uFFFD\0PK\x03\x04\
\x14\0\0\0\b\0\0\0?\0\uFFFD\uFFFD2G~\x01\0\0\x19\x03\0\0\x10\0\0\0docProps/app.xml\uFFFD\
R\uFFFDN\uFFFD0\x10\uFFFD\uFFFD\x15\uFFFD\uFFFD\uFFFDi\uFFFD\uFFFDS\uFFFD\
\x18\uFFFD\x02\uFFFD\uFFFD\u04EB\uFFFD\0g\uFFFDl\x1A\v\u01F6\uFFFD\u06E8\
@@ -637,24 +651,26 @@ interactions:
\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\x02\t\0\0xl/styles.xmlPK\x01\x02\x14\x03\
\x14\0\0\0\b\0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\0\0\0\0\0\
\0\0\0\0\uFFFD\uFFFD\x1C\f\0\0xl/theme/theme1.xmlPK\x01\x02\x14\x03\x14\0\
- \0\0\b\0\0\0?\0\x11\uFFFD,\uFFFD%\x01\0\0P\x02\0\0\x11\0\0\0\0\0\0\0\0\0\
- \0\0\uFFFD\uFFFD\uFFFD\x11\0\0docProps/core.xmlPK\x01\x02\x14\x03\x14\0\0\
- \0\b\0\0\0?\0\uFFFD\uFFFD2G~\x01\0\0\x19\x03\0\0\x10\0\0\0\0\0\0\0\0\0\0\
- \0\uFFFD\uFFFDQ\x13\0\0docProps/app.xmlPK\x05\x06\0\0\0\0\n\0\n\0\uFFFD\x02\
- \0\0\uFFFD\x14\0\0\0\0"
+ \0\0\b\0\0\0?\0\0a]\uFFFD&\x01\0\0P\x02\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\uFFFD\
+ \uFFFD\uFFFD\x11\0\0docProps/core.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0\
+ ?\0\uFFFD\uFFFD2G~\x01\0\0\x19\x03\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\
+ R\x13\0\0docProps/app.xmlPK\x05\x06\0\0\0\0\n\0\n\0\uFFFD\x02\0\0\uFFFD\x14\
+ \0\0\0\0"
headers:
Content-Disposition:
- attachment; filename="=?UTF-8?Q?Customers_Trend.xlsx?="; filename*=UTF-8''Customers%20Trend.xlsx
Content-Type:
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_and_metric.yaml b/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_and_metric.yaml
index 0004428b5..effc1dcf3 100644
--- a/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_and_metric.yaml
+++ b/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_and_metric.yaml
@@ -70,11 +70,11 @@ interactions:
name: Order Amount
localIdentifier: dim_1
links:
- executionResult: EXECUTION_NORMALIZED_6
+ executionResult: EXECUTION_NORMALIZED_1
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -82,8 +82,10 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -99,7 +101,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_6?offset=0%2C0&limit=512%2C256
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_1?offset=0%2C0&limit=512%2C256
response:
body:
string:
@@ -147,14 +149,16 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_metric_and_filter.yaml b/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_metric_and_filter.yaml
index 09a5f98c7..6cfdba071 100644
--- a/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_metric_and_filter.yaml
+++ b/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_metric_and_filter.yaml
@@ -77,11 +77,11 @@ interactions:
name: Order Amount
localIdentifier: dim_1
links:
- executionResult: EXECUTION_NORMALIZED_7
+ executionResult: EXECUTION_NORMALIZED_1
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -89,8 +89,10 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -106,7 +108,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_7?offset=0%2C0&limit=512%2C256
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_1?offset=0%2C0&limit=512%2C256
response:
body:
string:
@@ -142,14 +144,16 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_show_all_values.yaml b/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_show_all_values.yaml
index 9b6cc5f0a..948264bec 100644
--- a/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_show_all_values.yaml
+++ b/packages/gooddata-sdk/tests/table/fixtures/table_with_attribute_show_all_values.yaml
@@ -73,11 +73,11 @@ interactions:
- localIdentifier: metric1
localIdentifier: dim_1
links:
- executionResult: EXECUTION_NORMALIZED_8
+ executionResult: EXECUTION_NORMALIZED_1
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -85,8 +85,10 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -102,7 +104,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_8?offset=0%2C0&limit=512%2C256
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_1?offset=0%2C0&limit=512%2C256
response:
body:
string:
@@ -334,14 +336,16 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -427,19 +431,22 @@ interactions:
- localIdentifier: metric1
localIdentifier: dim_1
links:
- executionResult: EXECUTION_NORMALIZED_9
+ executionResult: EXECUTION_NORMALIZED_2
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -455,7 +462,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_9?offset=0%2C0&limit=512%2C256
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_2?offset=0%2C0&limit=512%2C256
response:
body:
string:
@@ -683,14 +690,16 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -776,19 +785,22 @@ interactions:
- localIdentifier: metric1
localIdentifier: dim_1
links:
- executionResult: EXECUTION_NORMALIZED_10
+ executionResult: EXECUTION_NORMALIZED_3
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -804,7 +816,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_10?offset=0%2C0&limit=512%2C256
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_3?offset=0%2C0&limit=512%2C256
response:
body:
string:
@@ -952,14 +964,16 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/table/fixtures/table_with_just_attribute.yaml b/packages/gooddata-sdk/tests/table/fixtures/table_with_just_attribute.yaml
index 2c49c56fb..96f1aa156 100644
--- a/packages/gooddata-sdk/tests/table/fixtures/table_with_just_attribute.yaml
+++ b/packages/gooddata-sdk/tests/table/fixtures/table_with_just_attribute.yaml
@@ -52,11 +52,11 @@ interactions:
valueType: TEXT
localIdentifier: dim_0
links:
- executionResult: EXECUTION_NORMALIZED_4
+ executionResult: EXECUTION_NORMALIZED_1
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -64,8 +64,10 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -81,7 +83,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_4?offset=0&limit=512
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_1?offset=0&limit=512
response:
body:
string:
@@ -117,14 +119,16 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/gooddata-sdk/tests/table/fixtures/table_with_just_metric.yaml b/packages/gooddata-sdk/tests/table/fixtures/table_with_just_metric.yaml
index a8f5a7396..ae8681111 100644
--- a/packages/gooddata-sdk/tests/table/fixtures/table_with_just_metric.yaml
+++ b/packages/gooddata-sdk/tests/table/fixtures/table_with_just_metric.yaml
@@ -45,11 +45,11 @@ interactions:
name: Order Amount
localIdentifier: dim_0
links:
- executionResult: EXECUTION_NORMALIZED_5
+ executionResult: EXECUTION_NORMALIZED_1
headers:
Content-Type:
- application/json
- DATE: &id001
+ DATE:
- PLACEHOLDER
Expires:
- '0'
@@ -57,8 +57,10 @@ interactions:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-CANCEL-TOKEN: *id001
- X-GDC-TRACE-ID: *id001
+ X-GDC-CANCEL-TOKEN:
+ - PLACEHOLDER
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
@@ -74,7 +76,7 @@ interactions:
X-Requested-With:
- XMLHttpRequest
method: GET
- uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_5?offset=0&limit=256
+ uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/EXECUTION_NORMALIZED_1?offset=0&limit=256
response:
body:
string:
@@ -98,14 +100,16 @@ interactions:
headers:
Content-Type:
- application/json
- DATE: *id001
+ DATE:
+ - PLACEHOLDER
Expires:
- '0'
Pragma:
- no-cache
X-Content-Type-Options:
- nosniff
- X-GDC-TRACE-ID: *id001
+ X-GDC-TRACE-ID:
+ - PLACEHOLDER
status:
code: 200
message: OK
diff --git a/packages/tests-support/fixtures/demo_user.json b/packages/tests-support/fixtures/demo_user.json
index 694be6bdc..348767eb3 100644
--- a/packages/tests-support/fixtures/demo_user.json
+++ b/packages/tests-support/fixtures/demo_user.json
@@ -3,7 +3,10 @@
"id": "demo",
"type": "user",
"attributes": {
- "authenticationId": ""
+ "authenticationId": "",
+ "firstname": "Demo",
+ "lastname": "User",
+ "email": "demo@example.com"
},
"relationships": {
"userGroups": {
diff --git a/packages/tests-support/src/tests_support/vcrpy_utils.py b/packages/tests-support/src/tests_support/vcrpy_utils.py
index 4d1e339ee..9fba5b501 100644
--- a/packages/tests-support/src/tests_support/vcrpy_utils.py
+++ b/packages/tests-support/src/tests_support/vcrpy_utils.py
@@ -145,9 +145,16 @@
# Indexed hash maps: preserve distinctness across different hashes within a cassette.
# Each unique hash gets a unique index (e.g. EXECUTION_NORMALIZED_1, _2, ...).
+# NOTE: indices may be non-sequential within a single cassette because the maps
+# accumulate across a test session. _reindex_cassette_hashes() fixes this at
+# serialization time so each cassette file is self-contained (starts from _1).
_exec_hash_map: dict[str, str] = {}
_export_hash_map: dict[str, str] = {}
+# Regex for re-indexing placeholders at serialization time
+_REINDEX_EXEC_RE = re.compile(r"EXECUTION_NORMALIZED_(\d+)")
+_REINDEX_EXPORT_RE = re.compile(r"EXPORT_NORMALIZED_(\d+)")
+
def _exec_hash_replacer(match: re.Match) -> str:
"""Replace execution hash with an indexed placeholder, preserving distinctness."""
@@ -339,6 +346,105 @@ def get_vcr() -> vcr.VCR:
return gd_vcr
+def _stabilize_hash_placeholders(cassette_dict: dict[str, Any]) -> dict[str, str]:
+ """Build a rename map for hash placeholders based on export format context.
+
+ During recording, execution/export hashes get session-global numeric indices
+ (EXECUTION_NORMALIZED_3, EXPORT_NORMALIZED_5). These indices shift when test
+ execution order changes, causing spurious cassette diffs.
+
+ This function scans the cassette for export context (POST /export/tabular with
+ a ``format`` field) and returns a mapping from old placeholder names to stable,
+ format-based names (e.g. EXECUTION_NORMALIZED_CSV, EXPORT_NORMALIZED_XLSX).
+
+ Non-export hashes (pure compute results) are re-indexed per-cassette starting
+ from 1.
+ """
+ exec_renames: dict[str, str] = {} # old placeholder → new name
+ export_renames: dict[str, str] = {}
+ format_counts: dict[str, int] = {} # format → count, for dedup
+
+ for interaction in cassette_dict.get("interactions", []):
+ req = interaction["request"]
+ resp = interaction["response"]
+
+ if req.get("method") != "POST":
+ continue
+ uri = req.get("uri", "")
+ if "/export/tabular" not in uri:
+ continue
+
+ body = req.get("body")
+ if not isinstance(body, dict):
+ continue
+ fmt = (body.get("format") or "").upper()
+ if not fmt:
+ continue
+
+ # Track how many exports of each format we've seen
+ format_counts[fmt] = format_counts.get(fmt, 0) + 1
+ suffix = fmt if format_counts[fmt] == 1 else f"{fmt}_{format_counts[fmt]}"
+
+ # Map execution hash placeholder → format name
+ exec_ref = body.get("executionResult")
+ if isinstance(exec_ref, str) and _REINDEX_EXEC_RE.match(exec_ref):
+ exec_renames[exec_ref] = f"{_CANONICAL_EXECUTION_RESULT}_{suffix}"
+
+ # Map export hash placeholder → format name (from response)
+ resp_body = resp.get("body", {}).get("string")
+ if isinstance(resp_body, dict):
+ export_ref = resp_body.get("exportResult")
+ if isinstance(export_ref, str) and _REINDEX_EXPORT_RE.match(export_ref):
+ export_renames[export_ref] = f"{_CANONICAL_EXPORT_RESULT}_{suffix}"
+
+ # Re-index any remaining non-export execution hashes per-cassette
+ all_exec_refs: list[str] = []
+ all_export_refs: list[str] = []
+ for interaction in cassette_dict.get("interactions", []):
+ for part in ("request", "response"):
+ _collect_placeholders(interaction[part], all_exec_refs, all_export_refs)
+
+ idx = 1
+ for ref in dict.fromkeys(all_exec_refs): # preserves order, deduplicates
+ if ref not in exec_renames:
+ exec_renames[ref] = f"{_CANONICAL_EXECUTION_RESULT}_{idx}"
+ idx += 1
+
+ idx = 1
+ for ref in dict.fromkeys(all_export_refs):
+ if ref not in export_renames:
+ export_renames[ref] = f"{_CANONICAL_EXPORT_RESULT}_{idx}"
+ idx += 1
+
+ return {**exec_renames, **export_renames}
+
+
+def _collect_placeholders(obj: Any, exec_refs: list[str], export_refs: list[str]) -> None:
+ """Walk a nested structure and collect all hash placeholder strings."""
+ if isinstance(obj, str):
+ exec_refs.extend(m.group(0) for m in _REINDEX_EXEC_RE.finditer(obj))
+ export_refs.extend(m.group(0) for m in _REINDEX_EXPORT_RE.finditer(obj))
+ elif isinstance(obj, dict):
+ for v in obj.values():
+ _collect_placeholders(v, exec_refs, export_refs)
+ elif isinstance(obj, list):
+ for item in obj:
+ _collect_placeholders(item, exec_refs, export_refs)
+
+
+def _apply_hash_renames(obj: Any, renames: dict[str, str]) -> Any:
+ """Recursively apply placeholder renames across a nested structure."""
+ if isinstance(obj, str):
+ for old, new in renames.items():
+ obj = obj.replace(old, new)
+ return obj
+ if isinstance(obj, dict):
+ return {k: _apply_hash_renames(v, renames) for k, v in obj.items()}
+ if isinstance(obj, list):
+ return [_apply_hash_renames(item, renames) for item in obj]
+ return obj
+
+
class IndentDumper(yaml.SafeDumper):
@typing.no_type_check
def increase_indent(self, flow: bool = False, indentless: bool = False):
@@ -375,6 +481,52 @@ def _sort_groups(parent: ET.Element) -> None:
return text
+# Keys whose array values are returned by the API in non-deterministic order.
+# Only these arrays are sorted during serialization — everything else keeps
+# the server's original order so that tests replaying from cassettes see the
+# same data that was recorded.
+_SORT_SAFE_KEYS: frozenset[str] = frozenset(
+ {
+ # Entity API: dataset reference properties (order varies between environments)
+ "referenceProperties",
+ # Entity API: workspace data filter columns & references
+ "workspaceDataFilterColumns",
+ "workspaceDataFilterReferences",
+ # Dependent entities graph: edge list (set semantics, no inherent order)
+ "edges",
+ # Available assignees: user/group lists (order varies)
+ "userGroups",
+ }
+)
+
+
+def _sort_known_arrays(obj: Any, parent_key: str | None = None) -> Any:
+ """Sort only arrays under known non-deterministic keys.
+
+ Unlike a blanket sort of all complex arrays, this only sorts arrays that
+ are children of keys listed in _SORT_SAFE_KEYS. Everything else is left
+ in the server's original order so cassette replay matches recording.
+
+ Within the sorted scope, recursion sorts nested sub-arrays too (e.g.
+ ``referenceProperties[*].sources``).
+ """
+ if isinstance(obj, dict):
+ return {k: _sort_known_arrays(v, parent_key=k) for k, v in obj.items()}
+ if isinstance(obj, list):
+ if not obj:
+ return obj
+ # Recurse into children first
+ items = [_sort_known_arrays(item, parent_key=parent_key) for item in obj]
+ # Only sort if we are directly under a safe key
+ if parent_key in _SORT_SAFE_KEYS and isinstance(items[0], (dict, list)):
+ try:
+ return sorted(items, key=lambda x: orjson.dumps(x, option=orjson.OPT_SORT_KEYS))
+ except TypeError:
+ return items
+ return items
+ return obj
+
+
class CustomSerializerYaml:
def deserialize(self, cassette_string: str) -> dict[str, Any]:
cassette_dict = yaml.safe_load(cassette_string)
@@ -411,10 +563,18 @@ def serialize(self, cassette_dict: dict[str, Any]) -> str:
interaction["request"]["body"] = request_body
if response_body is not None and response_body["string"] != "":
try:
- interaction["response"]["body"]["string"] = orjson.loads(response_body["string"])
+ parsed = orjson.loads(response_body["string"])
+ interaction["response"]["body"]["string"] = _sort_known_arrays(parsed)
except (orjson.JSONDecodeError, UnicodeDecodeError):
# these exceptions are expected while getting file content
continue
+
+ # Stabilize hash placeholders: rename session-global numeric indices
+ # to format-based names (EXPORT_NORMALIZED_CSV) or per-cassette indices.
+ renames = _stabilize_hash_placeholders(cassette_dict)
+ if renames:
+ cassette_dict = _apply_hash_renames(cassette_dict, renames)
+
return yaml.dump(cassette_dict, Dumper=IndentDumper, sort_keys=True)
@@ -441,6 +601,8 @@ def custom_before_request(request, headers_str: str = HEADERS_STR):
if _normalization_replacements:
decoded = _apply_replacements(decoded)
decoded = _normalize_hashes_in_text(decoded)
+ if decoded.startswith("