@toolproof-npm/schema 0.1.49 → 0.1.52

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 (27) hide show
  1. package/dist/genesis/generated/resource-envelopes/Genesis.d.ts +2 -0
  2. package/dist/genesis/generated/resource-envelopes/Genesis.js +2 -0
  3. package/dist/genesis/generated/resource-envelopes/Genesis.json +2337 -0
  4. package/dist/genesis/{resourceTypes → generated/resource-type-envelopes}/Genesis.json +223 -255
  5. package/dist/genesis/generated/resourceTypes/Genesis.d.ts +2 -0
  6. package/dist/genesis/generated/resourceTypes/Genesis.js +2 -0
  7. package/dist/genesis/generated/resourceTypes/Genesis.json +1757 -0
  8. package/dist/genesis/generated/resources/Genesis.json +157 -189
  9. package/dist/genesis/generated/schemas/Genesis.json +149 -181
  10. package/dist/genesis/generated/schemas/Job.json +20 -22
  11. package/dist/genesis/generated/schemas/ResourceFormat.json +14 -16
  12. package/dist/genesis/generated/schemas/ResourceType.json +28 -30
  13. package/dist/genesis/generated/schemas/StatefulStrategy.json +225 -251
  14. package/dist/genesis/generated/schemas/StatelessStrategy.json +103 -123
  15. package/dist/genesis/generated/types/types.d.ts +174 -86
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/scripts/_lib/config.d.ts +4 -0
  19. package/dist/scripts/_lib/config.js +18 -1
  20. package/dist/scripts/extractSchemas.js +2 -2
  21. package/dist/scripts/generateResourceEnvelopes.js +1 -1
  22. package/dist/scripts/generateSchemaShims.js +21 -0
  23. package/dist/scripts/generateTypes.js +58 -0
  24. package/dist/scripts/rewriteAnchors.js +4 -2
  25. package/package.json +1 -1
  26. /package/dist/genesis/{resourceTypes → generated/resource-type-envelopes}/Genesis.d.ts +0 -0
  27. /package/dist/genesis/{resourceTypes → generated/resource-type-envelopes}/Genesis.js +0 -0
@@ -0,0 +1,1757 @@
1
+ {
2
+ "identity": "TYPE-Genesis",
3
+ "name": "Genesis",
4
+ "description": "dummy-description",
5
+ "resourceFormatRef": "FORMAT-ApplicationJson",
6
+ "extractionSchema": {
7
+ "$comment": "This schema defines all genesis schemas used throughout the Toolproof ecosystem. The genesis schemas themselves are defined in $defs.<ResourceType>.extractionSchema. The build process (via extractSchemas.js) extracts these schemas and writes them to a separate file (genesis/generated/schemas/Genesis.json). The reason for this indirection is to have all these schema envelopes validate positively against the schema at $defs/ResourceType, effectively making them ResourceTypes, which are first-class citizens in the Toolproof ecosystem.",
8
+ "$id": "https://schemas.toolproof.com/v0/Genesis.json",
9
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
10
+ "$defs": {
11
+ "Named": {
12
+ "identity": "TYPE-Named",
13
+ "name": "Named",
14
+ "description": "dummy-description",
15
+ "resourceFormatRef": "FORMAT-ApplicationJson",
16
+ "extractionSchema": {
17
+ "$anchor": "Named",
18
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
19
+ "type": "object",
20
+ "required": [
21
+ "name"
22
+ ],
23
+ "properties": {
24
+ "name": {
25
+ "type": "string",
26
+ "minLength": 1,
27
+ "pattern": "^(?:[A-Z].*|[a-z]+/[a-z0-9.+-]+)$",
28
+ "$comment": "Validation is intercepted by an AI Agent that verifies the name against Toolproof's naming conventions.",
29
+ "semanticValidation": "Ajv custom keyword to verify name."
30
+ }
31
+ }
32
+ }
33
+ },
34
+ "Described": {
35
+ "identity": "TYPE-Described",
36
+ "name": "Described",
37
+ "description": "dummy-description",
38
+ "resourceFormatRef": "FORMAT-ApplicationJson",
39
+ "extractionSchema": {
40
+ "$anchor": "Described",
41
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
42
+ "type": "object",
43
+ "required": [
44
+ "description"
45
+ ],
46
+ "properties": {
47
+ "description": {
48
+ "type": "string",
49
+ "minLength": 1,
50
+ "$comment": "Validation is intercepted by an AI Agent that verifies the description against Toolproof's documentation standards.",
51
+ "semanticValidation": "Ajv custom keyword to verify description."
52
+ }
53
+ }
54
+ }
55
+ },
56
+ "Documented": {
57
+ "identity": "TYPE-Documented",
58
+ "name": "Documented",
59
+ "description": "dummy-description",
60
+ "resourceFormatRef": "FORMAT-ApplicationJson",
61
+ "extractionSchema": {
62
+ "$anchor": "Documented",
63
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
64
+ "type": "object",
65
+ "allOf": [
66
+ {
67
+ "$ref": "#/$defs/Named"
68
+ },
69
+ {
70
+ "$ref": "#/$defs/Described"
71
+ }
72
+ ]
73
+ }
74
+ },
75
+ "IdentitySchemaRef": {
76
+ "identity": "TYPE-IdentitySchemaRef",
77
+ "name": "IdentitySchemaRef",
78
+ "description": "dummy-description",
79
+ "resourceFormatRef": "FORMAT-ApplicationJson",
80
+ "extractionSchema": {
81
+ "$anchor": "IdentitySchemaRef",
82
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
83
+ "type": "object",
84
+ "required": [
85
+ "$ref"
86
+ ],
87
+ "properties": {
88
+ "$ref": {
89
+ "type": "string",
90
+ "$comment": "Supports both anchor syntax (#<Name>Identity) and JSON Pointer syntax (#/path/to/definition). Anchors use #<Name>Identity for identity refs. Top-level and nested $defs should expose an $anchor matching <Name>Identity.",
91
+ "pattern": "^#([A-Za-z][A-Za-z0-9._-]*Identity|/.*)$"
92
+ }
93
+ },
94
+ "additionalProperties": false
95
+ }
96
+ },
97
+ "IdentitySchema": {
98
+ "identity": "TYPE-IdentitySchema",
99
+ "name": "IdentitySchema",
100
+ "description": "dummy-description",
101
+ "resourceFormatRef": "FORMAT-ApplicationJson",
102
+ "extractionSchema": {
103
+ "$anchor": "IdentitySchema",
104
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
105
+ "type": "object",
106
+ "required": [
107
+ "type"
108
+ ],
109
+ "properties": {
110
+ "$anchor": {
111
+ "type": "string",
112
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]*Identity$"
113
+ },
114
+ "$schema": {
115
+ "const": "https://json-schema.org/draft/2020-12/schema"
116
+ },
117
+ "$comment": {
118
+ "type": "string"
119
+ },
120
+ "type": {
121
+ "enum": [
122
+ "string",
123
+ "number",
124
+ "integer",
125
+ "boolean"
126
+ ]
127
+ },
128
+ "pattern": {
129
+ "type": "string"
130
+ },
131
+ "format": {
132
+ "type": "string"
133
+ },
134
+ "minLength": {
135
+ "type": "integer",
136
+ "minimum": 0
137
+ },
138
+ "maxLength": {
139
+ "type": "integer",
140
+ "minimum": 0
141
+ },
142
+ "enum": {
143
+ "type": "array",
144
+ "minItems": 1,
145
+ "uniqueItems": true
146
+ }
147
+ },
148
+ "allOf": [
149
+ {
150
+ "if": {
151
+ "properties": {
152
+ "type": {
153
+ "const": "string"
154
+ }
155
+ }
156
+ },
157
+ "then": {
158
+ "properties": {
159
+ "enum": {
160
+ "items": {
161
+ "type": "string"
162
+ }
163
+ }
164
+ }
165
+ },
166
+ "else": {
167
+ "not": {
168
+ "anyOf": [
169
+ {
170
+ "required": [
171
+ "pattern"
172
+ ]
173
+ },
174
+ {
175
+ "required": [
176
+ "format"
177
+ ]
178
+ },
179
+ {
180
+ "required": [
181
+ "minLength"
182
+ ]
183
+ },
184
+ {
185
+ "required": [
186
+ "maxLength"
187
+ ]
188
+ }
189
+ ]
190
+ }
191
+ }
192
+ },
193
+ {
194
+ "if": {
195
+ "properties": {
196
+ "type": {
197
+ "const": "number"
198
+ }
199
+ }
200
+ },
201
+ "then": {
202
+ "properties": {
203
+ "enum": {
204
+ "items": {
205
+ "type": "number"
206
+ }
207
+ }
208
+ }
209
+ }
210
+ },
211
+ {
212
+ "if": {
213
+ "properties": {
214
+ "type": {
215
+ "const": "integer"
216
+ }
217
+ }
218
+ },
219
+ "then": {
220
+ "properties": {
221
+ "enum": {
222
+ "items": {
223
+ "type": "integer"
224
+ }
225
+ }
226
+ }
227
+ }
228
+ },
229
+ {
230
+ "if": {
231
+ "properties": {
232
+ "type": {
233
+ "const": "boolean"
234
+ }
235
+ }
236
+ },
237
+ "then": {
238
+ "properties": {
239
+ "enum": {
240
+ "items": {
241
+ "type": "boolean"
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
+ ],
248
+ "additionalProperties": false
249
+ }
250
+ },
251
+ "IdentityProp": {
252
+ "identity": "TYPE-IdentityProp",
253
+ "name": "IdentityProp",
254
+ "description": "dummy-description",
255
+ "resourceFormatRef": "FORMAT-ApplicationJson",
256
+ "extractionSchema": {
257
+ "$anchor": "IdentityProp",
258
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
259
+ "type": "object",
260
+ "required": [
261
+ "$defs",
262
+ "required",
263
+ "properties"
264
+ ],
265
+ "properties": {
266
+ "$defs": {
267
+ "type": "object",
268
+ "patternProperties": {
269
+ "^[A-Za-z][A-Za-z0-9._-]*Identity$": {
270
+ "$ref": "#/$defs/IdentitySchema"
271
+ }
272
+ },
273
+ "$comment": "Ajv-specific: patternRequired enforces at least one Identity-like key in this $defs block when identity is present.",
274
+ "patternRequired": [
275
+ "^[A-Za-z][A-Za-z0-9._-]*Identity$"
276
+ ],
277
+ "minProperties": 1,
278
+ "additionalProperties": true
279
+ },
280
+ "required": {
281
+ "type": "array",
282
+ "items": {
283
+ "type": "string"
284
+ },
285
+ "uniqueItems": true,
286
+ "contains": {
287
+ "const": "identity"
288
+ }
289
+ },
290
+ "properties": {
291
+ "type": "object",
292
+ "required": [
293
+ "identity"
294
+ ],
295
+ "properties": {
296
+ "identity": {
297
+ "$ref": "#/$defs/IdentitySchemaRef"
298
+ }
299
+ }
300
+ }
301
+ }
302
+ }
303
+ },
304
+ "MeritSchemaRef": {
305
+ "identity": "TYPE-MeritSchemaRef",
306
+ "name": "MeritSchemaRef",
307
+ "description": "dummy-description",
308
+ "resourceFormatRef": "FORMAT-ApplicationJson",
309
+ "extractionSchema": {
310
+ "$anchor": "MeritSchemaRef",
311
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
312
+ "type": "object",
313
+ "required": [
314
+ "$ref"
315
+ ],
316
+ "properties": {
317
+ "$ref": {
318
+ "type": "string",
319
+ "$comment": "Supports both anchor syntax (#<Name>Merit) and JSON Pointer syntax (#/path/to/definition). Anchors use #<Name>Merit for merit refs. Top-level and nested $defs should expose an $anchor matching <Name>Merit.",
320
+ "pattern": "^#([A-Za-z][A-Za-z0-9._-]*Merit|/.*)$"
321
+ }
322
+ },
323
+ "additionalProperties": false
324
+ }
325
+ },
326
+ "MeritSchema": {
327
+ "identity": "TYPE-MeritSchema",
328
+ "name": "MeritSchema",
329
+ "description": "dummy-description",
330
+ "resourceFormatRef": "FORMAT-ApplicationJson",
331
+ "extractionSchema": {
332
+ "$anchor": "MeritSchema",
333
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
334
+ "type": "object",
335
+ "properties": {
336
+ "$anchor": {
337
+ "type": "string",
338
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]*Merit$"
339
+ },
340
+ "$schema": {
341
+ "const": "https://json-schema.org/draft/2020-12/schema"
342
+ },
343
+ "$comment": {
344
+ "type": "string"
345
+ },
346
+ "type": {
347
+ "enum": [
348
+ "number",
349
+ "integer"
350
+ ]
351
+ },
352
+ "enum": {
353
+ "type": "array",
354
+ "items": {
355
+ "type": "number"
356
+ },
357
+ "minItems": 1,
358
+ "uniqueItems": true
359
+ },
360
+ "minimum": {
361
+ "type": "number"
362
+ },
363
+ "maximum": {
364
+ "type": "number"
365
+ },
366
+ "exclusiveMinimum": {
367
+ "type": "number"
368
+ },
369
+ "exclusiveMaximum": {
370
+ "type": "number"
371
+ },
372
+ "multipleOf": {
373
+ "type": "number",
374
+ "exclusiveMinimum": 0
375
+ }
376
+ },
377
+ "oneOf": [
378
+ {
379
+ "required": [
380
+ "type"
381
+ ],
382
+ "properties": {
383
+ "type": {
384
+ "enum": [
385
+ "number",
386
+ "integer"
387
+ ]
388
+ }
389
+ }
390
+ },
391
+ {
392
+ "required": [
393
+ "enum"
394
+ ],
395
+ "properties": {
396
+ "enum": {
397
+ "type": "array",
398
+ "items": {
399
+ "type": "number"
400
+ },
401
+ "minItems": 1
402
+ }
403
+ }
404
+ }
405
+ ],
406
+ "allOf": [
407
+ {
408
+ "$comment": "Numeric constraints (minimum/maximum/etc) only make sense when using the explicit type form; the enum-only form is allowed for simple enumerations.",
409
+ "if": {
410
+ "required": [
411
+ "type"
412
+ ]
413
+ },
414
+ "then": {},
415
+ "else": {
416
+ "not": {
417
+ "anyOf": [
418
+ {
419
+ "required": [
420
+ "minimum"
421
+ ]
422
+ },
423
+ {
424
+ "required": [
425
+ "maximum"
426
+ ]
427
+ },
428
+ {
429
+ "required": [
430
+ "exclusiveMinimum"
431
+ ]
432
+ },
433
+ {
434
+ "required": [
435
+ "exclusiveMaximum"
436
+ ]
437
+ },
438
+ {
439
+ "required": [
440
+ "multipleOf"
441
+ ]
442
+ }
443
+ ]
444
+ }
445
+ }
446
+ }
447
+ ],
448
+ "additionalProperties": false
449
+ }
450
+ },
451
+ "MeritProp": {
452
+ "identity": "TYPE-MeritProp",
453
+ "name": "MeritProp",
454
+ "resourceFormatRef": "FORMAT-ApplicationJson",
455
+ "extractionSchema": {
456
+ "$anchor": "MeritProp",
457
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
458
+ "type": "object",
459
+ "required": [
460
+ "$defs",
461
+ "required",
462
+ "properties"
463
+ ],
464
+ "properties": {
465
+ "$defs": {
466
+ "type": "object",
467
+ "patternProperties": {
468
+ "^[A-Za-z][A-Za-z0-9._-]*Merit$": {
469
+ "$ref": "#/$defs/MeritSchema"
470
+ }
471
+ },
472
+ "$comment": "Ajv-specific: patternRequired enforces at least one Merit-like key in this $defs block when merit is present.",
473
+ "patternRequired": [
474
+ "^[A-Za-z][A-Za-z0-9._-]*Merit$"
475
+ ],
476
+ "minProperties": 1,
477
+ "additionalProperties": true
478
+ },
479
+ "required": {
480
+ "type": "array",
481
+ "items": {
482
+ "type": "string"
483
+ },
484
+ "uniqueItems": true
485
+ },
486
+ "properties": {
487
+ "type": "object",
488
+ "required": [
489
+ "merit"
490
+ ],
491
+ "properties": {
492
+ "merit": {
493
+ "$ref": "#/$defs/MeritSchemaRef"
494
+ }
495
+ }
496
+ }
497
+ }
498
+ }
499
+ },
500
+ "ExtractionSchema": {
501
+ "identity": "TYPE-ExtractionSchema",
502
+ "name": "ExtractionSchema",
503
+ "description": "dummy-description",
504
+ "resourceFormatRef": "FORMAT-ApplicationJson",
505
+ "extractionSchema": {
506
+ "$anchor": "ExtractionSchema",
507
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
508
+ "type": "object",
509
+ "required": [
510
+ "$schema",
511
+ "$anchor",
512
+ "type"
513
+ ],
514
+ "properties": {
515
+ "$anchor": {
516
+ "type": "string",
517
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]*$"
518
+ },
519
+ "$schema": {
520
+ "const": "https://json-schema.org/draft/2020-12/schema"
521
+ },
522
+ "$defs": {
523
+ "type": "object"
524
+ },
525
+ "type": {
526
+ "const": "object"
527
+ },
528
+ "required": {
529
+ "type": "array",
530
+ "items": {
531
+ "type": "string"
532
+ },
533
+ "uniqueItems": true
534
+ },
535
+ "properties": {
536
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
537
+ "type": "object"
538
+ },
539
+ "allOf": {
540
+ "type": "array",
541
+ "items": {
542
+ "type": "object"
543
+ }
544
+ },
545
+ "additionalProperties": {
546
+ "const": false
547
+ },
548
+ "unevaluatedProperties": {
549
+ "const": false
550
+ }
551
+ },
552
+ "allOf": [
553
+ {
554
+ "if": {
555
+ "anyOf": [
556
+ {
557
+ "properties": {
558
+ "properties": {
559
+ "type": "object",
560
+ "required": [
561
+ "identity"
562
+ ],
563
+ "properties": {
564
+ "identity": {}
565
+ }
566
+ }
567
+ }
568
+ },
569
+ {
570
+ "properties": {
571
+ "required": {
572
+ "type": "array",
573
+ "contains": {
574
+ "const": "identity"
575
+ }
576
+ }
577
+ }
578
+ }
579
+ ]
580
+ },
581
+ "then": {
582
+ "$ref": "#/$defs/IdentityProp"
583
+ }
584
+ },
585
+ {
586
+ "if": {
587
+ "anyOf": [
588
+ {
589
+ "properties": {
590
+ "properties": {
591
+ "type": "object",
592
+ "required": [
593
+ "merit"
594
+ ],
595
+ "properties": {
596
+ "merit": {}
597
+ }
598
+ }
599
+ }
600
+ },
601
+ {
602
+ "properties": {
603
+ "required": {
604
+ "type": "array",
605
+ "contains": {
606
+ "const": "merit"
607
+ }
608
+ }
609
+ }
610
+ }
611
+ ]
612
+ },
613
+ "then": {
614
+ "$ref": "#/$defs/MeritProp"
615
+ }
616
+ },
617
+ {
618
+ "oneOf": [
619
+ {
620
+ "required": [
621
+ "additionalProperties"
622
+ ]
623
+ },
624
+ {
625
+ "required": [
626
+ "unevaluatedProperties"
627
+ ]
628
+ }
629
+ ]
630
+ }
631
+ ],
632
+ "unevaluatedProperties": false
633
+ }
634
+ },
635
+ "ExtractionSchemaWrapper": {
636
+ "identity": "TYPE-ExtractionSchemaWrapper",
637
+ "name": "ExtractionSchemaWrapper",
638
+ "description": "dummy-description",
639
+ "resourceFormatRef": "FORMAT-ApplicationJson",
640
+ "extractionSchema": {
641
+ "$anchor": "ExtractionSchemaWrapper",
642
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
643
+ "type": "object",
644
+ "required": [
645
+ "extractionSchema"
646
+ ],
647
+ "properties": {
648
+ "extractionSchema": {
649
+ "$ref": "#/$defs/ExtractionSchema"
650
+ }
651
+ }
652
+ }
653
+ },
654
+ "ResourceFormatIdentity": {
655
+ "identity": "TYPE-ResourceFormatIdentity",
656
+ "name": "ResourceFormatIdentity",
657
+ "description": "dummy-description",
658
+ "resourceFormatIdentity": "FORMAT-ApplicationJson",
659
+ "extractionSchema": {
660
+ "$anchor": "ResourceFormatIdentity",
661
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
662
+ "type": "string",
663
+ "pattern": "^FORMAT-.+$"
664
+ }
665
+ },
666
+ "ResourceTypeIdentity": {
667
+ "identity": "TYPE-ResourceTypeIdentity",
668
+ "name": "ResourceTypeIdentity",
669
+ "description": "dummy-description",
670
+ "resourceFormatRef": "FORMAT-ApplicationJson",
671
+ "extractionSchema": {
672
+ "$anchor": "ResourceTypeIdentity",
673
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
674
+ "type": "string",
675
+ "pattern": "^TYPE-.+$"
676
+ }
677
+ },
678
+ "ResourceType": {
679
+ "identity": "TYPE-ResourceType",
680
+ "name": "ResourceType",
681
+ "description": "dummy-description",
682
+ "resourceFormatRef": "FORMAT-ApplicationJson",
683
+ "extractionSchema": {
684
+ "$anchor": "ResourceType",
685
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
686
+ "type": "object",
687
+ "required": [
688
+ "identity",
689
+ "resourceFormatRef"
690
+ ],
691
+ "properties": {
692
+ "identity": {
693
+ "$ref": "#/$defs/ResourceTypeIdentity"
694
+ },
695
+ "resourceFormatRef": {
696
+ "$ref": "#/$defs/ResourceFormatIdentity"
697
+ }
698
+ },
699
+ "allOf": [
700
+ {
701
+ "$ref": "#/$defs/Documented"
702
+ },
703
+ {
704
+ "$ref": "#/$defs/ExtractionSchemaWrapper"
705
+ },
706
+ {
707
+ "if": {
708
+ "$comment": "If resourceFormatRef is FORMAT-ApplicationJson, then extractorUri must not be present, but if resourceFormatRef is not FORMAT-ApplicationJson, then extractorUri must be present. This is because resources of types with format FORMAT-ApplicationJson are self-contained and do not need an extractor.",
709
+ "properties": {
710
+ "resourceFormatRef": {
711
+ "const": "FORMAT-ApplicationJson"
712
+ }
713
+ }
714
+ },
715
+ "then": {
716
+ "not": {
717
+ "required": [
718
+ "extractorUri"
719
+ ]
720
+ }
721
+ },
722
+ "else": {
723
+ "type": "object",
724
+ "required": [
725
+ "extractorUri"
726
+ ],
727
+ "properties": {
728
+ "extractorUri": {
729
+ "type": "string",
730
+ "format": "uri"
731
+ }
732
+ }
733
+ }
734
+ }
735
+ ]
736
+ }
737
+ },
738
+ "ResourceFormat": {
739
+ "identity": "TYPE-ResourceFormat",
740
+ "name": "ResourceFormat",
741
+ "description": "dummy-description",
742
+ "resourceFormatRef": "FORMAT-ApplicationJson",
743
+ "extractionSchema": {
744
+ "$anchor": "ResourceFormat",
745
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
746
+ "type": "object",
747
+ "required": [
748
+ "identity"
749
+ ],
750
+ "properties": {
751
+ "identity": {
752
+ "$ref": "#/$defs/ResourceFormatIdentity"
753
+ }
754
+ },
755
+ "allOf": [
756
+ {
757
+ "$ref": "#/$defs/Documented"
758
+ }
759
+ ]
760
+ }
761
+ },
762
+ "ResourceRoleIdentity": {
763
+ "identity": "TYPE-ResourceRoleIdentity",
764
+ "name": "ResourceRoleIdentity",
765
+ "description": "dummy-description",
766
+ "resourceFormatRef": "FORMAT-ApplicationJson",
767
+ "extractionSchema": {
768
+ "$anchor": "ResourceRoleIdentity",
769
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
770
+ "type": "string",
771
+ "pattern": "^ROLE-.+$"
772
+ }
773
+ },
774
+ "ResourceIdentity": {
775
+ "identity": "TYPE-ResourceIdentity",
776
+ "name": "ResourceIdentity",
777
+ "description": "dummy-description",
778
+ "resourceFormatRef": "FORMAT-ApplicationJson",
779
+ "extractionSchema": {
780
+ "$anchor": "ResourceIdentity",
781
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
782
+ "type": "string",
783
+ "$comment": "",
784
+ "pattern": "^RESOURCE-.+$"
785
+ }
786
+ },
787
+ "ResourceRoleValue": {
788
+ "identity": "TYPE-ResourceRoleValue",
789
+ "name": "ResourceRoleValue",
790
+ "description": "dummy-description",
791
+ "resourceFormatRef": "FORMAT-ApplicationJson",
792
+ "extractionSchema": {
793
+ "$anchor": "ResourceRoleValue",
794
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
795
+ "type": "object",
796
+ "allOf": [
797
+ {
798
+ "$comment": "A ResourceRole does not have a self-contained identity, as it is always defined in the context of a RoleMap. ResourceRoleValue uses the Value suffix to mean 'the value stored in this map' (RoleMap.additionalProperties).",
799
+ "required": [
800
+ "resourceTypeRef"
801
+ ],
802
+ "properties": {
803
+ "resourceTypeRef": {
804
+ "$ref": "#/$defs/ResourceTypeIdentity"
805
+ }
806
+ }
807
+ },
808
+ {
809
+ "$ref": "#/$defs/Documented"
810
+ }
811
+ ]
812
+ }
813
+ },
814
+ "RoleMap": {
815
+ "identity": "TYPE-RoleMap",
816
+ "name": "RoleMap",
817
+ "description": "dummy-description",
818
+ "resourceFormatRef": "FORMAT-ApplicationJson",
819
+ "extractionSchema": {
820
+ "$anchor": "RoleMap",
821
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
822
+ "type": "object",
823
+ "propertyNames": {
824
+ "$ref": "#/$defs/ResourceRoleIdentity"
825
+ },
826
+ "additionalProperties": {
827
+ "$ref": "#/$defs/ResourceRoleValue"
828
+ }
829
+ }
830
+ },
831
+ "Roles": {
832
+ "identity": "TYPE-Roles",
833
+ "name": "Roles",
834
+ "description": "dummy-description",
835
+ "resourceFormatRef": "FORMAT-ApplicationJson",
836
+ "extractionSchema": {
837
+ "$anchor": "Roles",
838
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
839
+ "type": "object",
840
+ "required": [
841
+ "inputMap",
842
+ "outputMap"
843
+ ],
844
+ "properties": {
845
+ "inputMap": {
846
+ "$ref": "#/$defs/RoleMap"
847
+ },
848
+ "outputMap": {
849
+ "$ref": "#/$defs/RoleMap"
850
+ }
851
+ },
852
+ "unevaluatedProperties": false
853
+ }
854
+ },
855
+ "RolesWrapper": {
856
+ "identity": "TYPE-RolesWrapper",
857
+ "name": "RolesWrapper",
858
+ "description": "dummy-description",
859
+ "resourceFormatRef": "FORMAT-ApplicationJson",
860
+ "extractionSchema": {
861
+ "$anchor": "RolesWrapper",
862
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
863
+ "type": "object",
864
+ "required": [
865
+ "roles"
866
+ ],
867
+ "properties": {
868
+ "roles": {
869
+ "$ref": "#/$defs/Roles"
870
+ }
871
+ }
872
+ }
873
+ },
874
+ "JobIdentity": {
875
+ "identity": "TYPE-JobIdentity",
876
+ "name": "JobIdentity",
877
+ "description": "dummy-description",
878
+ "resourceFormatRef": "FORMAT-ApplicationJson",
879
+ "extractionSchema": {
880
+ "$anchor": "JobIdentity",
881
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
882
+ "type": "string",
883
+ "$comment": "",
884
+ "pattern": "^JOB-.+$"
885
+ }
886
+ },
887
+ "Job": {
888
+ "identity": "TYPE-Job",
889
+ "name": "Job",
890
+ "description": "dummy-description",
891
+ "resourceFormatRef": "FORMAT-ApplicationJob",
892
+ "extractorUri": "https://extractors.toolproof.com/v0/JobExtractor.js",
893
+ "extractionSchema": {
894
+ "$anchor": "Job",
895
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
896
+ "type": "object",
897
+ "required": [
898
+ "identity",
899
+ "implementationUri"
900
+ ],
901
+ "properties": {
902
+ "identity": {
903
+ "$ref": "#/$defs/JobIdentity"
904
+ },
905
+ "implementationUri": {
906
+ "type": "string",
907
+ "format": "uri"
908
+ }
909
+ },
910
+ "allOf": [
911
+ {
912
+ "$ref": "#/$defs/Documented"
913
+ },
914
+ {
915
+ "$ref": "#/$defs/RolesWrapper"
916
+ }
917
+ ],
918
+ "unevaluatedProperties": false
919
+ }
920
+ },
921
+ "RoleBindingMap": {
922
+ "identity": "TYPE-RoleBindingMap",
923
+ "name": "RoleBindingMap",
924
+ "description": "dummy-description",
925
+ "resourceFormatRef": "FORMAT-ApplicationJson",
926
+ "extractionSchema": {
927
+ "$anchor": "RoleBindingMap",
928
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
929
+ "type": "object",
930
+ "propertyNames": {
931
+ "$ref": "#/$defs/ResourceRoleIdentity"
932
+ },
933
+ "additionalProperties": {
934
+ "$ref": "#/$defs/ResourceIdentity"
935
+ }
936
+ }
937
+ },
938
+ "RoleBindings": {
939
+ "identity": "TYPE-RoleBindings",
940
+ "name": "RoleBindings",
941
+ "description": "dummy-description",
942
+ "resourceFormatRef": "FORMAT-ApplicationJson",
943
+ "extractionSchema": {
944
+ "$anchor": "RoleBindings",
945
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
946
+ "type": "object",
947
+ "required": [
948
+ "inputBindingMap",
949
+ "outputBindingMap"
950
+ ],
951
+ "properties": {
952
+ "inputBindingMap": {
953
+ "$ref": "#/$defs/RoleBindingMap"
954
+ },
955
+ "outputBindingMap": {
956
+ "$ref": "#/$defs/RoleBindingMap"
957
+ }
958
+ },
959
+ "unevaluatedProperties": false
960
+ }
961
+ },
962
+ "RoleBindingsWrapper": {
963
+ "identity": "TYPE-RoleBindingsWrapper",
964
+ "name": "RoleBindingsWrapper",
965
+ "description": "dummy-description",
966
+ "resourceFormatRef": "FORMAT-ApplicationJson",
967
+ "extractionSchema": {
968
+ "$anchor": "RoleBindingsWrapper",
969
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
970
+ "type": "object",
971
+ "required": [
972
+ "roleBindings"
973
+ ],
974
+ "properties": {
975
+ "roleBindings": {
976
+ "$ref": "#/$defs/RoleBindings"
977
+ }
978
+ }
979
+ }
980
+ },
981
+ "CreationContext": {
982
+ "identity": "TYPE-CreationContext",
983
+ "name": "CreationContext",
984
+ "description": "dummy-description",
985
+ "resourceFormatRef": "FORMAT-ApplicationJson",
986
+ "extractionSchema": {
987
+ "$anchor": "CreationContext",
988
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
989
+ "type": "object",
990
+ "required": [
991
+ "resourceRoleRef",
992
+ "executionRef"
993
+ ],
994
+ "properties": {
995
+ "resourceRoleRef": {
996
+ "$ref": "#/$defs/ResourceRoleIdentity"
997
+ },
998
+ "executionRef": {
999
+ "$ref": "#/$defs/ExecutionIdentity"
1000
+ }
1001
+ }
1002
+ }
1003
+ },
1004
+ "CreationContextWrapper": {
1005
+ "identity": "TYPE-CreationContextWrapper",
1006
+ "name": "CreationContextWrapper",
1007
+ "description": "dummy-description",
1008
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1009
+ "extractionSchema": {
1010
+ "$anchor": "CreationContextWrapper",
1011
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1012
+ "type": "object",
1013
+ "required": [
1014
+ "creationContext"
1015
+ ],
1016
+ "properties": {
1017
+ "creationContext": {
1018
+ "$ref": "#/$defs/CreationContext"
1019
+ }
1020
+ }
1021
+ }
1022
+ },
1023
+ "ResourceBase": {
1024
+ "identity": "TYPE-ResourceBase",
1025
+ "name": "ResourceBase",
1026
+ "description": "dummy-description",
1027
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1028
+ "extractionSchema": {
1029
+ "$anchor": "ResourceBase",
1030
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1031
+ "type": "object",
1032
+ "required": [
1033
+ "identity",
1034
+ "resourceTypeRef"
1035
+ ],
1036
+ "properties": {
1037
+ "identity": {
1038
+ "$ref": "#/$defs/ResourceIdentity"
1039
+ },
1040
+ "resourceTypeRef": {
1041
+ "$ref": "#/$defs/ResourceTypeIdentity"
1042
+ }
1043
+ }
1044
+ }
1045
+ },
1046
+ "ResourceKind": {
1047
+ "identity": "TYPE-ResourceKind",
1048
+ "name": "ResourceKind",
1049
+ "description": "dummy-description",
1050
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1051
+ "extractionSchema": {
1052
+ "$anchor": "ResourceKind",
1053
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1054
+ "type": "object",
1055
+ "required": [
1056
+ "kind"
1057
+ ],
1058
+ "properties": {
1059
+ "kind": {
1060
+ "enum": [
1061
+ "missing",
1062
+ "potential-input",
1063
+ "potential-output",
1064
+ "materialized"
1065
+ ]
1066
+ }
1067
+ }
1068
+ }
1069
+ },
1070
+ "ResourceMissing": {
1071
+ "identity": "TYPE-ResourceMissing",
1072
+ "name": "ResourceMissing",
1073
+ "description": "dummy-description",
1074
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1075
+ "extractionSchema": {
1076
+ "$anchor": "ResourceMissing",
1077
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1078
+ "type": "object",
1079
+ "allOf": [
1080
+ {
1081
+ "$ref": "#/$defs/ResourceBase"
1082
+ },
1083
+ {
1084
+ "$ref": "#/$defs/ResourceKind"
1085
+ },
1086
+ {
1087
+ "required": [
1088
+ "kind"
1089
+ ],
1090
+ "properties": {
1091
+ "kind": {
1092
+ "const": "missing"
1093
+ }
1094
+ }
1095
+ }
1096
+ ],
1097
+ "unevaluatedProperties": false
1098
+ }
1099
+ },
1100
+ "ResourcePotentialInput": {
1101
+ "identity": "TYPE-ResourcePotentialInput",
1102
+ "name": "ResourcePotentialInput",
1103
+ "description": "dummy-description",
1104
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1105
+ "extractionSchema": {
1106
+ "$anchor": "ResourcePotentialInput",
1107
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1108
+ "type": "object",
1109
+ "allOf": [
1110
+ {
1111
+ "$ref": "#/$defs/ResourceBase"
1112
+ },
1113
+ {
1114
+ "$ref": "#/$defs/CreationContextWrapper"
1115
+ },
1116
+ {
1117
+ "$ref": "#/$defs/ResourceKind"
1118
+ },
1119
+ {
1120
+ "required": [
1121
+ "kind"
1122
+ ],
1123
+ "properties": {
1124
+ "kind": {
1125
+ "const": "potential-input"
1126
+ }
1127
+ }
1128
+ }
1129
+ ],
1130
+ "unevaluatedProperties": false
1131
+ }
1132
+ },
1133
+ "ResourcePotentialOutput": {
1134
+ "identity": "TYPE-ResourcePotentialOutput",
1135
+ "name": "ResourcePotentialOutput",
1136
+ "description": "dummy-description",
1137
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1138
+ "extractionSchema": {
1139
+ "$anchor": "ResourcePotentialOutput",
1140
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1141
+ "type": "object",
1142
+ "allOf": [
1143
+ {
1144
+ "$ref": "#/$defs/ResourceBase"
1145
+ },
1146
+ {
1147
+ "$ref": "#/$defs/CreationContextWrapper"
1148
+ },
1149
+ {
1150
+ "$ref": "#/$defs/ResourceKind"
1151
+ },
1152
+ {
1153
+ "required": [
1154
+ "kind"
1155
+ ],
1156
+ "properties": {
1157
+ "kind": {
1158
+ "const": "potential-output"
1159
+ }
1160
+ }
1161
+ }
1162
+ ],
1163
+ "unevaluatedProperties": false
1164
+ }
1165
+ },
1166
+ "Timestamp": {
1167
+ "identity": "TYPE-Timestamp",
1168
+ "name": "Timestamp",
1169
+ "description": "dummy-description",
1170
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1171
+ "extractionSchema": {
1172
+ "$anchor": "Timestamp",
1173
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1174
+ "type": "object",
1175
+ "required": [
1176
+ "timestamp"
1177
+ ],
1178
+ "properties": {
1179
+ "timestamp": {
1180
+ "type": "string",
1181
+ "format": "date-time"
1182
+ }
1183
+ }
1184
+ }
1185
+ },
1186
+ "Path": {
1187
+ "identity": "TYPE-Path",
1188
+ "name": "Path",
1189
+ "description": "dummy-description",
1190
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1191
+ "extractionSchema": {
1192
+ "$anchor": "Path",
1193
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1194
+ "type": "object",
1195
+ "required": [
1196
+ "path"
1197
+ ],
1198
+ "properties": {
1199
+ "path": {
1200
+ "type": "string"
1201
+ }
1202
+ }
1203
+ }
1204
+ },
1205
+ "ResourceMetaBase": {
1206
+ "identity": "TYPE-ResourceMetaBase",
1207
+ "name": "ResourceMetaBase",
1208
+ "description": "dummy-description",
1209
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1210
+ "extractionSchema": {
1211
+ "$anchor": "ResourceMetaBase",
1212
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1213
+ "type": "object",
1214
+ "allOf": [
1215
+ {
1216
+ "$ref": "#/$defs/ResourceBase"
1217
+ },
1218
+ {
1219
+ "$ref": "#/$defs/CreationContextWrapper"
1220
+ },
1221
+ {
1222
+ "$ref": "#/$defs/ResourceKind"
1223
+ },
1224
+ {
1225
+ "required": [
1226
+ "kind"
1227
+ ],
1228
+ "properties": {
1229
+ "kind": {
1230
+ "const": "materialized"
1231
+ }
1232
+ }
1233
+ },
1234
+ {
1235
+ "$ref": "#/$defs/Timestamp"
1236
+ },
1237
+ {
1238
+ "$ref": "#/$defs/Path"
1239
+ }
1240
+ ]
1241
+ }
1242
+ },
1243
+ "ResourceMeta": {
1244
+ "identity": "TYPE-ResourceMeta",
1245
+ "name": "ResourceMeta",
1246
+ "description": "dummy-description",
1247
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1248
+ "extractionSchema": {
1249
+ "$anchor": "ResourceMeta",
1250
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1251
+ "type": "object",
1252
+ "$ref": "#/$defs/ResourceMetaBase",
1253
+ "unevaluatedProperties": false
1254
+ }
1255
+ },
1256
+ "JsonData": {
1257
+ "identity": "TYPE-JsonData",
1258
+ "name": "JsonData",
1259
+ "description": "dummy-description",
1260
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1261
+ "extractionSchema": {
1262
+ "$anchor": "JsonData",
1263
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1264
+ "oneOf": [
1265
+ {
1266
+ "type": "null"
1267
+ },
1268
+ {
1269
+ "type": "boolean"
1270
+ },
1271
+ {
1272
+ "type": "number"
1273
+ },
1274
+ {
1275
+ "type": "string"
1276
+ },
1277
+ {
1278
+ "type": "array",
1279
+ "items": {
1280
+ "$ref": "#/$defs/JsonData"
1281
+ }
1282
+ },
1283
+ {
1284
+ "type": "object",
1285
+ "additionalProperties": {
1286
+ "$ref": "#/$defs/JsonData"
1287
+ }
1288
+ }
1289
+ ]
1290
+ }
1291
+ },
1292
+ "Resource": {
1293
+ "identity": "TYPE-Resource",
1294
+ "name": "Resource",
1295
+ "description": "dummy-description",
1296
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1297
+ "extractionSchema": {
1298
+ "$anchor": "Resource",
1299
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1300
+ "type": "object",
1301
+ "allOf": [
1302
+ {
1303
+ "$ref": "#/$defs/ResourceMetaBase"
1304
+ },
1305
+ {
1306
+ "required": [
1307
+ "extractedData"
1308
+ ],
1309
+ "properties": {
1310
+ "extractedData": {
1311
+ "$comment": "This will be overlayed at runtime to match the data structure of the underlying type's extractionSchema. At compile time, we guarantee it has an identity property.",
1312
+ "type": "object",
1313
+ "additionalProperties": {
1314
+ "$ref": "#/$defs/JsonData"
1315
+ }
1316
+ }
1317
+ }
1318
+ }
1319
+ ],
1320
+ "unevaluatedProperties": false
1321
+ }
1322
+ },
1323
+ "ExecutionIdentity": {
1324
+ "identity": "TYPE-ExecutionIdentity",
1325
+ "name": "ExecutionIdentity",
1326
+ "description": "dummy-description",
1327
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1328
+ "extractionSchema": {
1329
+ "$anchor": "ExecutionIdentity",
1330
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1331
+ "type": "string",
1332
+ "pattern": "^EXECUTION-.+$"
1333
+ }
1334
+ },
1335
+ "Execution": {
1336
+ "identity": "TYPE-Execution",
1337
+ "name": "Execution",
1338
+ "description": "dummy-description",
1339
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1340
+ "extractionSchema": {
1341
+ "$anchor": "Execution",
1342
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1343
+ "type": "object",
1344
+ "required": [
1345
+ "identity",
1346
+ "jobRef"
1347
+ ],
1348
+ "properties": {
1349
+ "identity": {
1350
+ "$ref": "#/$defs/ExecutionIdentity"
1351
+ },
1352
+ "jobRef": {
1353
+ "$ref": "#/$defs/JobIdentity"
1354
+ }
1355
+ },
1356
+ "allOf": [
1357
+ {
1358
+ "$comment": "This will be overlayed at runtime to specify roleBindings corresponding to the roles of the underlying job.",
1359
+ "$ref": "#/$defs/RoleBindingsWrapper"
1360
+ }
1361
+ ]
1362
+ }
1363
+ },
1364
+ "Conditional": {
1365
+ "identity": "TYPE-Conditional",
1366
+ "name": "Conditional",
1367
+ "description": "dummy-description",
1368
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1369
+ "extractionSchema": {
1370
+ "$anchor": "Conditional",
1371
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1372
+ "type": "object",
1373
+ "required": [
1374
+ "when",
1375
+ "what"
1376
+ ],
1377
+ "properties": {
1378
+ "when": {
1379
+ "$ref": "#/$defs/WorkStep"
1380
+ },
1381
+ "what": {
1382
+ "$ref": "#/$defs/WorkStep"
1383
+ }
1384
+ },
1385
+ "unevaluatedProperties": false
1386
+ }
1387
+ },
1388
+ "StepKind": {
1389
+ "identity": "TYPE-StepKind",
1390
+ "name": "StepKind",
1391
+ "description": "dummy-description",
1392
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1393
+ "extractionSchema": {
1394
+ "$anchor": "StepKind",
1395
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1396
+ "type": "object",
1397
+ "required": [
1398
+ "kind"
1399
+ ],
1400
+ "properties": {
1401
+ "kind": {
1402
+ "type": "string",
1403
+ "enum": [
1404
+ "work",
1405
+ "branch",
1406
+ "while",
1407
+ "for"
1408
+ ]
1409
+ }
1410
+ }
1411
+ }
1412
+ },
1413
+ "WorkStepIdentity": {
1414
+ "identity": "TYPE-WorkStepIdentity",
1415
+ "name": "WorkStepIdentity",
1416
+ "description": "dummy-description",
1417
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1418
+ "extractionSchema": {
1419
+ "$anchor": "WorkStepIdentity",
1420
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1421
+ "type": "string",
1422
+ "pattern": "^WORKSTEP-.+$"
1423
+ }
1424
+ },
1425
+ "WorkStep": {
1426
+ "identity": "TYPE-WorkStep",
1427
+ "name": "WorkStep",
1428
+ "description": "dummy-description",
1429
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1430
+ "extractionSchema": {
1431
+ "$anchor": "WorkStep",
1432
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1433
+ "type": "object",
1434
+ "required": [
1435
+ "identity",
1436
+ "kind",
1437
+ "execution"
1438
+ ],
1439
+ "properties": {
1440
+ "identity": {
1441
+ "$ref": "#/$defs/WorkStepIdentity"
1442
+ },
1443
+ "kind": {
1444
+ "const": "work"
1445
+ },
1446
+ "execution": {
1447
+ "$ref": "#/$defs/Execution"
1448
+ }
1449
+ },
1450
+ "allOf": [
1451
+ {
1452
+ "$ref": "#/$defs/StepKind"
1453
+ }
1454
+ ]
1455
+ }
1456
+ },
1457
+ "BranchStepIdentity": {
1458
+ "identity": "TYPE-BranchStepIdentity",
1459
+ "name": "BranchStepIdentity",
1460
+ "description": "dummy-description",
1461
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1462
+ "extractionSchema": {
1463
+ "$anchor": "BranchStepIdentity",
1464
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1465
+ "type": "string",
1466
+ "pattern": "^BRANCHSTEP-.+$"
1467
+ }
1468
+ },
1469
+ "BranchStep": {
1470
+ "identity": "TYPE-BranchStep",
1471
+ "name": "BranchStep",
1472
+ "description": "dummy-description",
1473
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1474
+ "extractionSchema": {
1475
+ "$anchor": "BranchStep",
1476
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1477
+ "type": "object",
1478
+ "required": [
1479
+ "identity",
1480
+ "kind",
1481
+ "cases"
1482
+ ],
1483
+ "properties": {
1484
+ "identity": {
1485
+ "$ref": "#/$defs/BranchStepIdentity"
1486
+ },
1487
+ "kind": {
1488
+ "const": "branch"
1489
+ },
1490
+ "cases": {
1491
+ "type": "array",
1492
+ "items": {
1493
+ "$ref": "#/$defs/Conditional"
1494
+ },
1495
+ "minItems": 1,
1496
+ "uniqueItems": true
1497
+ }
1498
+ },
1499
+ "allOf": [
1500
+ {
1501
+ "$ref": "#/$defs/StepKind"
1502
+ }
1503
+ ]
1504
+ }
1505
+ },
1506
+ "WhileStepIdentity": {
1507
+ "identity": "TYPE-WhileStepIdentity",
1508
+ "name": "WhileStepIdentity",
1509
+ "description": "dummy-description",
1510
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1511
+ "extractionSchema": {
1512
+ "$anchor": "WhileStepIdentity",
1513
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1514
+ "type": "string",
1515
+ "pattern": "^WHILESTEP-.+$"
1516
+ }
1517
+ },
1518
+ "WhileStep": {
1519
+ "identity": "TYPE-WhileStep",
1520
+ "name": "WhileStep",
1521
+ "description": "dummy-description",
1522
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1523
+ "extractionSchema": {
1524
+ "$anchor": "WhileStep",
1525
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1526
+ "type": "object",
1527
+ "required": [
1528
+ "identity",
1529
+ "kind",
1530
+ "case"
1531
+ ],
1532
+ "properties": {
1533
+ "identity": {
1534
+ "$ref": "#/$defs/WhileStepIdentity"
1535
+ },
1536
+ "kind": {
1537
+ "const": "while"
1538
+ },
1539
+ "case": {
1540
+ "$ref": "#/$defs/Conditional"
1541
+ }
1542
+ },
1543
+ "allOf": [
1544
+ {
1545
+ "$ref": "#/$defs/StepKind"
1546
+ }
1547
+ ]
1548
+ }
1549
+ },
1550
+ "ForStepIdentity": {
1551
+ "identity": "TYPE-ForStepIdentity",
1552
+ "name": "ForStepIdentity",
1553
+ "description": "dummy-description",
1554
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1555
+ "extractionSchema": {
1556
+ "$anchor": "ForStepIdentity",
1557
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1558
+ "type": "string",
1559
+ "pattern": "^FORSTEP-.+$"
1560
+ }
1561
+ },
1562
+ "ForStep": {
1563
+ "identity": "TYPE-ForStep",
1564
+ "name": "ForStep",
1565
+ "description": "dummy-description",
1566
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1567
+ "extractionSchema": {
1568
+ "$anchor": "ForStep",
1569
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1570
+ "type": "object",
1571
+ "required": [
1572
+ "identity",
1573
+ "kind",
1574
+ "case"
1575
+ ],
1576
+ "properties": {
1577
+ "identity": {
1578
+ "$ref": "#/$defs/ForStepIdentity"
1579
+ },
1580
+ "kind": {
1581
+ "const": "for"
1582
+ },
1583
+ "case": {
1584
+ "$ref": "#/$defs/Conditional"
1585
+ }
1586
+ },
1587
+ "allOf": [
1588
+ {
1589
+ "$ref": "#/$defs/StepKind"
1590
+ }
1591
+ ]
1592
+ }
1593
+ },
1594
+ "Step": {
1595
+ "identity": "TYPE-Step",
1596
+ "name": "Step",
1597
+ "description": "dummy-description",
1598
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1599
+ "extractionSchema": {
1600
+ "$anchor": "Step",
1601
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1602
+ "type": "object",
1603
+ "oneOf": [
1604
+ {
1605
+ "$ref": "#/$defs/WorkStep"
1606
+ },
1607
+ {
1608
+ "$ref": "#/$defs/BranchStep"
1609
+ },
1610
+ {
1611
+ "$ref": "#/$defs/WhileStep"
1612
+ },
1613
+ {
1614
+ "$ref": "#/$defs/ForStep"
1615
+ }
1616
+ ],
1617
+ "unevaluatedProperties": false
1618
+ }
1619
+ },
1620
+ "StatelessStrategyIdentity": {
1621
+ "identity": "TYPE-StatelessStrategyIdentity",
1622
+ "name": "StatelessStrategyIdentity",
1623
+ "description": "dummy-description",
1624
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1625
+ "extractionSchema": {
1626
+ "$anchor": "StatelessStrategyIdentity",
1627
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1628
+ "type": "string",
1629
+ "pattern": "^STATELESS_STRATEGY-.+$"
1630
+ }
1631
+ },
1632
+ "StatelessStrategy": {
1633
+ "identity": "TYPE-StatelessStrategy",
1634
+ "name": "StatelessStrategy",
1635
+ "description": "dummy-description",
1636
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1637
+ "extractionSchema": {
1638
+ "$anchor": "StatelessStrategy",
1639
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1640
+ "type": "object",
1641
+ "required": [
1642
+ "identity",
1643
+ "steps"
1644
+ ],
1645
+ "properties": {
1646
+ "identity": {
1647
+ "$ref": "#/$defs/StatelessStrategyIdentity"
1648
+ },
1649
+ "steps": {
1650
+ "type": "array",
1651
+ "items": {
1652
+ "$ref": "#/$defs/Step"
1653
+ },
1654
+ "uniqueItems": true
1655
+ }
1656
+ },
1657
+ "unevaluatedProperties": false
1658
+ }
1659
+ },
1660
+ "StrategyState": {
1661
+ "identity": "TYPE-StrategyState",
1662
+ "name": "StrategyState",
1663
+ "description": "dummy-description",
1664
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1665
+ "extractionSchema": {
1666
+ "$anchor": "StrategyState",
1667
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1668
+ "type": "object",
1669
+ "propertyNames": {
1670
+ "$ref": "#/$defs/ExecutionIdentity"
1671
+ },
1672
+ "additionalProperties": {
1673
+ "type": "object",
1674
+ "propertyNames": {
1675
+ "$ref": "#/$defs/ResourceRoleIdentity"
1676
+ },
1677
+ "additionalProperties": {
1678
+ "oneOf": [
1679
+ {
1680
+ "$ref": "#/$defs/ResourceMissing"
1681
+ },
1682
+ {
1683
+ "$ref": "#/$defs/ResourcePotentialInput"
1684
+ },
1685
+ {
1686
+ "$ref": "#/$defs/ResourcePotentialOutput"
1687
+ },
1688
+ {
1689
+ "$ref": "#/$defs/Resource"
1690
+ }
1691
+ ]
1692
+ }
1693
+ }
1694
+ }
1695
+ },
1696
+ "StrategyStateWrapper": {
1697
+ "identity": "TYPE-StrategyStateWrapper",
1698
+ "name": "StrategyStateWrapper",
1699
+ "description": "dummy-description",
1700
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1701
+ "extractionSchema": {
1702
+ "$anchor": "StrategyStateWrapper",
1703
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1704
+ "type": "object",
1705
+ "required": [
1706
+ "strategyState"
1707
+ ],
1708
+ "properties": {
1709
+ "strategyState": {
1710
+ "$ref": "#/$defs/StrategyState"
1711
+ }
1712
+ }
1713
+ }
1714
+ },
1715
+ "StatefulStrategyIdentity": {
1716
+ "identity": "TYPE-StatefulStrategyIdentity",
1717
+ "name": "StatefulStrategyIdentity",
1718
+ "description": "dummy-description",
1719
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1720
+ "extractionSchema": {
1721
+ "$anchor": "StatefulStrategyIdentity",
1722
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1723
+ "type": "string",
1724
+ "pattern": "^STATEFUL_STRATEGY-.+$"
1725
+ }
1726
+ },
1727
+ "StatefulStrategy": {
1728
+ "identity": "TYPE-StatefulStrategy",
1729
+ "name": "StatefulStrategy",
1730
+ "description": "dummy-description",
1731
+ "resourceFormatRef": "FORMAT-ApplicationJson",
1732
+ "extractionSchema": {
1733
+ "$anchor": "StatefulStrategy",
1734
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1735
+ "type": "object",
1736
+ "required": [
1737
+ "identity",
1738
+ "statelessStrategy"
1739
+ ],
1740
+ "properties": {
1741
+ "identity": {
1742
+ "$ref": "#/$defs/StatefulStrategyIdentity"
1743
+ },
1744
+ "statelessStrategy": {
1745
+ "$ref": "#/$defs/StatelessStrategy"
1746
+ }
1747
+ },
1748
+ "allOf": [
1749
+ {
1750
+ "$ref": "#/$defs/StrategyStateWrapper"
1751
+ }
1752
+ ]
1753
+ }
1754
+ }
1755
+ }
1756
+ }
1757
+ }