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