ondc-code-generator 1.0.0 → 1.0.1

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 (32) hide show
  1. package/alpha/docs/rag-docs/confirm.md +301 -0
  2. package/alpha/docs/rag-docs/init.md +422 -0
  3. package/alpha/docs/rag-docs/on_confirm.md +921 -0
  4. package/alpha/docs/rag-docs/on_init.md +823 -0
  5. package/alpha/docs/rag-docs/on_search.md +897 -0
  6. package/alpha/docs/rag-docs/on_select.md +522 -0
  7. package/alpha/docs/rag-docs/on_status.md +854 -0
  8. package/alpha/docs/rag-docs/on_update.md +921 -0
  9. package/alpha/docs/rag-docs/search.md +678 -0
  10. package/alpha/docs/rag-docs/select.md +344 -0
  11. package/alpha/docs/rag-docs/status.md +178 -0
  12. package/alpha/docs/rag-docs/update.md +229 -0
  13. package/alpha/docs/rag-table-docs/confirm.md +63 -0
  14. package/alpha/docs/rag-table-docs/init.md +81 -0
  15. package/alpha/docs/rag-table-docs/on_confirm.md +164 -0
  16. package/alpha/docs/rag-table-docs/on_init.md +146 -0
  17. package/alpha/docs/rag-table-docs/on_search.md +163 -0
  18. package/alpha/docs/rag-table-docs/on_select.md +99 -0
  19. package/alpha/docs/rag-table-docs/on_status.md +153 -0
  20. package/alpha/docs/rag-table-docs/on_update.md +164 -0
  21. package/alpha/docs/rag-table-docs/raw_table.json +11198 -0
  22. package/alpha/docs/rag-table-docs/search.md +128 -0
  23. package/alpha/docs/rag-table-docs/select.md +70 -0
  24. package/alpha/docs/rag-table-docs/status.md +44 -0
  25. package/alpha/docs/rag-table-docs/update.md +51 -0
  26. package/alpha/docs/validPaths.json +34134 -0
  27. package/dist/generator/generators/documentation/markdown-message-generator.js +4 -1
  28. package/dist/generator/generators/rag/rag-generator.d.ts +39 -28
  29. package/dist/generator/generators/rag/rag-generator.js +149 -103
  30. package/dist/generator/generators/rag/rag-table-generator.d.ts +6 -0
  31. package/dist/generator/generators/rag/rag-table-generator.js +16 -6
  32. package/package.json +1 -1
@@ -0,0 +1,422 @@
1
+ ---
2
+ action: init
3
+ codeName: L1validations
4
+ numTests: 49
5
+ generated: 2026-03-10
6
+ domain: ONDC:FIS12
7
+ version: 2.3.0
8
+ ---
9
+
10
+ # L1validations — `init` Validations
11
+
12
+ These are the validation rules applied when processing the `init` API call in the L1validations flow.
13
+ There are **49** validation rules organized into **7** top-level group(s).
14
+
15
+ ---
16
+ ## INIT_CONTEXT
17
+
18
+ This group contains **3** sub-group(s)/validation(s): CONTEXT_REQUIRED, CONTEXT_ENUM, and CONTEXT_REGEX.
19
+
20
+ ---
21
+
22
+ ### CONTEXT_REQUIRED
23
+
24
+ This is a group of **12** sub-validation(s) that all must pass: REQUIRED_CONTEXT_LOCATION_COUNTRY_CODE, REQUIRED_CONTEXT_LOCATION_CITY_CODE, REQUIRED_CONTEXT_DOMAIN, REQUIRED_CONTEXT_TIMESTAMP, REQUIRED_CONTEXT_BAP_ID, REQUIRED_CONTEXT_BAP_URI, REQUIRED_CONTEXT_TRANSACTION_ID, REQUIRED_CONTEXT_MESSAGE_ID, REQUIRED_CONTEXT_VERSION, REQUIRED_CONTEXT_TTL, REQUIRED_CONTEXT_BPP_ID, and REQUIRED_CONTEXT_BPP_URI.
25
+
26
+ ---
27
+
28
+ **REQUIRED_CONTEXT_LOCATION_COUNTRY_CODE**
29
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
30
+
31
+ - $.context.location.country.code must be present in the payload
32
+
33
+ **REQUIRED_CONTEXT_LOCATION_CITY_CODE**
34
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
35
+
36
+ - $.context.location.city.code must be present in the payload
37
+
38
+ **REQUIRED_CONTEXT_DOMAIN**
39
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
40
+
41
+ - $.context.domain must be present in the payload
42
+
43
+ **REQUIRED_CONTEXT_TIMESTAMP**
44
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
45
+
46
+ - $.context.timestamp must be present in the payload
47
+
48
+ **REQUIRED_CONTEXT_BAP_ID**
49
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
50
+
51
+ - $.context.bap_id must be present in the payload
52
+
53
+ **REQUIRED_CONTEXT_BAP_URI**
54
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
55
+
56
+ - $.context.bap_uri must be present in the payload
57
+
58
+ **REQUIRED_CONTEXT_TRANSACTION_ID**
59
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
60
+
61
+ - $.context.transaction_id must be present in the payload
62
+
63
+ **REQUIRED_CONTEXT_MESSAGE_ID**
64
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
65
+
66
+ - $.context.message_id must be present in the payload
67
+
68
+ **REQUIRED_CONTEXT_VERSION**
69
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
70
+
71
+ - $.context.version must be present in the payload
72
+
73
+ **REQUIRED_CONTEXT_TTL**
74
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
75
+
76
+ - $.context.ttl must be present in the payload
77
+
78
+ **REQUIRED_CONTEXT_BPP_ID**
79
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
80
+
81
+ - $.context.bpp_id must be present in the payload
82
+
83
+ **REQUIRED_CONTEXT_BPP_URI**
84
+ `group: INIT_CONTEXT > CONTEXT_REQUIRED | type: leaf`
85
+
86
+ - $.context.bpp_uri must be present in the payload
87
+
88
+ ### CONTEXT_ENUM
89
+
90
+ This is a group of **2** sub-validation(s) that all must pass: VALID_CONTEXT_LOCATION_COUNTRY_CODE and VALID_CONTEXT_DOMAIN.
91
+
92
+ ---
93
+
94
+ **VALID_CONTEXT_LOCATION_COUNTRY_CODE**
95
+ `group: INIT_CONTEXT > CONTEXT_ENUM | type: leaf`
96
+
97
+ - All elements of $.context.location.country.code must be in ["IND"]
98
+
99
+ > **Skip if:**
100
+ > - $.context.location.country.code is not in the payload
101
+
102
+ **VALID_CONTEXT_DOMAIN**
103
+ `group: INIT_CONTEXT > CONTEXT_ENUM | type: leaf`
104
+
105
+ - All elements of $.context.domain must be in ["ONDC:FIS12"]
106
+
107
+ > **Skip if:**
108
+ > - $.context.domain is not in the payload
109
+
110
+ ### CONTEXT_REGEX
111
+
112
+ This is a group of **7** sub-validation(s) that all must pass: REGEX_CONTEXT_LOCATION_CITY_CODE, REGEX_CONTEXT_TIMESTAMP_1, REGEX_CONTEXT_BAP_ID, REGEX_CONTEXT_BAP_URI, REQUIRED_CONTEXT_TTL, REGEX_CONTEXT_BPP_ID, and REGEX_CONTEXT_BPP_URI.
113
+
114
+ ---
115
+
116
+ **REGEX_CONTEXT_LOCATION_CITY_CODE**
117
+ `group: INIT_CONTEXT > CONTEXT_REGEX | type: leaf`
118
+
119
+ - All elements of $.context.location.city.code must follow every regex in ["(\\*)|(^std\\:[0-9]{2,4}$)"]
120
+
121
+ > **Skip if:**
122
+ > - $.context.location.city.code is not in the payload
123
+
124
+ **REGEX_CONTEXT_TIMESTAMP_1**
125
+ `group: INIT_CONTEXT > CONTEXT_REGEX | type: leaf`
126
+
127
+ - All elements of $.context.timestamp must follow every regex in ["^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"]
128
+
129
+ > **Skip if:**
130
+ > - $.context.timestamp is not in the payload
131
+
132
+ **REGEX_CONTEXT_BAP_ID**
133
+ `group: INIT_CONTEXT > CONTEXT_REGEX | type: leaf`
134
+
135
+ - All elements of $.context.bap_id must follow every regex in ["^(?!.*\b(?:http|https|www)\b)[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$"]
136
+
137
+ > **Skip if:**
138
+ > - $.context.bap_id is not in the payload
139
+
140
+ **REGEX_CONTEXT_BAP_URI**
141
+ `group: INIT_CONTEXT > CONTEXT_REGEX | type: leaf`
142
+
143
+ - All elements of $.context.bap_uri must follow every regex in ["^https:\/\/(www\.)?[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+(/)?$"]
144
+
145
+ > **Skip if:**
146
+ > - $.context.bap_uri is not in the payload
147
+
148
+ **REQUIRED_CONTEXT_TTL**
149
+ `group: INIT_CONTEXT > CONTEXT_REGEX | type: leaf`
150
+
151
+ - All elements of $.context.ttl must follow every regex in ["^P(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$"]
152
+
153
+ > **Skip if:**
154
+ > - $.context.ttl is not in the payload
155
+
156
+ **REGEX_CONTEXT_BPP_ID**
157
+ `group: INIT_CONTEXT > CONTEXT_REGEX | type: leaf`
158
+
159
+ - All elements of $.context.bpp_id must follow every regex in ["^(?!.*\b(?:http|https|www)\b)[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$"]
160
+
161
+ > **Skip if:**
162
+ > - $.context.bpp_id is not in the payload
163
+
164
+ **REGEX_CONTEXT_BPP_URI**
165
+ `group: INIT_CONTEXT > CONTEXT_REGEX | type: leaf`
166
+
167
+ - All elements of $.context.bpp_uri must follow every regex in ["^https:\/\/(www\.)?[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+(/)?$"]
168
+
169
+ > **Skip if:**
170
+ > - $.context.bpp_uri is not in the payload
171
+
172
+ ---
173
+
174
+ ## REQUIRED_PROVIDER_ID
175
+
176
+ `group: top-level | type: leaf`
177
+
178
+ - $.message.order.provider.id must be present in the payload
179
+
180
+ ---
181
+
182
+ ## REQUIRED_ITEM_FIELDS
183
+
184
+ This group contains **3** sub-group(s)/validation(s): REQUIRED_ITEM_ID, REQUIRED_PARENT_ITEM_ID, and REQUIRED_XINPUT_ITEMS.
185
+
186
+ ---
187
+
188
+ **REQUIRED_ITEM_ID**
189
+ `group: REQUIRED_ITEM_FIELDS | type: leaf`
190
+
191
+ - $.message.order.items[*].id must be present in the payload
192
+
193
+ **REQUIRED_PARENT_ITEM_ID**
194
+ `group: REQUIRED_ITEM_FIELDS | type: leaf`
195
+
196
+ - $.message.order.items[*].parent_item_id must be present in the payload
197
+
198
+ ### REQUIRED_XINPUT_ITEMS
199
+
200
+ This is a group of **3** sub-validation(s) that all must pass: REQUIRED_HEAD_CODE, REQUIRED_FORM_ID, and REQUIRED_SUBMISSION_ID.
201
+
202
+ > **Skip if:**
203
+ > - $.message.order.items[*].xinput.form.id must **not** be present in the payload
204
+
205
+ ---
206
+
207
+ **REQUIRED_HEAD_CODE**
208
+ `group: REQUIRED_ITEM_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
209
+
210
+ - $.message.order.items[*].xinput.head.descriptor.code must be present in the payload
211
+
212
+ **REQUIRED_FORM_ID**
213
+ `group: REQUIRED_ITEM_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
214
+
215
+ - $.message.order.items[*].xinput.form.id must be present in the payload
216
+
217
+ **REQUIRED_SUBMISSION_ID**
218
+ `group: REQUIRED_ITEM_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
219
+
220
+ - $.message.order.items[*].xinput.form_response.submission_id must be present in the payload
221
+
222
+ > **Skip if:**
223
+ > - $.message.order.items[*].xinput.form_response.submission_id is not in the payload
224
+
225
+ ---
226
+
227
+ ## INIT_PAYMENT_ITEMS
228
+
229
+ This group contains **2** sub-group(s)/validation(s): REQUIRED_PAYMENT_ITEMS and VALID_PAYMENT_ITEMS.
230
+
231
+ ---
232
+
233
+ ### REQUIRED_PAYMENT_ITEMS
234
+
235
+ This is a group of **7** sub-validation(s) that all must pass: REQUIRED_PAYMENT_ITEMS, REQUIRED_PAYMENT_ID, REQUIRED_PAYMENT_STATUS, REQUIRED_PAYMENT_COLLECTED_BY, REQUIRED_PAYMENT_BANK_ACCOUNT_NUMBER, REQUIRED_PAYMENT_BANK_CODE, and REQUIRED_PAYMENT_LABEL.
236
+
237
+ ---
238
+
239
+ **REQUIRED_PAYMENT_ITEMS**
240
+ `group: INIT_PAYMENT_ITEMS > REQUIRED_PAYMENT_ITEMS | type: leaf`
241
+
242
+ - $.message.order.payments[*].type must be present in the payload
243
+
244
+ **REQUIRED_PAYMENT_ID**
245
+ `group: INIT_PAYMENT_ITEMS > REQUIRED_PAYMENT_ITEMS | type: leaf`
246
+
247
+ - $.message.order.payments[*].id must be present in the payload
248
+
249
+ **REQUIRED_PAYMENT_STATUS**
250
+ `group: INIT_PAYMENT_ITEMS > REQUIRED_PAYMENT_ITEMS | type: leaf`
251
+
252
+ - $.message.order.payments[*].status must be present in the payload
253
+
254
+ **REQUIRED_PAYMENT_COLLECTED_BY**
255
+ `group: INIT_PAYMENT_ITEMS > REQUIRED_PAYMENT_ITEMS | type: leaf`
256
+
257
+ - $.message.order.payments[*].collected_by must be present in the payload
258
+
259
+ > **Skip if:**
260
+ > - not all elements of $.message.order.payments[*].time.label are in ["LOAN_DISBURSMENT"]
261
+
262
+ **REQUIRED_PAYMENT_BANK_ACCOUNT_NUMBER**
263
+ `group: INIT_PAYMENT_ITEMS > REQUIRED_PAYMENT_ITEMS | type: leaf`
264
+
265
+ - $.message.order.payments[*].params.bank_account_number must be present in the payload
266
+
267
+ > **Skip if:**
268
+ > - not all elements of $.message.order.payments[*].time.label are in ["LOAN_DISBURSMENT"]
269
+
270
+ **REQUIRED_PAYMENT_BANK_CODE**
271
+ `group: INIT_PAYMENT_ITEMS > REQUIRED_PAYMENT_ITEMS | type: leaf`
272
+
273
+ - $.message.order.payments[*].params.bank_code must be present in the payload
274
+
275
+ > **Skip if:**
276
+ > - not all elements of $.message.order.payments[*].time.label are in ["LOAN_DISBURSMENT"]
277
+
278
+ **REQUIRED_PAYMENT_LABEL**
279
+ `group: INIT_PAYMENT_ITEMS > REQUIRED_PAYMENT_ITEMS | type: leaf`
280
+
281
+ - $.message.order.payments[*].time.label must be present in the payload
282
+
283
+ ### VALID_PAYMENT_ITEMS
284
+
285
+ This is a group of **4** sub-validation(s) that all must pass: VALID_PAYMENT_TYPE, VALID_PAYMENT_STATUS, VALID_PAYMENT_COLLECTOR, and VALID_PAYMENT_LABEL.
286
+
287
+ ---
288
+
289
+ **VALID_PAYMENT_TYPE**
290
+ `group: INIT_PAYMENT_ITEMS > VALID_PAYMENT_ITEMS | type: leaf`
291
+
292
+ - All elements of $.message.order.payments[*].type must be in ["ON_ORDER", "ON_FULFILLMENT", "POST_FULFILLMENT"]
293
+
294
+ > **Skip if:**
295
+ > - $.message.order.payments[*].type is not in the payload
296
+
297
+ **VALID_PAYMENT_STATUS**
298
+ `group: INIT_PAYMENT_ITEMS > VALID_PAYMENT_ITEMS | type: leaf`
299
+
300
+ - All elements of $.message.order.payments[*].status must be in ["NOT-PAID", "PAID", "DEFERRED", "DELAYED"]
301
+
302
+ > **Skip if:**
303
+ > - $.message.order.payments[*].status is not in the payload
304
+
305
+ **VALID_PAYMENT_COLLECTOR**
306
+ `group: INIT_PAYMENT_ITEMS > VALID_PAYMENT_ITEMS | type: leaf`
307
+
308
+ - All elements of $.message.order.payments[*].collected_by must be in ["BPP", "CONSUMER"]
309
+
310
+ > **Skip if:**
311
+ > - $.message.order.payments[*].collected_by is not in the payload
312
+
313
+ **VALID_PAYMENT_LABEL**
314
+ `group: INIT_PAYMENT_ITEMS > VALID_PAYMENT_ITEMS | type: leaf`
315
+
316
+ - All elements of $.message.order.payments[*].time.label must be in ["INSTALLMENT", "LOAN_DISBURSMENT"]
317
+
318
+ > **Skip if:**
319
+ > - $.message.order.payments[*].time.label is not in the payload
320
+
321
+ ---
322
+
323
+ ## REQUIRED_FULFILMENT_ITEMS
324
+
325
+ This group contains **2** sub-group(s)/validation(s): REQUIRED_FULFILLMENT_ID and REQUIRED_CUSTOMER_ITEMS.
326
+
327
+ ---
328
+
329
+ **REQUIRED_FULFILLMENT_ID**
330
+ `group: REQUIRED_FULFILMENT_ITEMS | type: leaf`
331
+
332
+ - $.message.order.fulfillments[*].id must be present in the payload
333
+
334
+ ### REQUIRED_CUSTOMER_ITEMS
335
+
336
+ This group contains **5** sub-group(s)/validation(s): REQUIRED_CUSTOMER_DOB, REQUIRED_CUSTOMER_GENDER, REQUIRED_CREDS, REQUIRED_CUSTOMER_CONTACT_EMAIL, and REQUIRED_CUSTOMER_CONTACT_PHONE.
337
+
338
+ > **Skip if:**
339
+ > - $.message.order.fulfillments[*].customer.person.name must **not** be present in the payload
340
+
341
+ ---
342
+
343
+ **REQUIRED_CUSTOMER_DOB**
344
+ `group: REQUIRED_FULFILMENT_ITEMS > REQUIRED_CUSTOMER_ITEMS | type: leaf`
345
+
346
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.name must be present in the payload
347
+
348
+ **REQUIRED_CUSTOMER_GENDER**
349
+ `group: REQUIRED_FULFILMENT_ITEMS > REQUIRED_CUSTOMER_ITEMS | type: leaf`
350
+
351
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.name must be present in the payload
352
+
353
+ #### REQUIRED_CREDS
354
+
355
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_CUSTOMER_CREDS_ID and REQUIRED_CUSTOMER_CREDS_TYPE.
356
+
357
+ > **Skip if:**
358
+ > - $.message.order.fulfillments[*].customer.person.creds[*].id must **not** be present in the payload
359
+
360
+ ---
361
+
362
+ **REQUIRED_CUSTOMER_CREDS_ID**
363
+ `group: REQUIRED_FULFILMENT_ITEMS > REQUIRED_CUSTOMER_ITEMS > REQUIRED_CREDS | type: leaf`
364
+
365
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.creds[*].id must be present in the payload
366
+
367
+ **REQUIRED_CUSTOMER_CREDS_TYPE**
368
+ `group: REQUIRED_FULFILMENT_ITEMS > REQUIRED_CUSTOMER_ITEMS > REQUIRED_CREDS | type: leaf`
369
+
370
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.creds[*].id must be present in the payload
371
+
372
+ **REQUIRED_CUSTOMER_CONTACT_EMAIL**
373
+ `group: REQUIRED_FULFILMENT_ITEMS > REQUIRED_CUSTOMER_ITEMS | type: leaf`
374
+
375
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.name must be present in the payload
376
+
377
+ **REQUIRED_CUSTOMER_CONTACT_PHONE**
378
+ `group: REQUIRED_FULFILMENT_ITEMS > REQUIRED_CUSTOMER_ITEMS | type: leaf`
379
+
380
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.name must be present in the payload
381
+
382
+ ---
383
+
384
+ ## INIT_PAYMENT_TAGS
385
+
386
+ This is a group of **2** sub-validation(s) that all must pass: VALID_PAYMENT_TAGS and REQUIRED_ACCOUNT_DETAILS.
387
+
388
+ ---
389
+
390
+ **VALID_PAYMENT_TAGS**
391
+ `group: INIT_PAYMENT_TAGS | type: leaf`
392
+
393
+ - All elements of $.message.order.payments[*].tags[*].descriptor.code must be in ["ACCOUNT_DETAILS", "BREAKUP"]
394
+
395
+ > **Skip if:**
396
+ > - $.message.order.payments[*].tags[*].descriptor.code is not in the payload
397
+
398
+ **REQUIRED_ACCOUNT_DETAILS**
399
+ `group: INIT_PAYMENT_TAGS | type: leaf | scope: $.message.order.payments[*].tags[?(@.descriptor.code == ACCOUNT_DETAILS)]`
400
+
401
+ - All elements of $.message.order.payments[*].tags[?(@.descriptor.code == ACCOUNT_DETAILS)].list[*].descriptor.code must be in ["ACCOUNT_TYPE", "ACCOUNT_HOLDER_NAME"]
402
+
403
+ ---
404
+
405
+ ## INIT_BAP_TERM_TAGS
406
+
407
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_TLC_TAGS and REQUIRED_BAP_TERMS.
408
+
409
+ ---
410
+
411
+ **REQUIRED_TLC_TAGS**
412
+ `group: INIT_BAP_TERM_TAGS | type: leaf`
413
+
414
+ - All elements of $.message.order.tags[*].descriptor.code must be in ["BAP_TERMS", "BPP_TERMS"]
415
+
416
+ > **Skip if:**
417
+ > - $.message.order.tags[*].descriptor.code is not in the payload
418
+
419
+ **REQUIRED_BAP_TERMS**
420
+ `group: INIT_BAP_TERM_TAGS | type: leaf | scope: $.message.order.tags[?(@.descriptor.code == BAP_TERMS)]`
421
+
422
+ - All elements of $.message.order.tags[?(@.descriptor.code == BAP_TERMS)].list[*].descriptor.code must be in ["STATIC_TERMS", "OFFLINE_CONTRACT"]