@dlh.io/bideux 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +90 -0
  3. package/dist/all.d.ts +14 -0
  4. package/dist/all.js +15 -0
  5. package/dist/all.js.map +1 -0
  6. package/dist/chunk-62IQGXLW.js +11470 -0
  7. package/dist/chunk-62IQGXLW.js.map +1 -0
  8. package/dist/chunk-75CRTQK7.js +315 -0
  9. package/dist/chunk-75CRTQK7.js.map +1 -0
  10. package/dist/chunk-FVO6E22Z.js +225 -0
  11. package/dist/chunk-FVO6E22Z.js.map +1 -0
  12. package/dist/chunk-GRITOB4M.js +337 -0
  13. package/dist/chunk-GRITOB4M.js.map +1 -0
  14. package/dist/chunk-HPFHIZWO.js +40 -0
  15. package/dist/chunk-HPFHIZWO.js.map +1 -0
  16. package/dist/chunk-IMNUQGHE.js +2864 -0
  17. package/dist/chunk-IMNUQGHE.js.map +1 -0
  18. package/dist/chunk-LHD445PJ.js +571 -0
  19. package/dist/chunk-LHD445PJ.js.map +1 -0
  20. package/dist/chunk-LPLBBHOW.js +386 -0
  21. package/dist/chunk-LPLBBHOW.js.map +1 -0
  22. package/dist/chunk-NGM5R3LW.js +881 -0
  23. package/dist/chunk-NGM5R3LW.js.map +1 -0
  24. package/dist/chunk-OMPR32AR.js +1320 -0
  25. package/dist/chunk-OMPR32AR.js.map +1 -0
  26. package/dist/chunk-QDQ5VVTC.js +255 -0
  27. package/dist/chunk-QDQ5VVTC.js.map +1 -0
  28. package/dist/chunk-RRWZKNDZ.js +1004 -0
  29. package/dist/chunk-RRWZKNDZ.js.map +1 -0
  30. package/dist/chunk-SRWIBMEB.js +178 -0
  31. package/dist/chunk-SRWIBMEB.js.map +1 -0
  32. package/dist/element/chunk-AOKCBPMV.js +1646 -0
  33. package/dist/element/chunk-AOKCBPMV.js.map +1 -0
  34. package/dist/element/chunk-B67SYRQP.js +281 -0
  35. package/dist/element/chunk-B67SYRQP.js.map +1 -0
  36. package/dist/element/chunk-FNRVFA2C.js +55 -0
  37. package/dist/element/chunk-FNRVFA2C.js.map +1 -0
  38. package/dist/element/chunk-G3C722QP.js +4707 -0
  39. package/dist/element/chunk-G3C722QP.js.map +1 -0
  40. package/dist/element/chunk-H5IFOSQP.js +346 -0
  41. package/dist/element/chunk-H5IFOSQP.js.map +1 -0
  42. package/dist/element/chunk-LXR3CLCN.js +30 -0
  43. package/dist/element/chunk-LXR3CLCN.js.map +1 -0
  44. package/dist/element/chunk-TFV4CJR4.js +183 -0
  45. package/dist/element/chunk-TFV4CJR4.js.map +1 -0
  46. package/dist/element/chunk-TXSK3CIN.js +859 -0
  47. package/dist/element/chunk-TXSK3CIN.js.map +1 -0
  48. package/dist/element/chunk-WDTTBY3S.js +45 -0
  49. package/dist/element/chunk-WDTTBY3S.js.map +1 -0
  50. package/dist/element/chunk-ZI3RYCAR.js +233 -0
  51. package/dist/element/chunk-ZI3RYCAR.js.map +1 -0
  52. package/dist/element/element.d.ts +3044 -0
  53. package/dist/element/element.js +146554 -0
  54. package/dist/element/element.js.map +1 -0
  55. package/dist/element/revo-grid.entry-7FHEBN3O.js +4817 -0
  56. package/dist/element/revo-grid.entry-7FHEBN3O.js.map +1 -0
  57. package/dist/element/revogr-attribution_7.entry-LSOFVZRA.js +1328 -0
  58. package/dist/element/revogr-attribution_7.entry-LSOFVZRA.js.map +1 -0
  59. package/dist/element/revogr-clipboard_3.entry-V74UIBPJ.js +494 -0
  60. package/dist/element/revogr-clipboard_3.entry-V74UIBPJ.js.map +1 -0
  61. package/dist/element/revogr-data_4.entry-2UBOKTFN.js +1041 -0
  62. package/dist/element/revogr-data_4.entry-2UBOKTFN.js.map +1 -0
  63. package/dist/element/revogr-filter-panel.entry-B24PLQU4.js +552 -0
  64. package/dist/element/revogr-filter-panel.entry-B24PLQU4.js.map +1 -0
  65. package/dist/index.d.ts +1041 -0
  66. package/dist/index.js +10 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/react.d.ts +1915 -0
  69. package/dist/react.js +14 -0
  70. package/dist/react.js.map +1 -0
  71. package/dist/renderers/echarts.d.ts +44 -0
  72. package/dist/renderers/echarts.js +6 -0
  73. package/dist/renderers/echarts.js.map +1 -0
  74. package/dist/renderers/index.d.ts +48 -0
  75. package/dist/renderers/index.js +12 -0
  76. package/dist/renderers/index.js.map +1 -0
  77. package/dist/renderers/revogrid.d.ts +76 -0
  78. package/dist/renderers/revogrid.js +6 -0
  79. package/dist/renderers/revogrid.js.map +1 -0
  80. package/dist/renderers/tabulator.d.ts +37 -0
  81. package/dist/renderers/tabulator.js +6 -0
  82. package/dist/renderers/tabulator.js.map +1 -0
  83. package/dist/result-table-CPls-277.d.ts +1885 -0
  84. package/dist/schema/dashboard.schema.json +4374 -0
  85. package/dist/schema/semantic-model.schema.json +1200 -0
  86. package/dist/schema/widget.schema.json +1793 -0
  87. package/dist/styles.css +156 -0
  88. package/dist/theme.css +1789 -0
  89. package/dist/types-CHFSsU_X.d.ts +1007 -0
  90. package/package.json +119 -0
@@ -0,0 +1,1200 @@
1
+ {
2
+ "$defs": {
3
+ "DataStore": {
4
+ "additionalProperties": true,
5
+ "description": "A data-store (warehouse) connection referenced by datasets.",
6
+ "properties": {
7
+ "ai_context": {
8
+ "anyOf": [
9
+ {
10
+ "additionalProperties": {
11
+ "$ref": "#/$defs/JsonValue"
12
+ },
13
+ "type": "object"
14
+ },
15
+ {
16
+ "type": "string"
17
+ },
18
+ {
19
+ "type": "null"
20
+ }
21
+ ],
22
+ "default": null,
23
+ "title": "Ai Context"
24
+ },
25
+ "custom_extensions": {
26
+ "anyOf": [
27
+ {
28
+ "items": {
29
+ "additionalProperties": {
30
+ "$ref": "#/$defs/JsonValue"
31
+ },
32
+ "type": "object"
33
+ },
34
+ "type": "array"
35
+ },
36
+ {
37
+ "type": "null"
38
+ }
39
+ ],
40
+ "default": null,
41
+ "title": "Custom Extensions"
42
+ },
43
+ "data_model_id": {
44
+ "anyOf": [
45
+ {
46
+ "type": "string"
47
+ },
48
+ {
49
+ "type": "null"
50
+ }
51
+ ],
52
+ "default": null,
53
+ "description": "Host data-store identifier holding credentials, database, and schema. Omit to use the host's default active store.",
54
+ "title": "Data Model Id"
55
+ },
56
+ "default": {
57
+ "default": false,
58
+ "description": "Store used by datasets that do not name one.",
59
+ "title": "Default",
60
+ "type": "boolean"
61
+ },
62
+ "description": {
63
+ "anyOf": [
64
+ {
65
+ "type": "string"
66
+ },
67
+ {
68
+ "type": "null"
69
+ }
70
+ ],
71
+ "default": null,
72
+ "title": "Description"
73
+ },
74
+ "id": {
75
+ "description": "Id datasets use to point at this store, for example ops_dw.",
76
+ "title": "Id",
77
+ "type": "string"
78
+ },
79
+ "name": {
80
+ "anyOf": [
81
+ {
82
+ "type": "string"
83
+ },
84
+ {
85
+ "type": "null"
86
+ }
87
+ ],
88
+ "default": null,
89
+ "title": "Name"
90
+ },
91
+ "vendor": {
92
+ "anyOf": [
93
+ {
94
+ "type": "string"
95
+ },
96
+ {
97
+ "type": "null"
98
+ }
99
+ ],
100
+ "default": null,
101
+ "description": "Warehouse vendor, for example snowflake, databricks or postgres.",
102
+ "title": "Vendor"
103
+ }
104
+ },
105
+ "required": [
106
+ "id"
107
+ ],
108
+ "title": "DataStore",
109
+ "type": "object"
110
+ },
111
+ "Dataset": {
112
+ "additionalProperties": true,
113
+ "description": "A reusable semantic dataset: schema/table, dimensions, and metrics.",
114
+ "properties": {
115
+ "ai_context": {
116
+ "anyOf": [
117
+ {
118
+ "additionalProperties": {
119
+ "$ref": "#/$defs/JsonValue"
120
+ },
121
+ "type": "object"
122
+ },
123
+ {
124
+ "type": "string"
125
+ },
126
+ {
127
+ "type": "null"
128
+ }
129
+ ],
130
+ "default": null,
131
+ "title": "Ai Context"
132
+ },
133
+ "cache": {
134
+ "anyOf": [
135
+ {
136
+ "$ref": "#/$defs/DatasetCacheConfig"
137
+ },
138
+ {
139
+ "type": "null"
140
+ }
141
+ ],
142
+ "default": null
143
+ },
144
+ "custom_extensions": {
145
+ "anyOf": [
146
+ {
147
+ "items": {
148
+ "additionalProperties": {
149
+ "$ref": "#/$defs/JsonValue"
150
+ },
151
+ "type": "object"
152
+ },
153
+ "type": "array"
154
+ },
155
+ {
156
+ "type": "null"
157
+ }
158
+ ],
159
+ "default": null,
160
+ "title": "Custom Extensions"
161
+ },
162
+ "dataStoreId": {
163
+ "anyOf": [
164
+ {
165
+ "type": "string"
166
+ },
167
+ {
168
+ "type": "null"
169
+ }
170
+ ],
171
+ "default": null,
172
+ "description": "Id of the data store in this model's data_stores list. Omit to use the model's default store.",
173
+ "title": "Data Store Id"
174
+ },
175
+ "dataStoreIds": {
176
+ "anyOf": [
177
+ {
178
+ "items": {
179
+ "type": "string"
180
+ },
181
+ "type": "array"
182
+ },
183
+ {
184
+ "type": "null"
185
+ }
186
+ ],
187
+ "default": null,
188
+ "title": "Data Store Ids"
189
+ },
190
+ "data_model_id": {
191
+ "anyOf": [
192
+ {
193
+ "type": "string"
194
+ },
195
+ {
196
+ "type": "null"
197
+ }
198
+ ],
199
+ "default": null,
200
+ "title": "Data Model Id"
201
+ },
202
+ "data_store_id": {
203
+ "anyOf": [
204
+ {
205
+ "type": "string"
206
+ },
207
+ {
208
+ "type": "null"
209
+ }
210
+ ],
211
+ "default": null,
212
+ "description": "Id of the data store in this model's data_stores list. Omit to use the model's default store.",
213
+ "title": "Data Store Id"
214
+ },
215
+ "data_store_ids": {
216
+ "anyOf": [
217
+ {
218
+ "items": {
219
+ "type": "string"
220
+ },
221
+ "type": "array"
222
+ },
223
+ {
224
+ "type": "null"
225
+ }
226
+ ],
227
+ "default": null,
228
+ "title": "Data Store Ids"
229
+ },
230
+ "description": {
231
+ "anyOf": [
232
+ {
233
+ "type": "string"
234
+ },
235
+ {
236
+ "type": "null"
237
+ }
238
+ ],
239
+ "default": null,
240
+ "title": "Description"
241
+ },
242
+ "dimensions": {
243
+ "description": "Columns widgets can group or filter by.",
244
+ "items": {
245
+ "$ref": "#/$defs/Dimension"
246
+ },
247
+ "title": "Dimensions",
248
+ "type": "array"
249
+ },
250
+ "fields": {
251
+ "description": "Columns widgets can group or filter by.",
252
+ "items": {
253
+ "$ref": "#/$defs/Dimension"
254
+ },
255
+ "title": "Dimensions",
256
+ "type": "array"
257
+ },
258
+ "filter_field": {
259
+ "anyOf": [
260
+ {
261
+ "type": "string"
262
+ },
263
+ {
264
+ "type": "null"
265
+ }
266
+ ],
267
+ "default": null,
268
+ "description": "Column carrying the location key. Without it a location-scoped user cannot query this dataset.",
269
+ "title": "Filter Field"
270
+ },
271
+ "filter_param": {
272
+ "default": "restaurant_ids",
273
+ "title": "Filter Param",
274
+ "type": "string"
275
+ },
276
+ "from": {
277
+ "anyOf": [
278
+ {
279
+ "type": "string"
280
+ },
281
+ {
282
+ "type": "null"
283
+ }
284
+ ],
285
+ "default": null,
286
+ "description": "Table or view the rows come from, for example {mart_schema}.RPT_DAILY_SALES_SUMMARY.",
287
+ "title": "From"
288
+ },
289
+ "group_by": {
290
+ "anyOf": [
291
+ {
292
+ "items": {
293
+ "type": "string"
294
+ },
295
+ "type": "array"
296
+ },
297
+ {
298
+ "type": "null"
299
+ }
300
+ ],
301
+ "default": null,
302
+ "title": "Group By"
303
+ },
304
+ "id": {
305
+ "description": "Id widgets use to ask for this dataset, for example daily_sales.",
306
+ "title": "Id",
307
+ "type": "string"
308
+ },
309
+ "kpi": {
310
+ "anyOf": [
311
+ {
312
+ "type": "string"
313
+ },
314
+ {
315
+ "type": "null"
316
+ }
317
+ ],
318
+ "default": null,
319
+ "title": "Kpi"
320
+ },
321
+ "materialization": {
322
+ "anyOf": [
323
+ {
324
+ "$ref": "#/$defs/DatasetMaterialization"
325
+ },
326
+ {
327
+ "type": "null"
328
+ }
329
+ ],
330
+ "default": null
331
+ },
332
+ "mesh": {
333
+ "anyOf": [
334
+ {
335
+ "$ref": "#/$defs/MeshPlan"
336
+ },
337
+ {
338
+ "type": "null"
339
+ }
340
+ ],
341
+ "default": null
342
+ },
343
+ "metrics": {
344
+ "description": "Aggregations valid on this dataset's source.",
345
+ "items": {
346
+ "$ref": "#/$defs/Metric"
347
+ },
348
+ "title": "Metrics",
349
+ "type": "array"
350
+ },
351
+ "name": {
352
+ "anyOf": [
353
+ {
354
+ "type": "string"
355
+ },
356
+ {
357
+ "type": "null"
358
+ }
359
+ ],
360
+ "default": null,
361
+ "description": "Label shown to users. Defaults to the id.",
362
+ "title": "Name"
363
+ },
364
+ "params": {
365
+ "additionalProperties": {
366
+ "$ref": "#/$defs/JsonValue"
367
+ },
368
+ "title": "Params",
369
+ "type": "object"
370
+ },
371
+ "primary_key": {
372
+ "anyOf": [
373
+ {
374
+ "items": {
375
+ "type": "string"
376
+ },
377
+ "type": "array"
378
+ },
379
+ {
380
+ "type": "null"
381
+ }
382
+ ],
383
+ "default": null,
384
+ "title": "Primary Key"
385
+ },
386
+ "query": {
387
+ "anyOf": [
388
+ {
389
+ "type": "string"
390
+ },
391
+ {
392
+ "type": "null"
393
+ }
394
+ ],
395
+ "default": null,
396
+ "description": "SQL to run when source_type is query.",
397
+ "title": "Query"
398
+ },
399
+ "relationships": {
400
+ "items": {
401
+ "$ref": "#/$defs/Relationship"
402
+ },
403
+ "title": "Relationships",
404
+ "type": "array"
405
+ },
406
+ "source": {
407
+ "anyOf": [
408
+ {
409
+ "type": "string"
410
+ },
411
+ {
412
+ "type": "null"
413
+ }
414
+ ],
415
+ "default": null,
416
+ "description": "Table or view the rows come from, for example {mart_schema}.RPT_DAILY_SALES_SUMMARY.",
417
+ "title": "From"
418
+ },
419
+ "source_type": {
420
+ "anyOf": [
421
+ {
422
+ "enum": [
423
+ "table",
424
+ "view",
425
+ "query",
426
+ "mesh"
427
+ ],
428
+ "type": "string"
429
+ },
430
+ {
431
+ "type": "null"
432
+ }
433
+ ],
434
+ "default": null,
435
+ "description": "table or view reads source; query runs the query field; mesh combines datasets from different data stores.",
436
+ "title": "Source Type"
437
+ },
438
+ "unique_keys": {
439
+ "anyOf": [
440
+ {
441
+ "items": {
442
+ "items": {
443
+ "type": "string"
444
+ },
445
+ "type": "array"
446
+ },
447
+ "type": "array"
448
+ },
449
+ {
450
+ "type": "null"
451
+ }
452
+ ],
453
+ "default": null,
454
+ "title": "Unique Keys"
455
+ }
456
+ },
457
+ "required": [
458
+ "id"
459
+ ],
460
+ "title": "Dataset",
461
+ "type": "object"
462
+ },
463
+ "DatasetCacheConfig": {
464
+ "additionalProperties": true,
465
+ "description": "How long a dataset's warehouse results may be reused.",
466
+ "properties": {
467
+ "enabled": {
468
+ "default": true,
469
+ "title": "Enabled",
470
+ "type": "boolean"
471
+ },
472
+ "ttlSeconds": {
473
+ "anyOf": [
474
+ {
475
+ "type": "integer"
476
+ },
477
+ {
478
+ "type": "null"
479
+ }
480
+ ],
481
+ "default": 300,
482
+ "title": "Ttl Seconds"
483
+ },
484
+ "ttl_seconds": {
485
+ "anyOf": [
486
+ {
487
+ "type": "integer"
488
+ },
489
+ {
490
+ "type": "null"
491
+ }
492
+ ],
493
+ "default": 300,
494
+ "title": "Ttl Seconds"
495
+ }
496
+ },
497
+ "title": "DatasetCacheConfig",
498
+ "type": "object"
499
+ },
500
+ "DatasetMaterialization": {
501
+ "additionalProperties": true,
502
+ "description": "A pre-aggregated rollup the engine may read instead of the base source.\n\n``grain`` lists the dimensions the rollup is aggregated to and ``metrics``\nthe measures it carries. A widget selection covered by both is answered from\n``source``; anything wider falls back to the dataset's own source, so the\nrollup is an optimisation and never changes what a widget can ask for.",
503
+ "properties": {
504
+ "enabled": {
505
+ "default": true,
506
+ "title": "Enabled",
507
+ "type": "boolean"
508
+ },
509
+ "grain": {
510
+ "items": {
511
+ "type": "string"
512
+ },
513
+ "title": "Grain",
514
+ "type": "array"
515
+ },
516
+ "metrics": {
517
+ "items": {
518
+ "type": "string"
519
+ },
520
+ "title": "Metrics",
521
+ "type": "array"
522
+ },
523
+ "source": {
524
+ "anyOf": [
525
+ {
526
+ "type": "string"
527
+ },
528
+ {
529
+ "type": "null"
530
+ }
531
+ ],
532
+ "default": null,
533
+ "title": "Source"
534
+ }
535
+ },
536
+ "title": "DatasetMaterialization",
537
+ "type": "object"
538
+ },
539
+ "Dimension": {
540
+ "additionalProperties": true,
541
+ "description": "A dimension (attribute) inside a Dataset.",
542
+ "properties": {
543
+ "ai_context": {
544
+ "anyOf": [
545
+ {
546
+ "additionalProperties": {
547
+ "$ref": "#/$defs/JsonValue"
548
+ },
549
+ "type": "object"
550
+ },
551
+ {
552
+ "type": "string"
553
+ },
554
+ {
555
+ "type": "null"
556
+ }
557
+ ],
558
+ "default": null,
559
+ "title": "Ai Context"
560
+ },
561
+ "column": {
562
+ "anyOf": [
563
+ {
564
+ "type": "string"
565
+ },
566
+ {
567
+ "type": "null"
568
+ }
569
+ ],
570
+ "default": null,
571
+ "description": "Warehouse column this dimension reads. Defaults to the id.",
572
+ "title": "Column"
573
+ },
574
+ "custom_extensions": {
575
+ "anyOf": [
576
+ {
577
+ "items": {
578
+ "additionalProperties": {
579
+ "$ref": "#/$defs/JsonValue"
580
+ },
581
+ "type": "object"
582
+ },
583
+ "type": "array"
584
+ },
585
+ {
586
+ "type": "null"
587
+ }
588
+ ],
589
+ "default": null,
590
+ "title": "Custom Extensions"
591
+ },
592
+ "description": {
593
+ "anyOf": [
594
+ {
595
+ "type": "string"
596
+ },
597
+ {
598
+ "type": "null"
599
+ }
600
+ ],
601
+ "default": null,
602
+ "title": "Description"
603
+ },
604
+ "expression": {
605
+ "anyOf": [
606
+ {
607
+ "type": "string"
608
+ },
609
+ {
610
+ "$ref": "#/$defs/Expression"
611
+ },
612
+ {
613
+ "type": "null"
614
+ }
615
+ ],
616
+ "default": null,
617
+ "description": "SQL expression to use instead of a plain column.",
618
+ "title": "Expression"
619
+ },
620
+ "format": {
621
+ "anyOf": [
622
+ {
623
+ "type": "string"
624
+ },
625
+ {
626
+ "type": "null"
627
+ }
628
+ ],
629
+ "default": null,
630
+ "title": "Format"
631
+ },
632
+ "group": {
633
+ "anyOf": [
634
+ {
635
+ "type": "string"
636
+ },
637
+ {
638
+ "type": "null"
639
+ }
640
+ ],
641
+ "default": null,
642
+ "title": "Group"
643
+ },
644
+ "hidden": {
645
+ "anyOf": [
646
+ {
647
+ "type": "boolean"
648
+ },
649
+ {
650
+ "type": "null"
651
+ }
652
+ ],
653
+ "default": null,
654
+ "title": "Hidden"
655
+ },
656
+ "id": {
657
+ "description": "Id widgets use to group or filter by, for example business_date.",
658
+ "title": "Id",
659
+ "type": "string"
660
+ },
661
+ "is_time": {
662
+ "anyOf": [
663
+ {
664
+ "type": "boolean"
665
+ },
666
+ {
667
+ "type": "null"
668
+ }
669
+ ],
670
+ "default": null,
671
+ "title": "Is Time"
672
+ },
673
+ "label": {
674
+ "anyOf": [
675
+ {
676
+ "type": "string"
677
+ },
678
+ {
679
+ "type": "null"
680
+ }
681
+ ],
682
+ "default": null,
683
+ "title": "Label"
684
+ },
685
+ "name": {
686
+ "anyOf": [
687
+ {
688
+ "type": "string"
689
+ },
690
+ {
691
+ "type": "null"
692
+ }
693
+ ],
694
+ "default": null,
695
+ "title": "Name"
696
+ },
697
+ "type": {
698
+ "default": "string",
699
+ "enum": [
700
+ "string",
701
+ "number",
702
+ "date",
703
+ "time",
704
+ "boolean"
705
+ ],
706
+ "title": "Type",
707
+ "type": "string"
708
+ }
709
+ },
710
+ "required": [
711
+ "id"
712
+ ],
713
+ "title": "Dimension",
714
+ "type": "object"
715
+ },
716
+ "Expression": {
717
+ "additionalProperties": true,
718
+ "description": "OSI-style multi-dialect expression block.\n\n``dialects`` lists SQL or expression variants per warehouse. ``default`` is\navailable for row-level formulas or fallback SQL.",
719
+ "properties": {
720
+ "default": {
721
+ "anyOf": [
722
+ {
723
+ "type": "string"
724
+ },
725
+ {
726
+ "type": "null"
727
+ }
728
+ ],
729
+ "default": null,
730
+ "title": "Default"
731
+ },
732
+ "dialects": {
733
+ "items": {
734
+ "$ref": "#/$defs/ExpressionDialect"
735
+ },
736
+ "title": "Dialects",
737
+ "type": "array"
738
+ }
739
+ },
740
+ "title": "Expression",
741
+ "type": "object"
742
+ },
743
+ "ExpressionDialect": {
744
+ "additionalProperties": true,
745
+ "description": "A single dialect expression for a field or metric.",
746
+ "properties": {
747
+ "dialect": {
748
+ "title": "Dialect",
749
+ "type": "string"
750
+ },
751
+ "expression": {
752
+ "title": "Expression",
753
+ "type": "string"
754
+ }
755
+ },
756
+ "required": [
757
+ "dialect",
758
+ "expression"
759
+ ],
760
+ "title": "ExpressionDialect",
761
+ "type": "object"
762
+ },
763
+ "JsonValue": {},
764
+ "MeshPart": {
765
+ "additionalProperties": true,
766
+ "description": "One dataset taking part in a mesh dataset.",
767
+ "properties": {
768
+ "dataset": {
769
+ "title": "Dataset",
770
+ "type": "string"
771
+ }
772
+ },
773
+ "required": [
774
+ "dataset"
775
+ ],
776
+ "title": "MeshPart",
777
+ "type": "object"
778
+ },
779
+ "MeshPlan": {
780
+ "additionalProperties": true,
781
+ "description": "How a mesh dataset stitches datasets from different data stores together.",
782
+ "properties": {
783
+ "join": {
784
+ "default": "left",
785
+ "enum": [
786
+ "left",
787
+ "inner"
788
+ ],
789
+ "title": "Join",
790
+ "type": "string"
791
+ },
792
+ "join_columns": {
793
+ "items": {
794
+ "type": "string"
795
+ },
796
+ "title": "Join Columns",
797
+ "type": "array"
798
+ },
799
+ "max_rows": {
800
+ "default": 50000,
801
+ "exclusiveMinimum": 0,
802
+ "title": "Max Rows",
803
+ "type": "integer"
804
+ },
805
+ "parts": {
806
+ "items": {
807
+ "$ref": "#/$defs/MeshPart"
808
+ },
809
+ "maxItems": 3,
810
+ "title": "Parts",
811
+ "type": "array"
812
+ }
813
+ },
814
+ "title": "MeshPlan",
815
+ "type": "object"
816
+ },
817
+ "Metric": {
818
+ "additionalProperties": true,
819
+ "description": "A calculated field or metric inside a Dataset.",
820
+ "properties": {
821
+ "ai_context": {
822
+ "anyOf": [
823
+ {
824
+ "additionalProperties": {
825
+ "$ref": "#/$defs/JsonValue"
826
+ },
827
+ "type": "object"
828
+ },
829
+ {
830
+ "type": "string"
831
+ },
832
+ {
833
+ "type": "null"
834
+ }
835
+ ],
836
+ "default": null,
837
+ "title": "Ai Context"
838
+ },
839
+ "custom_extensions": {
840
+ "anyOf": [
841
+ {
842
+ "items": {
843
+ "additionalProperties": {
844
+ "$ref": "#/$defs/JsonValue"
845
+ },
846
+ "type": "object"
847
+ },
848
+ "type": "array"
849
+ },
850
+ {
851
+ "type": "null"
852
+ }
853
+ ],
854
+ "default": null,
855
+ "title": "Custom Extensions"
856
+ },
857
+ "dependencies": {
858
+ "anyOf": [
859
+ {
860
+ "items": {
861
+ "type": "string"
862
+ },
863
+ "type": "array"
864
+ },
865
+ {
866
+ "type": "null"
867
+ }
868
+ ],
869
+ "default": null,
870
+ "title": "Dependencies"
871
+ },
872
+ "description": {
873
+ "anyOf": [
874
+ {
875
+ "type": "string"
876
+ },
877
+ {
878
+ "type": "null"
879
+ }
880
+ ],
881
+ "default": null,
882
+ "title": "Description"
883
+ },
884
+ "expression": {
885
+ "anyOf": [
886
+ {
887
+ "type": "string"
888
+ },
889
+ {
890
+ "$ref": "#/$defs/Expression"
891
+ }
892
+ ],
893
+ "description": "SQL aggregate such as SUM(NET_SALES), or an expression over other metrics such as labor_cost / net_sales.",
894
+ "title": "Expression"
895
+ },
896
+ "filter": {
897
+ "anyOf": [
898
+ {
899
+ "type": "string"
900
+ },
901
+ {
902
+ "type": "null"
903
+ }
904
+ ],
905
+ "default": null,
906
+ "title": "Filter"
907
+ },
908
+ "format": {
909
+ "anyOf": [
910
+ {
911
+ "type": "string"
912
+ },
913
+ {
914
+ "type": "null"
915
+ }
916
+ ],
917
+ "default": null,
918
+ "title": "Format"
919
+ },
920
+ "group": {
921
+ "anyOf": [
922
+ {
923
+ "type": "string"
924
+ },
925
+ {
926
+ "type": "null"
927
+ }
928
+ ],
929
+ "default": null,
930
+ "title": "Group"
931
+ },
932
+ "hidden": {
933
+ "anyOf": [
934
+ {
935
+ "type": "boolean"
936
+ },
937
+ {
938
+ "type": "null"
939
+ }
940
+ ],
941
+ "default": null,
942
+ "title": "Hidden"
943
+ },
944
+ "id": {
945
+ "description": "Id widgets use to ask for this metric, for example net_sales.",
946
+ "title": "Id",
947
+ "type": "string"
948
+ },
949
+ "label": {
950
+ "anyOf": [
951
+ {
952
+ "type": "string"
953
+ },
954
+ {
955
+ "type": "null"
956
+ }
957
+ ],
958
+ "default": null,
959
+ "title": "Label"
960
+ },
961
+ "name": {
962
+ "anyOf": [
963
+ {
964
+ "type": "string"
965
+ },
966
+ {
967
+ "type": "null"
968
+ }
969
+ ],
970
+ "default": null,
971
+ "title": "Name"
972
+ },
973
+ "type": {
974
+ "default": "formula",
975
+ "description": "sql sends the expression to the warehouse; formula computes it from other metrics after the query.",
976
+ "enum": [
977
+ "sql",
978
+ "formula"
979
+ ],
980
+ "title": "Type",
981
+ "type": "string"
982
+ }
983
+ },
984
+ "required": [
985
+ "id",
986
+ "expression"
987
+ ],
988
+ "title": "Metric",
989
+ "type": "object"
990
+ },
991
+ "Relationship": {
992
+ "additionalProperties": true,
993
+ "description": "A relationship between two datasets (OSI-style join).",
994
+ "properties": {
995
+ "ai_context": {
996
+ "anyOf": [
997
+ {
998
+ "additionalProperties": {
999
+ "$ref": "#/$defs/JsonValue"
1000
+ },
1001
+ "type": "object"
1002
+ },
1003
+ {
1004
+ "type": "string"
1005
+ },
1006
+ {
1007
+ "type": "null"
1008
+ }
1009
+ ],
1010
+ "default": null,
1011
+ "title": "Ai Context"
1012
+ },
1013
+ "custom_extensions": {
1014
+ "anyOf": [
1015
+ {
1016
+ "items": {
1017
+ "additionalProperties": {
1018
+ "$ref": "#/$defs/JsonValue"
1019
+ },
1020
+ "type": "object"
1021
+ },
1022
+ "type": "array"
1023
+ },
1024
+ {
1025
+ "type": "null"
1026
+ }
1027
+ ],
1028
+ "default": null,
1029
+ "title": "Custom Extensions"
1030
+ },
1031
+ "from": {
1032
+ "description": "Id of the dataset on the left of the join.",
1033
+ "title": "From",
1034
+ "type": "string"
1035
+ },
1036
+ "from_columns": {
1037
+ "description": "Join columns on the from dataset.",
1038
+ "items": {
1039
+ "type": "string"
1040
+ },
1041
+ "title": "From Columns",
1042
+ "type": "array"
1043
+ },
1044
+ "name": {
1045
+ "description": "Name of the join, for example sales_to_labor.",
1046
+ "title": "Name",
1047
+ "type": "string"
1048
+ },
1049
+ "relationship": {
1050
+ "anyOf": [
1051
+ {
1052
+ "enum": [
1053
+ "one_to_one",
1054
+ "many_to_one",
1055
+ "one_to_many",
1056
+ "many_to_many"
1057
+ ],
1058
+ "type": "string"
1059
+ },
1060
+ {
1061
+ "type": "null"
1062
+ }
1063
+ ],
1064
+ "default": null,
1065
+ "description": "Cardinality. one_to_many and many_to_many can fan out and double-count.",
1066
+ "title": "Relationship"
1067
+ },
1068
+ "to": {
1069
+ "description": "Id of the dataset on the right of the join.",
1070
+ "title": "To",
1071
+ "type": "string"
1072
+ },
1073
+ "to_columns": {
1074
+ "description": "Join columns on the to dataset, positionally matched to from_columns.",
1075
+ "items": {
1076
+ "type": "string"
1077
+ },
1078
+ "title": "To Columns",
1079
+ "type": "array"
1080
+ }
1081
+ },
1082
+ "required": [
1083
+ "name",
1084
+ "from",
1085
+ "to"
1086
+ ],
1087
+ "title": "Relationship",
1088
+ "type": "object"
1089
+ }
1090
+ },
1091
+ "$id": "https://bideux.dev/schema/uas/semantic-model.schema.json",
1092
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1093
+ "additionalProperties": true,
1094
+ "description": "An OSI semantic model block (data stores, datasets, relationships, metrics).",
1095
+ "properties": {
1096
+ "ai_context": {
1097
+ "anyOf": [
1098
+ {
1099
+ "additionalProperties": {
1100
+ "$ref": "#/$defs/JsonValue"
1101
+ },
1102
+ "type": "object"
1103
+ },
1104
+ {
1105
+ "type": "string"
1106
+ },
1107
+ {
1108
+ "type": "null"
1109
+ }
1110
+ ],
1111
+ "default": null,
1112
+ "description": "Business context available to host authoring tools, including synonyms.",
1113
+ "title": "Ai Context"
1114
+ },
1115
+ "custom_extensions": {
1116
+ "anyOf": [
1117
+ {
1118
+ "items": {
1119
+ "additionalProperties": {
1120
+ "$ref": "#/$defs/JsonValue"
1121
+ },
1122
+ "type": "object"
1123
+ },
1124
+ "type": "array"
1125
+ },
1126
+ {
1127
+ "type": "null"
1128
+ }
1129
+ ],
1130
+ "default": null,
1131
+ "title": "Custom Extensions"
1132
+ },
1133
+ "data_stores": {
1134
+ "description": "Warehouse connections datasets may read from.",
1135
+ "items": {
1136
+ "$ref": "#/$defs/DataStore"
1137
+ },
1138
+ "maxItems": 3,
1139
+ "title": "Data Stores",
1140
+ "type": "array"
1141
+ },
1142
+ "datasets": {
1143
+ "description": "Reusable sources of rows widgets can ask for.",
1144
+ "items": {
1145
+ "$ref": "#/$defs/Dataset"
1146
+ },
1147
+ "title": "Datasets",
1148
+ "type": "array"
1149
+ },
1150
+ "description": {
1151
+ "anyOf": [
1152
+ {
1153
+ "type": "string"
1154
+ },
1155
+ {
1156
+ "type": "null"
1157
+ }
1158
+ ],
1159
+ "default": null,
1160
+ "title": "Description"
1161
+ },
1162
+ "kind": {
1163
+ "const": "semantic_model",
1164
+ "default": "semantic_model",
1165
+ "title": "Kind",
1166
+ "type": "string"
1167
+ },
1168
+ "metrics": {
1169
+ "description": "Metrics usable across datasets, including formulas spanning a join.",
1170
+ "items": {
1171
+ "$ref": "#/$defs/Metric"
1172
+ },
1173
+ "title": "Metrics",
1174
+ "type": "array"
1175
+ },
1176
+ "name": {
1177
+ "description": "Model name. Dashboards reference the tenant model as default.",
1178
+ "title": "Name",
1179
+ "type": "string"
1180
+ },
1181
+ "relationships": {
1182
+ "description": "Joins between datasets, so one widget can mix their fields.",
1183
+ "items": {
1184
+ "$ref": "#/$defs/Relationship"
1185
+ },
1186
+ "title": "Relationships",
1187
+ "type": "array"
1188
+ },
1189
+ "version": {
1190
+ "description": "Spec version of this document. Currently 1.0.",
1191
+ "title": "Version",
1192
+ "type": "string"
1193
+ }
1194
+ },
1195
+ "required": [
1196
+ "name"
1197
+ ],
1198
+ "title": "SemanticModel",
1199
+ "type": "object"
1200
+ }