@gooddata/sdk-code-schemas 11.43.0-alpha.2 → 11.43.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4939,6 +4939,121 @@ export declare const metadata_v1: {
4939
4939
  type: string;
4940
4940
  };
4941
4941
  };
4942
+ conditional_formatting: {
4943
+ type: string;
4944
+ description: string;
4945
+ additionalProperties: boolean;
4946
+ properties: {
4947
+ version: {
4948
+ type: string;
4949
+ description: string;
4950
+ };
4951
+ enabled: {
4952
+ type: string;
4953
+ description: string;
4954
+ };
4955
+ rules: {
4956
+ type: string;
4957
+ description: string;
4958
+ items: {
4959
+ type: string;
4960
+ additionalProperties: boolean;
4961
+ required: string[];
4962
+ properties: {
4963
+ id: {
4964
+ type: string;
4965
+ description: string;
4966
+ };
4967
+ target: {
4968
+ type: string;
4969
+ description: string;
4970
+ oneOf: ({
4971
+ type: string;
4972
+ additionalProperties: boolean;
4973
+ required: string[];
4974
+ properties: {
4975
+ measure: {
4976
+ type: string;
4977
+ description: string;
4978
+ };
4979
+ attribute?: undefined;
4980
+ };
4981
+ } | {
4982
+ type: string;
4983
+ additionalProperties: boolean;
4984
+ required: string[];
4985
+ properties: {
4986
+ measure?: undefined;
4987
+ attribute: {
4988
+ type: string;
4989
+ description: string;
4990
+ };
4991
+ };
4992
+ })[];
4993
+ };
4994
+ conditions: {
4995
+ type: string;
4996
+ description: string;
4997
+ items: {
4998
+ type: string;
4999
+ additionalProperties: boolean;
5000
+ required: string[];
5001
+ properties: {
5002
+ id: {
5003
+ type: string;
5004
+ };
5005
+ operator: {
5006
+ type: string;
5007
+ enum: string[];
5008
+ };
5009
+ value: {
5010
+ description: string;
5011
+ oneOf: ({
5012
+ properties?: undefined;
5013
+ required?: undefined;
5014
+ additionalProperties?: undefined;
5015
+ type: string;
5016
+ } | {
5017
+ type: string;
5018
+ additionalProperties: boolean;
5019
+ required: string[];
5020
+ properties: {
5021
+ from: {
5022
+ type: string;
5023
+ };
5024
+ to: {
5025
+ type: string;
5026
+ };
5027
+ };
5028
+ })[];
5029
+ };
5030
+ format: {
5031
+ type: string;
5032
+ additionalProperties: boolean;
5033
+ required: string[];
5034
+ properties: {
5035
+ text: {
5036
+ type: string;
5037
+ description: string;
5038
+ };
5039
+ fill: {
5040
+ type: string;
5041
+ description: string;
5042
+ };
5043
+ scope: {
5044
+ type: string;
5045
+ enum: string[];
5046
+ };
5047
+ };
5048
+ };
5049
+ };
5050
+ };
5051
+ };
5052
+ };
5053
+ };
5054
+ };
5055
+ };
5056
+ };
4942
5057
  };
4943
5058
  $defs: {};
4944
5059
  };
@@ -11581,6 +11696,67 @@ declare interface VisualisationConfig {
11581
11696
  enable_accessibility?: boolean;
11582
11697
  line_style_control_metrics?: string[];
11583
11698
  line_style_excluded_metrics?: string[];
11699
+ /**
11700
+ * Conditional formatting rules that color cells or rows based on their values.
11701
+ */
11702
+ conditional_formatting?: {
11703
+ /**
11704
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
11705
+ */
11706
+ version?: string;
11707
+ /**
11708
+ * Master toggle for all conditional formatting rules.
11709
+ */
11710
+ enabled?: boolean;
11711
+ /**
11712
+ * Ordered list of rules; the first matching rule wins.
11713
+ */
11714
+ rules?: {
11715
+ /**
11716
+ * Stable, table-unique rule id.
11717
+ */
11718
+ id: string;
11719
+ /**
11720
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
11721
+ */
11722
+ target: {
11723
+ /**
11724
+ * Local identifier of the targeted measure.
11725
+ */
11726
+ measure: string;
11727
+ } | {
11728
+ /**
11729
+ * Local identifier of the targeted attribute.
11730
+ */
11731
+ attribute: string;
11732
+ };
11733
+ /**
11734
+ * Stacked conditions; the first matching condition wins.
11735
+ */
11736
+ conditions: {
11737
+ id: string;
11738
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
11739
+ /**
11740
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
11741
+ */
11742
+ value?: number | string | {
11743
+ from: number;
11744
+ to: number;
11745
+ };
11746
+ format: {
11747
+ /**
11748
+ * Text color as hex (e.g. #FFFFFF).
11749
+ */
11750
+ text?: string;
11751
+ /**
11752
+ * Background color as hex (e.g. #E54D40).
11753
+ */
11754
+ fill?: string;
11755
+ scope: "cell" | "row";
11756
+ };
11757
+ }[];
11758
+ }[];
11759
+ };
11584
11760
  [k: string]: unknown;
11585
11761
  }
11586
11762
 
@@ -11755,6 +11931,67 @@ declare interface VisualisationConfig1 {
11755
11931
  enable_accessibility?: boolean;
11756
11932
  line_style_control_metrics?: string[];
11757
11933
  line_style_excluded_metrics?: string[];
11934
+ /**
11935
+ * Conditional formatting rules that color cells or rows based on their values.
11936
+ */
11937
+ conditional_formatting?: {
11938
+ /**
11939
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
11940
+ */
11941
+ version?: string;
11942
+ /**
11943
+ * Master toggle for all conditional formatting rules.
11944
+ */
11945
+ enabled?: boolean;
11946
+ /**
11947
+ * Ordered list of rules; the first matching rule wins.
11948
+ */
11949
+ rules?: {
11950
+ /**
11951
+ * Stable, table-unique rule id.
11952
+ */
11953
+ id: string;
11954
+ /**
11955
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
11956
+ */
11957
+ target: {
11958
+ /**
11959
+ * Local identifier of the targeted measure.
11960
+ */
11961
+ measure: string;
11962
+ } | {
11963
+ /**
11964
+ * Local identifier of the targeted attribute.
11965
+ */
11966
+ attribute: string;
11967
+ };
11968
+ /**
11969
+ * Stacked conditions; the first matching condition wins.
11970
+ */
11971
+ conditions: {
11972
+ id: string;
11973
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
11974
+ /**
11975
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
11976
+ */
11977
+ value?: number | string | {
11978
+ from: number;
11979
+ to: number;
11980
+ };
11981
+ format: {
11982
+ /**
11983
+ * Text color as hex (e.g. #FFFFFF).
11984
+ */
11985
+ text?: string;
11986
+ /**
11987
+ * Background color as hex (e.g. #E54D40).
11988
+ */
11989
+ fill?: string;
11990
+ scope: "cell" | "row";
11991
+ };
11992
+ }[];
11993
+ }[];
11994
+ };
11758
11995
  [k: string]: unknown;
11759
11996
  }
11760
11997
 
@@ -11929,6 +12166,67 @@ declare interface VisualisationConfig10 {
11929
12166
  enable_accessibility?: boolean;
11930
12167
  line_style_control_metrics?: string[];
11931
12168
  line_style_excluded_metrics?: string[];
12169
+ /**
12170
+ * Conditional formatting rules that color cells or rows based on their values.
12171
+ */
12172
+ conditional_formatting?: {
12173
+ /**
12174
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
12175
+ */
12176
+ version?: string;
12177
+ /**
12178
+ * Master toggle for all conditional formatting rules.
12179
+ */
12180
+ enabled?: boolean;
12181
+ /**
12182
+ * Ordered list of rules; the first matching rule wins.
12183
+ */
12184
+ rules?: {
12185
+ /**
12186
+ * Stable, table-unique rule id.
12187
+ */
12188
+ id: string;
12189
+ /**
12190
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
12191
+ */
12192
+ target: {
12193
+ /**
12194
+ * Local identifier of the targeted measure.
12195
+ */
12196
+ measure: string;
12197
+ } | {
12198
+ /**
12199
+ * Local identifier of the targeted attribute.
12200
+ */
12201
+ attribute: string;
12202
+ };
12203
+ /**
12204
+ * Stacked conditions; the first matching condition wins.
12205
+ */
12206
+ conditions: {
12207
+ id: string;
12208
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
12209
+ /**
12210
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
12211
+ */
12212
+ value?: number | string | {
12213
+ from: number;
12214
+ to: number;
12215
+ };
12216
+ format: {
12217
+ /**
12218
+ * Text color as hex (e.g. #FFFFFF).
12219
+ */
12220
+ text?: string;
12221
+ /**
12222
+ * Background color as hex (e.g. #E54D40).
12223
+ */
12224
+ fill?: string;
12225
+ scope: "cell" | "row";
12226
+ };
12227
+ }[];
12228
+ }[];
12229
+ };
11932
12230
  [k: string]: unknown;
11933
12231
  }
11934
12232
 
@@ -12103,6 +12401,67 @@ declare interface VisualisationConfig11 {
12103
12401
  enable_accessibility?: boolean;
12104
12402
  line_style_control_metrics?: string[];
12105
12403
  line_style_excluded_metrics?: string[];
12404
+ /**
12405
+ * Conditional formatting rules that color cells or rows based on their values.
12406
+ */
12407
+ conditional_formatting?: {
12408
+ /**
12409
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
12410
+ */
12411
+ version?: string;
12412
+ /**
12413
+ * Master toggle for all conditional formatting rules.
12414
+ */
12415
+ enabled?: boolean;
12416
+ /**
12417
+ * Ordered list of rules; the first matching rule wins.
12418
+ */
12419
+ rules?: {
12420
+ /**
12421
+ * Stable, table-unique rule id.
12422
+ */
12423
+ id: string;
12424
+ /**
12425
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
12426
+ */
12427
+ target: {
12428
+ /**
12429
+ * Local identifier of the targeted measure.
12430
+ */
12431
+ measure: string;
12432
+ } | {
12433
+ /**
12434
+ * Local identifier of the targeted attribute.
12435
+ */
12436
+ attribute: string;
12437
+ };
12438
+ /**
12439
+ * Stacked conditions; the first matching condition wins.
12440
+ */
12441
+ conditions: {
12442
+ id: string;
12443
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
12444
+ /**
12445
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
12446
+ */
12447
+ value?: number | string | {
12448
+ from: number;
12449
+ to: number;
12450
+ };
12451
+ format: {
12452
+ /**
12453
+ * Text color as hex (e.g. #FFFFFF).
12454
+ */
12455
+ text?: string;
12456
+ /**
12457
+ * Background color as hex (e.g. #E54D40).
12458
+ */
12459
+ fill?: string;
12460
+ scope: "cell" | "row";
12461
+ };
12462
+ }[];
12463
+ }[];
12464
+ };
12106
12465
  [k: string]: unknown;
12107
12466
  }
12108
12467
 
@@ -12277,6 +12636,67 @@ declare interface VisualisationConfig12 {
12277
12636
  enable_accessibility?: boolean;
12278
12637
  line_style_control_metrics?: string[];
12279
12638
  line_style_excluded_metrics?: string[];
12639
+ /**
12640
+ * Conditional formatting rules that color cells or rows based on their values.
12641
+ */
12642
+ conditional_formatting?: {
12643
+ /**
12644
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
12645
+ */
12646
+ version?: string;
12647
+ /**
12648
+ * Master toggle for all conditional formatting rules.
12649
+ */
12650
+ enabled?: boolean;
12651
+ /**
12652
+ * Ordered list of rules; the first matching rule wins.
12653
+ */
12654
+ rules?: {
12655
+ /**
12656
+ * Stable, table-unique rule id.
12657
+ */
12658
+ id: string;
12659
+ /**
12660
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
12661
+ */
12662
+ target: {
12663
+ /**
12664
+ * Local identifier of the targeted measure.
12665
+ */
12666
+ measure: string;
12667
+ } | {
12668
+ /**
12669
+ * Local identifier of the targeted attribute.
12670
+ */
12671
+ attribute: string;
12672
+ };
12673
+ /**
12674
+ * Stacked conditions; the first matching condition wins.
12675
+ */
12676
+ conditions: {
12677
+ id: string;
12678
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
12679
+ /**
12680
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
12681
+ */
12682
+ value?: number | string | {
12683
+ from: number;
12684
+ to: number;
12685
+ };
12686
+ format: {
12687
+ /**
12688
+ * Text color as hex (e.g. #FFFFFF).
12689
+ */
12690
+ text?: string;
12691
+ /**
12692
+ * Background color as hex (e.g. #E54D40).
12693
+ */
12694
+ fill?: string;
12695
+ scope: "cell" | "row";
12696
+ };
12697
+ }[];
12698
+ }[];
12699
+ };
12280
12700
  [k: string]: unknown;
12281
12701
  }
12282
12702
 
@@ -12451,6 +12871,67 @@ declare interface VisualisationConfig13 {
12451
12871
  enable_accessibility?: boolean;
12452
12872
  line_style_control_metrics?: string[];
12453
12873
  line_style_excluded_metrics?: string[];
12874
+ /**
12875
+ * Conditional formatting rules that color cells or rows based on their values.
12876
+ */
12877
+ conditional_formatting?: {
12878
+ /**
12879
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
12880
+ */
12881
+ version?: string;
12882
+ /**
12883
+ * Master toggle for all conditional formatting rules.
12884
+ */
12885
+ enabled?: boolean;
12886
+ /**
12887
+ * Ordered list of rules; the first matching rule wins.
12888
+ */
12889
+ rules?: {
12890
+ /**
12891
+ * Stable, table-unique rule id.
12892
+ */
12893
+ id: string;
12894
+ /**
12895
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
12896
+ */
12897
+ target: {
12898
+ /**
12899
+ * Local identifier of the targeted measure.
12900
+ */
12901
+ measure: string;
12902
+ } | {
12903
+ /**
12904
+ * Local identifier of the targeted attribute.
12905
+ */
12906
+ attribute: string;
12907
+ };
12908
+ /**
12909
+ * Stacked conditions; the first matching condition wins.
12910
+ */
12911
+ conditions: {
12912
+ id: string;
12913
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
12914
+ /**
12915
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
12916
+ */
12917
+ value?: number | string | {
12918
+ from: number;
12919
+ to: number;
12920
+ };
12921
+ format: {
12922
+ /**
12923
+ * Text color as hex (e.g. #FFFFFF).
12924
+ */
12925
+ text?: string;
12926
+ /**
12927
+ * Background color as hex (e.g. #E54D40).
12928
+ */
12929
+ fill?: string;
12930
+ scope: "cell" | "row";
12931
+ };
12932
+ }[];
12933
+ }[];
12934
+ };
12454
12935
  [k: string]: unknown;
12455
12936
  }
12456
12937
 
@@ -12625,6 +13106,67 @@ declare interface VisualisationConfig14 {
12625
13106
  enable_accessibility?: boolean;
12626
13107
  line_style_control_metrics?: string[];
12627
13108
  line_style_excluded_metrics?: string[];
13109
+ /**
13110
+ * Conditional formatting rules that color cells or rows based on their values.
13111
+ */
13112
+ conditional_formatting?: {
13113
+ /**
13114
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
13115
+ */
13116
+ version?: string;
13117
+ /**
13118
+ * Master toggle for all conditional formatting rules.
13119
+ */
13120
+ enabled?: boolean;
13121
+ /**
13122
+ * Ordered list of rules; the first matching rule wins.
13123
+ */
13124
+ rules?: {
13125
+ /**
13126
+ * Stable, table-unique rule id.
13127
+ */
13128
+ id: string;
13129
+ /**
13130
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
13131
+ */
13132
+ target: {
13133
+ /**
13134
+ * Local identifier of the targeted measure.
13135
+ */
13136
+ measure: string;
13137
+ } | {
13138
+ /**
13139
+ * Local identifier of the targeted attribute.
13140
+ */
13141
+ attribute: string;
13142
+ };
13143
+ /**
13144
+ * Stacked conditions; the first matching condition wins.
13145
+ */
13146
+ conditions: {
13147
+ id: string;
13148
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
13149
+ /**
13150
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
13151
+ */
13152
+ value?: number | string | {
13153
+ from: number;
13154
+ to: number;
13155
+ };
13156
+ format: {
13157
+ /**
13158
+ * Text color as hex (e.g. #FFFFFF).
13159
+ */
13160
+ text?: string;
13161
+ /**
13162
+ * Background color as hex (e.g. #E54D40).
13163
+ */
13164
+ fill?: string;
13165
+ scope: "cell" | "row";
13166
+ };
13167
+ }[];
13168
+ }[];
13169
+ };
12628
13170
  [k: string]: unknown;
12629
13171
  }
12630
13172
 
@@ -12799,6 +13341,67 @@ declare interface VisualisationConfig15 {
12799
13341
  enable_accessibility?: boolean;
12800
13342
  line_style_control_metrics?: string[];
12801
13343
  line_style_excluded_metrics?: string[];
13344
+ /**
13345
+ * Conditional formatting rules that color cells or rows based on their values.
13346
+ */
13347
+ conditional_formatting?: {
13348
+ /**
13349
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
13350
+ */
13351
+ version?: string;
13352
+ /**
13353
+ * Master toggle for all conditional formatting rules.
13354
+ */
13355
+ enabled?: boolean;
13356
+ /**
13357
+ * Ordered list of rules; the first matching rule wins.
13358
+ */
13359
+ rules?: {
13360
+ /**
13361
+ * Stable, table-unique rule id.
13362
+ */
13363
+ id: string;
13364
+ /**
13365
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
13366
+ */
13367
+ target: {
13368
+ /**
13369
+ * Local identifier of the targeted measure.
13370
+ */
13371
+ measure: string;
13372
+ } | {
13373
+ /**
13374
+ * Local identifier of the targeted attribute.
13375
+ */
13376
+ attribute: string;
13377
+ };
13378
+ /**
13379
+ * Stacked conditions; the first matching condition wins.
13380
+ */
13381
+ conditions: {
13382
+ id: string;
13383
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
13384
+ /**
13385
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
13386
+ */
13387
+ value?: number | string | {
13388
+ from: number;
13389
+ to: number;
13390
+ };
13391
+ format: {
13392
+ /**
13393
+ * Text color as hex (e.g. #FFFFFF).
13394
+ */
13395
+ text?: string;
13396
+ /**
13397
+ * Background color as hex (e.g. #E54D40).
13398
+ */
13399
+ fill?: string;
13400
+ scope: "cell" | "row";
13401
+ };
13402
+ }[];
13403
+ }[];
13404
+ };
12802
13405
  [k: string]: unknown;
12803
13406
  }
12804
13407
 
@@ -12973,6 +13576,67 @@ declare interface VisualisationConfig16 {
12973
13576
  enable_accessibility?: boolean;
12974
13577
  line_style_control_metrics?: string[];
12975
13578
  line_style_excluded_metrics?: string[];
13579
+ /**
13580
+ * Conditional formatting rules that color cells or rows based on their values.
13581
+ */
13582
+ conditional_formatting?: {
13583
+ /**
13584
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
13585
+ */
13586
+ version?: string;
13587
+ /**
13588
+ * Master toggle for all conditional formatting rules.
13589
+ */
13590
+ enabled?: boolean;
13591
+ /**
13592
+ * Ordered list of rules; the first matching rule wins.
13593
+ */
13594
+ rules?: {
13595
+ /**
13596
+ * Stable, table-unique rule id.
13597
+ */
13598
+ id: string;
13599
+ /**
13600
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
13601
+ */
13602
+ target: {
13603
+ /**
13604
+ * Local identifier of the targeted measure.
13605
+ */
13606
+ measure: string;
13607
+ } | {
13608
+ /**
13609
+ * Local identifier of the targeted attribute.
13610
+ */
13611
+ attribute: string;
13612
+ };
13613
+ /**
13614
+ * Stacked conditions; the first matching condition wins.
13615
+ */
13616
+ conditions: {
13617
+ id: string;
13618
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
13619
+ /**
13620
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
13621
+ */
13622
+ value?: number | string | {
13623
+ from: number;
13624
+ to: number;
13625
+ };
13626
+ format: {
13627
+ /**
13628
+ * Text color as hex (e.g. #FFFFFF).
13629
+ */
13630
+ text?: string;
13631
+ /**
13632
+ * Background color as hex (e.g. #E54D40).
13633
+ */
13634
+ fill?: string;
13635
+ scope: "cell" | "row";
13636
+ };
13637
+ }[];
13638
+ }[];
13639
+ };
12976
13640
  [k: string]: unknown;
12977
13641
  }
12978
13642
 
@@ -13147,6 +13811,67 @@ declare interface VisualisationConfig17 {
13147
13811
  enable_accessibility?: boolean;
13148
13812
  line_style_control_metrics?: string[];
13149
13813
  line_style_excluded_metrics?: string[];
13814
+ /**
13815
+ * Conditional formatting rules that color cells or rows based on their values.
13816
+ */
13817
+ conditional_formatting?: {
13818
+ /**
13819
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
13820
+ */
13821
+ version?: string;
13822
+ /**
13823
+ * Master toggle for all conditional formatting rules.
13824
+ */
13825
+ enabled?: boolean;
13826
+ /**
13827
+ * Ordered list of rules; the first matching rule wins.
13828
+ */
13829
+ rules?: {
13830
+ /**
13831
+ * Stable, table-unique rule id.
13832
+ */
13833
+ id: string;
13834
+ /**
13835
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
13836
+ */
13837
+ target: {
13838
+ /**
13839
+ * Local identifier of the targeted measure.
13840
+ */
13841
+ measure: string;
13842
+ } | {
13843
+ /**
13844
+ * Local identifier of the targeted attribute.
13845
+ */
13846
+ attribute: string;
13847
+ };
13848
+ /**
13849
+ * Stacked conditions; the first matching condition wins.
13850
+ */
13851
+ conditions: {
13852
+ id: string;
13853
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
13854
+ /**
13855
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
13856
+ */
13857
+ value?: number | string | {
13858
+ from: number;
13859
+ to: number;
13860
+ };
13861
+ format: {
13862
+ /**
13863
+ * Text color as hex (e.g. #FFFFFF).
13864
+ */
13865
+ text?: string;
13866
+ /**
13867
+ * Background color as hex (e.g. #E54D40).
13868
+ */
13869
+ fill?: string;
13870
+ scope: "cell" | "row";
13871
+ };
13872
+ }[];
13873
+ }[];
13874
+ };
13150
13875
  [k: string]: unknown;
13151
13876
  }
13152
13877
 
@@ -13321,6 +14046,67 @@ declare interface VisualisationConfig18 {
13321
14046
  enable_accessibility?: boolean;
13322
14047
  line_style_control_metrics?: string[];
13323
14048
  line_style_excluded_metrics?: string[];
14049
+ /**
14050
+ * Conditional formatting rules that color cells or rows based on their values.
14051
+ */
14052
+ conditional_formatting?: {
14053
+ /**
14054
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
14055
+ */
14056
+ version?: string;
14057
+ /**
14058
+ * Master toggle for all conditional formatting rules.
14059
+ */
14060
+ enabled?: boolean;
14061
+ /**
14062
+ * Ordered list of rules; the first matching rule wins.
14063
+ */
14064
+ rules?: {
14065
+ /**
14066
+ * Stable, table-unique rule id.
14067
+ */
14068
+ id: string;
14069
+ /**
14070
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
14071
+ */
14072
+ target: {
14073
+ /**
14074
+ * Local identifier of the targeted measure.
14075
+ */
14076
+ measure: string;
14077
+ } | {
14078
+ /**
14079
+ * Local identifier of the targeted attribute.
14080
+ */
14081
+ attribute: string;
14082
+ };
14083
+ /**
14084
+ * Stacked conditions; the first matching condition wins.
14085
+ */
14086
+ conditions: {
14087
+ id: string;
14088
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
14089
+ /**
14090
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
14091
+ */
14092
+ value?: number | string | {
14093
+ from: number;
14094
+ to: number;
14095
+ };
14096
+ format: {
14097
+ /**
14098
+ * Text color as hex (e.g. #FFFFFF).
14099
+ */
14100
+ text?: string;
14101
+ /**
14102
+ * Background color as hex (e.g. #E54D40).
14103
+ */
14104
+ fill?: string;
14105
+ scope: "cell" | "row";
14106
+ };
14107
+ }[];
14108
+ }[];
14109
+ };
13324
14110
  [k: string]: unknown;
13325
14111
  }
13326
14112
 
@@ -13495,6 +14281,67 @@ declare interface VisualisationConfig19 {
13495
14281
  enable_accessibility?: boolean;
13496
14282
  line_style_control_metrics?: string[];
13497
14283
  line_style_excluded_metrics?: string[];
14284
+ /**
14285
+ * Conditional formatting rules that color cells or rows based on their values.
14286
+ */
14287
+ conditional_formatting?: {
14288
+ /**
14289
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
14290
+ */
14291
+ version?: string;
14292
+ /**
14293
+ * Master toggle for all conditional formatting rules.
14294
+ */
14295
+ enabled?: boolean;
14296
+ /**
14297
+ * Ordered list of rules; the first matching rule wins.
14298
+ */
14299
+ rules?: {
14300
+ /**
14301
+ * Stable, table-unique rule id.
14302
+ */
14303
+ id: string;
14304
+ /**
14305
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
14306
+ */
14307
+ target: {
14308
+ /**
14309
+ * Local identifier of the targeted measure.
14310
+ */
14311
+ measure: string;
14312
+ } | {
14313
+ /**
14314
+ * Local identifier of the targeted attribute.
14315
+ */
14316
+ attribute: string;
14317
+ };
14318
+ /**
14319
+ * Stacked conditions; the first matching condition wins.
14320
+ */
14321
+ conditions: {
14322
+ id: string;
14323
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
14324
+ /**
14325
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
14326
+ */
14327
+ value?: number | string | {
14328
+ from: number;
14329
+ to: number;
14330
+ };
14331
+ format: {
14332
+ /**
14333
+ * Text color as hex (e.g. #FFFFFF).
14334
+ */
14335
+ text?: string;
14336
+ /**
14337
+ * Background color as hex (e.g. #E54D40).
14338
+ */
14339
+ fill?: string;
14340
+ scope: "cell" | "row";
14341
+ };
14342
+ }[];
14343
+ }[];
14344
+ };
13498
14345
  [k: string]: unknown;
13499
14346
  }
13500
14347
 
@@ -13669,6 +14516,67 @@ declare interface VisualisationConfig2 {
13669
14516
  enable_accessibility?: boolean;
13670
14517
  line_style_control_metrics?: string[];
13671
14518
  line_style_excluded_metrics?: string[];
14519
+ /**
14520
+ * Conditional formatting rules that color cells or rows based on their values.
14521
+ */
14522
+ conditional_formatting?: {
14523
+ /**
14524
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
14525
+ */
14526
+ version?: string;
14527
+ /**
14528
+ * Master toggle for all conditional formatting rules.
14529
+ */
14530
+ enabled?: boolean;
14531
+ /**
14532
+ * Ordered list of rules; the first matching rule wins.
14533
+ */
14534
+ rules?: {
14535
+ /**
14536
+ * Stable, table-unique rule id.
14537
+ */
14538
+ id: string;
14539
+ /**
14540
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
14541
+ */
14542
+ target: {
14543
+ /**
14544
+ * Local identifier of the targeted measure.
14545
+ */
14546
+ measure: string;
14547
+ } | {
14548
+ /**
14549
+ * Local identifier of the targeted attribute.
14550
+ */
14551
+ attribute: string;
14552
+ };
14553
+ /**
14554
+ * Stacked conditions; the first matching condition wins.
14555
+ */
14556
+ conditions: {
14557
+ id: string;
14558
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
14559
+ /**
14560
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
14561
+ */
14562
+ value?: number | string | {
14563
+ from: number;
14564
+ to: number;
14565
+ };
14566
+ format: {
14567
+ /**
14568
+ * Text color as hex (e.g. #FFFFFF).
14569
+ */
14570
+ text?: string;
14571
+ /**
14572
+ * Background color as hex (e.g. #E54D40).
14573
+ */
14574
+ fill?: string;
14575
+ scope: "cell" | "row";
14576
+ };
14577
+ }[];
14578
+ }[];
14579
+ };
13672
14580
  [k: string]: unknown;
13673
14581
  }
13674
14582
 
@@ -13843,6 +14751,67 @@ declare interface VisualisationConfig20 {
13843
14751
  enable_accessibility?: boolean;
13844
14752
  line_style_control_metrics?: string[];
13845
14753
  line_style_excluded_metrics?: string[];
14754
+ /**
14755
+ * Conditional formatting rules that color cells or rows based on their values.
14756
+ */
14757
+ conditional_formatting?: {
14758
+ /**
14759
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
14760
+ */
14761
+ version?: string;
14762
+ /**
14763
+ * Master toggle for all conditional formatting rules.
14764
+ */
14765
+ enabled?: boolean;
14766
+ /**
14767
+ * Ordered list of rules; the first matching rule wins.
14768
+ */
14769
+ rules?: {
14770
+ /**
14771
+ * Stable, table-unique rule id.
14772
+ */
14773
+ id: string;
14774
+ /**
14775
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
14776
+ */
14777
+ target: {
14778
+ /**
14779
+ * Local identifier of the targeted measure.
14780
+ */
14781
+ measure: string;
14782
+ } | {
14783
+ /**
14784
+ * Local identifier of the targeted attribute.
14785
+ */
14786
+ attribute: string;
14787
+ };
14788
+ /**
14789
+ * Stacked conditions; the first matching condition wins.
14790
+ */
14791
+ conditions: {
14792
+ id: string;
14793
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
14794
+ /**
14795
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
14796
+ */
14797
+ value?: number | string | {
14798
+ from: number;
14799
+ to: number;
14800
+ };
14801
+ format: {
14802
+ /**
14803
+ * Text color as hex (e.g. #FFFFFF).
14804
+ */
14805
+ text?: string;
14806
+ /**
14807
+ * Background color as hex (e.g. #E54D40).
14808
+ */
14809
+ fill?: string;
14810
+ scope: "cell" | "row";
14811
+ };
14812
+ }[];
14813
+ }[];
14814
+ };
13846
14815
  [k: string]: unknown;
13847
14816
  }
13848
14817
 
@@ -14017,6 +14986,67 @@ declare interface VisualisationConfig21 {
14017
14986
  enable_accessibility?: boolean;
14018
14987
  line_style_control_metrics?: string[];
14019
14988
  line_style_excluded_metrics?: string[];
14989
+ /**
14990
+ * Conditional formatting rules that color cells or rows based on their values.
14991
+ */
14992
+ conditional_formatting?: {
14993
+ /**
14994
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
14995
+ */
14996
+ version?: string;
14997
+ /**
14998
+ * Master toggle for all conditional formatting rules.
14999
+ */
15000
+ enabled?: boolean;
15001
+ /**
15002
+ * Ordered list of rules; the first matching rule wins.
15003
+ */
15004
+ rules?: {
15005
+ /**
15006
+ * Stable, table-unique rule id.
15007
+ */
15008
+ id: string;
15009
+ /**
15010
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
15011
+ */
15012
+ target: {
15013
+ /**
15014
+ * Local identifier of the targeted measure.
15015
+ */
15016
+ measure: string;
15017
+ } | {
15018
+ /**
15019
+ * Local identifier of the targeted attribute.
15020
+ */
15021
+ attribute: string;
15022
+ };
15023
+ /**
15024
+ * Stacked conditions; the first matching condition wins.
15025
+ */
15026
+ conditions: {
15027
+ id: string;
15028
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
15029
+ /**
15030
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
15031
+ */
15032
+ value?: number | string | {
15033
+ from: number;
15034
+ to: number;
15035
+ };
15036
+ format: {
15037
+ /**
15038
+ * Text color as hex (e.g. #FFFFFF).
15039
+ */
15040
+ text?: string;
15041
+ /**
15042
+ * Background color as hex (e.g. #E54D40).
15043
+ */
15044
+ fill?: string;
15045
+ scope: "cell" | "row";
15046
+ };
15047
+ }[];
15048
+ }[];
15049
+ };
14020
15050
  [k: string]: unknown;
14021
15051
  }
14022
15052
 
@@ -14191,6 +15221,67 @@ declare interface VisualisationConfig22 {
14191
15221
  enable_accessibility?: boolean;
14192
15222
  line_style_control_metrics?: string[];
14193
15223
  line_style_excluded_metrics?: string[];
15224
+ /**
15225
+ * Conditional formatting rules that color cells or rows based on their values.
15226
+ */
15227
+ conditional_formatting?: {
15228
+ /**
15229
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
15230
+ */
15231
+ version?: string;
15232
+ /**
15233
+ * Master toggle for all conditional formatting rules.
15234
+ */
15235
+ enabled?: boolean;
15236
+ /**
15237
+ * Ordered list of rules; the first matching rule wins.
15238
+ */
15239
+ rules?: {
15240
+ /**
15241
+ * Stable, table-unique rule id.
15242
+ */
15243
+ id: string;
15244
+ /**
15245
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
15246
+ */
15247
+ target: {
15248
+ /**
15249
+ * Local identifier of the targeted measure.
15250
+ */
15251
+ measure: string;
15252
+ } | {
15253
+ /**
15254
+ * Local identifier of the targeted attribute.
15255
+ */
15256
+ attribute: string;
15257
+ };
15258
+ /**
15259
+ * Stacked conditions; the first matching condition wins.
15260
+ */
15261
+ conditions: {
15262
+ id: string;
15263
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
15264
+ /**
15265
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
15266
+ */
15267
+ value?: number | string | {
15268
+ from: number;
15269
+ to: number;
15270
+ };
15271
+ format: {
15272
+ /**
15273
+ * Text color as hex (e.g. #FFFFFF).
15274
+ */
15275
+ text?: string;
15276
+ /**
15277
+ * Background color as hex (e.g. #E54D40).
15278
+ */
15279
+ fill?: string;
15280
+ scope: "cell" | "row";
15281
+ };
15282
+ }[];
15283
+ }[];
15284
+ };
14194
15285
  [k: string]: unknown;
14195
15286
  }
14196
15287
 
@@ -14365,6 +15456,67 @@ declare interface VisualisationConfig3 {
14365
15456
  enable_accessibility?: boolean;
14366
15457
  line_style_control_metrics?: string[];
14367
15458
  line_style_excluded_metrics?: string[];
15459
+ /**
15460
+ * Conditional formatting rules that color cells or rows based on their values.
15461
+ */
15462
+ conditional_formatting?: {
15463
+ /**
15464
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
15465
+ */
15466
+ version?: string;
15467
+ /**
15468
+ * Master toggle for all conditional formatting rules.
15469
+ */
15470
+ enabled?: boolean;
15471
+ /**
15472
+ * Ordered list of rules; the first matching rule wins.
15473
+ */
15474
+ rules?: {
15475
+ /**
15476
+ * Stable, table-unique rule id.
15477
+ */
15478
+ id: string;
15479
+ /**
15480
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
15481
+ */
15482
+ target: {
15483
+ /**
15484
+ * Local identifier of the targeted measure.
15485
+ */
15486
+ measure: string;
15487
+ } | {
15488
+ /**
15489
+ * Local identifier of the targeted attribute.
15490
+ */
15491
+ attribute: string;
15492
+ };
15493
+ /**
15494
+ * Stacked conditions; the first matching condition wins.
15495
+ */
15496
+ conditions: {
15497
+ id: string;
15498
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
15499
+ /**
15500
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
15501
+ */
15502
+ value?: number | string | {
15503
+ from: number;
15504
+ to: number;
15505
+ };
15506
+ format: {
15507
+ /**
15508
+ * Text color as hex (e.g. #FFFFFF).
15509
+ */
15510
+ text?: string;
15511
+ /**
15512
+ * Background color as hex (e.g. #E54D40).
15513
+ */
15514
+ fill?: string;
15515
+ scope: "cell" | "row";
15516
+ };
15517
+ }[];
15518
+ }[];
15519
+ };
14368
15520
  [k: string]: unknown;
14369
15521
  }
14370
15522
 
@@ -14539,6 +15691,67 @@ declare interface VisualisationConfig4 {
14539
15691
  enable_accessibility?: boolean;
14540
15692
  line_style_control_metrics?: string[];
14541
15693
  line_style_excluded_metrics?: string[];
15694
+ /**
15695
+ * Conditional formatting rules that color cells or rows based on their values.
15696
+ */
15697
+ conditional_formatting?: {
15698
+ /**
15699
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
15700
+ */
15701
+ version?: string;
15702
+ /**
15703
+ * Master toggle for all conditional formatting rules.
15704
+ */
15705
+ enabled?: boolean;
15706
+ /**
15707
+ * Ordered list of rules; the first matching rule wins.
15708
+ */
15709
+ rules?: {
15710
+ /**
15711
+ * Stable, table-unique rule id.
15712
+ */
15713
+ id: string;
15714
+ /**
15715
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
15716
+ */
15717
+ target: {
15718
+ /**
15719
+ * Local identifier of the targeted measure.
15720
+ */
15721
+ measure: string;
15722
+ } | {
15723
+ /**
15724
+ * Local identifier of the targeted attribute.
15725
+ */
15726
+ attribute: string;
15727
+ };
15728
+ /**
15729
+ * Stacked conditions; the first matching condition wins.
15730
+ */
15731
+ conditions: {
15732
+ id: string;
15733
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
15734
+ /**
15735
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
15736
+ */
15737
+ value?: number | string | {
15738
+ from: number;
15739
+ to: number;
15740
+ };
15741
+ format: {
15742
+ /**
15743
+ * Text color as hex (e.g. #FFFFFF).
15744
+ */
15745
+ text?: string;
15746
+ /**
15747
+ * Background color as hex (e.g. #E54D40).
15748
+ */
15749
+ fill?: string;
15750
+ scope: "cell" | "row";
15751
+ };
15752
+ }[];
15753
+ }[];
15754
+ };
14542
15755
  [k: string]: unknown;
14543
15756
  }
14544
15757
 
@@ -14713,6 +15926,67 @@ declare interface VisualisationConfig5 {
14713
15926
  enable_accessibility?: boolean;
14714
15927
  line_style_control_metrics?: string[];
14715
15928
  line_style_excluded_metrics?: string[];
15929
+ /**
15930
+ * Conditional formatting rules that color cells or rows based on their values.
15931
+ */
15932
+ conditional_formatting?: {
15933
+ /**
15934
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
15935
+ */
15936
+ version?: string;
15937
+ /**
15938
+ * Master toggle for all conditional formatting rules.
15939
+ */
15940
+ enabled?: boolean;
15941
+ /**
15942
+ * Ordered list of rules; the first matching rule wins.
15943
+ */
15944
+ rules?: {
15945
+ /**
15946
+ * Stable, table-unique rule id.
15947
+ */
15948
+ id: string;
15949
+ /**
15950
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
15951
+ */
15952
+ target: {
15953
+ /**
15954
+ * Local identifier of the targeted measure.
15955
+ */
15956
+ measure: string;
15957
+ } | {
15958
+ /**
15959
+ * Local identifier of the targeted attribute.
15960
+ */
15961
+ attribute: string;
15962
+ };
15963
+ /**
15964
+ * Stacked conditions; the first matching condition wins.
15965
+ */
15966
+ conditions: {
15967
+ id: string;
15968
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
15969
+ /**
15970
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
15971
+ */
15972
+ value?: number | string | {
15973
+ from: number;
15974
+ to: number;
15975
+ };
15976
+ format: {
15977
+ /**
15978
+ * Text color as hex (e.g. #FFFFFF).
15979
+ */
15980
+ text?: string;
15981
+ /**
15982
+ * Background color as hex (e.g. #E54D40).
15983
+ */
15984
+ fill?: string;
15985
+ scope: "cell" | "row";
15986
+ };
15987
+ }[];
15988
+ }[];
15989
+ };
14716
15990
  [k: string]: unknown;
14717
15991
  }
14718
15992
 
@@ -14887,6 +16161,67 @@ declare interface VisualisationConfig6 {
14887
16161
  enable_accessibility?: boolean;
14888
16162
  line_style_control_metrics?: string[];
14889
16163
  line_style_excluded_metrics?: string[];
16164
+ /**
16165
+ * Conditional formatting rules that color cells or rows based on their values.
16166
+ */
16167
+ conditional_formatting?: {
16168
+ /**
16169
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
16170
+ */
16171
+ version?: string;
16172
+ /**
16173
+ * Master toggle for all conditional formatting rules.
16174
+ */
16175
+ enabled?: boolean;
16176
+ /**
16177
+ * Ordered list of rules; the first matching rule wins.
16178
+ */
16179
+ rules?: {
16180
+ /**
16181
+ * Stable, table-unique rule id.
16182
+ */
16183
+ id: string;
16184
+ /**
16185
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
16186
+ */
16187
+ target: {
16188
+ /**
16189
+ * Local identifier of the targeted measure.
16190
+ */
16191
+ measure: string;
16192
+ } | {
16193
+ /**
16194
+ * Local identifier of the targeted attribute.
16195
+ */
16196
+ attribute: string;
16197
+ };
16198
+ /**
16199
+ * Stacked conditions; the first matching condition wins.
16200
+ */
16201
+ conditions: {
16202
+ id: string;
16203
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
16204
+ /**
16205
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
16206
+ */
16207
+ value?: number | string | {
16208
+ from: number;
16209
+ to: number;
16210
+ };
16211
+ format: {
16212
+ /**
16213
+ * Text color as hex (e.g. #FFFFFF).
16214
+ */
16215
+ text?: string;
16216
+ /**
16217
+ * Background color as hex (e.g. #E54D40).
16218
+ */
16219
+ fill?: string;
16220
+ scope: "cell" | "row";
16221
+ };
16222
+ }[];
16223
+ }[];
16224
+ };
14890
16225
  [k: string]: unknown;
14891
16226
  }
14892
16227
 
@@ -15061,6 +16396,67 @@ declare interface VisualisationConfig7 {
15061
16396
  enable_accessibility?: boolean;
15062
16397
  line_style_control_metrics?: string[];
15063
16398
  line_style_excluded_metrics?: string[];
16399
+ /**
16400
+ * Conditional formatting rules that color cells or rows based on their values.
16401
+ */
16402
+ conditional_formatting?: {
16403
+ /**
16404
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
16405
+ */
16406
+ version?: string;
16407
+ /**
16408
+ * Master toggle for all conditional formatting rules.
16409
+ */
16410
+ enabled?: boolean;
16411
+ /**
16412
+ * Ordered list of rules; the first matching rule wins.
16413
+ */
16414
+ rules?: {
16415
+ /**
16416
+ * Stable, table-unique rule id.
16417
+ */
16418
+ id: string;
16419
+ /**
16420
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
16421
+ */
16422
+ target: {
16423
+ /**
16424
+ * Local identifier of the targeted measure.
16425
+ */
16426
+ measure: string;
16427
+ } | {
16428
+ /**
16429
+ * Local identifier of the targeted attribute.
16430
+ */
16431
+ attribute: string;
16432
+ };
16433
+ /**
16434
+ * Stacked conditions; the first matching condition wins.
16435
+ */
16436
+ conditions: {
16437
+ id: string;
16438
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
16439
+ /**
16440
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
16441
+ */
16442
+ value?: number | string | {
16443
+ from: number;
16444
+ to: number;
16445
+ };
16446
+ format: {
16447
+ /**
16448
+ * Text color as hex (e.g. #FFFFFF).
16449
+ */
16450
+ text?: string;
16451
+ /**
16452
+ * Background color as hex (e.g. #E54D40).
16453
+ */
16454
+ fill?: string;
16455
+ scope: "cell" | "row";
16456
+ };
16457
+ }[];
16458
+ }[];
16459
+ };
15064
16460
  [k: string]: unknown;
15065
16461
  }
15066
16462
 
@@ -15235,6 +16631,67 @@ declare interface VisualisationConfig8 {
15235
16631
  enable_accessibility?: boolean;
15236
16632
  line_style_control_metrics?: string[];
15237
16633
  line_style_excluded_metrics?: string[];
16634
+ /**
16635
+ * Conditional formatting rules that color cells or rows based on their values.
16636
+ */
16637
+ conditional_formatting?: {
16638
+ /**
16639
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
16640
+ */
16641
+ version?: string;
16642
+ /**
16643
+ * Master toggle for all conditional formatting rules.
16644
+ */
16645
+ enabled?: boolean;
16646
+ /**
16647
+ * Ordered list of rules; the first matching rule wins.
16648
+ */
16649
+ rules?: {
16650
+ /**
16651
+ * Stable, table-unique rule id.
16652
+ */
16653
+ id: string;
16654
+ /**
16655
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
16656
+ */
16657
+ target: {
16658
+ /**
16659
+ * Local identifier of the targeted measure.
16660
+ */
16661
+ measure: string;
16662
+ } | {
16663
+ /**
16664
+ * Local identifier of the targeted attribute.
16665
+ */
16666
+ attribute: string;
16667
+ };
16668
+ /**
16669
+ * Stacked conditions; the first matching condition wins.
16670
+ */
16671
+ conditions: {
16672
+ id: string;
16673
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
16674
+ /**
16675
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
16676
+ */
16677
+ value?: number | string | {
16678
+ from: number;
16679
+ to: number;
16680
+ };
16681
+ format: {
16682
+ /**
16683
+ * Text color as hex (e.g. #FFFFFF).
16684
+ */
16685
+ text?: string;
16686
+ /**
16687
+ * Background color as hex (e.g. #E54D40).
16688
+ */
16689
+ fill?: string;
16690
+ scope: "cell" | "row";
16691
+ };
16692
+ }[];
16693
+ }[];
16694
+ };
15238
16695
  [k: string]: unknown;
15239
16696
  }
15240
16697
 
@@ -15409,6 +16866,67 @@ declare interface VisualisationConfig9 {
15409
16866
  enable_accessibility?: boolean;
15410
16867
  line_style_control_metrics?: string[];
15411
16868
  line_style_excluded_metrics?: string[];
16869
+ /**
16870
+ * Conditional formatting rules that color cells or rows based on their values.
16871
+ */
16872
+ conditional_formatting?: {
16873
+ /**
16874
+ * Conditional-formatting model version. "1" (default if omitted) — initial shape: discrete rules, one column per rule with stacked conditions. Readers must tolerate omission (treat as "1") and evolve under the same backward-compat contract as the dashboard model version, so server-side consumers (e.g. XLSX export) stay forward-compatible.
16875
+ */
16876
+ version?: string;
16877
+ /**
16878
+ * Master toggle for all conditional formatting rules.
16879
+ */
16880
+ enabled?: boolean;
16881
+ /**
16882
+ * Ordered list of rules; the first matching rule wins.
16883
+ */
16884
+ rules?: {
16885
+ /**
16886
+ * Stable, table-unique rule id.
16887
+ */
16888
+ id: string;
16889
+ /**
16890
+ * The measure or attribute the rule targets — exactly one of measure/attribute.
16891
+ */
16892
+ target: {
16893
+ /**
16894
+ * Local identifier of the targeted measure.
16895
+ */
16896
+ measure: string;
16897
+ } | {
16898
+ /**
16899
+ * Local identifier of the targeted attribute.
16900
+ */
16901
+ attribute: string;
16902
+ };
16903
+ /**
16904
+ * Stacked conditions; the first matching condition wins.
16905
+ */
16906
+ conditions: {
16907
+ id: string;
16908
+ operator: "all" | "equal_to" | "not_equal_to" | "less_than" | "less_than_or_equal_to" | "greater_than" | "greater_than_or_equal_to" | "between" | "not_between" | "contains" | "not_contains" | "starts_with" | "not_starts_with" | "ends_with" | "not_ends_with" | "is_empty" | "is_not_empty";
16909
+ /**
16910
+ * Literal (number or string); a \{from,to\} range for between/not_between; omitted for all/is_empty/is_not_empty.
16911
+ */
16912
+ value?: number | string | {
16913
+ from: number;
16914
+ to: number;
16915
+ };
16916
+ format: {
16917
+ /**
16918
+ * Text color as hex (e.g. #FFFFFF).
16919
+ */
16920
+ text?: string;
16921
+ /**
16922
+ * Background color as hex (e.g. #E54D40).
16923
+ */
16924
+ fill?: string;
16925
+ scope: "cell" | "row";
16926
+ };
16927
+ }[];
16928
+ }[];
16929
+ };
15412
16930
  [k: string]: unknown;
15413
16931
  }
15414
16932