@hyperscale0/udl 1.0.0-beta.1 → 1.0.0

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 (179) hide show
  1. package/CHANGELOG.md +78 -25
  2. package/README.md +37 -99
  3. package/conformance/README.md +44 -41
  4. package/conformance/evolution/action-contract.expected.json +10 -0
  5. package/conformance/evolution/action-contract.live.udl +44 -0
  6. package/conformance/evolution/action-contract.next.udl +45 -0
  7. package/conformance/evolution/product-identity.expected.json +10 -0
  8. package/conformance/evolution/product-identity.live.udl +55 -0
  9. package/conformance/evolution/product-identity.next.udl +55 -0
  10. package/conformance/evolution/version-required.expected.json +10 -0
  11. package/conformance/evolution/version-required.live.udl +55 -0
  12. package/conformance/evolution/version-required.next.udl +58 -0
  13. package/conformance/invalid/action-without-transition.expected.json +10 -0
  14. package/conformance/invalid/{verb-without-transition.udl → action-without-transition.udl} +7 -2
  15. package/conformance/invalid/agent-description-too-long.expected.json +10 -0
  16. package/conformance/invalid/agent-description-too-long.udl +57 -0
  17. package/conformance/invalid/blank-title.expected.json +1 -1
  18. package/conformance/invalid/blank-title.udl +6 -2
  19. package/conformance/invalid/composition-dial-duplicate-key.expected.json +10 -0
  20. package/conformance/invalid/composition-dial-duplicate-key.udl +73 -0
  21. package/conformance/invalid/depth-budget.expected.json +1 -1
  22. package/conformance/invalid/duplicate-subject.expected.json +10 -0
  23. package/conformance/invalid/duplicate-subject.udl +230 -0
  24. package/conformance/invalid/forged-effects.expected.json +10 -0
  25. package/conformance/invalid/forged-effects.udl +76 -0
  26. package/conformance/invalid/format-version.expected.json +1 -1
  27. package/conformance/invalid/format-version.udl +6 -2
  28. package/conformance/invalid/instrument-id-not-snake-case.expected.json +10 -0
  29. package/conformance/invalid/{noun-id-not-snake-case.udl → instrument-id-not-snake-case.udl} +6 -2
  30. package/conformance/invalid/invalid-aggregate-gate-shape.expected.json +10 -0
  31. package/conformance/invalid/invalid-aggregate-gate-shape.udl +1819 -0
  32. package/conformance/invalid/invalid-check-duration.expected.json +10 -0
  33. package/conformance/invalid/invalid-check-duration.udl +219 -0
  34. package/conformance/invalid/invalid-dial-anchor.expected.json +10 -0
  35. package/conformance/invalid/invalid-dial-anchor.udl +219 -0
  36. package/conformance/invalid/invalid-exception-parent-ref.expected.json +10 -0
  37. package/conformance/invalid/invalid-exception-parent-ref.udl +2487 -0
  38. package/conformance/invalid/invalid-exposure-shape.expected.json +10 -0
  39. package/conformance/invalid/invalid-exposure-shape.udl +1819 -0
  40. package/conformance/invalid/invalid-remainder.expected.json +10 -0
  41. package/conformance/invalid/invalid-remainder.udl +220 -0
  42. package/conformance/invalid/invalid-schema-keyword.expected.json +10 -0
  43. package/conformance/invalid/invalid-schema-keyword.udl +220 -0
  44. package/conformance/invalid/invalid-utf8.expected.json +1 -1
  45. package/conformance/invalid/malformed-json.expected.json +1 -1
  46. package/conformance/invalid/missing-create-action.expected.json +10 -0
  47. package/conformance/invalid/{missing-create-verb.udl → missing-create-action.udl} +5 -2
  48. package/conformance/invalid/missing-exception-amount-field.expected.json +10 -0
  49. package/conformance/invalid/missing-exception-amount-field.udl +2487 -0
  50. package/conformance/invalid/missing-exception-contract.expected.json +14 -0
  51. package/conformance/invalid/missing-exception-contract.udl +2523 -0
  52. package/conformance/invalid/missing-exception-reason-field.expected.json +10 -0
  53. package/conformance/invalid/missing-exception-reason-field.udl +2487 -0
  54. package/conformance/invalid/not-an-object.expected.json +1 -1
  55. package/conformance/invalid/payout-reconcile-not-a-bank-debit.expected.json +10 -0
  56. package/conformance/invalid/payout-reconcile-not-a-bank-debit.udl +259 -0
  57. package/conformance/invalid/quote-freeze-set-incomplete.expected.json +10 -0
  58. package/conformance/invalid/quote-freeze-set-incomplete.udl +261 -0
  59. package/conformance/invalid/quote-named-reference-gate.expected.json +10 -0
  60. package/conformance/invalid/quote-named-reference-gate.udl +50 -0
  61. package/conformance/invalid/reconcile-named-reference-gate.expected.json +10 -0
  62. package/conformance/invalid/reconcile-named-reference-gate.udl +50 -0
  63. package/conformance/invalid/unknown-key.expected.json +1 -1
  64. package/conformance/invalid/unknown-key.udl +6 -2
  65. package/conformance/invalid/unknown-reference-gate-field.expected.json +10 -0
  66. package/conformance/invalid/unknown-reference-gate-field.udl +1819 -0
  67. package/conformance/invalid/unknown-required-field.expected.json +10 -0
  68. package/conformance/invalid/unknown-required-field.udl +220 -0
  69. package/conformance/invalid/unreachable-state.expected.json +2 -2
  70. package/conformance/invalid/unreachable-state.udl +6 -2
  71. package/conformance/invalid/wrong-exception-amount-field.expected.json +10 -0
  72. package/conformance/invalid/wrong-exception-amount-field.udl +2487 -0
  73. package/conformance/invalid/wrong-exception-reason-field.expected.json +10 -0
  74. package/conformance/invalid/wrong-exception-reason-field.udl +2487 -0
  75. package/conformance/valid/agent-description.expected.json +6 -0
  76. package/conformance/valid/agent-description.udl +66 -0
  77. package/conformance/valid/cards.expected.json +1 -0
  78. package/conformance/valid/cards.udl +843 -356
  79. package/conformance/valid/commerce-escrow.expected.json +1 -0
  80. package/conformance/valid/commerce-escrow.udl +792 -291
  81. package/conformance/valid/compiled-crowdfunding.expected.json +6 -0
  82. package/conformance/valid/compiled-crowdfunding.udl +1843 -0
  83. package/conformance/valid/compiled-watch-club.expected.json +6 -0
  84. package/conformance/valid/compiled-watch-club.udl +2486 -0
  85. package/conformance/valid/complete-contract.expected.json +6 -0
  86. package/conformance/valid/complete-contract.udl +218 -0
  87. package/conformance/valid/effect-signatures.expected.json +6 -0
  88. package/conformance/valid/effect-signatures.udl +75 -0
  89. package/conformance/valid/hand-edited.expected.json +1 -0
  90. package/conformance/valid/hand-edited.udl +1 -1
  91. package/conformance/valid/insured-car-marketplace.expected.json +1 -0
  92. package/conformance/valid/insured-car-marketplace.udl +534 -315
  93. package/conformance/valid/insured-travel.expected.json +2 -1
  94. package/conformance/valid/insured-travel.udl +1489 -641
  95. package/conformance/valid/minimal.expected.json +1 -0
  96. package/conformance/valid/minimal.udl +18 -14
  97. package/conformance/valid/protection.expected.json +1 -0
  98. package/conformance/valid/protection.udl +719 -304
  99. package/conformance/valid/string-escaping.expected.json +6 -0
  100. package/conformance/valid/string-escaping.udl +54 -0
  101. package/dist/canonical.d.ts +2 -0
  102. package/dist/canonical.d.ts.map +1 -1
  103. package/dist/canonical.js +7 -0
  104. package/dist/canonical.js.map +1 -1
  105. package/dist/check-profiles.d.ts +57 -0
  106. package/dist/check-profiles.d.ts.map +1 -0
  107. package/dist/check-profiles.js +62 -0
  108. package/dist/check-profiles.js.map +1 -0
  109. package/dist/cli.js +48 -4
  110. package/dist/cli.js.map +1 -1
  111. package/dist/diagnostics.d.ts +168 -0
  112. package/dist/diagnostics.d.ts.map +1 -0
  113. package/dist/diagnostics.js +164 -0
  114. package/dist/diagnostics.js.map +1 -0
  115. package/dist/effects.d.ts +41 -0
  116. package/dist/effects.d.ts.map +1 -0
  117. package/dist/effects.js +110 -0
  118. package/dist/effects.js.map +1 -0
  119. package/dist/evolution.d.ts +51 -18
  120. package/dist/evolution.d.ts.map +1 -1
  121. package/dist/evolution.js +244 -102
  122. package/dist/evolution.js.map +1 -1
  123. package/dist/finance.d.ts +17 -13
  124. package/dist/finance.d.ts.map +1 -1
  125. package/dist/finance.js +165 -109
  126. package/dist/finance.js.map +1 -1
  127. package/dist/index.d.ts +12 -8
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +8 -5
  130. package/dist/index.js.map +1 -1
  131. package/dist/limits.d.ts +2 -2
  132. package/dist/limits.d.ts.map +1 -1
  133. package/dist/limits.js +4 -3
  134. package/dist/limits.js.map +1 -1
  135. package/dist/parser.d.ts.map +1 -1
  136. package/dist/parser.js +6 -16
  137. package/dist/parser.js.map +1 -1
  138. package/dist/schema.d.ts +2059 -135
  139. package/dist/schema.d.ts.map +1 -1
  140. package/dist/schema.js +759 -73
  141. package/dist/schema.js.map +1 -1
  142. package/dist/validation.d.ts +22 -9
  143. package/dist/validation.d.ts.map +1 -1
  144. package/dist/validation.js +1463 -457
  145. package/dist/validation.js.map +1 -1
  146. package/docs/README.md +14 -0
  147. package/docs/guide/01-a-document.md +37 -0
  148. package/docs/guide/02-money-steps.md +23 -0
  149. package/docs/guide/03-laws.md +18 -0
  150. package/docs/guide/04-fees-and-remainder.md +15 -0
  151. package/docs/guide/05-checks-updates-dials.md +7 -0
  152. package/docs/guide/06-effects.md +11 -0
  153. package/docs/guide/07-evolution.md +11 -0
  154. package/docs/guide/08-implementing.md +13 -0
  155. package/docs/llms-full.txt +1241 -0
  156. package/docs/llms.txt +14 -0
  157. package/docs/reference/canonical.md +16 -0
  158. package/docs/reference/clauses.md +986 -0
  159. package/docs/reference/cli.md +22 -0
  160. package/docs/reference/diagnostics.md +32 -0
  161. package/package.json +6 -2
  162. package/skills/udl/SKILL.md +28 -0
  163. package/spec/README.md +82 -51
  164. package/spec/udl.schema.json +1191 -119
  165. package/src/canonical.ts +11 -0
  166. package/src/check-profiles.ts +80 -0
  167. package/src/cli.ts +49 -3
  168. package/src/diagnostics.ts +221 -0
  169. package/src/effects.ts +163 -0
  170. package/src/evolution.ts +375 -125
  171. package/src/finance.ts +255 -160
  172. package/src/index.ts +50 -14
  173. package/src/limits.ts +4 -3
  174. package/src/parser.ts +15 -18
  175. package/src/schema.ts +855 -81
  176. package/src/validation.ts +2666 -560
  177. package/conformance/invalid/missing-create-verb.expected.json +0 -10
  178. package/conformance/invalid/noun-id-not-snake-case.expected.json +0 -10
  179. package/conformance/invalid/verb-without-transition.expected.json +0 -10
@@ -5,12 +5,54 @@
5
5
  "description": "Generated from the Zod grammar in src/schema.ts by scripts/emit-spec.ts. Edits belong in the grammar. This schema pins document shape only; the semantic laws it cannot express are pinned by conformance/.",
6
6
  "type": "object",
7
7
  "properties": {
8
- "nouns": {
8
+ "dials": {
9
9
  "minItems": 1,
10
10
  "type": "array",
11
11
  "items": {
12
12
  "type": "object",
13
13
  "properties": {
14
+ "key": {
15
+ "type": "string",
16
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
17
+ },
18
+ "kind": {
19
+ "type": "string",
20
+ "const": "confirmation_threshold"
21
+ },
22
+ "maxMinor": {
23
+ "type": "integer",
24
+ "exclusiveMinimum": 0,
25
+ "maximum": 1000000000000
26
+ },
27
+ "summary": {
28
+ "type": "string"
29
+ },
30
+ "title": {
31
+ "type": "string"
32
+ }
33
+ },
34
+ "required": ["key", "kind", "summary", "title"],
35
+ "additionalProperties": false
36
+ }
37
+ },
38
+ "instruments": {
39
+ "minItems": 1,
40
+ "type": "array",
41
+ "items": {
42
+ "type": "object",
43
+ "properties": {
44
+ "actionOrder": {
45
+ "minItems": 1,
46
+ "type": "array",
47
+ "items": {
48
+ "type": "string",
49
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
50
+ }
51
+ },
52
+ "agentDescription": {
53
+ "type": "string",
54
+ "maxLength": 400
55
+ },
14
56
  "aggregateInvariants": {
15
57
  "minItems": 1,
16
58
  "type": "array",
@@ -19,7 +61,7 @@
19
61
  {
20
62
  "type": "object",
21
63
  "properties": {
22
- "childNounId": {
64
+ "childInstrumentId": {
23
65
  "type": "string",
24
66
  "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
25
67
  },
@@ -45,7 +87,7 @@
45
87
  }
46
88
  },
47
89
  "required": [
48
- "childNounId",
90
+ "childInstrumentId",
49
91
  "childRefField",
50
92
  "childStatuses",
51
93
  "parentField",
@@ -56,7 +98,7 @@
56
98
  {
57
99
  "type": "object",
58
100
  "properties": {
59
- "childNounId": {
101
+ "childInstrumentId": {
60
102
  "type": "string",
61
103
  "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
62
104
  },
@@ -98,7 +140,7 @@
98
140
  }
99
141
  },
100
142
  "required": [
101
- "childNounId",
143
+ "childInstrumentId",
102
144
  "childRefField",
103
145
  "childStatuses",
104
146
  "parentField",
@@ -109,17 +151,145 @@
109
151
  ]
110
152
  }
111
153
  },
112
- "computedMoneyRefs": {
113
- "minItems": 1,
114
- "type": "array",
115
- "items": {
154
+ "callerParkedStates": {
155
+ "type": "object",
156
+ "propertyNames": {
116
157
  "type": "string",
117
- "pattern": "^[a-z][A-Za-z0-9]*$"
158
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
159
+ },
160
+ "additionalProperties": {
161
+ "type": "string"
118
162
  }
119
163
  },
120
164
  "description": {
121
165
  "type": "string"
122
166
  },
167
+ "dials": {
168
+ "type": "array",
169
+ "items": {
170
+ "oneOf": [
171
+ {
172
+ "type": "object",
173
+ "properties": {
174
+ "field": {
175
+ "type": "string",
176
+ "pattern": "^[a-z][A-Za-z0-9]*$"
177
+ },
178
+ "key": {
179
+ "type": "string",
180
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
181
+ },
182
+ "kind": {
183
+ "type": "string",
184
+ "const": "window"
185
+ },
186
+ "maxOffset": {
187
+ "type": "string"
188
+ },
189
+ "minOffset": {
190
+ "type": "string"
191
+ },
192
+ "summary": {
193
+ "type": "string"
194
+ },
195
+ "title": {
196
+ "type": "string"
197
+ }
198
+ },
199
+ "required": ["field", "key", "kind", "summary", "title"],
200
+ "additionalProperties": false
201
+ },
202
+ {
203
+ "type": "object",
204
+ "properties": {
205
+ "action": {
206
+ "type": "string",
207
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
208
+ },
209
+ "key": {
210
+ "type": "string",
211
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
212
+ },
213
+ "kind": {
214
+ "type": "string",
215
+ "const": "decision_deadline_ms"
216
+ },
217
+ "maxMs": {
218
+ "type": "integer",
219
+ "exclusiveMinimum": 0,
220
+ "maximum": 15000
221
+ },
222
+ "minMs": {
223
+ "type": "integer",
224
+ "exclusiveMinimum": 0,
225
+ "maximum": 15000
226
+ },
227
+ "summary": {
228
+ "type": "string"
229
+ },
230
+ "title": {
231
+ "type": "string"
232
+ }
233
+ },
234
+ "required": ["action", "key", "kind", "summary", "title"],
235
+ "additionalProperties": false
236
+ },
237
+ {
238
+ "type": "object",
239
+ "properties": {
240
+ "key": {
241
+ "type": "string",
242
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
243
+ },
244
+ "kind": {
245
+ "type": "string",
246
+ "const": "reconcile_tolerance"
247
+ },
248
+ "maxMinorUnits": {
249
+ "type": "integer",
250
+ "exclusiveMinimum": 0,
251
+ "maximum": 1000000
252
+ },
253
+ "summary": {
254
+ "type": "string"
255
+ },
256
+ "title": {
257
+ "type": "string"
258
+ }
259
+ },
260
+ "required": [
261
+ "key",
262
+ "kind",
263
+ "maxMinorUnits",
264
+ "summary",
265
+ "title"
266
+ ],
267
+ "additionalProperties": false
268
+ },
269
+ {
270
+ "type": "object",
271
+ "properties": {
272
+ "key": {
273
+ "type": "string",
274
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
275
+ },
276
+ "kind": {
277
+ "type": "string",
278
+ "const": "unwind_penalty"
279
+ },
280
+ "summary": {
281
+ "type": "string"
282
+ },
283
+ "title": {
284
+ "type": "string"
285
+ }
286
+ },
287
+ "required": ["key", "kind", "summary", "title"],
288
+ "additionalProperties": false
289
+ }
290
+ ]
291
+ }
292
+ },
123
293
  "distinctParties": {
124
294
  "type": "boolean",
125
295
  "const": true
@@ -164,6 +334,153 @@
164
334
  "additionalProperties": false
165
335
  }
166
336
  },
337
+ "feeRules": {
338
+ "minItems": 1,
339
+ "maxItems": 4,
340
+ "type": "array",
341
+ "items": {
342
+ "type": "object",
343
+ "properties": {
344
+ "amountField": {
345
+ "type": "string",
346
+ "pattern": "^[a-z][A-Za-z0-9]*$"
347
+ },
348
+ "baseField": {
349
+ "type": "string",
350
+ "pattern": "^[a-z][A-Za-z0-9]*$"
351
+ },
352
+ "bearerField": {
353
+ "type": "string",
354
+ "pattern": "^[a-z][A-Za-z0-9]*$"
355
+ },
356
+ "position": {
357
+ "type": "string",
358
+ "enum": ["carved", "on_top"]
359
+ },
360
+ "rule": {
361
+ "oneOf": [
362
+ {
363
+ "type": "object",
364
+ "properties": {
365
+ "bps": {
366
+ "type": "integer",
367
+ "minimum": 1,
368
+ "maximum": 9999
369
+ },
370
+ "kind": {
371
+ "type": "string",
372
+ "const": "bps"
373
+ }
374
+ },
375
+ "required": ["bps", "kind"],
376
+ "additionalProperties": false
377
+ },
378
+ {
379
+ "type": "object",
380
+ "properties": {
381
+ "currencyField": {
382
+ "type": "string",
383
+ "pattern": "^[a-z][A-Za-z0-9]*$"
384
+ },
385
+ "field": {
386
+ "type": "string",
387
+ "pattern": "^[a-z][A-Za-z0-9]*$"
388
+ },
389
+ "kind": {
390
+ "type": "string",
391
+ "const": "exact"
392
+ }
393
+ },
394
+ "required": ["currencyField", "field", "kind"],
395
+ "additionalProperties": false
396
+ },
397
+ {
398
+ "type": "object",
399
+ "properties": {
400
+ "kind": {
401
+ "type": "string",
402
+ "const": "tiered"
403
+ },
404
+ "tiers": {
405
+ "minItems": 1,
406
+ "maxItems": 16,
407
+ "type": "array",
408
+ "items": {
409
+ "type": "object",
410
+ "properties": {
411
+ "fromInclusive": {
412
+ "type": "string",
413
+ "pattern": "^(0|[1-9][0-9]*)$"
414
+ },
415
+ "rule": {
416
+ "oneOf": [
417
+ {
418
+ "type": "object",
419
+ "properties": {
420
+ "bps": {
421
+ "type": "integer",
422
+ "minimum": 1,
423
+ "maximum": 9999
424
+ },
425
+ "kind": {
426
+ "type": "string",
427
+ "const": "bps"
428
+ }
429
+ },
430
+ "required": ["bps", "kind"],
431
+ "additionalProperties": false
432
+ },
433
+ {
434
+ "type": "object",
435
+ "properties": {
436
+ "currencyField": {
437
+ "type": "string",
438
+ "pattern": "^[a-z][A-Za-z0-9]*$"
439
+ },
440
+ "field": {
441
+ "type": "string",
442
+ "pattern": "^[a-z][A-Za-z0-9]*$"
443
+ },
444
+ "kind": {
445
+ "type": "string",
446
+ "const": "exact"
447
+ }
448
+ },
449
+ "required": [
450
+ "currencyField",
451
+ "field",
452
+ "kind"
453
+ ],
454
+ "additionalProperties": false
455
+ }
456
+ ]
457
+ },
458
+ "toExclusive": {
459
+ "type": "string",
460
+ "pattern": "^(0|[1-9][0-9]*)$"
461
+ }
462
+ },
463
+ "required": ["fromInclusive", "rule"],
464
+ "additionalProperties": false
465
+ }
466
+ }
467
+ },
468
+ "required": ["kind", "tiers"],
469
+ "additionalProperties": false
470
+ }
471
+ ]
472
+ }
473
+ },
474
+ "required": [
475
+ "amountField",
476
+ "baseField",
477
+ "bearerField",
478
+ "position",
479
+ "rule"
480
+ ],
481
+ "additionalProperties": false
482
+ }
483
+ },
167
484
  "fields": {
168
485
  "type": "object",
169
486
  "propertyNames": {
@@ -233,6 +550,13 @@
233
550
  "required": ["initial", "states", "transitions"],
234
551
  "additionalProperties": false
235
552
  },
553
+ "nav": {
554
+ "minItems": 1,
555
+ "type": "array",
556
+ "items": {
557
+ "type": "string"
558
+ }
559
+ },
236
560
  "parties": {
237
561
  "type": "object",
238
562
  "properties": {
@@ -284,6 +608,9 @@
284
608
  "subject": {
285
609
  "type": "object",
286
610
  "properties": {
611
+ "extensible": {
612
+ "type": "boolean"
613
+ },
287
614
  "kinds": {
288
615
  "minItems": 1,
289
616
  "type": "array",
@@ -299,64 +626,45 @@
299
626
  "summary": {
300
627
  "type": "string"
301
628
  },
629
+ "surfaceVisibility": {
630
+ "type": "string",
631
+ "enum": ["internal", "public", "system"]
632
+ },
633
+ "templateId": {
634
+ "type": "string",
635
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
636
+ },
302
637
  "title": {
303
638
  "type": "string"
304
639
  },
305
- "unwind": {
640
+ "update": {
306
641
  "type": "object",
307
642
  "properties": {
308
- "beforeField": {
309
- "type": "string",
310
- "pattern": "^[a-z][A-Za-z0-9]*$"
311
- },
312
- "confirm": {
313
- "type": "string",
314
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
315
- },
316
- "penalty": {
317
- "minItems": 1,
643
+ "examples": {
318
644
  "type": "array",
319
645
  "items": {
320
646
  "type": "object",
321
647
  "properties": {
322
- "bps": {
323
- "type": "integer",
324
- "minimum": 0,
325
- "maximum": 9999
648
+ "input": {
649
+ "type": "object",
650
+ "propertyNames": {
651
+ "type": "string"
652
+ },
653
+ "additionalProperties": {
654
+ "$ref": "#/$defs/jsonValue"
655
+ }
326
656
  },
327
- "withinOffset": {
657
+ "name": {
328
658
  "type": "string"
659
+ },
660
+ "output": {
661
+ "$ref": "#/$defs/jsonValue"
329
662
  }
330
663
  },
331
- "required": ["bps"],
664
+ "required": ["input", "name"],
332
665
  "additionalProperties": false
333
666
  }
334
667
  },
335
- "quote": {
336
- "type": "string",
337
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
338
- },
339
- "refundableField": {
340
- "type": "string",
341
- "pattern": "^[a-z][A-Za-z0-9]*$"
342
- },
343
- "refundDestinationField": {
344
- "type": "string",
345
- "pattern": "^[a-z][A-Za-z0-9]*$"
346
- }
347
- },
348
- "required": [
349
- "confirm",
350
- "penalty",
351
- "quote",
352
- "refundableField",
353
- "refundDestinationField"
354
- ],
355
- "additionalProperties": false
356
- },
357
- "update": {
358
- "type": "object",
359
- "properties": {
360
668
  "fields": {
361
669
  "minItems": 1,
362
670
  "type": "array",
@@ -377,7 +685,7 @@
377
685
  "required": ["fields", "states"],
378
686
  "additionalProperties": false
379
687
  },
380
- "verbs": {
688
+ "actions": {
381
689
  "type": "object",
382
690
  "propertyNames": {
383
691
  "type": "string",
@@ -386,6 +694,10 @@
386
694
  "additionalProperties": {
387
695
  "type": "object",
388
696
  "properties": {
697
+ "agentDescription": {
698
+ "type": "string",
699
+ "maxLength": 400
700
+ },
389
701
  "captureInput": {
390
702
  "type": "object",
391
703
  "propertyNames": {
@@ -397,14 +709,37 @@
397
709
  "pattern": "^[a-z][A-Za-z0-9]*$"
398
710
  }
399
711
  },
400
- "deadline": {
712
+ "commit": {
713
+ "type": "string",
714
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
715
+ },
716
+ "decidedAmount": {
401
717
  "type": "object",
402
718
  "properties": {
719
+ "boundField": {
720
+ "type": "string",
721
+ "pattern": "^[a-z][A-Za-z0-9]*$"
722
+ },
403
723
  "field": {
404
724
  "type": "string",
405
725
  "pattern": "^[a-z][A-Za-z0-9]*$"
406
726
  },
407
- "offset": {
727
+ "remainderAction": {
728
+ "type": "string",
729
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
730
+ }
731
+ },
732
+ "required": ["boundField", "field", "remainderAction"],
733
+ "additionalProperties": false
734
+ },
735
+ "deadline": {
736
+ "type": "object",
737
+ "properties": {
738
+ "field": {
739
+ "type": "string",
740
+ "pattern": "^[a-z][A-Za-z0-9]*$"
741
+ },
742
+ "offset": {
408
743
  "type": "string"
409
744
  }
410
745
  },
@@ -416,12 +751,29 @@
416
751
  "properties": {
417
752
  "capability": {
418
753
  "type": "string",
419
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
754
+ "enum": [
755
+ "accounts_ledger_first_party",
756
+ "identity_verification",
757
+ "national_identity",
758
+ "credit_bureau",
759
+ "sanctions_screening",
760
+ "enforcement_instrument",
761
+ "credit_servicing",
762
+ "collections_agency",
763
+ "settlement_ingestion",
764
+ "payouts",
765
+ "banking_or_card_issuing",
766
+ "insurance_carrier",
767
+ "insurance_claims_adjuster",
768
+ "air_carrier",
769
+ "lodging_supplier",
770
+ "email_or_notification"
771
+ ]
420
772
  },
421
773
  "deadlineMs": {
422
774
  "type": "integer",
423
775
  "exclusiveMinimum": 0,
424
- "maximum": 9007199254740991
776
+ "maximum": 15000
425
777
  },
426
778
  "onTimeout": {
427
779
  "type": "string",
@@ -497,6 +849,14 @@
497
849
  "type": "string",
498
850
  "pattern": "^[a-z][A-Za-z0-9]*$"
499
851
  },
852
+ "delinquency": {
853
+ "type": "string",
854
+ "const": "parent_policy"
855
+ },
856
+ "drainAction": {
857
+ "type": "string",
858
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
859
+ },
500
860
  "period": {
501
861
  "anyOf": [
502
862
  {
@@ -509,17 +869,29 @@
509
869
  "type": "string",
510
870
  "enum": ["gregorian", "hijri"]
511
871
  },
872
+ "monthEnd": {
873
+ "type": "string",
874
+ "const": "clamp_to_last_day"
875
+ },
512
876
  "months": {
513
877
  "type": "integer",
514
878
  "exclusiveMinimum": 0,
515
879
  "maximum": 9007199254740991
516
880
  }
517
881
  },
518
- "required": ["calendar", "months"],
882
+ "required": ["calendar", "monthEnd", "months"],
519
883
  "additionalProperties": false
520
884
  }
521
885
  ]
522
886
  },
887
+ "liability": {
888
+ "type": "string",
889
+ "const": "one_open"
890
+ },
891
+ "untilAction": {
892
+ "type": "string",
893
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
894
+ },
523
895
  "untilField": {
524
896
  "type": "string",
525
897
  "pattern": "^[a-z][A-Za-z0-9]*$"
@@ -538,7 +910,7 @@
538
910
  "whenParentStatus": {
539
911
  "type": "object",
540
912
  "properties": {
541
- "nounId": {
913
+ "instrumentId": {
542
914
  "type": "string",
543
915
  "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
544
916
  },
@@ -555,7 +927,7 @@
555
927
  }
556
928
  }
557
929
  },
558
- "required": ["nounId", "refField", "statuses"],
930
+ "required": ["instrumentId", "refField", "statuses"],
559
931
  "additionalProperties": false
560
932
  }
561
933
  },
@@ -565,6 +937,122 @@
565
937
  "earnable": {
566
938
  "type": "boolean"
567
939
  },
940
+ "effects": {
941
+ "type": "object",
942
+ "properties": {
943
+ "decides": {
944
+ "minItems": 1,
945
+ "type": "array",
946
+ "items": {
947
+ "type": "object",
948
+ "properties": {
949
+ "signature": {
950
+ "type": "string"
951
+ },
952
+ "source": {
953
+ "type": "string"
954
+ }
955
+ },
956
+ "required": ["signature", "source"],
957
+ "additionalProperties": false
958
+ }
959
+ },
960
+ "holds": {
961
+ "minItems": 1,
962
+ "type": "array",
963
+ "items": {
964
+ "type": "object",
965
+ "properties": {
966
+ "signature": {
967
+ "type": "string"
968
+ },
969
+ "source": {
970
+ "type": "string"
971
+ }
972
+ },
973
+ "required": ["signature", "source"],
974
+ "additionalProperties": false
975
+ }
976
+ },
977
+ "moves": {
978
+ "minItems": 1,
979
+ "type": "array",
980
+ "items": {
981
+ "type": "object",
982
+ "properties": {
983
+ "signature": {
984
+ "type": "string"
985
+ },
986
+ "source": {
987
+ "type": "string"
988
+ }
989
+ },
990
+ "required": ["signature", "source"],
991
+ "additionalProperties": false
992
+ }
993
+ },
994
+ "notifies": {
995
+ "minItems": 1,
996
+ "type": "array",
997
+ "items": {
998
+ "type": "object",
999
+ "properties": {
1000
+ "channel": {
1001
+ "type": "string",
1002
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1003
+ },
1004
+ "role": {
1005
+ "type": "string",
1006
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1007
+ },
1008
+ "signature": {
1009
+ "type": "string"
1010
+ },
1011
+ "source": {
1012
+ "type": "string"
1013
+ }
1014
+ },
1015
+ "required": ["channel", "role", "signature", "source"],
1016
+ "additionalProperties": false
1017
+ }
1018
+ },
1019
+ "reads": {
1020
+ "minItems": 1,
1021
+ "type": "array",
1022
+ "items": {
1023
+ "type": "object",
1024
+ "properties": {
1025
+ "signature": {
1026
+ "type": "string"
1027
+ },
1028
+ "source": {
1029
+ "type": "string"
1030
+ }
1031
+ },
1032
+ "required": ["signature", "source"],
1033
+ "additionalProperties": false
1034
+ }
1035
+ },
1036
+ "schedules": {
1037
+ "minItems": 1,
1038
+ "type": "array",
1039
+ "items": {
1040
+ "type": "object",
1041
+ "properties": {
1042
+ "signature": {
1043
+ "type": "string"
1044
+ },
1045
+ "source": {
1046
+ "type": "string"
1047
+ }
1048
+ },
1049
+ "required": ["signature", "source"],
1050
+ "additionalProperties": false
1051
+ }
1052
+ }
1053
+ },
1054
+ "additionalProperties": false
1055
+ },
568
1056
  "eventName": {
569
1057
  "type": "string",
570
1058
  "pattern": "^[a-z][a-z0-9_]*(?:\\.[a-z][a-z0-9_]*)+$"
@@ -703,58 +1191,369 @@
703
1191
  "type": "string",
704
1192
  "pattern": "^[a-z][A-Za-z0-9]*$"
705
1193
  },
706
- "beneficiaryPartyField": {
1194
+ "beneficiaryPartyField": {
1195
+ "type": "string",
1196
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1197
+ },
1198
+ "capture": {
1199
+ "type": "string",
1200
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1201
+ },
1202
+ "currencyField": {
1203
+ "type": "string",
1204
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1205
+ },
1206
+ "sourceAccountField": {
1207
+ "type": "string",
1208
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1209
+ },
1210
+ "speed": {
1211
+ "type": "string",
1212
+ "const": "standard"
1213
+ }
1214
+ },
1215
+ "required": [
1216
+ "amount",
1217
+ "beneficiaryField",
1218
+ "beneficiaryPartyField",
1219
+ "capture",
1220
+ "currencyField",
1221
+ "sourceAccountField",
1222
+ "speed"
1223
+ ],
1224
+ "additionalProperties": false
1225
+ },
1226
+ "port": {
1227
+ "type": "object",
1228
+ "properties": {
1229
+ "allowedParties": {
1230
+ "minItems": 1,
1231
+ "type": "array",
1232
+ "items": {
1233
+ "type": "string",
1234
+ "enum": ["payer", "beneficiary", "subjectHolder"]
1235
+ }
1236
+ }
1237
+ },
1238
+ "required": ["allowedParties"],
1239
+ "additionalProperties": false
1240
+ },
1241
+ "quote": {
1242
+ "type": "object",
1243
+ "properties": {
1244
+ "anchorField": {
1245
+ "type": "string",
1246
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1247
+ },
1248
+ "baseField": {
1249
+ "type": "string",
1250
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1251
+ },
1252
+ "chargeRef": {
1253
+ "type": "string",
1254
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1255
+ },
1256
+ "charges": {
1257
+ "minItems": 1,
1258
+ "type": "array",
1259
+ "items": {
1260
+ "type": "object",
1261
+ "properties": {
1262
+ "bps": {
1263
+ "type": "integer",
1264
+ "minimum": 0,
1265
+ "maximum": 9999
1266
+ },
1267
+ "withinOffset": {
1268
+ "type": "string"
1269
+ }
1270
+ },
1271
+ "required": ["bps"],
1272
+ "additionalProperties": false
1273
+ }
1274
+ },
1275
+ "expires": {
1276
+ "anyOf": [
1277
+ {
1278
+ "type": "object",
1279
+ "properties": {
1280
+ "field": {
1281
+ "type": "string",
1282
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1283
+ }
1284
+ },
1285
+ "required": ["field"],
1286
+ "additionalProperties": false
1287
+ },
1288
+ {
1289
+ "type": "object",
1290
+ "properties": {
1291
+ "offset": {
1292
+ "type": "string"
1293
+ }
1294
+ },
1295
+ "required": ["offset"],
1296
+ "additionalProperties": false
1297
+ }
1298
+ ]
1299
+ },
1300
+ "fixes": {
1301
+ "minItems": 1,
1302
+ "type": "array",
1303
+ "items": {
1304
+ "type": "string",
1305
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1306
+ }
1307
+ },
1308
+ "netDestinationField": {
1309
+ "type": "string",
1310
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1311
+ },
1312
+ "netRef": {
1313
+ "type": "string",
1314
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1315
+ }
1316
+ },
1317
+ "required": [
1318
+ "baseField",
1319
+ "chargeRef",
1320
+ "charges",
1321
+ "expires",
1322
+ "fixes",
1323
+ "netDestinationField",
1324
+ "netRef"
1325
+ ],
1326
+ "additionalProperties": false
1327
+ },
1328
+ "publicAction": {
1329
+ "description": "Author-approved public action name; the containing action key remains the lifecycle and execution identity",
1330
+ "type": "string",
1331
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1332
+ },
1333
+ "principal": {
1334
+ "type": "string",
1335
+ "const": "user_session"
1336
+ },
1337
+ "reconcile": {
1338
+ "minItems": 1,
1339
+ "type": "array",
1340
+ "items": {
1341
+ "type": "object",
1342
+ "properties": {
1343
+ "amount": {
1344
+ "type": "string",
1345
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
1346
+ },
1347
+ "capture": {
1348
+ "type": "string",
1349
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1350
+ },
1351
+ "counterpartyRef": {
1352
+ "type": "string",
1353
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1354
+ },
1355
+ "currencyField": {
1356
+ "type": "string",
1357
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1358
+ },
1359
+ "direction": {
1360
+ "type": "string",
1361
+ "enum": ["credit", "debit"]
1362
+ },
1363
+ "evidence": {
1364
+ "type": "string",
1365
+ "enum": [
1366
+ "movement",
1367
+ "provider_confirmation",
1368
+ "statement_line"
1369
+ ]
1370
+ },
1371
+ "exception": {
1372
+ "type": "object",
1373
+ "properties": {
1374
+ "amountField": {
1375
+ "type": "string",
1376
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1377
+ },
1378
+ "childInstrumentId": {
1379
+ "type": "string",
1380
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1381
+ },
1382
+ "maxOpen": {
1383
+ "type": "integer",
1384
+ "minimum": 1,
1385
+ "maximum": 1000
1386
+ },
1387
+ "reasonField": {
1388
+ "type": "string",
1389
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1390
+ },
1391
+ "refField": {
1392
+ "type": "string",
1393
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1394
+ }
1395
+ },
1396
+ "required": [
1397
+ "amountField",
1398
+ "childInstrumentId",
1399
+ "maxOpen",
1400
+ "reasonField",
1401
+ "refField"
1402
+ ],
1403
+ "additionalProperties": false
1404
+ },
1405
+ "match": {
1406
+ "oneOf": [
1407
+ {
1408
+ "type": "object",
1409
+ "properties": {
1410
+ "law": {
1411
+ "type": "string",
1412
+ "const": "exact"
1413
+ }
1414
+ },
1415
+ "required": ["law"],
1416
+ "additionalProperties": false
1417
+ },
1418
+ {
1419
+ "type": "object",
1420
+ "properties": {
1421
+ "dial": {
1422
+ "type": "string",
1423
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1424
+ },
1425
+ "law": {
1426
+ "type": "string",
1427
+ "const": "tolerance"
1428
+ },
1429
+ "minorUnits": {
1430
+ "type": "integer",
1431
+ "exclusiveMinimum": 0,
1432
+ "maximum": 9007199254740991
1433
+ }
1434
+ },
1435
+ "required": ["dial", "law", "minorUnits"],
1436
+ "additionalProperties": false
1437
+ },
1438
+ {
1439
+ "type": "object",
1440
+ "properties": {
1441
+ "law": {
1442
+ "type": "string",
1443
+ "const": "window"
1444
+ }
1445
+ },
1446
+ "required": ["law"],
1447
+ "additionalProperties": false
1448
+ }
1449
+ ]
1450
+ },
1451
+ "within": {
1452
+ "anyOf": [
1453
+ {
1454
+ "type": "object",
1455
+ "properties": {
1456
+ "field": {
1457
+ "type": "string",
1458
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1459
+ }
1460
+ },
1461
+ "required": ["field"],
1462
+ "additionalProperties": false
1463
+ },
1464
+ {
1465
+ "type": "object",
1466
+ "properties": {
1467
+ "offset": {
1468
+ "type": "string"
1469
+ }
1470
+ },
1471
+ "required": ["offset"],
1472
+ "additionalProperties": false
1473
+ }
1474
+ ]
1475
+ }
1476
+ },
1477
+ "required": [
1478
+ "amount",
1479
+ "capture",
1480
+ "counterpartyRef",
1481
+ "currencyField",
1482
+ "direction",
1483
+ "evidence",
1484
+ "exception",
1485
+ "match",
1486
+ "within"
1487
+ ],
1488
+ "additionalProperties": false
1489
+ }
1490
+ },
1491
+ "remainder": {
1492
+ "type": "object",
1493
+ "properties": {
1494
+ "accumulateRef": {
1495
+ "type": "string",
1496
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1497
+ },
1498
+ "amountRef": {
707
1499
  "type": "string",
708
1500
  "pattern": "^[a-z][A-Za-z0-9]*$"
709
1501
  },
710
- "capture": {
711
- "type": "string",
712
- "pattern": "^[a-z][A-Za-z0-9]*$"
1502
+ "collected": {
1503
+ "type": "array",
1504
+ "items": {
1505
+ "type": "object",
1506
+ "properties": {
1507
+ "amountField": {
1508
+ "type": "string",
1509
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1510
+ },
1511
+ "instrumentId": {
1512
+ "type": "string",
1513
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1514
+ },
1515
+ "path": {
1516
+ "type": "string",
1517
+ "const": "refs"
1518
+ },
1519
+ "refField": {
1520
+ "type": "string",
1521
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1522
+ },
1523
+ "statuses": {
1524
+ "minItems": 1,
1525
+ "type": "array",
1526
+ "items": {
1527
+ "type": "string",
1528
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1529
+ }
1530
+ }
1531
+ },
1532
+ "required": [
1533
+ "amountField",
1534
+ "instrumentId",
1535
+ "refField",
1536
+ "statuses"
1537
+ ],
1538
+ "additionalProperties": false
1539
+ }
713
1540
  },
714
- "currencyField": {
1541
+ "inputKey": {
715
1542
  "type": "string",
716
1543
  "pattern": "^[a-z][A-Za-z0-9]*$"
717
1544
  },
718
- "sourceAccountField": {
1545
+ "onZero": {
719
1546
  "type": "string",
720
- "pattern": "^[a-z][A-Za-z0-9]*$"
1547
+ "enum": ["refuse", "skip_steps"]
721
1548
  },
722
- "speed": {
1549
+ "totalPath": {
723
1550
  "type": "string",
724
- "const": "standard"
725
- }
726
- },
727
- "required": [
728
- "amount",
729
- "beneficiaryField",
730
- "beneficiaryPartyField",
731
- "capture",
732
- "currencyField",
733
- "sourceAccountField",
734
- "speed"
735
- ],
736
- "additionalProperties": false
737
- },
738
- "port": {
739
- "type": "object",
740
- "properties": {
741
- "allowedParties": {
742
- "minItems": 1,
743
- "type": "array",
744
- "items": {
745
- "type": "string",
746
- "enum": ["payer", "beneficiary", "subjectHolder"]
747
- }
1551
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
748
1552
  }
749
1553
  },
750
- "required": ["allowedParties"],
1554
+ "required": ["amountRef", "onZero", "totalPath"],
751
1555
  "additionalProperties": false
752
1556
  },
753
- "publicIntent": {
754
- "description": "Author-approved public intent name; the containing verb key remains the lifecycle and execution identity",
755
- "type": "string",
756
- "pattern": "^[a-z][A-Za-z0-9]*$"
757
- },
758
1557
  "requiresAggregate": {
759
1558
  "minItems": 1,
760
1559
  "type": "array",
@@ -882,7 +1681,7 @@
882
1681
  }
883
1682
  ]
884
1683
  },
885
- "nounId": {
1684
+ "instrumentId": {
886
1685
  "type": "string",
887
1686
  "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
888
1687
  },
@@ -907,6 +1706,281 @@
907
1706
  "additionalProperties": false
908
1707
  }
909
1708
  },
1709
+ "requiresChecks": {
1710
+ "type": "array",
1711
+ "items": {
1712
+ "anyOf": [
1713
+ {
1714
+ "type": "object",
1715
+ "properties": {
1716
+ "checkKind": {
1717
+ "type": "string",
1718
+ "const": "identity_verification"
1719
+ },
1720
+ "family": {
1721
+ "type": "string",
1722
+ "const": "national_identity"
1723
+ },
1724
+ "maxAge": {
1725
+ "type": "string"
1726
+ },
1727
+ "statuses": {
1728
+ "minItems": 1,
1729
+ "type": "array",
1730
+ "items": {
1731
+ "type": "string",
1732
+ "enum": [
1733
+ "requested",
1734
+ "waiting",
1735
+ "completed",
1736
+ "rejected",
1737
+ "expired",
1738
+ "error"
1739
+ ]
1740
+ }
1741
+ },
1742
+ "subjectField": {
1743
+ "type": "string",
1744
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1745
+ }
1746
+ },
1747
+ "required": [
1748
+ "checkKind",
1749
+ "family",
1750
+ "statuses",
1751
+ "subjectField"
1752
+ ],
1753
+ "additionalProperties": false
1754
+ },
1755
+ {
1756
+ "type": "object",
1757
+ "properties": {
1758
+ "checkKind": {
1759
+ "type": "string",
1760
+ "const": "contact_ownership_verification"
1761
+ },
1762
+ "family": {
1763
+ "type": "string",
1764
+ "const": "national_identity"
1765
+ },
1766
+ "maxAge": {
1767
+ "type": "string"
1768
+ },
1769
+ "statuses": {
1770
+ "minItems": 1,
1771
+ "type": "array",
1772
+ "items": {
1773
+ "type": "string",
1774
+ "enum": ["match", "no_match"]
1775
+ }
1776
+ },
1777
+ "subjectField": {
1778
+ "type": "string",
1779
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1780
+ }
1781
+ },
1782
+ "required": [
1783
+ "checkKind",
1784
+ "family",
1785
+ "statuses",
1786
+ "subjectField"
1787
+ ],
1788
+ "additionalProperties": false
1789
+ },
1790
+ {
1791
+ "type": "object",
1792
+ "properties": {
1793
+ "checkKind": {
1794
+ "type": "string",
1795
+ "const": "consumer_inquiry"
1796
+ },
1797
+ "family": {
1798
+ "type": "string",
1799
+ "const": "credit_bureau"
1800
+ },
1801
+ "maxAge": {
1802
+ "type": "string"
1803
+ },
1804
+ "statuses": {
1805
+ "minItems": 1,
1806
+ "type": "array",
1807
+ "items": {
1808
+ "type": "string",
1809
+ "enum": [
1810
+ "returned",
1811
+ "acknowledged",
1812
+ "correction_required"
1813
+ ]
1814
+ }
1815
+ },
1816
+ "subjectField": {
1817
+ "type": "string",
1818
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1819
+ }
1820
+ },
1821
+ "required": [
1822
+ "checkKind",
1823
+ "family",
1824
+ "statuses",
1825
+ "subjectField"
1826
+ ],
1827
+ "additionalProperties": false
1828
+ },
1829
+ {
1830
+ "type": "object",
1831
+ "properties": {
1832
+ "checkKind": {
1833
+ "type": "string",
1834
+ "const": "commercial_inquiry"
1835
+ },
1836
+ "family": {
1837
+ "type": "string",
1838
+ "const": "credit_bureau"
1839
+ },
1840
+ "maxAge": {
1841
+ "type": "string"
1842
+ },
1843
+ "statuses": {
1844
+ "minItems": 1,
1845
+ "type": "array",
1846
+ "items": {
1847
+ "type": "string",
1848
+ "enum": [
1849
+ "returned",
1850
+ "acknowledged",
1851
+ "correction_required"
1852
+ ]
1853
+ }
1854
+ },
1855
+ "subjectField": {
1856
+ "type": "string",
1857
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1858
+ }
1859
+ },
1860
+ "required": [
1861
+ "checkKind",
1862
+ "family",
1863
+ "statuses",
1864
+ "subjectField"
1865
+ ],
1866
+ "additionalProperties": false
1867
+ },
1868
+ {
1869
+ "type": "object",
1870
+ "properties": {
1871
+ "checkKind": {
1872
+ "type": "string",
1873
+ "const": "facility_report"
1874
+ },
1875
+ "family": {
1876
+ "type": "string",
1877
+ "const": "credit_bureau"
1878
+ },
1879
+ "maxAge": {
1880
+ "type": "string"
1881
+ },
1882
+ "statuses": {
1883
+ "minItems": 1,
1884
+ "type": "array",
1885
+ "items": {
1886
+ "type": "string",
1887
+ "enum": [
1888
+ "returned",
1889
+ "acknowledged",
1890
+ "correction_required"
1891
+ ]
1892
+ }
1893
+ },
1894
+ "subjectField": {
1895
+ "type": "string",
1896
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1897
+ }
1898
+ },
1899
+ "required": [
1900
+ "checkKind",
1901
+ "family",
1902
+ "statuses",
1903
+ "subjectField"
1904
+ ],
1905
+ "additionalProperties": false
1906
+ },
1907
+ {
1908
+ "type": "object",
1909
+ "properties": {
1910
+ "checkKind": {
1911
+ "type": "string",
1912
+ "const": "screen"
1913
+ },
1914
+ "family": {
1915
+ "type": "string",
1916
+ "const": "sanctions_screening"
1917
+ },
1918
+ "maxAge": {
1919
+ "type": "string"
1920
+ },
1921
+ "statuses": {
1922
+ "minItems": 1,
1923
+ "type": "array",
1924
+ "items": {
1925
+ "type": "string",
1926
+ "enum": ["clear", "hit", "manual_review"]
1927
+ }
1928
+ },
1929
+ "subjectField": {
1930
+ "type": "string",
1931
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1932
+ }
1933
+ },
1934
+ "required": [
1935
+ "checkKind",
1936
+ "family",
1937
+ "statuses",
1938
+ "subjectField"
1939
+ ],
1940
+ "additionalProperties": false
1941
+ },
1942
+ {
1943
+ "type": "object",
1944
+ "properties": {
1945
+ "checkKind": {
1946
+ "type": "string",
1947
+ "const": "note_request"
1948
+ },
1949
+ "family": {
1950
+ "type": "string",
1951
+ "const": "enforcement_instrument"
1952
+ },
1953
+ "maxAge": {
1954
+ "type": "string"
1955
+ },
1956
+ "statuses": {
1957
+ "minItems": 1,
1958
+ "type": "array",
1959
+ "items": {
1960
+ "type": "string",
1961
+ "enum": [
1962
+ "debtor_approved",
1963
+ "debtor_rejected",
1964
+ "auto_cancelled"
1965
+ ]
1966
+ }
1967
+ },
1968
+ "subjectField": {
1969
+ "type": "string",
1970
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1971
+ }
1972
+ },
1973
+ "required": [
1974
+ "checkKind",
1975
+ "family",
1976
+ "statuses",
1977
+ "subjectField"
1978
+ ],
1979
+ "additionalProperties": false
1980
+ }
1981
+ ]
1982
+ }
1983
+ },
910
1984
  "requiresDrainedAccount": {
911
1985
  "type": "object",
912
1986
  "properties": {
@@ -940,7 +2014,7 @@
940
2014
  "type": "boolean",
941
2015
  "const": true
942
2016
  },
943
- "childNounId": {
2017
+ "childInstrumentId": {
944
2018
  "type": "string",
945
2019
  "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
946
2020
  },
@@ -957,7 +2031,7 @@
957
2031
  "amountField",
958
2032
  "anchorField",
959
2033
  "capField",
960
- "childNounId",
2034
+ "childInstrumentId",
961
2035
  "statuses"
962
2036
  ],
963
2037
  "additionalProperties": false
@@ -1016,20 +2090,9 @@
1016
2090
  "additionalProperties": false
1017
2091
  }
1018
2092
  },
1019
- "requiresSettlement": {
1020
- "type": "object",
1021
- "properties": {
1022
- "capture": {
1023
- "type": "string",
1024
- "pattern": "^[a-z][A-Za-z0-9]*$"
1025
- },
1026
- "payoutRef": {
1027
- "type": "string",
1028
- "pattern": "^[a-z][A-Za-z0-9]*$"
1029
- }
1030
- },
1031
- "required": ["capture", "payoutRef"],
1032
- "additionalProperties": false
2093
+ "sandboxFailurePoint": {
2094
+ "type": "string",
2095
+ "enum": ["funding", "release"]
1033
2096
  },
1034
2097
  "setsAt": {
1035
2098
  "type": "object",
@@ -1074,7 +2137,7 @@
1074
2137
  "type": "string",
1075
2138
  "pattern": "^[a-z][A-Za-z0-9]*$"
1076
2139
  },
1077
- "nounId": {
2140
+ "instrumentId": {
1078
2141
  "type": "string",
1079
2142
  "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1080
2143
  },
@@ -1101,7 +2164,7 @@
1101
2164
  },
1102
2165
  "required": [
1103
2166
  "amountField",
1104
- "nounId",
2167
+ "instrumentId",
1105
2168
  "refField",
1106
2169
  "sign",
1107
2170
  "statuses",
@@ -1198,6 +2261,14 @@
1198
2261
  },
1199
2262
  "summary": {
1200
2263
  "type": "string"
2264
+ },
2265
+ "updates": {
2266
+ "minItems": 1,
2267
+ "type": "array",
2268
+ "items": {
2269
+ "type": "string",
2270
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2271
+ }
1201
2272
  }
1202
2273
  },
1203
2274
  "required": ["steps", "summary"],
@@ -1206,6 +2277,7 @@
1206
2277
  }
1207
2278
  },
1208
2279
  "required": [
2280
+ "actionOrder",
1209
2281
  "fields",
1210
2282
  "id",
1211
2283
  "idPrefix",
@@ -1213,7 +2285,7 @@
1213
2285
  "required",
1214
2286
  "summary",
1215
2287
  "title",
1216
- "verbs"
2288
+ "actions"
1217
2289
  ],
1218
2290
  "additionalProperties": false
1219
2291
  }
@@ -1270,7 +2342,7 @@
1270
2342
  "maximum": 9007199254740991
1271
2343
  }
1272
2344
  },
1273
- "required": ["nouns", "product", "subjects", "title", "udl", "version"],
2345
+ "required": ["instruments", "product", "subjects", "title", "udl", "version"],
1274
2346
  "additionalProperties": false,
1275
2347
  "$defs": {
1276
2348
  "jsonValue": {