@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,1793 @@
1
+ {
2
+ "$defs": {
3
+ "DatasetDataSource": {
4
+ "additionalProperties": true,
5
+ "description": "Reference a reusable Dataset defined in the dashboard manifest.",
6
+ "properties": {
7
+ "columns": {
8
+ "anyOf": [
9
+ {
10
+ "items": {
11
+ "type": "string"
12
+ },
13
+ "type": "array"
14
+ },
15
+ {
16
+ "type": "null"
17
+ }
18
+ ],
19
+ "default": null,
20
+ "title": "Columns"
21
+ },
22
+ "data_model_id": {
23
+ "anyOf": [
24
+ {
25
+ "type": "string"
26
+ },
27
+ {
28
+ "type": "null"
29
+ }
30
+ ],
31
+ "default": null,
32
+ "title": "Data Model Id"
33
+ },
34
+ "dataset": {
35
+ "title": "Dataset",
36
+ "type": "string"
37
+ },
38
+ "dimensions": {
39
+ "anyOf": [
40
+ {
41
+ "items": {
42
+ "type": "string"
43
+ },
44
+ "type": "array"
45
+ },
46
+ {
47
+ "type": "null"
48
+ }
49
+ ],
50
+ "default": null,
51
+ "title": "Dimensions"
52
+ },
53
+ "filters": {
54
+ "items": {
55
+ "$ref": "#/$defs/IncomingFilter"
56
+ },
57
+ "title": "Filters",
58
+ "type": "array"
59
+ },
60
+ "kind": {
61
+ "const": "dataset",
62
+ "default": "dataset",
63
+ "title": "Kind",
64
+ "type": "string"
65
+ },
66
+ "metrics": {
67
+ "anyOf": [
68
+ {
69
+ "items": {
70
+ "type": "string"
71
+ },
72
+ "type": "array"
73
+ },
74
+ {
75
+ "type": "null"
76
+ }
77
+ ],
78
+ "default": null,
79
+ "title": "Metrics"
80
+ },
81
+ "params": {
82
+ "additionalProperties": {
83
+ "$ref": "#/$defs/JsonValue"
84
+ },
85
+ "title": "Params",
86
+ "type": "object"
87
+ }
88
+ },
89
+ "required": [
90
+ "dataset"
91
+ ],
92
+ "title": "DatasetDataSource",
93
+ "type": "object"
94
+ },
95
+ "DemoDataSource": {
96
+ "additionalProperties": true,
97
+ "description": "Deterministic generated data for testing and previews.",
98
+ "properties": {
99
+ "columns": {
100
+ "anyOf": [
101
+ {
102
+ "items": {
103
+ "type": "string"
104
+ },
105
+ "type": "array"
106
+ },
107
+ {
108
+ "type": "null"
109
+ }
110
+ ],
111
+ "default": null,
112
+ "title": "Columns"
113
+ },
114
+ "dataset": {
115
+ "anyOf": [
116
+ {
117
+ "type": "string"
118
+ },
119
+ {
120
+ "type": "null"
121
+ }
122
+ ],
123
+ "default": null,
124
+ "title": "Dataset"
125
+ },
126
+ "kind": {
127
+ "const": "demo",
128
+ "default": "demo",
129
+ "title": "Kind",
130
+ "type": "string"
131
+ },
132
+ "rows": {
133
+ "default": 30,
134
+ "title": "Rows",
135
+ "type": "integer"
136
+ },
137
+ "seed": {
138
+ "default": 42,
139
+ "title": "Seed",
140
+ "type": "integer"
141
+ }
142
+ },
143
+ "title": "DemoDataSource",
144
+ "type": "object"
145
+ },
146
+ "FieldMapping": {
147
+ "additionalProperties": true,
148
+ "description": "Map widget fields to columns in the data source.",
149
+ "properties": {
150
+ "category": {
151
+ "anyOf": [
152
+ {
153
+ "type": "string"
154
+ },
155
+ {
156
+ "type": "null"
157
+ }
158
+ ],
159
+ "default": null,
160
+ "title": "Category"
161
+ },
162
+ "date": {
163
+ "anyOf": [
164
+ {
165
+ "type": "string"
166
+ },
167
+ {
168
+ "type": "null"
169
+ }
170
+ ],
171
+ "default": null,
172
+ "title": "Date"
173
+ },
174
+ "delta": {
175
+ "anyOf": [
176
+ {
177
+ "type": "string"
178
+ },
179
+ {
180
+ "type": "null"
181
+ }
182
+ ],
183
+ "default": null,
184
+ "title": "Delta"
185
+ },
186
+ "label": {
187
+ "anyOf": [
188
+ {
189
+ "type": "string"
190
+ },
191
+ {
192
+ "type": "null"
193
+ }
194
+ ],
195
+ "default": null,
196
+ "title": "Label"
197
+ },
198
+ "series": {
199
+ "anyOf": [
200
+ {
201
+ "type": "string"
202
+ },
203
+ {
204
+ "type": "null"
205
+ }
206
+ ],
207
+ "default": null,
208
+ "title": "Series"
209
+ },
210
+ "series_name": {
211
+ "anyOf": [
212
+ {
213
+ "type": "string"
214
+ },
215
+ {
216
+ "type": "null"
217
+ }
218
+ ],
219
+ "default": null,
220
+ "title": "Series Name"
221
+ },
222
+ "value": {
223
+ "anyOf": [
224
+ {
225
+ "type": "string"
226
+ },
227
+ {
228
+ "type": "null"
229
+ }
230
+ ],
231
+ "default": null,
232
+ "title": "Value"
233
+ },
234
+ "x": {
235
+ "anyOf": [
236
+ {
237
+ "type": "string"
238
+ },
239
+ {
240
+ "type": "null"
241
+ }
242
+ ],
243
+ "default": null,
244
+ "title": "X"
245
+ },
246
+ "y": {
247
+ "anyOf": [
248
+ {
249
+ "type": "string"
250
+ },
251
+ {
252
+ "type": "null"
253
+ }
254
+ ],
255
+ "default": null,
256
+ "title": "Y"
257
+ }
258
+ },
259
+ "title": "FieldMapping",
260
+ "type": "object"
261
+ },
262
+ "FilterBinding": {
263
+ "additionalProperties": true,
264
+ "description": "How a filter widget is wired to a target widget.",
265
+ "properties": {
266
+ "field": {
267
+ "title": "Field",
268
+ "type": "string"
269
+ },
270
+ "operator": {
271
+ "default": "eq",
272
+ "enum": [
273
+ "eq",
274
+ "in",
275
+ "gt",
276
+ "lt",
277
+ "gte",
278
+ "lte",
279
+ "contains",
280
+ "date",
281
+ "between"
282
+ ],
283
+ "title": "Operator",
284
+ "type": "string"
285
+ },
286
+ "param": {
287
+ "anyOf": [
288
+ {
289
+ "type": "string"
290
+ },
291
+ {
292
+ "type": "null"
293
+ }
294
+ ],
295
+ "default": null,
296
+ "title": "Param"
297
+ },
298
+ "target": {
299
+ "default": "*",
300
+ "title": "Target",
301
+ "type": "string"
302
+ }
303
+ },
304
+ "required": [
305
+ "field"
306
+ ],
307
+ "title": "FilterBinding",
308
+ "type": "object"
309
+ },
310
+ "IncomingFilter": {
311
+ "additionalProperties": true,
312
+ "description": "How a target widget or dataset applies a filter broadcast from the dashboard.",
313
+ "properties": {
314
+ "field": {
315
+ "title": "Field",
316
+ "type": "string"
317
+ },
318
+ "filter_id": {
319
+ "title": "Filter Id",
320
+ "type": "string"
321
+ },
322
+ "operator": {
323
+ "default": "eq",
324
+ "enum": [
325
+ "eq",
326
+ "in",
327
+ "gt",
328
+ "lt",
329
+ "gte",
330
+ "lte",
331
+ "contains",
332
+ "date",
333
+ "between"
334
+ ],
335
+ "title": "Operator",
336
+ "type": "string"
337
+ },
338
+ "param": {
339
+ "anyOf": [
340
+ {
341
+ "type": "string"
342
+ },
343
+ {
344
+ "type": "null"
345
+ }
346
+ ],
347
+ "default": null,
348
+ "title": "Param"
349
+ }
350
+ },
351
+ "required": [
352
+ "filter_id",
353
+ "field"
354
+ ],
355
+ "title": "IncomingFilter",
356
+ "type": "object"
357
+ },
358
+ "InteractionVariableMapping": {
359
+ "additionalProperties": true,
360
+ "description": "Map a source value (event, filter, or literal) to a target filter/variable.",
361
+ "properties": {
362
+ "source": {
363
+ "$ref": "#/$defs/InteractionVariableSource"
364
+ },
365
+ "target": {
366
+ "title": "Target",
367
+ "type": "string"
368
+ },
369
+ "target_type": {
370
+ "default": "filter",
371
+ "enum": [
372
+ "filter",
373
+ "dimension"
374
+ ],
375
+ "title": "Target Type",
376
+ "type": "string"
377
+ }
378
+ },
379
+ "required": [
380
+ "target"
381
+ ],
382
+ "title": "InteractionVariableMapping",
383
+ "type": "object"
384
+ },
385
+ "InteractionVariableSource": {
386
+ "additionalProperties": true,
387
+ "description": "Source of a value for an interaction variable mapping.",
388
+ "properties": {
389
+ "field": {
390
+ "anyOf": [
391
+ {
392
+ "type": "string"
393
+ },
394
+ {
395
+ "type": "null"
396
+ }
397
+ ],
398
+ "default": null,
399
+ "title": "Field"
400
+ },
401
+ "kind": {
402
+ "default": "event",
403
+ "enum": [
404
+ "event",
405
+ "filter",
406
+ "literal"
407
+ ],
408
+ "title": "Kind",
409
+ "type": "string"
410
+ },
411
+ "value": {
412
+ "anyOf": [
413
+ {
414
+ "$ref": "#/$defs/JsonValue"
415
+ },
416
+ {
417
+ "type": "null"
418
+ }
419
+ ],
420
+ "default": null
421
+ }
422
+ },
423
+ "title": "InteractionVariableSource",
424
+ "type": "object"
425
+ },
426
+ "JsonValue": {},
427
+ "KpiDataSource": {
428
+ "additionalProperties": true,
429
+ "description": "Run a KPI from the catalog.",
430
+ "properties": {
431
+ "data_model_id": {
432
+ "anyOf": [
433
+ {
434
+ "type": "string"
435
+ },
436
+ {
437
+ "type": "null"
438
+ }
439
+ ],
440
+ "default": null,
441
+ "title": "Data Model Id"
442
+ },
443
+ "kind": {
444
+ "const": "kpi",
445
+ "default": "kpi",
446
+ "title": "Kind",
447
+ "type": "string"
448
+ },
449
+ "kpi": {
450
+ "title": "Kpi",
451
+ "type": "string"
452
+ },
453
+ "labelColumn": {
454
+ "anyOf": [
455
+ {
456
+ "type": "string"
457
+ },
458
+ {
459
+ "type": "null"
460
+ }
461
+ ],
462
+ "default": null,
463
+ "title": "Labelcolumn"
464
+ },
465
+ "params": {
466
+ "additionalProperties": {
467
+ "$ref": "#/$defs/JsonValue"
468
+ },
469
+ "title": "Params",
470
+ "type": "object"
471
+ },
472
+ "valueColumn": {
473
+ "anyOf": [
474
+ {
475
+ "type": "string"
476
+ },
477
+ {
478
+ "type": "null"
479
+ }
480
+ ],
481
+ "default": null,
482
+ "title": "Valuecolumn"
483
+ }
484
+ },
485
+ "required": [
486
+ "kpi"
487
+ ],
488
+ "title": "KpiDataSource",
489
+ "type": "object"
490
+ },
491
+ "LabelBlock": {
492
+ "additionalProperties": true,
493
+ "description": "A rich label with optional tooltip and icon.",
494
+ "properties": {
495
+ "icon": {
496
+ "anyOf": [
497
+ {
498
+ "type": "string"
499
+ },
500
+ {
501
+ "type": "null"
502
+ }
503
+ ],
504
+ "default": null,
505
+ "title": "Icon"
506
+ },
507
+ "position": {
508
+ "anyOf": [
509
+ {
510
+ "enum": [
511
+ "top",
512
+ "bottom",
513
+ "left",
514
+ "right"
515
+ ],
516
+ "type": "string"
517
+ },
518
+ {
519
+ "type": "null"
520
+ }
521
+ ],
522
+ "default": "top",
523
+ "title": "Position"
524
+ },
525
+ "text": {
526
+ "anyOf": [
527
+ {
528
+ "type": "string"
529
+ },
530
+ {
531
+ "type": "null"
532
+ }
533
+ ],
534
+ "default": null,
535
+ "title": "Text"
536
+ },
537
+ "tooltip": {
538
+ "anyOf": [
539
+ {
540
+ "type": "string"
541
+ },
542
+ {
543
+ "type": "null"
544
+ }
545
+ ],
546
+ "default": null,
547
+ "title": "Tooltip"
548
+ }
549
+ },
550
+ "title": "LabelBlock",
551
+ "type": "object"
552
+ },
553
+ "LayoutItem": {
554
+ "additionalProperties": true,
555
+ "description": "A single position/size entry in a responsive grid.",
556
+ "properties": {
557
+ "h": {
558
+ "default": 4,
559
+ "title": "H",
560
+ "type": "integer"
561
+ },
562
+ "isBounded": {
563
+ "anyOf": [
564
+ {
565
+ "type": "boolean"
566
+ },
567
+ {
568
+ "type": "null"
569
+ }
570
+ ],
571
+ "default": null,
572
+ "title": "Isbounded"
573
+ },
574
+ "isDraggable": {
575
+ "anyOf": [
576
+ {
577
+ "type": "boolean"
578
+ },
579
+ {
580
+ "type": "null"
581
+ }
582
+ ],
583
+ "default": null,
584
+ "title": "Isdraggable"
585
+ },
586
+ "isResizable": {
587
+ "anyOf": [
588
+ {
589
+ "type": "boolean"
590
+ },
591
+ {
592
+ "type": "null"
593
+ }
594
+ ],
595
+ "default": null,
596
+ "title": "Isresizable"
597
+ },
598
+ "maxH": {
599
+ "anyOf": [
600
+ {
601
+ "type": "integer"
602
+ },
603
+ {
604
+ "type": "null"
605
+ }
606
+ ],
607
+ "default": null,
608
+ "title": "Maxh"
609
+ },
610
+ "maxW": {
611
+ "anyOf": [
612
+ {
613
+ "type": "integer"
614
+ },
615
+ {
616
+ "type": "null"
617
+ }
618
+ ],
619
+ "default": null,
620
+ "title": "Maxw"
621
+ },
622
+ "minH": {
623
+ "anyOf": [
624
+ {
625
+ "type": "integer"
626
+ },
627
+ {
628
+ "type": "null"
629
+ }
630
+ ],
631
+ "default": null,
632
+ "title": "Minh"
633
+ },
634
+ "minW": {
635
+ "anyOf": [
636
+ {
637
+ "type": "integer"
638
+ },
639
+ {
640
+ "type": "null"
641
+ }
642
+ ],
643
+ "default": null,
644
+ "title": "Minw"
645
+ },
646
+ "resizeHandles": {
647
+ "anyOf": [
648
+ {
649
+ "items": {
650
+ "type": "string"
651
+ },
652
+ "type": "array"
653
+ },
654
+ {
655
+ "type": "null"
656
+ }
657
+ ],
658
+ "default": null,
659
+ "title": "Resizehandles"
660
+ },
661
+ "w": {
662
+ "default": 4,
663
+ "title": "W",
664
+ "type": "integer"
665
+ },
666
+ "x": {
667
+ "default": 0,
668
+ "title": "X",
669
+ "type": "integer"
670
+ },
671
+ "y": {
672
+ "default": 0,
673
+ "title": "Y",
674
+ "type": "integer"
675
+ }
676
+ },
677
+ "title": "LayoutItem",
678
+ "type": "object"
679
+ },
680
+ "Metadata": {
681
+ "additionalProperties": true,
682
+ "description": "Common metadata for dashboards and widgets.",
683
+ "properties": {
684
+ "author": {
685
+ "anyOf": [
686
+ {
687
+ "type": "string"
688
+ },
689
+ {
690
+ "type": "null"
691
+ }
692
+ ],
693
+ "default": null,
694
+ "title": "Author"
695
+ },
696
+ "description": {
697
+ "default": "",
698
+ "title": "Description",
699
+ "type": "string"
700
+ },
701
+ "header": {
702
+ "anyOf": [
703
+ {
704
+ "$ref": "#/$defs/WidgetHeader"
705
+ },
706
+ {
707
+ "type": "null"
708
+ }
709
+ ],
710
+ "default": null
711
+ },
712
+ "id": {
713
+ "title": "Id",
714
+ "type": "string"
715
+ },
716
+ "name": {
717
+ "title": "Name",
718
+ "type": "string"
719
+ },
720
+ "platform": {
721
+ "$ref": "#/$defs/PlatformAttributes"
722
+ },
723
+ "tags": {
724
+ "items": {
725
+ "type": "string"
726
+ },
727
+ "title": "Tags",
728
+ "type": "array"
729
+ },
730
+ "version": {
731
+ "default": "1.0.0",
732
+ "title": "Version",
733
+ "type": "string"
734
+ }
735
+ },
736
+ "required": [
737
+ "id",
738
+ "name"
739
+ ],
740
+ "title": "Metadata",
741
+ "type": "object"
742
+ },
743
+ "PlatformAttributes": {
744
+ "additionalProperties": true,
745
+ "description": "Cross-cutting platform attributes attached to every dashboard object.\n\nThese attributes control the relationship of the object to the platform,\nthe dashboard, the user, and security. They are intentionally generic so\nthe spec can grow into the larger enterprise BI project.",
746
+ "properties": {
747
+ "allow_embed": {
748
+ "default": false,
749
+ "title": "Allow Embed",
750
+ "type": "boolean"
751
+ },
752
+ "owner": {
753
+ "anyOf": [
754
+ {
755
+ "type": "string"
756
+ },
757
+ {
758
+ "type": "null"
759
+ }
760
+ ],
761
+ "default": null,
762
+ "title": "Owner"
763
+ },
764
+ "public": {
765
+ "default": false,
766
+ "title": "Public",
767
+ "type": "boolean"
768
+ },
769
+ "roles": {
770
+ "items": {
771
+ "type": "string"
772
+ },
773
+ "title": "Roles",
774
+ "type": "array"
775
+ },
776
+ "scope": {
777
+ "default": "dashboard",
778
+ "enum": [
779
+ "org",
780
+ "project",
781
+ "dashboard",
782
+ "widget"
783
+ ],
784
+ "title": "Scope",
785
+ "type": "string"
786
+ },
787
+ "status": {
788
+ "default": "draft",
789
+ "enum": [
790
+ "draft",
791
+ "published",
792
+ "archived"
793
+ ],
794
+ "title": "Status",
795
+ "type": "string"
796
+ },
797
+ "tags": {
798
+ "items": {
799
+ "type": "string"
800
+ },
801
+ "title": "Tags",
802
+ "type": "array"
803
+ },
804
+ "version": {
805
+ "default": "1.0.0",
806
+ "title": "Version",
807
+ "type": "string"
808
+ }
809
+ },
810
+ "title": "PlatformAttributes",
811
+ "type": "object"
812
+ },
813
+ "QueryDataSource": {
814
+ "additionalProperties": true,
815
+ "description": "Reference a named query defined in the dashboard manifest.",
816
+ "properties": {
817
+ "data_model_id": {
818
+ "anyOf": [
819
+ {
820
+ "type": "string"
821
+ },
822
+ {
823
+ "type": "null"
824
+ }
825
+ ],
826
+ "default": null,
827
+ "title": "Data Model Id"
828
+ },
829
+ "kind": {
830
+ "const": "query",
831
+ "default": "query",
832
+ "title": "Kind",
833
+ "type": "string"
834
+ },
835
+ "params": {
836
+ "additionalProperties": {
837
+ "$ref": "#/$defs/JsonValue"
838
+ },
839
+ "title": "Params",
840
+ "type": "object"
841
+ },
842
+ "query": {
843
+ "title": "Query",
844
+ "type": "string"
845
+ }
846
+ },
847
+ "required": [
848
+ "query"
849
+ ],
850
+ "title": "QueryDataSource",
851
+ "type": "object"
852
+ },
853
+ "ResponsiveLayout": {
854
+ "additionalProperties": true,
855
+ "description": "Responsive overrides for a layout item.",
856
+ "properties": {
857
+ "desktop": {
858
+ "anyOf": [
859
+ {
860
+ "$ref": "#/$defs/LayoutItem"
861
+ },
862
+ {
863
+ "type": "null"
864
+ }
865
+ ],
866
+ "default": null
867
+ },
868
+ "mobile": {
869
+ "anyOf": [
870
+ {
871
+ "$ref": "#/$defs/LayoutItem"
872
+ },
873
+ {
874
+ "type": "null"
875
+ }
876
+ ],
877
+ "default": null
878
+ },
879
+ "tablet": {
880
+ "anyOf": [
881
+ {
882
+ "$ref": "#/$defs/LayoutItem"
883
+ },
884
+ {
885
+ "type": "null"
886
+ }
887
+ ],
888
+ "default": null
889
+ },
890
+ "wide": {
891
+ "anyOf": [
892
+ {
893
+ "$ref": "#/$defs/LayoutItem"
894
+ },
895
+ {
896
+ "type": "null"
897
+ }
898
+ ],
899
+ "default": null
900
+ }
901
+ },
902
+ "title": "ResponsiveLayout",
903
+ "type": "object"
904
+ },
905
+ "SqlDataSource": {
906
+ "additionalProperties": true,
907
+ "description": "Run an arbitrary SQL query against the configured data store.",
908
+ "properties": {
909
+ "data_model_id": {
910
+ "anyOf": [
911
+ {
912
+ "type": "string"
913
+ },
914
+ {
915
+ "type": "null"
916
+ }
917
+ ],
918
+ "default": null,
919
+ "title": "Data Model Id"
920
+ },
921
+ "filter_field": {
922
+ "anyOf": [
923
+ {
924
+ "type": "string"
925
+ },
926
+ {
927
+ "type": "null"
928
+ }
929
+ ],
930
+ "default": null,
931
+ "title": "Filter Field"
932
+ },
933
+ "kind": {
934
+ "const": "sql",
935
+ "default": "sql",
936
+ "title": "Kind",
937
+ "type": "string"
938
+ },
939
+ "params": {
940
+ "additionalProperties": {
941
+ "$ref": "#/$defs/JsonValue"
942
+ },
943
+ "title": "Params",
944
+ "type": "object"
945
+ },
946
+ "query": {
947
+ "title": "Query",
948
+ "type": "string"
949
+ }
950
+ },
951
+ "required": [
952
+ "query"
953
+ ],
954
+ "title": "SqlDataSource",
955
+ "type": "object"
956
+ },
957
+ "StaticDataSource": {
958
+ "additionalProperties": true,
959
+ "description": "Static data supplied inline in the spec.",
960
+ "properties": {
961
+ "columns": {
962
+ "anyOf": [
963
+ {
964
+ "items": {
965
+ "type": "string"
966
+ },
967
+ "type": "array"
968
+ },
969
+ {
970
+ "type": "null"
971
+ }
972
+ ],
973
+ "default": null,
974
+ "title": "Columns"
975
+ },
976
+ "default_value": {
977
+ "$ref": "#/$defs/JsonValue",
978
+ "default": null
979
+ },
980
+ "kind": {
981
+ "const": "static",
982
+ "default": "static",
983
+ "title": "Kind",
984
+ "type": "string"
985
+ },
986
+ "options": {
987
+ "items": {
988
+ "$ref": "#/$defs/StaticOption"
989
+ },
990
+ "title": "Options",
991
+ "type": "array"
992
+ },
993
+ "rows": {
994
+ "items": {
995
+ "additionalProperties": {
996
+ "$ref": "#/$defs/JsonValue"
997
+ },
998
+ "type": "object"
999
+ },
1000
+ "title": "Rows",
1001
+ "type": "array"
1002
+ }
1003
+ },
1004
+ "title": "StaticDataSource",
1005
+ "type": "object"
1006
+ },
1007
+ "StaticOption": {
1008
+ "additionalProperties": true,
1009
+ "description": "A single option for a static select or filter.",
1010
+ "properties": {
1011
+ "label": {
1012
+ "title": "Label",
1013
+ "type": "string"
1014
+ },
1015
+ "value": {
1016
+ "$ref": "#/$defs/JsonValue"
1017
+ }
1018
+ },
1019
+ "required": [
1020
+ "value",
1021
+ "label"
1022
+ ],
1023
+ "title": "StaticOption",
1024
+ "type": "object"
1025
+ },
1026
+ "WidgetDisplay": {
1027
+ "additionalProperties": true,
1028
+ "description": "Display-specific configuration.",
1029
+ "properties": {
1030
+ "background": {
1031
+ "anyOf": [
1032
+ {
1033
+ "type": "string"
1034
+ },
1035
+ {
1036
+ "type": "null"
1037
+ }
1038
+ ],
1039
+ "default": null,
1040
+ "title": "Background"
1041
+ },
1042
+ "border": {
1043
+ "anyOf": [
1044
+ {
1045
+ "type": "string"
1046
+ },
1047
+ {
1048
+ "type": "boolean"
1049
+ },
1050
+ {
1051
+ "type": "null"
1052
+ }
1053
+ ],
1054
+ "default": null,
1055
+ "title": "Border"
1056
+ },
1057
+ "borderRadius": {
1058
+ "anyOf": [
1059
+ {
1060
+ "type": "string"
1061
+ },
1062
+ {
1063
+ "type": "integer"
1064
+ },
1065
+ {
1066
+ "type": "null"
1067
+ }
1068
+ ],
1069
+ "default": null,
1070
+ "title": "Borderradius"
1071
+ },
1072
+ "echarts": {
1073
+ "anyOf": [
1074
+ {
1075
+ "additionalProperties": {
1076
+ "$ref": "#/$defs/JsonValue"
1077
+ },
1078
+ "type": "object"
1079
+ },
1080
+ {
1081
+ "type": "null"
1082
+ }
1083
+ ],
1084
+ "default": null,
1085
+ "title": "Echarts"
1086
+ },
1087
+ "filter": {
1088
+ "anyOf": [
1089
+ {
1090
+ "additionalProperties": {
1091
+ "$ref": "#/$defs/JsonValue"
1092
+ },
1093
+ "type": "object"
1094
+ },
1095
+ {
1096
+ "type": "null"
1097
+ }
1098
+ ],
1099
+ "default": null,
1100
+ "title": "Filter"
1101
+ },
1102
+ "image": {
1103
+ "anyOf": [
1104
+ {
1105
+ "additionalProperties": {
1106
+ "$ref": "#/$defs/JsonValue"
1107
+ },
1108
+ "type": "object"
1109
+ },
1110
+ {
1111
+ "type": "null"
1112
+ }
1113
+ ],
1114
+ "default": null,
1115
+ "title": "Image"
1116
+ },
1117
+ "kpi": {
1118
+ "anyOf": [
1119
+ {
1120
+ "additionalProperties": {
1121
+ "$ref": "#/$defs/JsonValue"
1122
+ },
1123
+ "type": "object"
1124
+ },
1125
+ {
1126
+ "type": "null"
1127
+ }
1128
+ ],
1129
+ "default": null,
1130
+ "title": "Kpi"
1131
+ },
1132
+ "margin": {
1133
+ "anyOf": [
1134
+ {
1135
+ "type": "string"
1136
+ },
1137
+ {
1138
+ "type": "integer"
1139
+ },
1140
+ {
1141
+ "type": "null"
1142
+ }
1143
+ ],
1144
+ "default": null,
1145
+ "title": "Margin"
1146
+ },
1147
+ "markdown": {
1148
+ "anyOf": [
1149
+ {
1150
+ "additionalProperties": {
1151
+ "$ref": "#/$defs/JsonValue"
1152
+ },
1153
+ "type": "object"
1154
+ },
1155
+ {
1156
+ "type": "null"
1157
+ }
1158
+ ],
1159
+ "default": null,
1160
+ "title": "Markdown"
1161
+ },
1162
+ "padding": {
1163
+ "anyOf": [
1164
+ {
1165
+ "type": "string"
1166
+ },
1167
+ {
1168
+ "type": "integer"
1169
+ },
1170
+ {
1171
+ "type": "null"
1172
+ }
1173
+ ],
1174
+ "default": null,
1175
+ "title": "Padding"
1176
+ },
1177
+ "pivot_table": {
1178
+ "anyOf": [
1179
+ {
1180
+ "additionalProperties": {
1181
+ "$ref": "#/$defs/JsonValue"
1182
+ },
1183
+ "type": "object"
1184
+ },
1185
+ {
1186
+ "type": "null"
1187
+ }
1188
+ ],
1189
+ "default": null,
1190
+ "title": "Pivot Table"
1191
+ },
1192
+ "select": {
1193
+ "anyOf": [
1194
+ {
1195
+ "additionalProperties": {
1196
+ "$ref": "#/$defs/JsonValue"
1197
+ },
1198
+ "type": "object"
1199
+ },
1200
+ {
1201
+ "type": "null"
1202
+ }
1203
+ ],
1204
+ "default": null,
1205
+ "title": "Select"
1206
+ },
1207
+ "shadow": {
1208
+ "anyOf": [
1209
+ {
1210
+ "type": "string"
1211
+ },
1212
+ {
1213
+ "type": "boolean"
1214
+ },
1215
+ {
1216
+ "type": "null"
1217
+ }
1218
+ ],
1219
+ "default": null,
1220
+ "title": "Shadow"
1221
+ },
1222
+ "table": {
1223
+ "anyOf": [
1224
+ {
1225
+ "additionalProperties": {
1226
+ "$ref": "#/$defs/JsonValue"
1227
+ },
1228
+ "type": "object"
1229
+ },
1230
+ {
1231
+ "type": "null"
1232
+ }
1233
+ ],
1234
+ "default": null,
1235
+ "title": "Table"
1236
+ },
1237
+ "tabulator": {
1238
+ "anyOf": [
1239
+ {
1240
+ "additionalProperties": {
1241
+ "$ref": "#/$defs/JsonValue"
1242
+ },
1243
+ "type": "object"
1244
+ },
1245
+ {
1246
+ "type": "null"
1247
+ }
1248
+ ],
1249
+ "default": null,
1250
+ "title": "Tabulator"
1251
+ },
1252
+ "text": {
1253
+ "anyOf": [
1254
+ {
1255
+ "additionalProperties": {
1256
+ "$ref": "#/$defs/JsonValue"
1257
+ },
1258
+ "type": "object"
1259
+ },
1260
+ {
1261
+ "type": "null"
1262
+ }
1263
+ ],
1264
+ "default": null,
1265
+ "title": "Text"
1266
+ }
1267
+ },
1268
+ "title": "WidgetDisplay",
1269
+ "type": "object"
1270
+ },
1271
+ "WidgetHeader": {
1272
+ "additionalProperties": true,
1273
+ "description": "Object-level header/title configuration for any widget.",
1274
+ "properties": {
1275
+ "backgroundColor": {
1276
+ "anyOf": [
1277
+ {
1278
+ "type": "string"
1279
+ },
1280
+ {
1281
+ "type": "null"
1282
+ }
1283
+ ],
1284
+ "default": null,
1285
+ "title": "Backgroundcolor"
1286
+ },
1287
+ "border": {
1288
+ "anyOf": [
1289
+ {
1290
+ "type": "string"
1291
+ },
1292
+ {
1293
+ "type": "boolean"
1294
+ },
1295
+ {
1296
+ "type": "null"
1297
+ }
1298
+ ],
1299
+ "default": null,
1300
+ "title": "Border"
1301
+ },
1302
+ "borderRadius": {
1303
+ "anyOf": [
1304
+ {
1305
+ "type": "string"
1306
+ },
1307
+ {
1308
+ "type": "integer"
1309
+ },
1310
+ {
1311
+ "type": "null"
1312
+ }
1313
+ ],
1314
+ "default": null,
1315
+ "title": "Borderradius"
1316
+ },
1317
+ "color": {
1318
+ "anyOf": [
1319
+ {
1320
+ "type": "string"
1321
+ },
1322
+ {
1323
+ "type": "null"
1324
+ }
1325
+ ],
1326
+ "default": null,
1327
+ "title": "Color"
1328
+ },
1329
+ "fontSize": {
1330
+ "anyOf": [
1331
+ {
1332
+ "type": "string"
1333
+ },
1334
+ {
1335
+ "type": "integer"
1336
+ },
1337
+ {
1338
+ "type": "null"
1339
+ }
1340
+ ],
1341
+ "default": null,
1342
+ "title": "Fontsize"
1343
+ },
1344
+ "fontWeight": {
1345
+ "anyOf": [
1346
+ {
1347
+ "type": "string"
1348
+ },
1349
+ {
1350
+ "type": "integer"
1351
+ },
1352
+ {
1353
+ "type": "null"
1354
+ }
1355
+ ],
1356
+ "default": null,
1357
+ "title": "Fontweight"
1358
+ },
1359
+ "padding": {
1360
+ "anyOf": [
1361
+ {
1362
+ "type": "string"
1363
+ },
1364
+ {
1365
+ "type": "integer"
1366
+ },
1367
+ {
1368
+ "type": "null"
1369
+ }
1370
+ ],
1371
+ "default": null,
1372
+ "title": "Padding"
1373
+ },
1374
+ "textAlign": {
1375
+ "anyOf": [
1376
+ {
1377
+ "enum": [
1378
+ "left",
1379
+ "center",
1380
+ "right",
1381
+ "justify"
1382
+ ],
1383
+ "type": "string"
1384
+ },
1385
+ {
1386
+ "type": "null"
1387
+ }
1388
+ ],
1389
+ "default": null,
1390
+ "title": "Textalign"
1391
+ },
1392
+ "title": {
1393
+ "anyOf": [
1394
+ {
1395
+ "type": "string"
1396
+ },
1397
+ {
1398
+ "$ref": "#/$defs/LabelBlock"
1399
+ },
1400
+ {
1401
+ "type": "null"
1402
+ }
1403
+ ],
1404
+ "default": null,
1405
+ "title": "Title"
1406
+ },
1407
+ "verticalAlign": {
1408
+ "anyOf": [
1409
+ {
1410
+ "enum": [
1411
+ "top",
1412
+ "middle",
1413
+ "bottom"
1414
+ ],
1415
+ "type": "string"
1416
+ },
1417
+ {
1418
+ "type": "null"
1419
+ }
1420
+ ],
1421
+ "default": null,
1422
+ "title": "Verticalalign"
1423
+ },
1424
+ "visible": {
1425
+ "anyOf": [
1426
+ {
1427
+ "type": "boolean"
1428
+ },
1429
+ {
1430
+ "type": "null"
1431
+ }
1432
+ ],
1433
+ "default": true,
1434
+ "title": "Visible"
1435
+ }
1436
+ },
1437
+ "title": "WidgetHeader",
1438
+ "type": "object"
1439
+ },
1440
+ "WidgetInteraction": {
1441
+ "additionalProperties": true,
1442
+ "description": "A user-driven interaction on a widget.",
1443
+ "properties": {
1444
+ "id": {
1445
+ "title": "Id",
1446
+ "type": "string"
1447
+ },
1448
+ "label": {
1449
+ "anyOf": [
1450
+ {
1451
+ "type": "string"
1452
+ },
1453
+ {
1454
+ "type": "null"
1455
+ }
1456
+ ],
1457
+ "default": null,
1458
+ "title": "Label"
1459
+ },
1460
+ "open_in": {
1461
+ "default": "same",
1462
+ "enum": [
1463
+ "modal",
1464
+ "same",
1465
+ "new",
1466
+ "detail"
1467
+ ],
1468
+ "title": "Open In",
1469
+ "type": "string"
1470
+ },
1471
+ "pass_filters": {
1472
+ "default": true,
1473
+ "title": "Pass Filters",
1474
+ "type": "boolean"
1475
+ },
1476
+ "pass_selection": {
1477
+ "default": true,
1478
+ "title": "Pass Selection",
1479
+ "type": "boolean"
1480
+ },
1481
+ "target": {
1482
+ "title": "Target",
1483
+ "type": "string"
1484
+ },
1485
+ "target_type": {
1486
+ "default": "dashboard",
1487
+ "enum": [
1488
+ "dashboard",
1489
+ "url",
1490
+ "filter",
1491
+ "dimension"
1492
+ ],
1493
+ "title": "Target Type",
1494
+ "type": "string"
1495
+ },
1496
+ "type": {
1497
+ "enum": [
1498
+ "drilldown",
1499
+ "set_filter",
1500
+ "navigate"
1501
+ ],
1502
+ "title": "Type",
1503
+ "type": "string"
1504
+ },
1505
+ "variable_mappings": {
1506
+ "items": {
1507
+ "$ref": "#/$defs/InteractionVariableMapping"
1508
+ },
1509
+ "title": "Variable Mappings",
1510
+ "type": "array"
1511
+ }
1512
+ },
1513
+ "required": [
1514
+ "id",
1515
+ "type",
1516
+ "target"
1517
+ ],
1518
+ "title": "WidgetInteraction",
1519
+ "type": "object"
1520
+ },
1521
+ "WidgetLayout": {
1522
+ "additionalProperties": true,
1523
+ "description": "Layout configuration for a widget.",
1524
+ "properties": {
1525
+ "h": {
1526
+ "default": 4,
1527
+ "title": "H",
1528
+ "type": "integer"
1529
+ },
1530
+ "isBounded": {
1531
+ "anyOf": [
1532
+ {
1533
+ "type": "boolean"
1534
+ },
1535
+ {
1536
+ "type": "null"
1537
+ }
1538
+ ],
1539
+ "default": null,
1540
+ "title": "Isbounded"
1541
+ },
1542
+ "isDraggable": {
1543
+ "anyOf": [
1544
+ {
1545
+ "type": "boolean"
1546
+ },
1547
+ {
1548
+ "type": "null"
1549
+ }
1550
+ ],
1551
+ "default": null,
1552
+ "title": "Isdraggable"
1553
+ },
1554
+ "isResizable": {
1555
+ "anyOf": [
1556
+ {
1557
+ "type": "boolean"
1558
+ },
1559
+ {
1560
+ "type": "null"
1561
+ }
1562
+ ],
1563
+ "default": null,
1564
+ "title": "Isresizable"
1565
+ },
1566
+ "maxH": {
1567
+ "anyOf": [
1568
+ {
1569
+ "type": "integer"
1570
+ },
1571
+ {
1572
+ "type": "null"
1573
+ }
1574
+ ],
1575
+ "default": null,
1576
+ "title": "Maxh"
1577
+ },
1578
+ "maxW": {
1579
+ "anyOf": [
1580
+ {
1581
+ "type": "integer"
1582
+ },
1583
+ {
1584
+ "type": "null"
1585
+ }
1586
+ ],
1587
+ "default": null,
1588
+ "title": "Maxw"
1589
+ },
1590
+ "minH": {
1591
+ "anyOf": [
1592
+ {
1593
+ "type": "integer"
1594
+ },
1595
+ {
1596
+ "type": "null"
1597
+ }
1598
+ ],
1599
+ "default": null,
1600
+ "title": "Minh"
1601
+ },
1602
+ "minW": {
1603
+ "anyOf": [
1604
+ {
1605
+ "type": "integer"
1606
+ },
1607
+ {
1608
+ "type": "null"
1609
+ }
1610
+ ],
1611
+ "default": null,
1612
+ "title": "Minw"
1613
+ },
1614
+ "resizeHandles": {
1615
+ "anyOf": [
1616
+ {
1617
+ "items": {
1618
+ "type": "string"
1619
+ },
1620
+ "type": "array"
1621
+ },
1622
+ {
1623
+ "type": "null"
1624
+ }
1625
+ ],
1626
+ "default": null,
1627
+ "title": "Resizehandles"
1628
+ },
1629
+ "responsive": {
1630
+ "$ref": "#/$defs/ResponsiveLayout"
1631
+ },
1632
+ "unplaced": {
1633
+ "anyOf": [
1634
+ {
1635
+ "type": "boolean"
1636
+ },
1637
+ {
1638
+ "type": "null"
1639
+ }
1640
+ ],
1641
+ "default": null,
1642
+ "title": "Unplaced"
1643
+ },
1644
+ "w": {
1645
+ "default": 4,
1646
+ "title": "W",
1647
+ "type": "integer"
1648
+ },
1649
+ "x": {
1650
+ "default": 0,
1651
+ "title": "X",
1652
+ "type": "integer"
1653
+ },
1654
+ "y": {
1655
+ "default": 0,
1656
+ "title": "Y",
1657
+ "type": "integer"
1658
+ }
1659
+ },
1660
+ "title": "WidgetLayout",
1661
+ "type": "object"
1662
+ },
1663
+ "WidgetSpecInner": {
1664
+ "additionalProperties": true,
1665
+ "description": "Inner spec body of a widget.",
1666
+ "properties": {
1667
+ "bindings": {
1668
+ "items": {
1669
+ "$ref": "#/$defs/FilterBinding"
1670
+ },
1671
+ "title": "Bindings",
1672
+ "type": "array"
1673
+ },
1674
+ "component": {
1675
+ "default": "echarts",
1676
+ "enum": [
1677
+ "echarts",
1678
+ "kpi",
1679
+ "filter",
1680
+ "select",
1681
+ "table",
1682
+ "tabulator",
1683
+ "pivot_table",
1684
+ "text",
1685
+ "image",
1686
+ "markdown"
1687
+ ],
1688
+ "title": "Component",
1689
+ "type": "string"
1690
+ },
1691
+ "data": {
1692
+ "anyOf": [
1693
+ {
1694
+ "discriminator": {
1695
+ "mapping": {
1696
+ "dataset": "#/$defs/DatasetDataSource",
1697
+ "demo": "#/$defs/DemoDataSource",
1698
+ "kpi": "#/$defs/KpiDataSource",
1699
+ "query": "#/$defs/QueryDataSource",
1700
+ "sql": "#/$defs/SqlDataSource",
1701
+ "static": "#/$defs/StaticDataSource"
1702
+ },
1703
+ "propertyName": "kind"
1704
+ },
1705
+ "oneOf": [
1706
+ {
1707
+ "$ref": "#/$defs/KpiDataSource"
1708
+ },
1709
+ {
1710
+ "$ref": "#/$defs/StaticDataSource"
1711
+ },
1712
+ {
1713
+ "$ref": "#/$defs/DemoDataSource"
1714
+ },
1715
+ {
1716
+ "$ref": "#/$defs/SqlDataSource"
1717
+ },
1718
+ {
1719
+ "$ref": "#/$defs/DatasetDataSource"
1720
+ },
1721
+ {
1722
+ "$ref": "#/$defs/QueryDataSource"
1723
+ }
1724
+ ],
1725
+ "title": "Data"
1726
+ },
1727
+ {
1728
+ "type": "null"
1729
+ }
1730
+ ],
1731
+ "default": {
1732
+ "kind": "static"
1733
+ },
1734
+ "title": "Data"
1735
+ },
1736
+ "display": {
1737
+ "$ref": "#/$defs/WidgetDisplay"
1738
+ },
1739
+ "filters": {
1740
+ "items": {
1741
+ "$ref": "#/$defs/IncomingFilter"
1742
+ },
1743
+ "title": "Filters",
1744
+ "type": "array"
1745
+ },
1746
+ "interactions": {
1747
+ "items": {
1748
+ "$ref": "#/$defs/WidgetInteraction"
1749
+ },
1750
+ "title": "Interactions",
1751
+ "type": "array"
1752
+ },
1753
+ "layout": {
1754
+ "$ref": "#/$defs/WidgetLayout"
1755
+ },
1756
+ "mappings": {
1757
+ "$ref": "#/$defs/FieldMapping"
1758
+ }
1759
+ },
1760
+ "title": "WidgetSpecInner",
1761
+ "type": "object"
1762
+ }
1763
+ },
1764
+ "$id": "https://bideux.dev/schema/uas/widget.schema.json",
1765
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1766
+ "additionalProperties": true,
1767
+ "description": "Specification for a single widget/object.",
1768
+ "properties": {
1769
+ "kind": {
1770
+ "const": "widget",
1771
+ "default": "widget",
1772
+ "title": "Kind",
1773
+ "type": "string"
1774
+ },
1775
+ "metadata": {
1776
+ "$ref": "#/$defs/Metadata"
1777
+ },
1778
+ "spec": {
1779
+ "$ref": "#/$defs/WidgetSpecInner"
1780
+ },
1781
+ "version": {
1782
+ "default": "1.0",
1783
+ "title": "Version",
1784
+ "type": "string"
1785
+ }
1786
+ },
1787
+ "required": [
1788
+ "metadata",
1789
+ "spec"
1790
+ ],
1791
+ "title": "WidgetSpec",
1792
+ "type": "object"
1793
+ }