@panneau/protocol 0.0.0-stage → 5.0.0-alpha.1

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 (103) hide show
  1. package/README.md +35 -2
  2. package/dist/conditions.d.ts +7 -0
  3. package/dist/conditions.d.ts.map +1 -0
  4. package/dist/conditions.js +21 -0
  5. package/dist/conditions.js.map +1 -0
  6. package/dist/conformance/index.d.ts +42 -0
  7. package/dist/conformance/index.d.ts.map +1 -0
  8. package/dist/conformance/index.js +270 -0
  9. package/dist/conformance/index.js.map +1 -0
  10. package/dist/constants.d.ts +21 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +73 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +21 -0
  17. package/dist/lint.d.ts +8 -0
  18. package/dist/lint.d.ts.map +1 -0
  19. package/dist/lint.js +73 -0
  20. package/dist/lint.js.map +1 -0
  21. package/dist/mock/example.d.ts +8 -0
  22. package/dist/mock/example.d.ts.map +1 -0
  23. package/dist/mock/example.js +190 -0
  24. package/dist/mock/example.js.map +1 -0
  25. package/dist/mock/index.d.ts +24 -0
  26. package/dist/mock/index.d.ts.map +1 -0
  27. package/dist/mock/index.js +254 -0
  28. package/dist/mock/index.js.map +1 -0
  29. package/dist/openapi.d.ts +11 -0
  30. package/dist/openapi.d.ts.map +1 -0
  31. package/dist/openapi.js +540 -0
  32. package/dist/openapi.js.map +1 -0
  33. package/dist/problem.d.ts +7 -0
  34. package/dist/problem.d.ts.map +1 -0
  35. package/dist/problem.js +22 -0
  36. package/dist/problem.js.map +1 -0
  37. package/dist/query.d.ts +41 -0
  38. package/dist/query.d.ts.map +1 -0
  39. package/dist/query.js +80 -0
  40. package/dist/query.js.map +1 -0
  41. package/dist/rules.d.ts +29 -0
  42. package/dist/rules.d.ts.map +1 -0
  43. package/dist/rules.js +143 -0
  44. package/dist/rules.js.map +1 -0
  45. package/dist/runtime/index.d.ts +10 -0
  46. package/dist/runtime/index.d.ts.map +1 -0
  47. package/dist/runtime/index.js +9 -0
  48. package/dist/schemas/action.d.ts +163 -0
  49. package/dist/schemas/action.d.ts.map +1 -0
  50. package/dist/schemas/action.js +56 -0
  51. package/dist/schemas/action.js.map +1 -0
  52. package/dist/schemas/api.d.ts +371 -0
  53. package/dist/schemas/api.d.ts.map +1 -0
  54. package/dist/schemas/api.js +140 -0
  55. package/dist/schemas/api.js.map +1 -0
  56. package/dist/schemas/boot.d.ts +14 -0
  57. package/dist/schemas/boot.d.ts.map +1 -0
  58. package/dist/schemas/boot.js +16 -0
  59. package/dist/schemas/boot.js.map +1 -0
  60. package/dist/schemas/common.d.ts +28 -0
  61. package/dist/schemas/common.d.ts.map +1 -0
  62. package/dist/schemas/common.js +35 -0
  63. package/dist/schemas/common.js.map +1 -0
  64. package/dist/schemas/definition.d.ts +462 -0
  65. package/dist/schemas/definition.d.ts.map +1 -0
  66. package/dist/schemas/definition.js +101 -0
  67. package/dist/schemas/definition.js.map +1 -0
  68. package/dist/schemas/field.d.ts +139 -0
  69. package/dist/schemas/field.d.ts.map +1 -0
  70. package/dist/schemas/field.js +94 -0
  71. package/dist/schemas/field.js.map +1 -0
  72. package/dist/schemas/index.d.ts +1536 -0
  73. package/dist/schemas/index.d.ts.map +1 -0
  74. package/dist/schemas/index.js +68 -0
  75. package/dist/schemas/index.js.map +1 -0
  76. package/dist/schemas/layout.d.ts +26 -0
  77. package/dist/schemas/layout.d.ts.map +1 -0
  78. package/dist/schemas/layout.js +23 -0
  79. package/dist/schemas/layout.js.map +1 -0
  80. package/dist/schemas/list.d.ts +69 -0
  81. package/dist/schemas/list.d.ts.map +1 -0
  82. package/dist/schemas/list.js +41 -0
  83. package/dist/schemas/list.js.map +1 -0
  84. package/dist/schemas/resource.d.ts +328 -0
  85. package/dist/schemas/resource.d.ts.map +1 -0
  86. package/dist/schemas/resource.js +38 -0
  87. package/dist/schemas/resource.js.map +1 -0
  88. package/dist/validate.d.ts +28 -0
  89. package/dist/validate.d.ts.map +1 -0
  90. package/dist/validate.js +52 -0
  91. package/dist/validate.js.map +1 -0
  92. package/dist/values.d.ts +7 -0
  93. package/dist/values.d.ts.map +1 -0
  94. package/dist/values.js +29 -0
  95. package/dist/values.js.map +1 -0
  96. package/dist/version.d.ts +5 -0
  97. package/dist/version.d.ts.map +1 -0
  98. package/dist/version.js +9 -0
  99. package/dist/version.js.map +1 -0
  100. package/package.json +53 -5
  101. package/schema/boot.schema.json +1229 -0
  102. package/schema/definition.schema.json +1195 -0
  103. package/schema/openapi.json +3839 -0
@@ -0,0 +1,1229 @@
1
+ {
2
+ "$id": "https://github.com/folkloreinc/panneau-js/blob/v5.x/packages/protocol/schema/boot.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "protocol": {
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "apiBaseUrl": {
11
+ "type": "string",
12
+ "minLength": 1
13
+ },
14
+ "basePath": {
15
+ "type": "string",
16
+ "pattern": "^\\/([^/?#]+(\\/[^/?#]+)*)?\\/?$"
17
+ },
18
+ "locale": {
19
+ "type": "string",
20
+ "minLength": 2
21
+ },
22
+ "definition": {
23
+ "$ref": "#/$defs/Definition"
24
+ },
25
+ "loginUrl": {
26
+ "type": [
27
+ "string",
28
+ "null"
29
+ ]
30
+ }
31
+ },
32
+ "required": [
33
+ "protocol",
34
+ "apiBaseUrl",
35
+ "basePath",
36
+ "locale"
37
+ ],
38
+ "additionalProperties": {},
39
+ "$defs": {
40
+ "Definition": {
41
+ "type": "object",
42
+ "properties": {
43
+ "protocol": {
44
+ "type": "number",
45
+ "const": 1
46
+ },
47
+ "name": {
48
+ "type": "string"
49
+ },
50
+ "locale": {
51
+ "type": "string",
52
+ "minLength": 2
53
+ },
54
+ "locales": {
55
+ "minItems": 1,
56
+ "type": "array",
57
+ "items": {
58
+ "type": "string",
59
+ "minLength": 2
60
+ }
61
+ },
62
+ "api": {
63
+ "type": "object",
64
+ "properties": {
65
+ "baseUrl": {
66
+ "type": "string"
67
+ }
68
+ },
69
+ "required": [
70
+ "baseUrl"
71
+ ],
72
+ "additionalProperties": {}
73
+ },
74
+ "resources": {
75
+ "type": "array",
76
+ "items": {
77
+ "$ref": "#/$defs/Resource"
78
+ }
79
+ },
80
+ "pages": {
81
+ "type": "object",
82
+ "propertyNames": {
83
+ "type": "string"
84
+ },
85
+ "additionalProperties": {
86
+ "$ref": "#/$defs/Page"
87
+ }
88
+ },
89
+ "menus": {
90
+ "type": "object",
91
+ "propertyNames": {
92
+ "type": "string"
93
+ },
94
+ "additionalProperties": {
95
+ "type": "array",
96
+ "items": {
97
+ "$ref": "#/$defs/MenuItem"
98
+ }
99
+ }
100
+ },
101
+ "routes": {
102
+ "type": "object",
103
+ "propertyNames": {
104
+ "type": "string"
105
+ },
106
+ "additionalProperties": {
107
+ "type": "string"
108
+ }
109
+ },
110
+ "auth": {
111
+ "$ref": "#/$defs/Auth"
112
+ },
113
+ "dashboard": {
114
+ "type": "object",
115
+ "properties": {
116
+ "widgets": {
117
+ "type": "array",
118
+ "items": {
119
+ "$ref": "#/$defs/Widget"
120
+ }
121
+ }
122
+ },
123
+ "required": [
124
+ "widgets"
125
+ ],
126
+ "additionalProperties": {}
127
+ },
128
+ "search": {
129
+ "type": "object",
130
+ "properties": {
131
+ "enabled": {
132
+ "type": "boolean"
133
+ }
134
+ },
135
+ "required": [
136
+ "enabled"
137
+ ],
138
+ "additionalProperties": {}
139
+ },
140
+ "uploads": {
141
+ "$ref": "#/$defs/Uploads"
142
+ },
143
+ "theme": {
144
+ "type": "object",
145
+ "properties": {
146
+ "colorScheme": {
147
+ "type": "string",
148
+ "enum": [
149
+ "light",
150
+ "dark",
151
+ "auto"
152
+ ]
153
+ }
154
+ },
155
+ "additionalProperties": {}
156
+ },
157
+ "user": {
158
+ "anyOf": [
159
+ {
160
+ "$ref": "#/$defs/User"
161
+ },
162
+ {
163
+ "type": "null"
164
+ }
165
+ ]
166
+ }
167
+ },
168
+ "required": [
169
+ "protocol",
170
+ "name",
171
+ "locale",
172
+ "locales",
173
+ "api",
174
+ "resources"
175
+ ],
176
+ "additionalProperties": {}
177
+ },
178
+ "Resource": {
179
+ "type": "object",
180
+ "properties": {
181
+ "id": {
182
+ "type": "string",
183
+ "minLength": 1
184
+ },
185
+ "label": {
186
+ "type": "object",
187
+ "properties": {
188
+ "singular": {
189
+ "type": "string"
190
+ },
191
+ "plural": {
192
+ "type": "string"
193
+ }
194
+ },
195
+ "required": [
196
+ "singular",
197
+ "plural"
198
+ ],
199
+ "additionalProperties": {}
200
+ },
201
+ "description": {
202
+ "type": "string"
203
+ },
204
+ "icon": {
205
+ "type": "string"
206
+ },
207
+ "itemTitle": {
208
+ "type": "string"
209
+ },
210
+ "fields": {
211
+ "type": "array",
212
+ "items": {
213
+ "$ref": "#/$defs/Field"
214
+ }
215
+ },
216
+ "form": {
217
+ "type": "object",
218
+ "properties": {
219
+ "layout": {
220
+ "type": "array",
221
+ "items": {
222
+ "$ref": "#/$defs/LayoutNode"
223
+ }
224
+ }
225
+ },
226
+ "additionalProperties": {}
227
+ },
228
+ "list": {
229
+ "$ref": "#/$defs/ListDefinition"
230
+ },
231
+ "actions": {
232
+ "type": "array",
233
+ "items": {
234
+ "$ref": "#/$defs/Action"
235
+ }
236
+ },
237
+ "abilities": {
238
+ "$ref": "#/$defs/Abilities"
239
+ },
240
+ "features": {
241
+ "$ref": "#/$defs/ResourceFeatures"
242
+ },
243
+ "types": {
244
+ "type": "array",
245
+ "items": {
246
+ "$ref": "#/$defs/BlockType"
247
+ }
248
+ },
249
+ "settings": {
250
+ "type": "object",
251
+ "propertyNames": {
252
+ "type": "string"
253
+ },
254
+ "additionalProperties": {}
255
+ }
256
+ },
257
+ "required": [
258
+ "id",
259
+ "label",
260
+ "fields"
261
+ ],
262
+ "additionalProperties": {}
263
+ },
264
+ "Field": {
265
+ "type": "object",
266
+ "properties": {
267
+ "name": {
268
+ "type": "string",
269
+ "minLength": 1
270
+ },
271
+ "type": {
272
+ "type": "string",
273
+ "minLength": 1
274
+ },
275
+ "label": {
276
+ "type": "string"
277
+ },
278
+ "help": {
279
+ "type": "string"
280
+ },
281
+ "placeholder": {
282
+ "type": "string"
283
+ },
284
+ "default": {},
285
+ "localized": {
286
+ "type": "boolean"
287
+ },
288
+ "readOnly": {
289
+ "type": "boolean"
290
+ },
291
+ "createOnly": {
292
+ "type": "boolean"
293
+ },
294
+ "updateOnly": {
295
+ "type": "boolean"
296
+ },
297
+ "rules": {
298
+ "type": "array",
299
+ "items": {
300
+ "$ref": "#/$defs/Rule"
301
+ }
302
+ },
303
+ "visibleWhen": {
304
+ "$ref": "#/$defs/Condition"
305
+ },
306
+ "options": {
307
+ "type": "array",
308
+ "items": {
309
+ "$ref": "#/$defs/Option"
310
+ }
311
+ },
312
+ "multiple": {
313
+ "type": "boolean"
314
+ },
315
+ "resource": {
316
+ "type": "string"
317
+ },
318
+ "accept": {
319
+ "type": "array",
320
+ "items": {
321
+ "type": "string"
322
+ }
323
+ },
324
+ "from": {
325
+ "type": "string"
326
+ },
327
+ "display": {
328
+ "type": "string"
329
+ },
330
+ "fields": {
331
+ "type": "array",
332
+ "items": {
333
+ "$ref": "#/$defs/Field"
334
+ }
335
+ },
336
+ "types": {
337
+ "type": "array",
338
+ "items": {
339
+ "$ref": "#/$defs/BlockType"
340
+ }
341
+ },
342
+ "settings": {
343
+ "type": "object",
344
+ "propertyNames": {
345
+ "type": "string"
346
+ },
347
+ "additionalProperties": {}
348
+ }
349
+ },
350
+ "required": [
351
+ "name",
352
+ "type"
353
+ ],
354
+ "additionalProperties": {}
355
+ },
356
+ "Rule": {
357
+ "anyOf": [
358
+ {
359
+ "type": "object",
360
+ "properties": {
361
+ "rule": {
362
+ "type": "string",
363
+ "const": "required"
364
+ },
365
+ "message": {
366
+ "type": "string"
367
+ }
368
+ },
369
+ "required": [
370
+ "rule"
371
+ ],
372
+ "additionalProperties": {}
373
+ },
374
+ {
375
+ "type": "object",
376
+ "properties": {
377
+ "rule": {
378
+ "type": "string",
379
+ "enum": [
380
+ "min",
381
+ "max"
382
+ ]
383
+ },
384
+ "value": {
385
+ "type": "number"
386
+ },
387
+ "message": {
388
+ "type": "string"
389
+ }
390
+ },
391
+ "required": [
392
+ "rule",
393
+ "value"
394
+ ],
395
+ "additionalProperties": {}
396
+ },
397
+ {
398
+ "type": "object",
399
+ "properties": {
400
+ "rule": {
401
+ "type": "string",
402
+ "const": "pattern"
403
+ },
404
+ "value": {
405
+ "type": "string"
406
+ },
407
+ "flags": {
408
+ "type": "string"
409
+ },
410
+ "message": {
411
+ "type": "string"
412
+ }
413
+ },
414
+ "required": [
415
+ "rule",
416
+ "value"
417
+ ],
418
+ "additionalProperties": {}
419
+ },
420
+ {
421
+ "type": "object",
422
+ "properties": {
423
+ "rule": {
424
+ "type": "string",
425
+ "enum": [
426
+ "email",
427
+ "url"
428
+ ]
429
+ },
430
+ "message": {
431
+ "type": "string"
432
+ }
433
+ },
434
+ "required": [
435
+ "rule"
436
+ ],
437
+ "additionalProperties": {}
438
+ },
439
+ {
440
+ "type": "object",
441
+ "properties": {
442
+ "rule": {
443
+ "type": "string",
444
+ "const": "in"
445
+ },
446
+ "value": {
447
+ "type": "array",
448
+ "items": {
449
+ "type": [
450
+ "string",
451
+ "number",
452
+ "boolean"
453
+ ]
454
+ }
455
+ },
456
+ "message": {
457
+ "type": "string"
458
+ }
459
+ },
460
+ "required": [
461
+ "rule",
462
+ "value"
463
+ ],
464
+ "additionalProperties": {}
465
+ },
466
+ {
467
+ "type": "object",
468
+ "properties": {
469
+ "rule": {
470
+ "type": "string",
471
+ "const": "accept"
472
+ },
473
+ "value": {
474
+ "type": "array",
475
+ "items": {
476
+ "type": "string",
477
+ "minLength": 1
478
+ }
479
+ },
480
+ "message": {
481
+ "type": "string"
482
+ }
483
+ },
484
+ "required": [
485
+ "rule",
486
+ "value"
487
+ ],
488
+ "additionalProperties": {}
489
+ },
490
+ {
491
+ "type": "object",
492
+ "properties": {
493
+ "rule": {
494
+ "type": "string",
495
+ "const": "maxSize"
496
+ },
497
+ "value": {
498
+ "type": "integer",
499
+ "exclusiveMinimum": 0,
500
+ "maximum": 9007199254740991
501
+ },
502
+ "message": {
503
+ "type": "string"
504
+ }
505
+ },
506
+ "required": [
507
+ "rule",
508
+ "value"
509
+ ],
510
+ "additionalProperties": {}
511
+ },
512
+ {
513
+ "type": "object",
514
+ "properties": {
515
+ "rule": {
516
+ "type": "string",
517
+ "enum": [
518
+ "before",
519
+ "after"
520
+ ]
521
+ },
522
+ "value": {
523
+ "anyOf": [
524
+ {
525
+ "type": "string"
526
+ },
527
+ {
528
+ "type": "object",
529
+ "properties": {
530
+ "field": {
531
+ "type": "string",
532
+ "minLength": 1
533
+ }
534
+ },
535
+ "required": [
536
+ "field"
537
+ ],
538
+ "additionalProperties": {}
539
+ }
540
+ ]
541
+ },
542
+ "message": {
543
+ "type": "string"
544
+ }
545
+ },
546
+ "required": [
547
+ "rule",
548
+ "value"
549
+ ],
550
+ "additionalProperties": {}
551
+ },
552
+ {
553
+ "type": "object",
554
+ "properties": {
555
+ "rule": {
556
+ "type": "string"
557
+ },
558
+ "message": {
559
+ "type": "string"
560
+ }
561
+ },
562
+ "required": [
563
+ "rule"
564
+ ],
565
+ "additionalProperties": {}
566
+ }
567
+ ]
568
+ },
569
+ "Condition": {
570
+ "type": "object",
571
+ "properties": {
572
+ "field": {
573
+ "type": "string",
574
+ "minLength": 1
575
+ },
576
+ "equals": {},
577
+ "in": {
578
+ "type": "array",
579
+ "items": {}
580
+ },
581
+ "notIn": {
582
+ "type": "array",
583
+ "items": {}
584
+ },
585
+ "filled": {
586
+ "type": "boolean"
587
+ },
588
+ "all": {
589
+ "type": "array",
590
+ "items": {
591
+ "$ref": "#/$defs/Condition"
592
+ }
593
+ },
594
+ "any": {
595
+ "type": "array",
596
+ "items": {
597
+ "$ref": "#/$defs/Condition"
598
+ }
599
+ }
600
+ },
601
+ "additionalProperties": {}
602
+ },
603
+ "Option": {
604
+ "type": "object",
605
+ "properties": {
606
+ "value": {
607
+ "type": [
608
+ "string",
609
+ "number",
610
+ "boolean"
611
+ ]
612
+ },
613
+ "label": {
614
+ "type": "string"
615
+ },
616
+ "description": {
617
+ "type": "string"
618
+ },
619
+ "disabled": {
620
+ "type": "boolean"
621
+ }
622
+ },
623
+ "required": [
624
+ "value",
625
+ "label"
626
+ ],
627
+ "additionalProperties": {}
628
+ },
629
+ "BlockType": {
630
+ "type": "object",
631
+ "properties": {
632
+ "id": {
633
+ "type": "string",
634
+ "minLength": 1
635
+ },
636
+ "label": {
637
+ "type": "string"
638
+ },
639
+ "icon": {
640
+ "type": "string"
641
+ },
642
+ "fields": {
643
+ "type": "array",
644
+ "items": {
645
+ "$ref": "#/$defs/Field"
646
+ }
647
+ }
648
+ },
649
+ "required": [
650
+ "id",
651
+ "label",
652
+ "fields"
653
+ ],
654
+ "additionalProperties": {}
655
+ },
656
+ "LayoutNode": {
657
+ "type": "object",
658
+ "properties": {
659
+ "type": {
660
+ "type": "string",
661
+ "minLength": 1
662
+ },
663
+ "name": {
664
+ "type": "string",
665
+ "minLength": 1
666
+ },
667
+ "label": {
668
+ "type": "string"
669
+ },
670
+ "description": {
671
+ "type": "string"
672
+ },
673
+ "text": {
674
+ "type": "string"
675
+ },
676
+ "component": {
677
+ "type": "string"
678
+ },
679
+ "props": {
680
+ "type": "object",
681
+ "propertyNames": {
682
+ "type": "string"
683
+ },
684
+ "additionalProperties": {}
685
+ },
686
+ "width": {
687
+ "type": "integer",
688
+ "minimum": 1,
689
+ "maximum": 12
690
+ },
691
+ "collapsible": {
692
+ "type": "boolean"
693
+ },
694
+ "collapsed": {
695
+ "type": "boolean"
696
+ },
697
+ "visibleWhen": {
698
+ "$ref": "#/$defs/Condition"
699
+ },
700
+ "children": {
701
+ "type": "array",
702
+ "items": {
703
+ "$ref": "#/$defs/LayoutNode"
704
+ }
705
+ }
706
+ },
707
+ "required": [
708
+ "type"
709
+ ],
710
+ "additionalProperties": {}
711
+ },
712
+ "ListDefinition": {
713
+ "type": "object",
714
+ "properties": {
715
+ "columns": {
716
+ "type": "array",
717
+ "items": {
718
+ "$ref": "#/$defs/Column"
719
+ }
720
+ },
721
+ "filters": {
722
+ "type": "array",
723
+ "items": {
724
+ "$ref": "#/$defs/Filter"
725
+ }
726
+ },
727
+ "sorts": {
728
+ "type": "array",
729
+ "items": {
730
+ "type": "string",
731
+ "minLength": 1
732
+ }
733
+ },
734
+ "defaultSort": {
735
+ "type": "string"
736
+ },
737
+ "search": {
738
+ "type": "boolean"
739
+ },
740
+ "layouts": {
741
+ "type": "array",
742
+ "items": {
743
+ "type": "string",
744
+ "minLength": 1
745
+ }
746
+ },
747
+ "perPage": {
748
+ "type": "integer",
749
+ "exclusiveMinimum": 0,
750
+ "maximum": 9007199254740991
751
+ },
752
+ "perPageOptions": {
753
+ "type": "array",
754
+ "items": {
755
+ "type": "integer",
756
+ "exclusiveMinimum": 0,
757
+ "maximum": 9007199254740991
758
+ }
759
+ },
760
+ "inlineEdit": {
761
+ "type": "array",
762
+ "items": {
763
+ "type": "string",
764
+ "minLength": 1
765
+ }
766
+ },
767
+ "selectable": {
768
+ "type": "boolean"
769
+ }
770
+ },
771
+ "additionalProperties": {}
772
+ },
773
+ "Column": {
774
+ "type": "object",
775
+ "properties": {
776
+ "field": {
777
+ "type": "string",
778
+ "minLength": 1
779
+ },
780
+ "id": {
781
+ "type": "string",
782
+ "minLength": 1
783
+ },
784
+ "label": {
785
+ "type": "string"
786
+ },
787
+ "display": {
788
+ "type": "string"
789
+ },
790
+ "sortable": {
791
+ "type": "boolean"
792
+ },
793
+ "width": {
794
+ "type": [
795
+ "number",
796
+ "string"
797
+ ]
798
+ },
799
+ "align": {
800
+ "type": "string",
801
+ "enum": [
802
+ "start",
803
+ "center",
804
+ "end"
805
+ ]
806
+ }
807
+ },
808
+ "additionalProperties": {}
809
+ },
810
+ "Filter": {
811
+ "type": "object",
812
+ "properties": {
813
+ "id": {
814
+ "type": "string",
815
+ "minLength": 1
816
+ },
817
+ "type": {
818
+ "type": "string",
819
+ "minLength": 1
820
+ },
821
+ "label": {
822
+ "type": "string"
823
+ },
824
+ "options": {
825
+ "type": "array",
826
+ "items": {
827
+ "$ref": "#/$defs/Option"
828
+ }
829
+ },
830
+ "resource": {
831
+ "type": "string"
832
+ },
833
+ "multiple": {
834
+ "type": "boolean"
835
+ },
836
+ "default": {}
837
+ },
838
+ "required": [
839
+ "id",
840
+ "type"
841
+ ],
842
+ "additionalProperties": {}
843
+ },
844
+ "Action": {
845
+ "type": "object",
846
+ "properties": {
847
+ "id": {
848
+ "type": "string",
849
+ "minLength": 1
850
+ },
851
+ "label": {
852
+ "type": "string"
853
+ },
854
+ "icon": {
855
+ "type": "string"
856
+ },
857
+ "kind": {
858
+ "default": "server",
859
+ "type": "string",
860
+ "enum": [
861
+ "server",
862
+ "link",
863
+ "client"
864
+ ]
865
+ },
866
+ "scope": {
867
+ "minItems": 1,
868
+ "type": "array",
869
+ "items": {
870
+ "$ref": "#/$defs/ActionScope"
871
+ }
872
+ },
873
+ "placement": {
874
+ "type": "array",
875
+ "items": {
876
+ "$ref": "#/$defs/ActionPlacement"
877
+ }
878
+ },
879
+ "destructive": {
880
+ "type": "boolean"
881
+ },
882
+ "confirm": {
883
+ "$ref": "#/$defs/ActionConfirm"
884
+ },
885
+ "fields": {
886
+ "type": "array",
887
+ "items": {
888
+ "$ref": "#/$defs/Field"
889
+ }
890
+ },
891
+ "layout": {
892
+ "type": "array",
893
+ "items": {
894
+ "$ref": "#/$defs/LayoutNode"
895
+ }
896
+ },
897
+ "queued": {
898
+ "type": "boolean"
899
+ },
900
+ "url": {
901
+ "type": "string"
902
+ },
903
+ "route": {
904
+ "type": "string"
905
+ },
906
+ "component": {
907
+ "type": "string"
908
+ },
909
+ "abilities": {
910
+ "$ref": "#/$defs/Abilities"
911
+ }
912
+ },
913
+ "required": [
914
+ "id",
915
+ "label",
916
+ "scope"
917
+ ],
918
+ "additionalProperties": {}
919
+ },
920
+ "ActionScope": {
921
+ "type": "string",
922
+ "enum": [
923
+ "item",
924
+ "selection",
925
+ "resource"
926
+ ]
927
+ },
928
+ "ActionPlacement": {
929
+ "type": "string",
930
+ "enum": [
931
+ "row",
932
+ "toolbar",
933
+ "form",
934
+ "menu"
935
+ ]
936
+ },
937
+ "ActionConfirm": {
938
+ "anyOf": [
939
+ {
940
+ "type": "boolean"
941
+ },
942
+ {
943
+ "type": "object",
944
+ "properties": {
945
+ "title": {
946
+ "type": "string"
947
+ },
948
+ "message": {
949
+ "type": "string"
950
+ },
951
+ "confirmLabel": {
952
+ "type": "string"
953
+ },
954
+ "cancelLabel": {
955
+ "type": "string"
956
+ }
957
+ },
958
+ "additionalProperties": {}
959
+ }
960
+ ]
961
+ },
962
+ "Abilities": {
963
+ "type": "object",
964
+ "propertyNames": {
965
+ "type": "string"
966
+ },
967
+ "additionalProperties": {
968
+ "type": "boolean"
969
+ }
970
+ },
971
+ "ResourceFeatures": {
972
+ "type": "object",
973
+ "properties": {
974
+ "drafts": {
975
+ "type": "boolean"
976
+ },
977
+ "revisions": {
978
+ "type": "boolean"
979
+ },
980
+ "preview": {
981
+ "anyOf": [
982
+ {
983
+ "type": "null"
984
+ },
985
+ {
986
+ "type": "object",
987
+ "properties": {
988
+ "mode": {
989
+ "type": "string",
990
+ "enum": [
991
+ "component",
992
+ "iframe"
993
+ ]
994
+ },
995
+ "component": {
996
+ "type": "string"
997
+ }
998
+ },
999
+ "required": [
1000
+ "mode"
1001
+ ],
1002
+ "additionalProperties": {}
1003
+ }
1004
+ ]
1005
+ },
1006
+ "search": {
1007
+ "type": "boolean"
1008
+ }
1009
+ },
1010
+ "additionalProperties": {}
1011
+ },
1012
+ "Page": {
1013
+ "type": "object",
1014
+ "properties": {
1015
+ "component": {
1016
+ "type": "string",
1017
+ "minLength": 1
1018
+ },
1019
+ "path": {
1020
+ "type": "string"
1021
+ },
1022
+ "label": {
1023
+ "type": "string"
1024
+ },
1025
+ "props": {
1026
+ "type": "object",
1027
+ "propertyNames": {
1028
+ "type": "string"
1029
+ },
1030
+ "additionalProperties": {}
1031
+ }
1032
+ },
1033
+ "required": [
1034
+ "component"
1035
+ ],
1036
+ "additionalProperties": {}
1037
+ },
1038
+ "MenuItem": {
1039
+ "type": "object",
1040
+ "properties": {
1041
+ "type": {
1042
+ "type": "string",
1043
+ "minLength": 1
1044
+ },
1045
+ "label": {
1046
+ "type": "string"
1047
+ },
1048
+ "icon": {
1049
+ "type": "string"
1050
+ },
1051
+ "resource": {
1052
+ "type": "string"
1053
+ },
1054
+ "page": {
1055
+ "type": "string"
1056
+ },
1057
+ "url": {
1058
+ "type": "string"
1059
+ },
1060
+ "external": {
1061
+ "type": "boolean"
1062
+ },
1063
+ "children": {
1064
+ "type": "array",
1065
+ "items": {
1066
+ "$ref": "#/$defs/MenuItem"
1067
+ }
1068
+ }
1069
+ },
1070
+ "required": [
1071
+ "type"
1072
+ ],
1073
+ "additionalProperties": {}
1074
+ },
1075
+ "Auth": {
1076
+ "type": "object",
1077
+ "properties": {
1078
+ "mode": {
1079
+ "type": "string",
1080
+ "enum": [
1081
+ "panneau",
1082
+ "external"
1083
+ ]
1084
+ },
1085
+ "loginUrl": {
1086
+ "type": [
1087
+ "string",
1088
+ "null"
1089
+ ]
1090
+ },
1091
+ "password": {
1092
+ "type": "boolean"
1093
+ },
1094
+ "providers": {
1095
+ "type": "array",
1096
+ "items": {
1097
+ "$ref": "#/$defs/AuthProvider"
1098
+ }
1099
+ },
1100
+ "passwordReset": {
1101
+ "type": "boolean"
1102
+ },
1103
+ "twoFactor": {
1104
+ "type": "boolean"
1105
+ },
1106
+ "passkeys": {
1107
+ "type": "boolean"
1108
+ },
1109
+ "emailVerification": {
1110
+ "type": "boolean"
1111
+ }
1112
+ },
1113
+ "required": [
1114
+ "mode"
1115
+ ],
1116
+ "additionalProperties": {}
1117
+ },
1118
+ "AuthProvider": {
1119
+ "type": "object",
1120
+ "properties": {
1121
+ "id": {
1122
+ "type": "string",
1123
+ "minLength": 1
1124
+ },
1125
+ "label": {
1126
+ "type": "string"
1127
+ },
1128
+ "url": {
1129
+ "type": "string"
1130
+ },
1131
+ "icon": {
1132
+ "type": "string"
1133
+ }
1134
+ },
1135
+ "required": [
1136
+ "id",
1137
+ "label"
1138
+ ],
1139
+ "additionalProperties": {}
1140
+ },
1141
+ "Widget": {
1142
+ "type": "object",
1143
+ "properties": {
1144
+ "id": {
1145
+ "type": "string",
1146
+ "minLength": 1
1147
+ },
1148
+ "type": {
1149
+ "type": "string",
1150
+ "minLength": 1
1151
+ },
1152
+ "label": {
1153
+ "type": "string"
1154
+ },
1155
+ "width": {
1156
+ "type": "integer",
1157
+ "minimum": 1,
1158
+ "maximum": 12
1159
+ },
1160
+ "settings": {
1161
+ "type": "object",
1162
+ "propertyNames": {
1163
+ "type": "string"
1164
+ },
1165
+ "additionalProperties": {}
1166
+ }
1167
+ },
1168
+ "required": [
1169
+ "id",
1170
+ "type"
1171
+ ],
1172
+ "additionalProperties": {}
1173
+ },
1174
+ "Uploads": {
1175
+ "type": "object",
1176
+ "properties": {
1177
+ "mode": {
1178
+ "type": "string",
1179
+ "enum": [
1180
+ "multipart",
1181
+ "tus",
1182
+ "presigned"
1183
+ ]
1184
+ },
1185
+ "endpoint": {
1186
+ "type": "string"
1187
+ },
1188
+ "maxSize": {
1189
+ "type": "integer",
1190
+ "exclusiveMinimum": 0,
1191
+ "maximum": 9007199254740991
1192
+ }
1193
+ },
1194
+ "required": [
1195
+ "mode"
1196
+ ],
1197
+ "additionalProperties": {}
1198
+ },
1199
+ "User": {
1200
+ "type": "object",
1201
+ "properties": {
1202
+ "id": {
1203
+ "$ref": "#/$defs/Id"
1204
+ },
1205
+ "name": {
1206
+ "type": "string"
1207
+ },
1208
+ "email": {
1209
+ "type": "string"
1210
+ },
1211
+ "avatarUrl": {
1212
+ "type": "string"
1213
+ },
1214
+ "abilities": {
1215
+ "$ref": "#/$defs/Abilities"
1216
+ }
1217
+ },
1218
+ "required": [
1219
+ "id",
1220
+ "name"
1221
+ ],
1222
+ "additionalProperties": {}
1223
+ },
1224
+ "Id": {
1225
+ "type": "string",
1226
+ "minLength": 1
1227
+ }
1228
+ }
1229
+ }