@toolproof-npm/schema 0.1.34 → 0.1.36

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 (53) hide show
  1. package/dist/_lib/test.js +12 -12
  2. package/dist/_lib/types/Resource_Job.d.ts +55 -0
  3. package/dist/_lib/types/Resource_ResourceFormat.d.ts +40 -0
  4. package/dist/_lib/types/Resource_ResourceFormat.js +1 -0
  5. package/dist/_lib/types/Resource_ResourceType.d.ts +61 -0
  6. package/dist/_lib/types/Resource_ResourceType.js +1 -0
  7. package/dist/_lib/types/Resource_StatelessStrategy.d.ts +79 -0
  8. package/dist/_lib/types/Resource_StatelessStrategy.js +1 -0
  9. package/dist/_lib/types/types.d.ts +495 -355
  10. package/dist/genesis/generated/resources/Genesis.d.ts +2 -0
  11. package/dist/genesis/generated/resources/Genesis.js +2 -0
  12. package/dist/genesis/generated/resources/Genesis.json +2120 -0
  13. package/dist/{schemas → genesis/generated/schemas}/Genesis.json +273 -345
  14. package/dist/{schemas → genesis/generated/schemas}/Job.json +24 -26
  15. package/dist/genesis/generated/schemas/ResourceFormat.d.ts +2 -0
  16. package/dist/genesis/generated/schemas/ResourceFormat.js +2 -0
  17. package/dist/genesis/generated/schemas/ResourceFormat.json +74 -0
  18. package/dist/genesis/generated/schemas/ResourceType.d.ts +2 -0
  19. package/dist/genesis/generated/schemas/ResourceType.js +2 -0
  20. package/dist/genesis/generated/schemas/ResourceType.json +368 -0
  21. package/dist/genesis/generated/schemas/StatefulStrategy.d.ts +2 -0
  22. package/dist/genesis/generated/schemas/StatefulStrategy.js +2 -0
  23. package/dist/genesis/generated/schemas/StatefulStrategy.json +647 -0
  24. package/dist/genesis/generated/schemas/StatelessStrategy.d.ts +2 -0
  25. package/dist/genesis/generated/schemas/StatelessStrategy.js +2 -0
  26. package/dist/genesis/generated/schemas/StatelessStrategy.json +324 -0
  27. package/dist/genesis/resourceTypes/Genesis.d.ts +2 -0
  28. package/dist/genesis/resourceTypes/Genesis.js +2 -0
  29. package/dist/genesis/resourceTypes/Genesis.json +1530 -0
  30. package/dist/index.d.ts +8 -5
  31. package/dist/index.js +4 -3
  32. package/dist/scripts/_lib/config.d.ts +45 -0
  33. package/dist/scripts/_lib/config.js +109 -0
  34. package/dist/scripts/brandFactories.d.ts +5 -5
  35. package/dist/scripts/brandFactories.js +4 -5
  36. package/dist/scripts/extractSchemas.js +33 -8
  37. package/dist/scripts/extractSubschemaWithDefs.js +36 -7
  38. package/dist/scripts/generateResourceEnvelopes.js +77 -0
  39. package/dist/scripts/generateResourceTypeType.d.ts +1 -0
  40. package/dist/scripts/{generateResourceData.js → generateResourceTypeType.js} +21 -19
  41. package/dist/scripts/generateSchemaShims.d.ts +1 -0
  42. package/dist/scripts/generateSchemaShims.js +63 -0
  43. package/dist/scripts/generateTypes.js +125 -83
  44. package/dist/scripts/rewriteAnchors.d.ts +1 -0
  45. package/dist/scripts/rewriteAnchors.js +90 -0
  46. package/package.json +6 -3
  47. package/dist/_lib/types/ResourceData_Job.d.ts +0 -97
  48. /package/dist/_lib/types/{ResourceData_Job.js → Resource_Job.js} +0 -0
  49. /package/dist/{schemas → genesis/generated/schemas}/Genesis.d.ts +0 -0
  50. /package/dist/{schemas → genesis/generated/schemas}/Genesis.js +0 -0
  51. /package/dist/{schemas → genesis/generated/schemas}/Job.d.ts +0 -0
  52. /package/dist/{schemas → genesis/generated/schemas}/Job.js +0 -0
  53. /package/dist/scripts/{generateResourceData.d.ts → generateResourceEnvelopes.d.ts} +0 -0
@@ -0,0 +1,1530 @@
1
+ {
2
+ "identity": "TYPE-Genesis",
3
+ "name": "Genesis",
4
+ "description": "dummy-description",
5
+ "resourceFormatId": "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 (src/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
+ "Name": {
12
+ "identity": "TYPE-Name",
13
+ "name": "Name",
14
+ "description": "dummy-description",
15
+ "resourceFormatId": "FORMAT-ApplicationJson",
16
+ "extractionSchema": {
17
+ "$anchor": "Name",
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
+ "Description": {
35
+ "identity": "TYPE-Description",
36
+ "name": "Description",
37
+ "description": "dummy-description",
38
+ "resourceFormatId": "FORMAT-ApplicationJson",
39
+ "extractionSchema": {
40
+ "$anchor": "Description",
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
+ "resourceFormatId": "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": "#Name"
68
+ },
69
+ {
70
+ "$ref": "#Description"
71
+ }
72
+ ]
73
+ }
74
+ },
75
+ "IdentityValue": {
76
+ "identity": "TYPE-IdentityValue",
77
+ "name": "IdentityValue",
78
+ "description": "dummy-description",
79
+ "resourceFormatId": "FORMAT-ApplicationJson",
80
+ "extractionSchema": {
81
+ "$anchor": "IdentityValue",
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": "Anchors-only: use #<Name>Id for identity refs. Top-level and nested $defs should expose an $anchor matching <Name>Id.",
91
+ "pattern": "^#[A-Za-z][A-Za-z0-9._-]*Id$"
92
+ }
93
+ },
94
+ "additionalProperties": false
95
+ }
96
+ },
97
+ "IdSchemaValue": {
98
+ "identity": "TYPE-IdSchemaValue",
99
+ "name": "IdSchemaValue",
100
+ "description": "dummy-description",
101
+ "resourceFormatId": "FORMAT-ApplicationJson",
102
+ "extractionSchema": {
103
+ "$anchor": "IdSchemaValue",
104
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
105
+ "type": "object",
106
+ "required": [
107
+ "type",
108
+ "pattern"
109
+ ],
110
+ "properties": {
111
+ "type": {
112
+ "const": "string"
113
+ },
114
+ "pattern": {
115
+ "type": "string",
116
+ "pattern": "^[A-Z][A-Z0-9._-]*-.+$"
117
+ }
118
+ }
119
+ }
120
+ },
121
+ "IdentityProp": {
122
+ "identity": "TYPE-IdentityProp",
123
+ "name": "IdentityProp",
124
+ "description": "dummy-description",
125
+ "resourceFormatId": "FORMAT-ApplicationJson",
126
+ "extractionSchema": {
127
+ "$anchor": "IdentityProp",
128
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
129
+ "type": "object",
130
+ "required": [
131
+ "$defs",
132
+ "required",
133
+ "properties"
134
+ ],
135
+ "properties": {
136
+ "$defs": {
137
+ "type": "object",
138
+ "patternProperties": {
139
+ "^[A-Za-z][A-Za-z0-9._-]*Id$": {
140
+ "$ref": "#IdSchemaValue"
141
+ }
142
+ },
143
+ "$comment": "Ajv-specific: patternRequired enforces at least one Id-like key in this $defs block when identity is present.",
144
+ "patternRequired": [
145
+ "^[A-Za-z][A-Za-z0-9._-]*Id$"
146
+ ],
147
+ "minProperties": 1,
148
+ "additionalProperties": true
149
+ },
150
+ "required": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "string"
154
+ },
155
+ "uniqueItems": true,
156
+ "contains": {
157
+ "const": "identity"
158
+ }
159
+ },
160
+ "properties": {
161
+ "type": "object",
162
+ "required": [
163
+ "identity"
164
+ ],
165
+ "properties": {
166
+ "identity": {
167
+ "$ref": "#IdentityValue"
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
173
+ },
174
+ "MeritValue": {
175
+ "identity": "TYPE-MeritValue",
176
+ "name": "MeritValue",
177
+ "description": "dummy-description",
178
+ "resourceFormatId": "FORMAT-ApplicationJson",
179
+ "extractionSchema": {
180
+ "$anchor": "MeritValue",
181
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
182
+ "type": "object",
183
+ "oneOf": [
184
+ {
185
+ "required": [
186
+ "type"
187
+ ],
188
+ "properties": {
189
+ "type": {
190
+ "enum": [
191
+ "number",
192
+ "integer"
193
+ ]
194
+ }
195
+ }
196
+ },
197
+ {
198
+ "required": [
199
+ "enum"
200
+ ],
201
+ "properties": {
202
+ "enum": {
203
+ "type": "array",
204
+ "items": {
205
+ "type": "number"
206
+ },
207
+ "minItems": 1
208
+ }
209
+ }
210
+ }
211
+ ]
212
+ }
213
+ },
214
+ "MeritProp": {
215
+ "identity": "TYPE-MeritProp",
216
+ "name": "MeritProp",
217
+ "resourceFormatId": "FORMAT-ApplicationJson",
218
+ "extractionSchema": {
219
+ "$anchor": "MeritProp",
220
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
221
+ "type": "object",
222
+ "properties": {
223
+ "properties": {
224
+ "type": "object",
225
+ "properties": {
226
+ "merit": {
227
+ "$ref": "#MeritValue"
228
+ }
229
+ }
230
+ }
231
+ }
232
+ }
233
+ },
234
+ "ExtractionSchemaValue": {
235
+ "identity": "TYPE-ExtractionSchemaValue",
236
+ "name": "ExtractionSchemaValue",
237
+ "description": "dummy-description",
238
+ "resourceFormatId": "FORMAT-ApplicationJson",
239
+ "extractionSchema": {
240
+ "$anchor": "ExtractionSchemaValue",
241
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
242
+ "type": "object",
243
+ "required": [
244
+ "$schema",
245
+ "$anchor",
246
+ "type"
247
+ ],
248
+ "properties": {
249
+ "$anchor": {
250
+ "type": "string",
251
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]*$"
252
+ },
253
+ "$schema": {
254
+ "const": "https://json-schema.org/draft/2020-12/schema"
255
+ },
256
+ "$defs": {
257
+ "type": "object"
258
+ },
259
+ "type": {
260
+ "const": "object"
261
+ },
262
+ "required": {
263
+ "type": "array",
264
+ "items": {
265
+ "type": "string"
266
+ },
267
+ "uniqueItems": true
268
+ },
269
+ "properties": {
270
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
271
+ "type": "object"
272
+ },
273
+ "allOf": {
274
+ "type": "array",
275
+ "items": {
276
+ "type": "object"
277
+ }
278
+ },
279
+ "additionalProperties": {
280
+ "const": false
281
+ },
282
+ "unevaluatedProperties": {
283
+ "const": false
284
+ }
285
+ },
286
+ "allOf": [
287
+ {
288
+ "if": {
289
+ "anyOf": [
290
+ {
291
+ "properties": {
292
+ "properties": {
293
+ "type": "object",
294
+ "properties": {
295
+ "identity": {}
296
+ }
297
+ }
298
+ }
299
+ },
300
+ {
301
+ "properties": {
302
+ "required": {
303
+ "type": "array",
304
+ "contains": {
305
+ "const": "identity"
306
+ }
307
+ }
308
+ }
309
+ }
310
+ ]
311
+ },
312
+ "then": {
313
+ "$ref": "#IdentityProp"
314
+ }
315
+ },
316
+ {
317
+ "if": {
318
+ "properties": {
319
+ "properties": {
320
+ "type": "object",
321
+ "properties": {
322
+ "merit": {}
323
+ }
324
+ }
325
+ }
326
+ },
327
+ "then": {
328
+ "$ref": "#MeritProp"
329
+ }
330
+ },
331
+ {
332
+ "oneOf": [
333
+ {
334
+ "required": [
335
+ "additionalProperties"
336
+ ]
337
+ },
338
+ {
339
+ "required": [
340
+ "unevaluatedProperties"
341
+ ]
342
+ }
343
+ ]
344
+ }
345
+ ],
346
+ "unevaluatedProperties": false
347
+ }
348
+ },
349
+ "ExtractionSchema": {
350
+ "identity": "TYPE-ExtractionSchema",
351
+ "name": "ExtractionSchema",
352
+ "description": "dummy-description",
353
+ "resourceFormatId": "FORMAT-ApplicationJson",
354
+ "extractionSchema": {
355
+ "$anchor": "ExtractionSchema",
356
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
357
+ "type": "object",
358
+ "required": [
359
+ "extractionSchema"
360
+ ],
361
+ "properties": {
362
+ "extractionSchema": {
363
+ "$ref": "#ExtractionSchemaValue"
364
+ }
365
+ }
366
+ }
367
+ },
368
+ "ResourceFormatId": {
369
+ "identity": "TYPE-ResourceFormatId",
370
+ "name": "ResourceFormatId",
371
+ "description": "dummy-description",
372
+ "resourceFormatId": "FORMAT-ApplicationJson",
373
+ "extractionSchema": {
374
+ "$anchor": "ResourceFormatId",
375
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
376
+ "type": "string",
377
+ "pattern": "^FORMAT-.+$"
378
+ }
379
+ },
380
+ "ResourceTypeId": {
381
+ "identity": "TYPE-ResourceTypeId",
382
+ "name": "ResourceTypeId",
383
+ "description": "dummy-description",
384
+ "resourceFormatId": "FORMAT-ApplicationJson",
385
+ "extractionSchema": {
386
+ "$anchor": "ResourceTypeId",
387
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
388
+ "type": "string",
389
+ "pattern": "^TYPE-.+$"
390
+ }
391
+ },
392
+ "ResourceType": {
393
+ "identity": "TYPE-ResourceType",
394
+ "name": "ResourceType",
395
+ "description": "dummy-description",
396
+ "resourceFormatId": "FORMAT-ApplicationJson",
397
+ "extractionSchema": {
398
+ "$anchor": "ResourceType",
399
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
400
+ "type": "object",
401
+ "allOf": [
402
+ {
403
+ "required": [
404
+ "identity",
405
+ "resourceFormatId"
406
+ ],
407
+ "properties": {
408
+ "identity": {
409
+ "$ref": "#ResourceTypeId"
410
+ },
411
+ "resourceFormatId": {
412
+ "$ref": "#ResourceFormatId"
413
+ }
414
+ }
415
+ },
416
+ {
417
+ "$ref": "#Documented"
418
+ },
419
+ {
420
+ "$ref": "#ExtractionSchema"
421
+ },
422
+ {
423
+ "if": {
424
+ "$comment": "If resourceFormatId is FORMAT-ApplicationJson, then extractor must not be present, but if resourceFormatId is not FORMAT-ApplicationJson, then extractor must be present. This is because resources of types with format FORMAT-ApplicationJson are self-contained and do not need an extractor.",
425
+ "properties": {
426
+ "resourceFormatId": {
427
+ "const": "FORMAT-ApplicationJson"
428
+ }
429
+ }
430
+ },
431
+ "then": {
432
+ "not": {
433
+ "required": [
434
+ "extractor"
435
+ ]
436
+ }
437
+ },
438
+ "else": {
439
+ "type": "object",
440
+ "required": [
441
+ "extractor"
442
+ ],
443
+ "properties": {
444
+ "extractor": {
445
+ "type": "string",
446
+ "format": "uri"
447
+ }
448
+ }
449
+ }
450
+ }
451
+ ]
452
+ }
453
+ },
454
+ "ResourceFormat": {
455
+ "identity": "TYPE-ResourceFormat",
456
+ "name": "ResourceFormat",
457
+ "description": "dummy-description",
458
+ "resourceFormatId": "FORMAT-ApplicationJson",
459
+ "extractionSchema": {
460
+ "$anchor": "ResourceFormat",
461
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
462
+ "type": "object",
463
+ "allOf": [
464
+ {
465
+ "required": [
466
+ "identity"
467
+ ],
468
+ "properties": {
469
+ "identity": {
470
+ "$ref": "#ResourceFormatId"
471
+ }
472
+ }
473
+ },
474
+ {
475
+ "$ref": "#Documented"
476
+ }
477
+ ]
478
+ }
479
+ },
480
+ "ResourceRoleId": {
481
+ "identity": "TYPE-ResourceRoleId",
482
+ "name": "ResourceRoleId",
483
+ "description": "dummy-description",
484
+ "resourceFormatId": "FORMAT-ApplicationJson",
485
+ "extractionSchema": {
486
+ "$anchor": "ResourceRoleId",
487
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
488
+ "type": "string",
489
+ "pattern": "^ROLE-.+$"
490
+ }
491
+ },
492
+ "ResourceId": {
493
+ "identity": "TYPE-ResourceId",
494
+ "name": "ResourceId",
495
+ "description": "dummy-description",
496
+ "resourceFormatId": "FORMAT-ApplicationJson",
497
+ "extractionSchema": {
498
+ "$anchor": "ResourceId",
499
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
500
+ "type": "string",
501
+ "$comment": "",
502
+ "pattern": "^RESOURCE-.+$"
503
+ }
504
+ },
505
+ "ResourceRoleValue": {
506
+ "identity": "TYPE-ResourceRoleValue",
507
+ "name": "ResourceRoleValue",
508
+ "description": "dummy-description",
509
+ "resourceFormatId": "FORMAT-ApplicationJson",
510
+ "extractionSchema": {
511
+ "$anchor": "ResourceRoleValue",
512
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
513
+ "type": "object",
514
+ "allOf": [
515
+ {
516
+ "$comment": "A ResourceRole does not have a self-contained identity, as it is always defined in the context of a RoleMap.",
517
+ "required": [
518
+ "resourceTypeId"
519
+ ],
520
+ "properties": {
521
+ "resourceTypeId": {
522
+ "$ref": "#ResourceTypeId"
523
+ }
524
+ }
525
+ },
526
+ {
527
+ "$ref": "#Documented"
528
+ }
529
+ ]
530
+ }
531
+ },
532
+ "RoleMap": {
533
+ "identity": "TYPE-RoleMap",
534
+ "name": "RoleMap",
535
+ "description": "dummy-description",
536
+ "resourceFormatId": "FORMAT-ApplicationJson",
537
+ "extractionSchema": {
538
+ "$anchor": "RoleMap",
539
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
540
+ "type": "object",
541
+ "propertyNames": {
542
+ "$ref": "#ResourceRoleId"
543
+ },
544
+ "additionalProperties": {
545
+ "$ref": "#ResourceRoleValue"
546
+ }
547
+ }
548
+ },
549
+ "RolesInner": {
550
+ "identity": "TYPE-RolesInner",
551
+ "name": "RolesInner",
552
+ "description": "dummy-description",
553
+ "resourceFormatId": "FORMAT-ApplicationJson",
554
+ "extractionSchema": {
555
+ "$anchor": "RolesInner",
556
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
557
+ "type": "object",
558
+ "required": [
559
+ "inputMap",
560
+ "outputMap"
561
+ ],
562
+ "properties": {
563
+ "inputMap": {
564
+ "$ref": "#RoleMap"
565
+ },
566
+ "outputMap": {
567
+ "$ref": "#RoleMap"
568
+ }
569
+ },
570
+ "unevaluatedProperties": false
571
+ }
572
+ },
573
+ "RolesOuter": {
574
+ "identity": "TYPE-RolesOuter",
575
+ "name": "RolesOuter",
576
+ "description": "dummy-description",
577
+ "resourceFormatId": "FORMAT-ApplicationJson",
578
+ "extractionSchema": {
579
+ "$anchor": "RolesOuter",
580
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
581
+ "type": "object",
582
+ "required": [
583
+ "roles"
584
+ ],
585
+ "properties": {
586
+ "roles": {
587
+ "$ref": "#RolesInner"
588
+ }
589
+ }
590
+ }
591
+ },
592
+ "JobId": {
593
+ "identity": "TYPE-JobId",
594
+ "name": "JobId",
595
+ "description": "dummy-description",
596
+ "resourceFormatId": "FORMAT-ApplicationJson",
597
+ "jobFormatId": "FORMAT-ApplicationJson",
598
+ "extractionSchema": {
599
+ "$anchor": "JobId",
600
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
601
+ "type": "string",
602
+ "$comment": "",
603
+ "pattern": "^JOB-.+$"
604
+ }
605
+ },
606
+ "Job": {
607
+ "identity": "TYPE-Job",
608
+ "name": "Job",
609
+ "description": "dummy-description",
610
+ "resourceFormatId": "FORMAT-ApplicationJob",
611
+ "extractor": "https://extractors.toolproof.com/v0/JobExtractor.js",
612
+ "extractionSchema": {
613
+ "$anchor": "Job",
614
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
615
+ "type": "object",
616
+ "allOf": [
617
+ {
618
+ "required": [
619
+ "identity",
620
+ "implementation"
621
+ ],
622
+ "properties": {
623
+ "identity": {
624
+ "$ref": "#JobId"
625
+ },
626
+ "implementation": {
627
+ "type": "string",
628
+ "format": "uri"
629
+ }
630
+ }
631
+ },
632
+ {
633
+ "$ref": "#Documented"
634
+ },
635
+ {
636
+ "$ref": "#RolesOuter"
637
+ }
638
+ ],
639
+ "unevaluatedProperties": false
640
+ }
641
+ },
642
+ "RoleBindingMap": {
643
+ "identity": "TYPE-RoleBindingMap",
644
+ "name": "RoleBindingMap",
645
+ "description": "dummy-description",
646
+ "resourceFormatId": "FORMAT-ApplicationJson",
647
+ "extractionSchema": {
648
+ "$anchor": "RoleBindingMap",
649
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
650
+ "type": "object",
651
+ "propertyNames": {
652
+ "$ref": "#ResourceRoleId"
653
+ },
654
+ "additionalProperties": {
655
+ "$ref": "#ResourceId"
656
+ }
657
+ }
658
+ },
659
+ "RoleBindingsInner": {
660
+ "identity": "TYPE-RoleBindingsInner",
661
+ "name": "RoleBindingsInner",
662
+ "description": "dummy-description",
663
+ "resourceFormatId": "FORMAT-ApplicationJson",
664
+ "extractionSchema": {
665
+ "$anchor": "RoleBindingsInner",
666
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
667
+ "type": "object",
668
+ "required": [
669
+ "inputBindingMap",
670
+ "outputBindingMap"
671
+ ],
672
+ "properties": {
673
+ "inputBindingMap": {
674
+ "$ref": "#RoleBindingMap"
675
+ },
676
+ "outputBindingMap": {
677
+ "$ref": "#RoleBindingMap"
678
+ }
679
+ },
680
+ "unevaluatedProperties": false
681
+ }
682
+ },
683
+ "RoleBindingsOuter": {
684
+ "identity": "TYPE-RoleBindingsOuter",
685
+ "name": "RoleBindingsOuter",
686
+ "description": "dummy-description",
687
+ "resourceFormatId": "FORMAT-ApplicationJson",
688
+ "extractionSchema": {
689
+ "$anchor": "RoleBindingsOuter",
690
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
691
+ "type": "object",
692
+ "required": [
693
+ "roleBindings"
694
+ ],
695
+ "properties": {
696
+ "roleBindings": {
697
+ "$ref": "#RoleBindingsInner"
698
+ }
699
+ }
700
+ }
701
+ },
702
+ "ResourceSocket": {
703
+ "identity": "TYPE-ResourceSocket",
704
+ "name": "ResourceSocket",
705
+ "description": "dummy-description",
706
+ "resourceFormatId": "FORMAT-ApplicationJson",
707
+ "extractionSchema": {
708
+ "$anchor": "ResourceSocket",
709
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
710
+ "type": "object",
711
+ "required": [
712
+ "resourceRoleId",
713
+ "executionId"
714
+ ],
715
+ "properties": {
716
+ "resourceRoleId": {
717
+ "$ref": "#ResourceRoleId"
718
+ },
719
+ "executionId": {
720
+ "$ref": "#ExecutionId"
721
+ }
722
+ }
723
+ }
724
+ },
725
+ "CreationContext": {
726
+ "identity": "TYPE-CreationContext",
727
+ "name": "CreationContext",
728
+ "description": "dummy-description",
729
+ "resourceFormatId": "FORMAT-ApplicationJson",
730
+ "extractionSchema": {
731
+ "$anchor": "CreationContext",
732
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
733
+ "type": "object",
734
+ "required": [
735
+ "creationContext"
736
+ ],
737
+ "properties": {
738
+ "creationContext": {
739
+ "$ref": "#ResourceSocket"
740
+ }
741
+ }
742
+ }
743
+ },
744
+ "ResourceBase": {
745
+ "identity": "TYPE-ResourceBase",
746
+ "name": "ResourceBase",
747
+ "description": "dummy-description",
748
+ "resourceFormatId": "FORMAT-ApplicationJson",
749
+ "extractionSchema": {
750
+ "$anchor": "ResourceBase",
751
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
752
+ "type": "object",
753
+ "allOf": [
754
+ {
755
+ "required": [
756
+ "identity",
757
+ "resourceTypeId"
758
+ ],
759
+ "properties": {
760
+ "identity": {
761
+ "$ref": "#ResourceId"
762
+ },
763
+ "resourceTypeId": {
764
+ "$ref": "#ResourceTypeId"
765
+ }
766
+ }
767
+ },
768
+ {
769
+ "$ref": "#CreationContext"
770
+ }
771
+ ]
772
+ }
773
+ },
774
+ "ResourceKind": {
775
+ "identity": "TYPE-ResourceKind",
776
+ "name": "ResourceKind",
777
+ "description": "dummy-description",
778
+ "resourceFormatId": "FORMAT-ApplicationJson",
779
+ "extractionSchema": {
780
+ "$anchor": "ResourceKind",
781
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
782
+ "type": "object",
783
+ "required": [
784
+ "kind"
785
+ ],
786
+ "properties": {
787
+ "kind": {
788
+ "enum": [
789
+ "potential-input",
790
+ "potential-output",
791
+ "materialized"
792
+ ]
793
+ }
794
+ }
795
+ }
796
+ },
797
+ "PendingRef": {
798
+ "identity": "TYPE-PendingRef",
799
+ "name": "PendingRef",
800
+ "description": "dummy-description",
801
+ "resourceFormatId": "FORMAT-ApplicationJson",
802
+ "extractionSchema": {
803
+ "$anchor": "PendingRef",
804
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
805
+ "type": "object",
806
+ "required": [
807
+ "pendingRef"
808
+ ],
809
+ "properties": {
810
+ "pendingRef": {
811
+ "$comment": "This points to a resource created at a previous step in the same workflow. This resource is not yet materialized at the time of defining the workflow, but will be materialized when the step using this resource is executed.The Engine resolves this ref at runtime.",
812
+ "$ref": "#ResourceSocket"
813
+ }
814
+ }
815
+ }
816
+ },
817
+ "ResourcePotentialInput": {
818
+ "identity": "TYPE-ResourcePotentialInput",
819
+ "name": "ResourcePotentialInput",
820
+ "description": "dummy-description",
821
+ "resourceFormatId": "FORMAT-ApplicationJson",
822
+ "extractionSchema": {
823
+ "$anchor": "ResourcePotentialInput",
824
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
825
+ "type": "object",
826
+ "allOf": [
827
+ {
828
+ "$ref": "#ResourceBase"
829
+ },
830
+ {
831
+ "$ref": "#ResourceKind"
832
+ },
833
+ {
834
+ "required": [
835
+ "kind"
836
+ ],
837
+ "properties": {
838
+ "kind": {
839
+ "const": "potential-input"
840
+ }
841
+ }
842
+ },
843
+ {
844
+ "$ref": "#PendingRef"
845
+ }
846
+ ],
847
+ "unevaluatedProperties": false
848
+ }
849
+ },
850
+ "ResourcePotentialOutput": {
851
+ "identity": "TYPE-ResourcePotentialOutput",
852
+ "name": "ResourcePotentialOutput",
853
+ "description": "dummy-description",
854
+ "resourceFormatId": "FORMAT-ApplicationJson",
855
+ "extractionSchema": {
856
+ "$anchor": "ResourcePotentialOutput",
857
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
858
+ "type": "object",
859
+ "allOf": [
860
+ {
861
+ "$ref": "#ResourceBase"
862
+ },
863
+ {
864
+ "$ref": "#ResourceKind"
865
+ },
866
+ {
867
+ "required": [
868
+ "kind"
869
+ ],
870
+ "properties": {
871
+ "kind": {
872
+ "const": "potential-output"
873
+ }
874
+ }
875
+ }
876
+ ],
877
+ "unevaluatedProperties": false
878
+ }
879
+ },
880
+ "CanonicalRef": {
881
+ "identity": "TYPE-CanonicalRef",
882
+ "name": "CanonicalRef",
883
+ "description": "dummy-description",
884
+ "resourceFormatId": "FORMAT-ApplicationJson",
885
+ "extractionSchema": {
886
+ "$anchor": "CanonicalRef",
887
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
888
+ "type": "object",
889
+ "required": [
890
+ "canonicalRef"
891
+ ],
892
+ "properties": {
893
+ "canonicalRef": {
894
+ "$comment": "This points to the canonical resource with an identical contentHash as this one. If no such resource exists, this resource will itself be the canonical resource and point to itself (i.e. canonicalRef = identity).",
895
+ "$ref": "#ResourceId"
896
+ }
897
+ }
898
+ }
899
+ },
900
+ "Timestamp": {
901
+ "identity": "TYPE-Timestamp",
902
+ "name": "Timestamp",
903
+ "description": "dummy-description",
904
+ "resourceFormatId": "FORMAT-ApplicationJson",
905
+ "extractionSchema": {
906
+ "$anchor": "Timestamp",
907
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
908
+ "type": "object",
909
+ "required": [
910
+ "timestamp"
911
+ ],
912
+ "properties": {
913
+ "timestamp": {
914
+ "type": "string",
915
+ "format": "date-time"
916
+ }
917
+ }
918
+ }
919
+ },
920
+ "ResourceRawMeta": {
921
+ "identity": "TYPE-ResourceRawMeta",
922
+ "name": "ResourceRawMeta",
923
+ "description": "dummy-description",
924
+ "resourceFormatId": "FORMAT-ApplicationJson",
925
+ "extractionSchema": {
926
+ "$anchor": "ResourceRawMeta",
927
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
928
+ "type": "object",
929
+ "allOf": [
930
+ {
931
+ "$ref": "#ResourceBase"
932
+ },
933
+ {
934
+ "$ref": "#CanonicalRef"
935
+ },
936
+ {
937
+ "$ref": "#Timestamp"
938
+ }
939
+ ],
940
+ "unevaluatedProperties": false
941
+ }
942
+ },
943
+ "Path": {
944
+ "identity": "TYPE-Path",
945
+ "name": "Path",
946
+ "description": "dummy-description",
947
+ "resourceFormatId": "FORMAT-ApplicationJson",
948
+ "extractionSchema": {
949
+ "$anchor": "Path",
950
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
951
+ "type": "object",
952
+ "required": [
953
+ "path"
954
+ ],
955
+ "properties": {
956
+ "path": {
957
+ "type": "string"
958
+ }
959
+ }
960
+ }
961
+ },
962
+ "ResourceMetaBase": {
963
+ "identity": "TYPE-ResourceMetaBase",
964
+ "name": "ResourceMetaBase",
965
+ "description": "dummy-description",
966
+ "resourceFormatId": "FORMAT-ApplicationJson",
967
+ "extractionSchema": {
968
+ "$anchor": "ResourceMetaBase",
969
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
970
+ "type": "object",
971
+ "allOf": [
972
+ {
973
+ "$ref": "#ResourceBase"
974
+ },
975
+ {
976
+ "$ref": "#ResourceKind"
977
+ },
978
+ {
979
+ "required": [
980
+ "kind"
981
+ ],
982
+ "properties": {
983
+ "kind": {
984
+ "const": "materialized"
985
+ }
986
+ }
987
+ },
988
+ {
989
+ "$ref": "#Timestamp"
990
+ },
991
+ {
992
+ "$ref": "#Path"
993
+ }
994
+ ]
995
+ }
996
+ },
997
+ "ResourceMeta": {
998
+ "identity": "TYPE-ResourceMeta",
999
+ "name": "ResourceMeta",
1000
+ "description": "dummy-description",
1001
+ "resourceFormatId": "FORMAT-ApplicationJson",
1002
+ "extractionSchema": {
1003
+ "$anchor": "ResourceMeta",
1004
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1005
+ "type": "object",
1006
+ "$ref": "#ResourceMetaBase",
1007
+ "unevaluatedProperties": false
1008
+ }
1009
+ },
1010
+ "JsonValue": {
1011
+ "identity": "TYPE-JsonValue",
1012
+ "name": "JsonValue",
1013
+ "description": "dummy-description",
1014
+ "resourceFormatId": "FORMAT-ApplicationJson",
1015
+ "extractionSchema": {
1016
+ "$anchor": "JsonValue",
1017
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1018
+ "oneOf": [
1019
+ {
1020
+ "type": "null"
1021
+ },
1022
+ {
1023
+ "type": "boolean"
1024
+ },
1025
+ {
1026
+ "type": "number"
1027
+ },
1028
+ {
1029
+ "type": "string"
1030
+ },
1031
+ {
1032
+ "type": "array",
1033
+ "items": {
1034
+ "$ref": "#JsonValue"
1035
+ }
1036
+ },
1037
+ {
1038
+ "type": "object",
1039
+ "additionalProperties": {
1040
+ "$ref": "#JsonValue"
1041
+ }
1042
+ }
1043
+ ]
1044
+ }
1045
+ },
1046
+ "Resource": {
1047
+ "identity": "TYPE-Resource",
1048
+ "name": "Resource",
1049
+ "description": "dummy-description",
1050
+ "resourceFormatId": "FORMAT-ApplicationJson",
1051
+ "extractionSchema": {
1052
+ "$anchor": "Resource",
1053
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1054
+ "type": "object",
1055
+ "allOf": [
1056
+ {
1057
+ "$ref": "#ResourceMetaBase"
1058
+ },
1059
+ {
1060
+ "required": [
1061
+ "extractedData"
1062
+ ],
1063
+ "properties": {
1064
+ "extractedData": {
1065
+ "$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.",
1066
+ "type": "object",
1067
+ "additionalProperties": {
1068
+ "$ref": "#JsonValue"
1069
+ }
1070
+ }
1071
+ }
1072
+ }
1073
+ ],
1074
+ "unevaluatedProperties": false
1075
+ }
1076
+ },
1077
+ "ExecutionId": {
1078
+ "identity": "TYPE-ExecutionId",
1079
+ "name": "ExecutionId",
1080
+ "description": "dummy-description",
1081
+ "resourceFormatId": "FORMAT-ApplicationJson",
1082
+ "extractionSchema": {
1083
+ "$anchor": "ExecutionId",
1084
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1085
+ "type": "string",
1086
+ "pattern": "^EXECUTION-.+$"
1087
+ }
1088
+ },
1089
+ "Execution": {
1090
+ "identity": "TYPE-Execution",
1091
+ "name": "Execution",
1092
+ "description": "dummy-description",
1093
+ "resourceFormatId": "FORMAT-ApplicationJson",
1094
+ "extractionSchema": {
1095
+ "$anchor": "Execution",
1096
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1097
+ "type": "object",
1098
+ "allOf": [
1099
+ {
1100
+ "type": "object",
1101
+ "required": [
1102
+ "identity",
1103
+ "jobId"
1104
+ ],
1105
+ "properties": {
1106
+ "identity": {
1107
+ "$ref": "#ExecutionId"
1108
+ },
1109
+ "jobId": {
1110
+ "$ref": "#ResourceId"
1111
+ }
1112
+ }
1113
+ },
1114
+ {
1115
+ "$comment": "This will be overlayed at runtime to specify roleBindings corresponding to the roles of the underlying job.",
1116
+ "$ref": "#RoleBindingsOuter"
1117
+ }
1118
+ ]
1119
+ }
1120
+ },
1121
+ "ConditionalWrapper": {
1122
+ "identity": "TYPE-ConditionalWrapper",
1123
+ "name": "ConditionalWrapper",
1124
+ "description": "dummy-description",
1125
+ "resourceFormatId": "FORMAT-ApplicationJson",
1126
+ "extractionSchema": {
1127
+ "$anchor": "ConditionalWrapper",
1128
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1129
+ "type": "object",
1130
+ "required": [
1131
+ "when",
1132
+ "what"
1133
+ ],
1134
+ "properties": {
1135
+ "when": {
1136
+ "$ref": "#WorkStep"
1137
+ },
1138
+ "what": {
1139
+ "$ref": "#WorkStep"
1140
+ }
1141
+ },
1142
+ "unevaluatedProperties": false
1143
+ }
1144
+ },
1145
+ "StepKind": {
1146
+ "identity": "TYPE-StepKind",
1147
+ "name": "StepKind",
1148
+ "description": "dummy-description",
1149
+ "resourceFormatId": "FORMAT-ApplicationJson",
1150
+ "extractionSchema": {
1151
+ "$anchor": "StepKind",
1152
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1153
+ "type": "object",
1154
+ "required": [
1155
+ "kind"
1156
+ ],
1157
+ "properties": {
1158
+ "kind": {
1159
+ "type": "string",
1160
+ "enum": [
1161
+ "work",
1162
+ "branch",
1163
+ "while",
1164
+ "for"
1165
+ ]
1166
+ }
1167
+ }
1168
+ }
1169
+ },
1170
+ "WorkStepId": {
1171
+ "identity": "TYPE-WorkStepId",
1172
+ "name": "WorkStepId",
1173
+ "description": "dummy-description",
1174
+ "resourceFormatId": "FORMAT-ApplicationJson",
1175
+ "extractionSchema": {
1176
+ "$anchor": "WorkStepId",
1177
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1178
+ "type": "string",
1179
+ "pattern": "^WORKSTEP-.+$"
1180
+ }
1181
+ },
1182
+ "WorkStep": {
1183
+ "identity": "TYPE-WorkStep",
1184
+ "name": "WorkStep",
1185
+ "description": "dummy-description",
1186
+ "resourceFormatId": "FORMAT-ApplicationJson",
1187
+ "extractionSchema": {
1188
+ "$anchor": "WorkStep",
1189
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1190
+ "type": "object",
1191
+ "allOf": [
1192
+ {
1193
+ "$ref": "#StepKind"
1194
+ },
1195
+ {
1196
+ "type": "object",
1197
+ "required": [
1198
+ "identity",
1199
+ "kind",
1200
+ "execution"
1201
+ ],
1202
+ "properties": {
1203
+ "identity": {
1204
+ "$ref": "#WorkStepId"
1205
+ },
1206
+ "kind": {
1207
+ "const": "work"
1208
+ },
1209
+ "execution": {
1210
+ "$ref": "#Execution"
1211
+ }
1212
+ }
1213
+ }
1214
+ ]
1215
+ }
1216
+ },
1217
+ "BranchStepId": {
1218
+ "identity": "TYPE-BranchStepId",
1219
+ "name": "BranchStepId",
1220
+ "description": "dummy-description",
1221
+ "resourceFormatId": "FORMAT-ApplicationJson",
1222
+ "extractionSchema": {
1223
+ "$anchor": "BranchStepId",
1224
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1225
+ "type": "string",
1226
+ "pattern": "^BRANCHSTEP-.+$"
1227
+ }
1228
+ },
1229
+ "BranchStep": {
1230
+ "identity": "TYPE-BranchStep",
1231
+ "name": "BranchStep",
1232
+ "description": "dummy-description",
1233
+ "resourceFormatId": "FORMAT-ApplicationJson",
1234
+ "extractionSchema": {
1235
+ "$anchor": "BranchStep",
1236
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1237
+ "type": "object",
1238
+ "allOf": [
1239
+ {
1240
+ "$ref": "#StepKind"
1241
+ },
1242
+ {
1243
+ "type": "object",
1244
+ "required": [
1245
+ "identity",
1246
+ "kind",
1247
+ "cases"
1248
+ ],
1249
+ "properties": {
1250
+ "identity": {
1251
+ "$ref": "#BranchStepId"
1252
+ },
1253
+ "kind": {
1254
+ "const": "branch"
1255
+ },
1256
+ "cases": {
1257
+ "type": "array",
1258
+ "items": {
1259
+ "$ref": "#ConditionalWrapper"
1260
+ },
1261
+ "minItems": 1,
1262
+ "uniqueItems": true
1263
+ }
1264
+ }
1265
+ }
1266
+ ]
1267
+ }
1268
+ },
1269
+ "WhileStepId": {
1270
+ "identity": "TYPE-WhileStepId",
1271
+ "name": "WhileStepId",
1272
+ "description": "dummy-description",
1273
+ "resourceFormatId": "FORMAT-ApplicationJson",
1274
+ "extractionSchema": {
1275
+ "$anchor": "WhileStepId",
1276
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1277
+ "type": "string",
1278
+ "pattern": "^WHILESTEP-.+$"
1279
+ }
1280
+ },
1281
+ "WhileStep": {
1282
+ "identity": "TYPE-WhileStep",
1283
+ "name": "WhileStep",
1284
+ "description": "dummy-description",
1285
+ "resourceFormatId": "FORMAT-ApplicationJson",
1286
+ "extractionSchema": {
1287
+ "$anchor": "WhileStep",
1288
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1289
+ "type": "object",
1290
+ "allOf": [
1291
+ {
1292
+ "$ref": "#StepKind"
1293
+ },
1294
+ {
1295
+ "type": "object",
1296
+ "required": [
1297
+ "identity",
1298
+ "kind",
1299
+ "case"
1300
+ ],
1301
+ "properties": {
1302
+ "identity": {
1303
+ "$ref": "#WhileStepId"
1304
+ },
1305
+ "kind": {
1306
+ "const": "while"
1307
+ },
1308
+ "case": {
1309
+ "$ref": "#ConditionalWrapper"
1310
+ }
1311
+ }
1312
+ }
1313
+ ]
1314
+ }
1315
+ },
1316
+ "ForStepId": {
1317
+ "identity": "TYPE-ForStepId",
1318
+ "name": "ForStepId",
1319
+ "description": "dummy-description",
1320
+ "resourceFormatId": "FORMAT-ApplicationJson",
1321
+ "extractionSchema": {
1322
+ "$anchor": "ForStepId",
1323
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1324
+ "type": "string",
1325
+ "pattern": "^FORSTEP-.+$"
1326
+ }
1327
+ },
1328
+ "ForStep": {
1329
+ "identity": "TYPE-ForStep",
1330
+ "name": "ForStep",
1331
+ "description": "dummy-description",
1332
+ "resourceFormatId": "FORMAT-ApplicationJson",
1333
+ "extractionSchema": {
1334
+ "$anchor": "ForStep",
1335
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1336
+ "type": "object",
1337
+ "allOf": [
1338
+ {
1339
+ "$ref": "#StepKind"
1340
+ },
1341
+ {
1342
+ "type": "object",
1343
+ "required": [
1344
+ "identity",
1345
+ "kind",
1346
+ "case"
1347
+ ],
1348
+ "properties": {
1349
+ "identity": {
1350
+ "$ref": "#ForStepId"
1351
+ },
1352
+ "kind": {
1353
+ "const": "for"
1354
+ },
1355
+ "case": {
1356
+ "$ref": "#ConditionalWrapper"
1357
+ }
1358
+ }
1359
+ }
1360
+ ]
1361
+ }
1362
+ },
1363
+ "Step": {
1364
+ "identity": "TYPE-Step",
1365
+ "name": "Step",
1366
+ "description": "dummy-description",
1367
+ "resourceFormatId": "FORMAT-ApplicationJson",
1368
+ "extractionSchema": {
1369
+ "$anchor": "Step",
1370
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1371
+ "type": "object",
1372
+ "oneOf": [
1373
+ {
1374
+ "$ref": "#WorkStep"
1375
+ },
1376
+ {
1377
+ "$ref": "#BranchStep"
1378
+ },
1379
+ {
1380
+ "$ref": "#WhileStep"
1381
+ },
1382
+ {
1383
+ "$ref": "#ForStep"
1384
+ }
1385
+ ],
1386
+ "unevaluatedProperties": false
1387
+ }
1388
+ },
1389
+ "StatelessStrategyId": {
1390
+ "identity": "TYPE-StatelessStrategyId",
1391
+ "name": "StatelessStrategyId",
1392
+ "description": "dummy-description",
1393
+ "resourceFormatId": "FORMAT-ApplicationJson",
1394
+ "extractionSchema": {
1395
+ "$anchor": "StatelessStrategyId",
1396
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1397
+ "type": "string",
1398
+ "pattern": "^STATELESSSTRATEGY-.+$"
1399
+ }
1400
+ },
1401
+ "StatelessStrategy": {
1402
+ "identity": "TYPE-StatelessStrategy",
1403
+ "name": "StatelessStrategy",
1404
+ "description": "dummy-description",
1405
+ "resourceFormatId": "FORMAT-ApplicationJson",
1406
+ "extractionSchema": {
1407
+ "$anchor": "StatelessStrategy",
1408
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1409
+ "type": "object",
1410
+ "allOf": [
1411
+ {
1412
+ "type": "object",
1413
+ "required": [
1414
+ "identity",
1415
+ "steps"
1416
+ ],
1417
+ "properties": {
1418
+ "identity": {
1419
+ "$ref": "#StatelessStrategyId"
1420
+ },
1421
+ "steps": {
1422
+ "type": "array",
1423
+ "items": {
1424
+ "$ref": "#Step"
1425
+ },
1426
+ "uniqueItems": true
1427
+ }
1428
+ }
1429
+ }
1430
+ ],
1431
+ "unevaluatedProperties": false
1432
+ }
1433
+ },
1434
+ "StrategyStateValue": {
1435
+ "identity": "TYPE-StrategyStateValue",
1436
+ "name": "StrategyStateValue",
1437
+ "description": "dummy-description",
1438
+ "resourceFormatId": "FORMAT-ApplicationJson",
1439
+ "extractionSchema": {
1440
+ "$anchor": "StrategyStateValue",
1441
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1442
+ "type": "object",
1443
+ "propertyNames": {
1444
+ "$ref": "#ExecutionId"
1445
+ },
1446
+ "additionalProperties": {
1447
+ "type": "object",
1448
+ "propertyNames": {
1449
+ "$ref": "#ResourceRoleId"
1450
+ },
1451
+ "additionalProperties": {
1452
+ "oneOf": [
1453
+ {
1454
+ "$ref": "#ResourcePotentialInput"
1455
+ },
1456
+ {
1457
+ "$ref": "#ResourcePotentialOutput"
1458
+ },
1459
+ {
1460
+ "$ref": "#Resource"
1461
+ }
1462
+ ]
1463
+ }
1464
+ }
1465
+ }
1466
+ },
1467
+ "StrategyState": {
1468
+ "identity": "TYPE-StrategyState",
1469
+ "name": "StrategyState",
1470
+ "description": "dummy-description",
1471
+ "resourceFormatId": "FORMAT-ApplicationJson",
1472
+ "extractionSchema": {
1473
+ "$anchor": "StrategyState",
1474
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1475
+ "type": "object",
1476
+ "required": [
1477
+ "strategyState"
1478
+ ],
1479
+ "properties": {
1480
+ "strategyState": {
1481
+ "$ref": "#StrategyStateValue"
1482
+ }
1483
+ }
1484
+ }
1485
+ },
1486
+ "StatefulStrategyId": {
1487
+ "identity": "TYPE-StatefulStrategyId",
1488
+ "name": "StatefulStrategyId",
1489
+ "description": "dummy-description",
1490
+ "resourceFormatId": "FORMAT-ApplicationJson",
1491
+ "extractionSchema": {
1492
+ "$anchor": "StatefulStrategyId",
1493
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1494
+ "type": "string",
1495
+ "pattern": "^STATEFULSTRATEGY-.+$"
1496
+ }
1497
+ },
1498
+ "StatefulStrategy": {
1499
+ "identity": "TYPE-StatefulStrategy",
1500
+ "name": "StatefulStrategy",
1501
+ "description": "dummy-description",
1502
+ "resourceFormatId": "FORMAT-ApplicationJson",
1503
+ "extractionSchema": {
1504
+ "$anchor": "StatefulStrategy",
1505
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1506
+ "type": "object",
1507
+ "allOf": [
1508
+ {
1509
+ "required": [
1510
+ "identity",
1511
+ "statelessStrategy"
1512
+ ],
1513
+ "properties": {
1514
+ "identity": {
1515
+ "$ref": "#StatefulStrategyId"
1516
+ },
1517
+ "statelessStrategy": {
1518
+ "$ref": "#StatelessStrategy"
1519
+ }
1520
+ }
1521
+ },
1522
+ {
1523
+ "$ref": "#StrategyState"
1524
+ }
1525
+ ]
1526
+ }
1527
+ }
1528
+ }
1529
+ }
1530
+ }