@toolproof-npm/schema 0.1.33 → 0.1.35

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