@hyperscale0/udl 2.2.0 → 2.4.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 (88) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +5 -1
  3. package/conformance/invalid/invalid-journeys.expected.json +3 -19
  4. package/conformance/invalid/invalid-journeys.udl +47 -49
  5. package/conformance/valid/attested.expected.json +6 -0
  6. package/conformance/valid/attested.udl +251 -0
  7. package/conformance/valid/hand-edited.expected.json +1 -1
  8. package/conformance/valid/hand-edited.udl +1 -1
  9. package/conformance/valid/minimal.expected.json +1 -1
  10. package/conformance/valid/minimal.udl +0 -15
  11. package/conformance/valid/vocabulary.expected.json +6 -0
  12. package/conformance/valid/vocabulary.udl +1999 -0
  13. package/dist/allocation.d.ts +60 -0
  14. package/dist/allocation.d.ts.map +1 -0
  15. package/dist/allocation.js +177 -0
  16. package/dist/allocation.js.map +1 -0
  17. package/dist/diagnostics.d.ts +1 -31
  18. package/dist/diagnostics.d.ts.map +1 -1
  19. package/dist/diagnostics.js +0 -30
  20. package/dist/diagnostics.js.map +1 -1
  21. package/dist/distribution.d.ts +15 -0
  22. package/dist/distribution.d.ts.map +1 -0
  23. package/dist/distribution.js +49 -0
  24. package/dist/distribution.js.map +1 -0
  25. package/dist/effects.d.ts +0 -6
  26. package/dist/effects.d.ts.map +1 -1
  27. package/dist/effects.js +84 -22
  28. package/dist/effects.js.map +1 -1
  29. package/dist/evolution.d.ts +12 -0
  30. package/dist/evolution.d.ts.map +1 -1
  31. package/dist/evolution.js +42 -1
  32. package/dist/evolution.js.map +1 -1
  33. package/dist/finance.d.ts +18 -1
  34. package/dist/finance.d.ts.map +1 -1
  35. package/dist/finance.js +158 -27
  36. package/dist/finance.js.map +1 -1
  37. package/dist/index.d.ts +9 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +6 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/instrument-references.d.ts +5 -0
  42. package/dist/instrument-references.d.ts.map +1 -0
  43. package/dist/instrument-references.js +69 -0
  44. package/dist/instrument-references.js.map +1 -0
  45. package/dist/limits.d.ts +3 -3
  46. package/dist/limits.d.ts.map +1 -1
  47. package/dist/limits.js +3 -7
  48. package/dist/limits.js.map +1 -1
  49. package/dist/reference.d.ts +3 -0
  50. package/dist/reference.d.ts.map +1 -0
  51. package/dist/reference.js +28 -0
  52. package/dist/reference.js.map +1 -0
  53. package/dist/schema.d.ts +1232 -83
  54. package/dist/schema.d.ts.map +1 -1
  55. package/dist/schema.js +398 -60
  56. package/dist/schema.js.map +1 -1
  57. package/dist/validation.d.ts +27 -1
  58. package/dist/validation.d.ts.map +1 -1
  59. package/dist/validation.js +327 -187
  60. package/dist/validation.js.map +1 -1
  61. package/dist/vocabulary.d.ts +23 -0
  62. package/dist/vocabulary.d.ts.map +1 -0
  63. package/dist/vocabulary.js +965 -0
  64. package/dist/vocabulary.js.map +1 -0
  65. package/docs/README.md +5 -1
  66. package/docs/funding-custody.md +165 -0
  67. package/docs/guide/09-schedules-and-allocation.md +130 -0
  68. package/docs/llms-full.txt +623 -101
  69. package/docs/llms.txt +1 -1
  70. package/docs/piece-plans.md +148 -0
  71. package/docs/reference/clauses.md +451 -63
  72. package/docs/reference/cli.md +3 -1
  73. package/docs/reference/diagnostics.md +33 -38
  74. package/package.json +5 -6
  75. package/spec/udl.schema.json +1095 -118
  76. package/src/allocation.ts +259 -0
  77. package/src/diagnostics.ts +0 -32
  78. package/src/distribution.ts +61 -0
  79. package/src/effects.ts +116 -22
  80. package/src/evolution.ts +63 -3
  81. package/src/finance.ts +218 -24
  82. package/src/index.ts +31 -3
  83. package/src/instrument-references.ts +98 -0
  84. package/src/limits.ts +3 -7
  85. package/src/reference.ts +31 -0
  86. package/src/schema.ts +417 -66
  87. package/src/validation.ts +452 -243
  88. package/src/vocabulary.ts +1508 -0
@@ -41,6 +41,281 @@
41
41
  "items": {
42
42
  "type": "object",
43
43
  "properties": {
44
+ "templateBinding": {
45
+ "type": "object",
46
+ "properties": {
47
+ "id": {
48
+ "type": "string",
49
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
50
+ },
51
+ "parameters": {
52
+ "type": "object",
53
+ "propertyNames": {
54
+ "type": "string",
55
+ "pattern": "^[a-z][A-Za-z0-9]*$"
56
+ },
57
+ "additionalProperties": {
58
+ "anyOf": [
59
+ {
60
+ "type": "string"
61
+ },
62
+ {
63
+ "type": "integer",
64
+ "minimum": -9007199254740991,
65
+ "maximum": 9007199254740991
66
+ },
67
+ {
68
+ "type": "boolean"
69
+ }
70
+ ]
71
+ }
72
+ }
73
+ },
74
+ "required": ["id", "parameters"],
75
+ "additionalProperties": false
76
+ },
77
+ "allocation": {
78
+ "type": "object",
79
+ "properties": {
80
+ "sliceInstrumentId": {
81
+ "type": "string",
82
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
83
+ "x-udl-reference": "instrument"
84
+ },
85
+ "sliceRefField": {
86
+ "type": "string",
87
+ "pattern": "^[a-z][A-Za-z0-9]*$"
88
+ },
89
+ "sliceStatuses": {
90
+ "minItems": 1,
91
+ "type": "array",
92
+ "items": {
93
+ "type": "string",
94
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
95
+ }
96
+ },
97
+ "dueField": {
98
+ "type": "string",
99
+ "pattern": "^[a-z][A-Za-z0-9]*$"
100
+ },
101
+ "positionField": {
102
+ "type": "string",
103
+ "pattern": "^[a-z][A-Za-z0-9]*$"
104
+ },
105
+ "earningRuleField": {
106
+ "type": "string",
107
+ "pattern": "^[a-z][A-Za-z0-9]*$"
108
+ },
109
+ "buckets": {
110
+ "minItems": 2,
111
+ "maxItems": 4,
112
+ "type": "array",
113
+ "items": {
114
+ "type": "object",
115
+ "properties": {
116
+ "key": {
117
+ "type": "string",
118
+ "enum": ["principal", "profit", "cost", "fine"]
119
+ },
120
+ "source": {
121
+ "anyOf": [
122
+ {
123
+ "type": "object",
124
+ "properties": {
125
+ "from": {
126
+ "type": "string",
127
+ "const": "slice"
128
+ },
129
+ "amountField": {
130
+ "type": "string",
131
+ "pattern": "^[a-z][A-Za-z0-9]*$"
132
+ },
133
+ "destinationField": {
134
+ "type": "string",
135
+ "pattern": "^[a-z][A-Za-z0-9]*$"
136
+ }
137
+ },
138
+ "required": [
139
+ "from",
140
+ "amountField",
141
+ "destinationField"
142
+ ],
143
+ "additionalProperties": false
144
+ },
145
+ {
146
+ "type": "object",
147
+ "properties": {
148
+ "from": {
149
+ "type": "string",
150
+ "const": "children"
151
+ },
152
+ "instrumentId": {
153
+ "type": "string",
154
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
155
+ "x-udl-reference": "instrument"
156
+ },
157
+ "refField": {
158
+ "type": "string",
159
+ "pattern": "^[a-z][A-Za-z0-9]*$"
160
+ },
161
+ "statuses": {
162
+ "minItems": 1,
163
+ "type": "array",
164
+ "items": {
165
+ "type": "string",
166
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
167
+ }
168
+ },
169
+ "amountField": {
170
+ "type": "string",
171
+ "pattern": "^[a-z][A-Za-z0-9]*$"
172
+ },
173
+ "destinationField": {
174
+ "type": "string",
175
+ "pattern": "^[a-z][A-Za-z0-9]*$"
176
+ }
177
+ },
178
+ "required": [
179
+ "from",
180
+ "instrumentId",
181
+ "refField",
182
+ "statuses",
183
+ "amountField",
184
+ "destinationField"
185
+ ],
186
+ "additionalProperties": false
187
+ },
188
+ {
189
+ "type": "object",
190
+ "properties": {
191
+ "from": {
192
+ "type": "string",
193
+ "const": "children"
194
+ },
195
+ "template": {
196
+ "type": "string",
197
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
198
+ },
199
+ "parameters": {
200
+ "type": "object",
201
+ "propertyNames": {
202
+ "type": "string",
203
+ "pattern": "^[a-z][A-Za-z0-9]*$"
204
+ },
205
+ "additionalProperties": {
206
+ "anyOf": [
207
+ {
208
+ "type": "string"
209
+ },
210
+ {
211
+ "type": "integer",
212
+ "minimum": -9007199254740991,
213
+ "maximum": 9007199254740991
214
+ },
215
+ {
216
+ "type": "boolean"
217
+ }
218
+ ]
219
+ }
220
+ },
221
+ "refField": {
222
+ "type": "string",
223
+ "pattern": "^[a-z][A-Za-z0-9]*$"
224
+ },
225
+ "statuses": {
226
+ "minItems": 1,
227
+ "type": "array",
228
+ "items": {
229
+ "type": "string",
230
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
231
+ }
232
+ },
233
+ "amountField": {
234
+ "type": "string",
235
+ "pattern": "^[a-z][A-Za-z0-9]*$"
236
+ },
237
+ "destinationField": {
238
+ "type": "string",
239
+ "pattern": "^[a-z][A-Za-z0-9]*$"
240
+ }
241
+ },
242
+ "required": [
243
+ "from",
244
+ "template",
245
+ "parameters",
246
+ "refField",
247
+ "statuses",
248
+ "amountField",
249
+ "destinationField"
250
+ ],
251
+ "additionalProperties": false
252
+ }
253
+ ]
254
+ }
255
+ },
256
+ "required": ["key", "source"],
257
+ "additionalProperties": false
258
+ }
259
+ }
260
+ },
261
+ "required": [
262
+ "sliceInstrumentId",
263
+ "sliceRefField",
264
+ "sliceStatuses",
265
+ "dueField",
266
+ "positionField",
267
+ "earningRuleField",
268
+ "buckets"
269
+ ],
270
+ "additionalProperties": false
271
+ },
272
+ "contributions": {
273
+ "type": "object",
274
+ "properties": {
275
+ "field": {
276
+ "type": "string",
277
+ "pattern": "^[a-z][A-Za-z0-9]*$"
278
+ },
279
+ "amountKey": {
280
+ "type": "string",
281
+ "pattern": "^[a-z][A-Za-z0-9]*$"
282
+ },
283
+ "accountKey": {
284
+ "type": "string",
285
+ "pattern": "^[a-z][A-Za-z0-9]*$"
286
+ },
287
+ "totalField": {
288
+ "type": "string",
289
+ "pattern": "^[a-z][A-Za-z0-9]*$"
290
+ }
291
+ },
292
+ "required": ["field", "amountKey", "accountKey", "totalField"],
293
+ "additionalProperties": false
294
+ },
295
+ "dateOrder": {
296
+ "minItems": 1,
297
+ "maxItems": 16,
298
+ "type": "array",
299
+ "items": {
300
+ "type": "object",
301
+ "properties": {
302
+ "beforeField": {
303
+ "type": "string",
304
+ "pattern": "^[a-z][A-Za-z0-9]*$"
305
+ },
306
+ "afterField": {
307
+ "type": "string",
308
+ "pattern": "^[a-z][A-Za-z0-9]*$"
309
+ },
310
+ "operator": {
311
+ "type": "string",
312
+ "enum": ["<", "<="]
313
+ }
314
+ },
315
+ "required": ["beforeField", "afterField", "operator"],
316
+ "additionalProperties": false
317
+ }
318
+ },
44
319
  "actionLibrary": {
45
320
  "type": "object",
46
321
  "propertyNames": {
@@ -259,7 +534,8 @@
259
534
  "properties": {
260
535
  "childInstrumentId": {
261
536
  "type": "string",
262
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
537
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
538
+ "x-udl-reference": "instrument"
263
539
  },
264
540
  "childRefField": {
265
541
  "type": "string",
@@ -296,7 +572,8 @@
296
572
  "properties": {
297
573
  "childInstrumentId": {
298
574
  "type": "string",
299
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
575
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
576
+ "x-udl-reference": "instrument"
300
577
  },
301
578
  "childRefField": {
302
579
  "type": "string",
@@ -492,7 +769,7 @@
492
769
  },
493
770
  "derivedAmounts": {
494
771
  "minItems": 1,
495
- "maxItems": 4,
772
+ "maxItems": 64,
496
773
  "type": "array",
497
774
  "items": {
498
775
  "type": "object",
@@ -506,20 +783,54 @@
506
783
  "const": "floor"
507
784
  },
508
785
  "rule": {
509
- "type": "object",
510
- "properties": {
511
- "bps": {
512
- "type": "integer",
513
- "minimum": 1,
514
- "maximum": 9999
786
+ "oneOf": [
787
+ {
788
+ "type": "object",
789
+ "properties": {
790
+ "bps": {
791
+ "anyOf": [
792
+ {
793
+ "type": "integer",
794
+ "minimum": 1,
795
+ "maximum": 9999
796
+ },
797
+ {
798
+ "type": "object",
799
+ "properties": {
800
+ "field": {
801
+ "type": "string",
802
+ "pattern": "^[a-z][A-Za-z0-9]*$"
803
+ }
804
+ },
805
+ "required": ["field"],
806
+ "additionalProperties": false
807
+ }
808
+ ]
809
+ },
810
+ "kind": {
811
+ "type": "string",
812
+ "const": "percentage_of"
813
+ }
814
+ },
815
+ "required": ["bps", "kind"],
816
+ "additionalProperties": false
515
817
  },
516
- "kind": {
517
- "type": "string",
518
- "const": "percentage_of"
818
+ {
819
+ "type": "object",
820
+ "properties": {
821
+ "kind": {
822
+ "type": "string",
823
+ "const": "minimum"
824
+ },
825
+ "capField": {
826
+ "type": "string",
827
+ "pattern": "^[a-z][A-Za-z0-9]*$"
828
+ }
829
+ },
830
+ "required": ["kind", "capField"],
831
+ "additionalProperties": false
519
832
  }
520
- },
521
- "required": ["bps", "kind"],
522
- "additionalProperties": false
833
+ ]
523
834
  },
524
835
  "sourceField": {
525
836
  "type": "string",
@@ -695,7 +1006,8 @@
695
1006
  },
696
1007
  "id": {
697
1008
  "type": "string",
698
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1009
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
1010
+ "x-udl-reference": "instrument"
699
1011
  },
700
1012
  "idPrefix": {
701
1013
  "type": "string",
@@ -746,63 +1058,7 @@
746
1058
  "required": ["initial", "states", "transitions"],
747
1059
  "additionalProperties": false
748
1060
  },
749
- "journeys": {
750
- "minItems": 1,
751
- "type": "array",
752
- "items": {
753
- "type": "object",
754
- "properties": {
755
- "id": {
756
- "type": "string",
757
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
758
- },
759
- "label": {
760
- "type": "string"
761
- },
762
- "steps": {
763
- "minItems": 1,
764
- "type": "array",
765
- "items": {
766
- "type": "object",
767
- "properties": {
768
- "bind": {
769
- "type": "object",
770
- "propertyNames": {
771
- "type": "string",
772
- "pattern": "^[a-z][A-Za-z0-9]*(?:\\.[a-z][A-Za-z0-9]*)*$"
773
- },
774
- "additionalProperties": {
775
- "type": "string",
776
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
777
- }
778
- },
779
- "example": {
780
- "type": "string",
781
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
782
- },
783
- "id": {
784
- "type": "string",
785
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
786
- },
787
- "operation": {
788
- "type": "string",
789
- "maxLength": 160,
790
- "pattern": "^[a-z][a-z0-9_]*(?:\\.[a-z][a-z0-9_]*)+$"
791
- }
792
- },
793
- "required": ["bind", "example", "operation"],
794
- "additionalProperties": false
795
- }
796
- },
797
- "summary": {
798
- "type": "string"
799
- }
800
- },
801
- "required": ["id", "label", "steps", "summary"],
802
- "additionalProperties": false
803
- }
804
- },
805
- "nav": {
1061
+ "nav": {
806
1062
  "minItems": 1,
807
1063
  "type": "array",
808
1064
  "items": {
@@ -981,43 +1237,488 @@
981
1237
  "name": {
982
1238
  "type": "string"
983
1239
  },
984
- "output": {
985
- "$ref": "#/$defs/jsonValue"
1240
+ "output": {
1241
+ "$ref": "#/$defs/jsonValue"
1242
+ }
1243
+ },
1244
+ "required": ["input", "name"],
1245
+ "additionalProperties": false
1246
+ }
1247
+ },
1248
+ "fields": {
1249
+ "minItems": 1,
1250
+ "type": "array",
1251
+ "items": {
1252
+ "type": "string",
1253
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1254
+ }
1255
+ },
1256
+ "states": {
1257
+ "minItems": 1,
1258
+ "type": "array",
1259
+ "items": {
1260
+ "type": "string",
1261
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1262
+ }
1263
+ }
1264
+ },
1265
+ "required": ["fields", "states"],
1266
+ "additionalProperties": false
1267
+ },
1268
+ "actions": {
1269
+ "type": "object",
1270
+ "propertyNames": {
1271
+ "type": "string",
1272
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1273
+ },
1274
+ "additionalProperties": {
1275
+ "type": "object",
1276
+ "properties": {
1277
+ "requestAuthority": {
1278
+ "type": "object",
1279
+ "properties": {
1280
+ "instrumentField": {
1281
+ "type": "string",
1282
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1283
+ },
1284
+ "instanceField": {
1285
+ "type": "string",
1286
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1287
+ },
1288
+ "actionField": {
1289
+ "type": "string",
1290
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1291
+ },
1292
+ "inputField": {
1293
+ "type": "string",
1294
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1295
+ },
1296
+ "digestField": {
1297
+ "type": "string",
1298
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1299
+ },
1300
+ "roleField": {
1301
+ "type": "string",
1302
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1303
+ },
1304
+ "party": {
1305
+ "type": "string",
1306
+ "pattern": "^[a-z][A-Za-z0-9_]*$"
1307
+ },
1308
+ "expiresField": {
1309
+ "type": "string",
1310
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1311
+ }
1312
+ },
1313
+ "required": [
1314
+ "instrumentField",
1315
+ "instanceField",
1316
+ "actionField",
1317
+ "inputField",
1318
+ "digestField",
1319
+ "roleField",
1320
+ "party",
1321
+ "expiresField"
1322
+ ],
1323
+ "additionalProperties": false
1324
+ },
1325
+ "funding": {
1326
+ "type": "object",
1327
+ "properties": {
1328
+ "obligationField": {
1329
+ "type": "string",
1330
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1331
+ },
1332
+ "ticketInstrumentId": {
1333
+ "type": "string",
1334
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
1335
+ "x-udl-reference": "instrument"
1336
+ },
1337
+ "ticketRefField": {
1338
+ "type": "string",
1339
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1340
+ },
1341
+ "ticketAmountField": {
1342
+ "type": "string",
1343
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1344
+ },
1345
+ "ticketInvestorField": {
1346
+ "type": "string",
1347
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1348
+ },
1349
+ "ticketAccountField": {
1350
+ "type": "string",
1351
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1352
+ },
1353
+ "ticketStatus": {
1354
+ "type": "string",
1355
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1356
+ },
1357
+ "collectAction": {
1358
+ "type": "string",
1359
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1360
+ },
1361
+ "principalField": {
1362
+ "type": "string",
1363
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1364
+ },
1365
+ "sourceAccountPath": {
1366
+ "type": "string",
1367
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
1368
+ },
1369
+ "destinationAccountField": {
1370
+ "type": "string",
1371
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1372
+ },
1373
+ "terms": {
1374
+ "type": "object",
1375
+ "propertyNames": {
1376
+ "type": "string",
1377
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1378
+ },
1379
+ "additionalProperties": {
1380
+ "type": "string",
1381
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1382
+ }
1383
+ },
1384
+ "capture": {
1385
+ "type": "string",
1386
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1387
+ }
1388
+ },
1389
+ "required": [
1390
+ "obligationField",
1391
+ "ticketInstrumentId",
1392
+ "ticketRefField",
1393
+ "ticketAmountField",
1394
+ "ticketInvestorField",
1395
+ "ticketAccountField",
1396
+ "ticketStatus",
1397
+ "collectAction",
1398
+ "principalField",
1399
+ "sourceAccountPath",
1400
+ "destinationAccountField",
1401
+ "terms",
1402
+ "capture"
1403
+ ],
1404
+ "additionalProperties": false
1405
+ },
1406
+ "receiptDistribution": {
1407
+ "type": "object",
1408
+ "properties": {
1409
+ "roundField": {
1410
+ "type": "string",
1411
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1412
+ },
1413
+ "snapshotRef": {
1414
+ "type": "string",
1415
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1416
+ },
1417
+ "receiptField": {
1418
+ "type": "string",
1419
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1420
+ },
1421
+ "receiptPath": {
1422
+ "type": "string",
1423
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
1424
+ },
1425
+ "mode": {
1426
+ "type": "string",
1427
+ "enum": ["cash", "loss"]
1428
+ },
1429
+ "feeBps": {
1430
+ "type": "integer",
1431
+ "minimum": 0,
1432
+ "maximum": 10000
1433
+ },
1434
+ "vatBps": {
1435
+ "type": "integer",
1436
+ "minimum": 0,
1437
+ "maximum": 10000
1438
+ },
1439
+ "feeAccountField": {
1440
+ "type": "string",
1441
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1442
+ },
1443
+ "taxAccountField": {
1444
+ "type": "string",
1445
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1446
+ },
1447
+ "residualAccountField": {
1448
+ "type": "string",
1449
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1450
+ },
1451
+ "capture": {
1452
+ "type": "string",
1453
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1454
+ }
1455
+ },
1456
+ "required": [
1457
+ "roundField",
1458
+ "snapshotRef",
1459
+ "receiptField",
1460
+ "receiptPath",
1461
+ "mode",
1462
+ "feeBps",
1463
+ "vatBps",
1464
+ "feeAccountField",
1465
+ "taxAccountField",
1466
+ "residualAccountField",
1467
+ "capture"
1468
+ ],
1469
+ "additionalProperties": false
1470
+ },
1471
+ "requiresAllocation": {
1472
+ "type": "object",
1473
+ "properties": {
1474
+ "refField": {
1475
+ "type": "string",
1476
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1477
+ },
1478
+ "slice": {
1479
+ "anyOf": [
1480
+ {
1481
+ "type": "string",
1482
+ "const": "self"
1483
+ },
1484
+ {
1485
+ "type": "object",
1486
+ "properties": {
1487
+ "field": {
1488
+ "type": "string",
1489
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1490
+ }
1491
+ },
1492
+ "required": ["field"],
1493
+ "additionalProperties": false
1494
+ }
1495
+ ]
1496
+ },
1497
+ "buckets": {
1498
+ "minItems": 1,
1499
+ "maxItems": 4,
1500
+ "type": "array",
1501
+ "items": {
1502
+ "type": "string",
1503
+ "enum": ["principal", "profit", "cost", "fine"]
1504
+ }
1505
+ },
1506
+ "check": {
1507
+ "type": "string",
1508
+ "enum": ["settled", "outstanding"]
1509
+ }
1510
+ },
1511
+ "required": ["slice", "buckets", "check"],
1512
+ "additionalProperties": false
1513
+ },
1514
+ "unique": {
1515
+ "type": "object",
1516
+ "properties": {
1517
+ "namespace": {
1518
+ "type": "string",
1519
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1520
+ },
1521
+ "byFields": {
1522
+ "minItems": 1,
1523
+ "maxItems": 8,
1524
+ "type": "array",
1525
+ "items": {
1526
+ "type": "string",
1527
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1528
+ }
1529
+ }
1530
+ },
1531
+ "required": ["namespace", "byFields"],
1532
+ "additionalProperties": false
1533
+ },
1534
+ "requiresInput": {
1535
+ "type": "object",
1536
+ "propertyNames": {
1537
+ "type": "string",
1538
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1539
+ },
1540
+ "additionalProperties": {
1541
+ "type": "string",
1542
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
1543
+ }
1544
+ },
1545
+ "engineOwned": {
1546
+ "type": "boolean",
1547
+ "const": true
1548
+ },
1549
+ "captureEngine": {
1550
+ "type": "object",
1551
+ "propertyNames": {
1552
+ "type": "string",
1553
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1554
+ },
1555
+ "additionalProperties": {
1556
+ "type": "string",
1557
+ "enum": ["operationId"]
1558
+ }
1559
+ },
1560
+ "allocate": {
1561
+ "anyOf": [
1562
+ {
1563
+ "type": "object",
1564
+ "properties": {
1565
+ "refField": {
1566
+ "type": "string",
1567
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1568
+ },
1569
+ "mode": {
1570
+ "type": "string",
1571
+ "const": "refund"
1572
+ },
1573
+ "action": {
1574
+ "type": "string",
1575
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1576
+ },
1577
+ "assessmentField": {
1578
+ "type": "string",
1579
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1580
+ },
1581
+ "capture": {
1582
+ "type": "string",
1583
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1584
+ }
1585
+ },
1586
+ "required": ["mode", "capture"],
1587
+ "additionalProperties": false
1588
+ },
1589
+ {
1590
+ "type": "object",
1591
+ "properties": {
1592
+ "refField": {
1593
+ "type": "string",
1594
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1595
+ },
1596
+ "mode": {
1597
+ "type": "string",
1598
+ "const": "payment"
1599
+ },
1600
+ "assessment": {
1601
+ "type": "string",
1602
+ "const": "self"
1603
+ },
1604
+ "amountField": {
1605
+ "type": "string",
1606
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1607
+ },
1608
+ "sourceAccountField": {
1609
+ "type": "string",
1610
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1611
+ },
1612
+ "paymentIdentityField": {
1613
+ "type": "string",
1614
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1615
+ },
1616
+ "capture": {
1617
+ "type": "string",
1618
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1619
+ }
1620
+ },
1621
+ "required": [
1622
+ "refField",
1623
+ "mode",
1624
+ "sourceAccountField",
1625
+ "paymentIdentityField",
1626
+ "capture"
1627
+ ],
1628
+ "additionalProperties": false
1629
+ },
1630
+ {
1631
+ "type": "object",
1632
+ "properties": {
1633
+ "refField": {
1634
+ "type": "string",
1635
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1636
+ },
1637
+ "mode": {
1638
+ "type": "string",
1639
+ "const": "payoff"
1640
+ },
1641
+ "amountField": {
1642
+ "type": "string",
1643
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1644
+ },
1645
+ "sourceAccountField": {
1646
+ "type": "string",
1647
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1648
+ },
1649
+ "paymentIdentityField": {
1650
+ "type": "string",
1651
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1652
+ },
1653
+ "capture": {
1654
+ "type": "string",
1655
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1656
+ }
1657
+ },
1658
+ "required": [
1659
+ "mode",
1660
+ "sourceAccountField",
1661
+ "paymentIdentityField",
1662
+ "capture"
1663
+ ],
1664
+ "additionalProperties": false
1665
+ },
1666
+ {
1667
+ "type": "object",
1668
+ "properties": {
1669
+ "refField": {
1670
+ "type": "string",
1671
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1672
+ },
1673
+ "mode": {
1674
+ "type": "string",
1675
+ "const": "write_off"
1676
+ },
1677
+ "capture": {
1678
+ "type": "string",
1679
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1680
+ }
1681
+ },
1682
+ "required": ["mode", "capture"],
1683
+ "additionalProperties": false
1684
+ }
1685
+ ]
1686
+ },
1687
+ "contributionStage": {
1688
+ "type": "object",
1689
+ "properties": {
1690
+ "stage": {
1691
+ "type": "string",
1692
+ "enum": ["fund", "refund"]
1693
+ },
1694
+ "accountPath": {
1695
+ "type": "string",
1696
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
986
1697
  }
987
1698
  },
988
- "required": ["input", "name"],
1699
+ "required": ["stage", "accountPath"],
989
1700
  "additionalProperties": false
990
- }
991
- },
992
- "fields": {
993
- "minItems": 1,
994
- "type": "array",
995
- "items": {
996
- "type": "string",
997
- "pattern": "^[a-z][A-Za-z0-9]*$"
998
- }
999
- },
1000
- "states": {
1001
- "minItems": 1,
1002
- "type": "array",
1003
- "items": {
1004
- "type": "string",
1005
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1006
- }
1007
- }
1008
- },
1009
- "required": ["fields", "states"],
1010
- "additionalProperties": false
1011
- },
1012
- "actions": {
1013
- "type": "object",
1014
- "propertyNames": {
1015
- "type": "string",
1016
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1017
- },
1018
- "additionalProperties": {
1019
- "type": "object",
1020
- "properties": {
1701
+ },
1702
+ "transitionsRefs": {
1703
+ "minItems": 1,
1704
+ "maxItems": 16,
1705
+ "type": "array",
1706
+ "items": {
1707
+ "type": "object",
1708
+ "properties": {
1709
+ "field": {
1710
+ "type": "string",
1711
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1712
+ },
1713
+ "action": {
1714
+ "type": "string",
1715
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1716
+ }
1717
+ },
1718
+ "required": ["field", "action"],
1719
+ "additionalProperties": false
1720
+ }
1721
+ },
1021
1722
  "agentDescription": {
1022
1723
  "type": "string",
1023
1724
  "maxLength": 400
@@ -1093,7 +1794,22 @@
1093
1794
  "pattern": "^[a-z][A-Za-z0-9]*$"
1094
1795
  },
1095
1796
  "offset": {
1096
- "type": "string"
1797
+ "anyOf": [
1798
+ {
1799
+ "type": "string"
1800
+ },
1801
+ {
1802
+ "type": "object",
1803
+ "properties": {
1804
+ "field": {
1805
+ "type": "string",
1806
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1807
+ }
1808
+ },
1809
+ "required": ["field"],
1810
+ "additionalProperties": false
1811
+ }
1812
+ ]
1097
1813
  }
1098
1814
  },
1099
1815
  "required": ["field"],
@@ -1258,14 +1974,30 @@
1258
1974
  "pattern": "^[a-z][A-Za-z0-9]*$"
1259
1975
  },
1260
1976
  "offset": {
1261
- "type": "string"
1977
+ "anyOf": [
1978
+ {
1979
+ "type": "string"
1980
+ },
1981
+ {
1982
+ "type": "object",
1983
+ "properties": {
1984
+ "field": {
1985
+ "type": "string",
1986
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1987
+ }
1988
+ },
1989
+ "required": ["field"],
1990
+ "additionalProperties": false
1991
+ }
1992
+ ]
1262
1993
  },
1263
1994
  "whenParentStatus": {
1264
1995
  "type": "object",
1265
1996
  "properties": {
1266
1997
  "instrumentId": {
1267
1998
  "type": "string",
1268
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
1999
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
2000
+ "x-udl-reference": "instrument"
1269
2001
  },
1270
2002
  "refField": {
1271
2003
  "type": "string",
@@ -1408,7 +2140,8 @@
1408
2140
  },
1409
2141
  "eventName": {
1410
2142
  "type": "string",
1411
- "pattern": "^[a-z][a-z0-9_]*(?:\\.[a-z][a-z0-9_]*)+$"
2143
+ "pattern": "^[a-z][a-z0-9_]*(?:\\.[a-z][a-z0-9_]*)+$",
2144
+ "x-udl-reference": "instrument_event"
1412
2145
  },
1413
2146
  "examples": {
1414
2147
  "minItems": 1,
@@ -1601,6 +2334,10 @@
1601
2334
  "type": "string",
1602
2335
  "pattern": "^[a-z][A-Za-z0-9_]*$"
1603
2336
  }
2337
+ },
2338
+ "capture": {
2339
+ "type": "string",
2340
+ "pattern": "^[a-z][A-Za-z0-9]*$"
1604
2341
  }
1605
2342
  },
1606
2343
  "required": ["allowedParties"],
@@ -1749,7 +2486,8 @@
1749
2486
  },
1750
2487
  "childInstrumentId": {
1751
2488
  "type": "string",
1752
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
2489
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
2490
+ "x-udl-reference": "instrument"
1753
2491
  },
1754
2492
  "maxOpen": {
1755
2493
  "type": "integer",
@@ -1882,7 +2620,8 @@
1882
2620
  },
1883
2621
  "instrumentId": {
1884
2622
  "type": "string",
1885
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
2623
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
2624
+ "x-udl-reference": "instrument"
1886
2625
  },
1887
2626
  "path": {
1888
2627
  "type": "string",
@@ -1921,6 +2660,15 @@
1921
2660
  "totalPath": {
1922
2661
  "type": "string",
1923
2662
  "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
2663
+ },
2664
+ "subtractPaths": {
2665
+ "minItems": 1,
2666
+ "maxItems": 16,
2667
+ "type": "array",
2668
+ "items": {
2669
+ "type": "string",
2670
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
2671
+ }
1924
2672
  }
1925
2673
  },
1926
2674
  "required": ["amountRef", "onZero", "totalPath"],
@@ -1932,6 +2680,39 @@
1932
2680
  "items": {
1933
2681
  "type": "object",
1934
2682
  "properties": {
2683
+ "anchorField": {
2684
+ "type": "string",
2685
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2686
+ },
2687
+ "dueBefore": {
2688
+ "type": "object",
2689
+ "properties": {
2690
+ "field": {
2691
+ "type": "string",
2692
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2693
+ },
2694
+ "offset": {
2695
+ "anyOf": [
2696
+ {
2697
+ "type": "string"
2698
+ },
2699
+ {
2700
+ "type": "object",
2701
+ "properties": {
2702
+ "field": {
2703
+ "type": "string",
2704
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2705
+ }
2706
+ },
2707
+ "required": ["field"],
2708
+ "additionalProperties": false
2709
+ }
2710
+ ]
2711
+ }
2712
+ },
2713
+ "required": ["field"],
2714
+ "additionalProperties": false
2715
+ },
1935
2716
  "check": {
1936
2717
  "oneOf": [
1937
2718
  {
@@ -2025,6 +2806,95 @@
2025
2806
  "required": ["kind", "targetField"],
2026
2807
  "additionalProperties": false
2027
2808
  },
2809
+ {
2810
+ "type": "object",
2811
+ "properties": {
2812
+ "kind": {
2813
+ "type": "string",
2814
+ "const": "count_exactly"
2815
+ },
2816
+ "value": {
2817
+ "type": "integer",
2818
+ "minimum": 0,
2819
+ "maximum": 9007199254740991
2820
+ }
2821
+ },
2822
+ "required": ["kind", "value"],
2823
+ "additionalProperties": false
2824
+ },
2825
+ {
2826
+ "type": "object",
2827
+ "properties": {
2828
+ "kind": {
2829
+ "type": "string",
2830
+ "const": "ordered"
2831
+ },
2832
+ "field": {
2833
+ "type": "string",
2834
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2835
+ },
2836
+ "positionField": {
2837
+ "type": "string",
2838
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2839
+ }
2840
+ },
2841
+ "required": ["kind", "field", "positionField"],
2842
+ "additionalProperties": false
2843
+ },
2844
+ {
2845
+ "type": "object",
2846
+ "properties": {
2847
+ "kind": {
2848
+ "type": "string",
2849
+ "const": "schedule"
2850
+ },
2851
+ "positionField": {
2852
+ "type": "string",
2853
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2854
+ },
2855
+ "dateField": {
2856
+ "type": "string",
2857
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2858
+ },
2859
+ "datesField": {
2860
+ "type": "string",
2861
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2862
+ },
2863
+ "amounts": {
2864
+ "minItems": 1,
2865
+ "maxItems": 8,
2866
+ "type": "array",
2867
+ "items": {
2868
+ "type": "object",
2869
+ "properties": {
2870
+ "amountField": {
2871
+ "type": "string",
2872
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2873
+ },
2874
+ "totalField": {
2875
+ "type": "string",
2876
+ "pattern": "^[a-z][A-Za-z0-9]*$"
2877
+ }
2878
+ },
2879
+ "required": ["amountField", "totalField"],
2880
+ "additionalProperties": false
2881
+ }
2882
+ },
2883
+ "remainder": {
2884
+ "type": "string",
2885
+ "const": "first"
2886
+ }
2887
+ },
2888
+ "required": [
2889
+ "kind",
2890
+ "positionField",
2891
+ "dateField",
2892
+ "datesField",
2893
+ "amounts",
2894
+ "remainder"
2895
+ ],
2896
+ "additionalProperties": false
2897
+ },
2028
2898
  {
2029
2899
  "type": "object",
2030
2900
  "properties": {
@@ -2055,7 +2925,8 @@
2055
2925
  },
2056
2926
  "instrumentId": {
2057
2927
  "type": "string",
2058
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
2928
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
2929
+ "x-udl-reference": "instrument"
2059
2930
  },
2060
2931
  "over": {
2061
2932
  "type": "string",
@@ -2370,6 +3241,25 @@
2370
3241
  "items": {
2371
3242
  "type": "object",
2372
3243
  "properties": {
3244
+ "groupField": {
3245
+ "type": "string",
3246
+ "pattern": "^[a-z][A-Za-z0-9]*$"
3247
+ },
3248
+ "minimumField": {
3249
+ "type": "string",
3250
+ "pattern": "^[a-z][A-Za-z0-9]*$"
3251
+ },
3252
+ "measure": {
3253
+ "type": "object",
3254
+ "properties": {
3255
+ "allocation": {
3256
+ "type": "string",
3257
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
3258
+ }
3259
+ },
3260
+ "required": ["allocation"],
3261
+ "additionalProperties": false
3262
+ },
2373
3263
  "amountField": {
2374
3264
  "type": "string",
2375
3265
  "pattern": "^[a-z][A-Za-z0-9]*$"
@@ -2388,7 +3278,8 @@
2388
3278
  },
2389
3279
  "childInstrumentId": {
2390
3280
  "type": "string",
2391
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
3281
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
3282
+ "x-udl-reference": "instrument"
2392
3283
  },
2393
3284
  "statuses": {
2394
3285
  "minItems": 1,
@@ -2415,6 +3306,53 @@
2415
3306
  "items": {
2416
3307
  "type": "object",
2417
3308
  "properties": {
3309
+ "attests": {
3310
+ "type": "object",
3311
+ "properties": {
3312
+ "forAction": {
3313
+ "type": "string",
3314
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
3315
+ },
3316
+ "action": {
3317
+ "type": "string",
3318
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
3319
+ },
3320
+ "digest": {
3321
+ "type": "string",
3322
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
3323
+ },
3324
+ "role": {
3325
+ "type": "string",
3326
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
3327
+ },
3328
+ "expiresAt": {
3329
+ "type": "string",
3330
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
3331
+ },
3332
+ "instrument": {
3333
+ "type": "string",
3334
+ "pattern": "^(?:fields|refs)\\.[a-z][A-Za-z0-9]*$"
3335
+ },
3336
+ "party": {
3337
+ "type": "string",
3338
+ "pattern": "^[a-z][A-Za-z0-9_]*$"
3339
+ },
3340
+ "consume": {
3341
+ "type": "string",
3342
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
3343
+ }
3344
+ },
3345
+ "required": [
3346
+ "action",
3347
+ "digest",
3348
+ "role",
3349
+ "expiresAt",
3350
+ "instrument",
3351
+ "party",
3352
+ "consume"
3353
+ ],
3354
+ "additionalProperties": false
3355
+ },
2418
3356
  "bind": {
2419
3357
  "type": "object",
2420
3358
  "propertyNames": {
@@ -2445,6 +3383,20 @@
2445
3383
  "required": ["localPath", "operator", "referencedPath"],
2446
3384
  "additionalProperties": false
2447
3385
  },
3386
+ "dueBefore": {
3387
+ "type": "object",
3388
+ "properties": {
3389
+ "field": {
3390
+ "type": "string",
3391
+ "pattern": "^[a-z][A-Za-z0-9]*$"
3392
+ },
3393
+ "offset": {
3394
+ "type": "string"
3395
+ }
3396
+ },
3397
+ "required": ["field", "offset"],
3398
+ "additionalProperties": false
3399
+ },
2448
3400
  "field": {
2449
3401
  "type": "string",
2450
3402
  "pattern": "^[a-z][A-Za-z0-9]*$"
@@ -2473,8 +3425,32 @@
2473
3425
  }
2474
3426
  },
2475
3427
  "unique": {
2476
- "type": "boolean",
2477
- "const": true
3428
+ "anyOf": [
3429
+ {
3430
+ "type": "boolean",
3431
+ "const": true
3432
+ },
3433
+ {
3434
+ "type": "object",
3435
+ "properties": {
3436
+ "namespace": {
3437
+ "type": "string",
3438
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
3439
+ },
3440
+ "byFields": {
3441
+ "minItems": 1,
3442
+ "maxItems": 8,
3443
+ "type": "array",
3444
+ "items": {
3445
+ "type": "string",
3446
+ "pattern": "^[a-z][A-Za-z0-9]*$"
3447
+ }
3448
+ }
3449
+ },
3450
+ "required": ["namespace", "byFields"],
3451
+ "additionalProperties": false
3452
+ }
3453
+ ]
2478
3454
  }
2479
3455
  },
2480
3456
  "required": ["field", "statuses"],
@@ -2530,7 +3506,8 @@
2530
3506
  },
2531
3507
  "instrumentId": {
2532
3508
  "type": "string",
2533
- "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
3509
+ "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
3510
+ "x-udl-reference": "instrument"
2534
3511
  },
2535
3512
  "refField": {
2536
3513
  "type": "string",