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,921 @@
1
+ ---
2
+ action: on_update
3
+ codeName: L1validations
4
+ numTests: 109
5
+ generated: 2026-03-10
6
+ domain: ONDC:FIS12
7
+ version: 2.3.0
8
+ ---
9
+
10
+ # L1validations — `on_update` Validations
11
+
12
+ These are the validation rules applied when processing the `on_update` API call in the L1validations flow.
13
+ There are **109** validation rules organized into **13** top-level group(s).
14
+
15
+ ---
16
+ ## ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
35
+
36
+ - $.context.location.city.code must be present in the payload
37
+
38
+ **REQUIRED_CONTEXT_DOMAIN**
39
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
40
+
41
+ - $.context.domain must be present in the payload
42
+
43
+ **REQUIRED_CONTEXT_TIMESTAMP**
44
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
45
+
46
+ - $.context.timestamp must be present in the payload
47
+
48
+ **REQUIRED_CONTEXT_BAP_ID**
49
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
50
+
51
+ - $.context.bap_id must be present in the payload
52
+
53
+ **REQUIRED_CONTEXT_BAP_URI**
54
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
55
+
56
+ - $.context.bap_uri must be present in the payload
57
+
58
+ **REQUIRED_CONTEXT_TRANSACTION_ID**
59
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
60
+
61
+ - $.context.transaction_id must be present in the payload
62
+
63
+ **REQUIRED_CONTEXT_MESSAGE_ID**
64
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
65
+
66
+ - $.context.message_id must be present in the payload
67
+
68
+ **REQUIRED_CONTEXT_VERSION**
69
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
70
+
71
+ - $.context.version must be present in the payload
72
+
73
+ **REQUIRED_CONTEXT_TTL**
74
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
75
+
76
+ - $.context.ttl must be present in the payload
77
+
78
+ **REQUIRED_CONTEXT_BPP_ID**
79
+ `group: ON_UPDATE_CONTEXT > CONTEXT_REQUIRED | type: leaf`
80
+
81
+ - $.context.bpp_id must be present in the payload
82
+
83
+ **REQUIRED_CONTEXT_BPP_URI**
84
+ `group: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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: ON_UPDATE_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_ORDER_ITEMS
175
+
176
+ This group contains **2** sub-group(s)/validation(s): REQUIRED_ITEMS and VALID_ENUM_ITEMS.
177
+
178
+ ---
179
+
180
+ ### REQUIRED_ITEMS
181
+
182
+ This is a group of **5** sub-validation(s) that all must pass: REQUIRED_ORDER_ID, REQUIRED_ORDER_STATUS, REQUIRED_ORDER_CREATED_AT, REQUIRED_ORDER_UPDATED_AT, and CREATED_AT_UPDATED_AT_EQUALITY.
183
+
184
+ ---
185
+
186
+ **REQUIRED_ORDER_ID**
187
+ `group: REQUIRED_ORDER_ITEMS > REQUIRED_ITEMS | type: leaf`
188
+
189
+ - $.message.order.id must be present in the payload
190
+
191
+ **REQUIRED_ORDER_STATUS**
192
+ `group: REQUIRED_ORDER_ITEMS > REQUIRED_ITEMS | type: leaf`
193
+
194
+ - $.message.order.status must be present in the payload
195
+
196
+ **REQUIRED_ORDER_CREATED_AT**
197
+ `group: REQUIRED_ORDER_ITEMS > REQUIRED_ITEMS | type: leaf`
198
+
199
+ - $.message.order.created_at must be present in the payload
200
+
201
+ **REQUIRED_ORDER_UPDATED_AT**
202
+ `group: REQUIRED_ORDER_ITEMS > REQUIRED_ITEMS | type: leaf`
203
+
204
+ - $.message.order.created_at must be present in the payload
205
+
206
+ **CREATED_AT_UPDATED_AT_EQUALITY**
207
+ `group: REQUIRED_ORDER_ITEMS > REQUIRED_ITEMS | type: leaf`
208
+
209
+ - $.message.order.created_at must equal $.message.order.updated_at
210
+
211
+ ### VALID_ENUM_ITEMS
212
+
213
+ This is a group of **3** sub-validation(s) that all must pass: VALID_ENUM_ORDER_STATUS, REGEX_ON_CONFIRM_CREATED_AT, and REGEX_ON_CONFIRM_UPDATED_AT.
214
+
215
+ ---
216
+
217
+ **VALID_ENUM_ORDER_STATUS**
218
+ `group: REQUIRED_ORDER_ITEMS > VALID_ENUM_ITEMS | type: leaf`
219
+
220
+ - At least one of $.message.order.status must be in ["ACTIVE", "COMPLETED", "CANCELLED"]
221
+
222
+ **REGEX_ON_CONFIRM_CREATED_AT**
223
+ `group: REQUIRED_ORDER_ITEMS > VALID_ENUM_ITEMS | type: leaf`
224
+
225
+ - All elements of $.message.order.created_at must follow every regex in ["^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"]
226
+
227
+ **REGEX_ON_CONFIRM_UPDATED_AT**
228
+ `group: REQUIRED_ORDER_ITEMS > VALID_ENUM_ITEMS | type: leaf`
229
+
230
+ - All elements of $.message.order.updated_at must follow every regex in ["^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$"]
231
+
232
+ ---
233
+
234
+ ## ON_SELECT_PROVIDER
235
+
236
+ This is a group of **4** sub-validation(s) that all must pass: ON_SELECT_PROVIDER_ID, ON_SELECT_PROVIDER_NAME, ON_SELECT_PROVIDER_IMAGES_URL, and ON_SELECT_PROVIDER_IMAGES_SIZE_TYPE.
237
+
238
+ > **Skip if:**
239
+ > - $.message.order.provider.id must **not** be present in the payload
240
+
241
+ ---
242
+
243
+ **ON_SELECT_PROVIDER_ID**
244
+ `group: ON_SELECT_PROVIDER | type: leaf`
245
+
246
+ - $.message.order.provider.id must be present in the payload
247
+
248
+ **ON_SELECT_PROVIDER_NAME**
249
+ `group: ON_SELECT_PROVIDER | type: leaf`
250
+
251
+ - $.message.order.provider.descriptor.name must be present in the payload
252
+
253
+ **ON_SELECT_PROVIDER_IMAGES_URL**
254
+ `group: ON_SELECT_PROVIDER | type: leaf`
255
+
256
+ - $.message.order.provider.descriptor.images[*].url must be present in the payload
257
+
258
+ **ON_SELECT_PROVIDER_IMAGES_SIZE_TYPE**
259
+ `group: ON_SELECT_PROVIDER | type: leaf`
260
+
261
+ - $.message.order.provider.descriptor.images[*].size_type must be present in the payload
262
+
263
+ ---
264
+
265
+ ## ON_SELECT_PROVIDER_TAGS
266
+
267
+ This is a group of **3** sub-validation(s) that all must pass: VALID_PROVODER_TAGS, REQUIRED_CONTACT_INFO, and REQUIRED_LSP_INFO.
268
+
269
+ ---
270
+
271
+ **VALID_PROVODER_TAGS**
272
+ `group: ON_SELECT_PROVIDER_TAGS | type: leaf`
273
+
274
+ - All elements of $.message.order.provider.tags[*].descriptor.code must be in ["CONTACT_INFO", "LSP_INFO"]
275
+
276
+ > **Skip if:**
277
+ > - $.message.order.provider.tags[*].descriptor.code is not in the payload
278
+
279
+ **REQUIRED_CONTACT_INFO**
280
+ `group: ON_SELECT_PROVIDER_TAGS | type: leaf | scope: $.message.order.provider.tags[?(@.descriptor.code == CONTACT_INFO)]`
281
+
282
+ - All elements of $.message.order.provider.tags[?(@.descriptor.code == CONTACT_INFO)].list[*].descriptor.code must be in ["GRO_NAME", "GRO_EMAIL", "GRO_CONTACT_NUMBER", "CUSTOMER_SUPPORT_LINK", "CUSTOMER_SUPPORT_CONTACT_NUMBER", "CUSTOMER_SUPPORT_CONTACT_NUMBER"]
283
+
284
+ **REQUIRED_LSP_INFO**
285
+ `group: ON_SELECT_PROVIDER_TAGS | type: leaf | scope: $.message.order.provider.tags[?(@.descriptor.code == LSP_INFO)]`
286
+
287
+ - All elements of $.message.order.provider.tags[?(@.descriptor.code == LSP_INFO)].list[*].descriptor.code must be in ["LSP_NAME", "LSP_EMAIL", "LSP_CONTACT_NUMBER", "LSP_ADDRESS"]
288
+
289
+ ---
290
+
291
+ ## ON_INIT_ITEMS
292
+
293
+ This group contains **1** sub-group(s)/validation(s): REQUIRED_ITEMS.
294
+
295
+ ---
296
+
297
+ ### REQUIRED_ITEMS
298
+
299
+ This group contains **8** sub-group(s)/validation(s): REQUIRED_ITEM_ID, REQUIRED_PARENT_ITEM_ID, REQUIRED_ITEM_DESCRIPTOR_CODE, REQUIRED_ITEM_CATEGORY_ID, ON_SEARCH_ITEM_PRICE_CURRENCY, ON_SEARCH_ITEM_PRICE_VALUE, ON_SELECT_ITEM_FULFILLMENT_IDS, and REQUIRED_XINPUT_FIELDS.
300
+
301
+ ---
302
+
303
+ **REQUIRED_ITEM_ID**
304
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS | type: leaf`
305
+
306
+ - $.message.order.items[*].id must be present in the payload
307
+
308
+ **REQUIRED_PARENT_ITEM_ID**
309
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS | type: leaf`
310
+
311
+ - $.message.order.items[*].parent_item_id must be present in the payload
312
+
313
+ **REQUIRED_ITEM_DESCRIPTOR_CODE**
314
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS | type: leaf`
315
+
316
+ - $.message.order.items[*].descriptor.code must be present in the payload
317
+
318
+ **REQUIRED_ITEM_CATEGORY_ID**
319
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS | type: leaf`
320
+
321
+ - $.message.order.items[*].category_ids[*] must be present in the payload
322
+
323
+ **ON_SEARCH_ITEM_PRICE_CURRENCY**
324
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS | type: leaf`
325
+
326
+ - $.message.order.items[*].price.currency must be present in the payload
327
+
328
+ **ON_SEARCH_ITEM_PRICE_VALUE**
329
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS | type: leaf`
330
+
331
+ - $.message.order.items[*].price.value must be present in the payload
332
+
333
+ **ON_SELECT_ITEM_FULFILLMENT_IDS**
334
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS | type: leaf`
335
+
336
+ - $.message.order.items[*].fulfillment_ids[*] must be present in the payload
337
+
338
+ #### REQUIRED_XINPUT_FIELDS
339
+
340
+ This group contains **2** sub-group(s)/validation(s): REQUIRED_XINPUT_ITEMS and VALID_XINPUT_FIELDS.
341
+
342
+ > **Skip if:**
343
+ > - $.message.order.items[*].xinput.form.id must **not** be present in the payload
344
+
345
+ ---
346
+
347
+ ##### REQUIRED_XINPUT_ITEMS
348
+
349
+ This group contains **7** sub-group(s)/validation(s): REQUIRED_HEAD_CODE, REQUIRED_HEAD_NAME, REQUIRED_FORM_HEADINGS, REQUIRED_FORM_ID, REQUIRED_FORM_MIME_TYPE, REQUIRED_FORM_RESPONSE, and REQUIRED_SUBMISSION_ID.
350
+
351
+ ---
352
+
353
+ **REQUIRED_HEAD_CODE**
354
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
355
+
356
+ - $.message.order.items[*].xinput.head.descriptor.code must be present in the payload
357
+
358
+ > **Skip if:**
359
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
360
+
361
+ **REQUIRED_HEAD_NAME**
362
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
363
+
364
+ - $.message.order.items[*].xinput.head.descriptor.name must be present in the payload
365
+
366
+ > **Skip if:**
367
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
368
+
369
+ **REQUIRED_FORM_HEADINGS**
370
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
371
+
372
+ - $.message.order.items[*].xinput.head.headings[*] must be present in the payload
373
+
374
+ > **Skip if:**
375
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
376
+
377
+ **REQUIRED_FORM_ID**
378
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
379
+
380
+ - $.message.order.items[*].xinput.form.id must be present in the payload
381
+
382
+ **REQUIRED_FORM_MIME_TYPE**
383
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
384
+
385
+ - $.message.order.items[*].xinput.form.mime_type must be present in the payload
386
+
387
+ > **Skip if:**
388
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
389
+
390
+ ###### REQUIRED_FORM_RESPONSE
391
+
392
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_FORM_STATUS and REQUIRED_FORM_SUBMISSION_ID.
393
+
394
+ > **Skip if:**
395
+ > - $.message.order.items[*].xinput.form_response.submission_id must **not** be present in the payload
396
+
397
+ ---
398
+
399
+ **REQUIRED_FORM_STATUS**
400
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS > REQUIRED_FORM_RESPONSE | type: leaf`
401
+
402
+ - $.message.order.items[*].xinput.form_response.status must be present in the payload
403
+
404
+ **REQUIRED_FORM_SUBMISSION_ID**
405
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS > REQUIRED_FORM_RESPONSE | type: leaf`
406
+
407
+ - $.message.order.items[*].xinput.form_response.submission_id must be present in the payload
408
+
409
+ **REQUIRED_SUBMISSION_ID**
410
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > REQUIRED_XINPUT_ITEMS | type: leaf`
411
+
412
+ - $.message.order.items[*].xinput.form_response.submission_id must be present in the payload
413
+
414
+ > **Skip if:**
415
+ > - $.message.order.items[*].xinput.form_response.submission_id is not in the payload
416
+
417
+ ##### VALID_XINPUT_FIELDS
418
+
419
+ This is a group of **1** sub-validation(s) that all must pass: VALID_FORM_HEADINGS.
420
+
421
+ ---
422
+
423
+ **VALID_FORM_HEADINGS**
424
+ `group: ON_INIT_ITEMS > REQUIRED_ITEMS > REQUIRED_XINPUT_FIELDS > VALID_XINPUT_FIELDS | type: leaf`
425
+
426
+ - All elements of $.message.order.items[*].xinput.head.headings[*] must be in ["KYC", "EMANDATE", "LOAN_AGREEMENT", "INDIVIDUAL_KYC", "ENTITY_KYC", "ENACH", "ESIGN"]
427
+
428
+ > **Skip if:**
429
+ > - $.message.order.items[*].xinput.form_response.submission_id is in the payload
430
+
431
+ ---
432
+
433
+ ## ON_SELECT_ITEM_TAGS
434
+
435
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_LOAN_INFO and REQUIRED_LOAN_OFFER.
436
+
437
+ > **Skip if:**
438
+ > **All of the following must be true:**
439
+ > - $.message.order.items[*].tags[*].descriptor.code must **not** be present in the payload
440
+ > - Not all elements of $.message.order.items[*].tags[*].descriptor.code may be in ["LOAN_INFO", "LOAN_OFFER"]
441
+
442
+ ---
443
+
444
+ **REQUIRED_LOAN_INFO**
445
+ `group: ON_SELECT_ITEM_TAGS | type: leaf | scope: $.message.order.items[*].tags[?(@.descriptor.code == LOAN_INFO)]`
446
+
447
+ - All elements of $.message.order.items[*].tags[?(@.descriptor.code == LOAN_INFO)].list[*].descriptor.code must be in ["INTEREST_RATE", "TERM", "INTEREST_RATE_TYPE", "APPLICATION_FEE", "FORECLOSURE_FEE", "INTEREST_RATE_CONVERSION_CHARGE", "DELAY_PENALTY_FEE", "OTHER_PENALTY_FEE", "ANNUAL_PERCENTAGE_RATE", "REPAYMENT_FREQUENCY", "NUMBER_OF_INSTALLMENTS", "TNC_LINK", "COOL_OFF_PERIOD", "INSTALLMENT_AMOUNT", "KFS_LINK", "INVOICE_NUMBER", "WORKING_CAPITAL_LIMIT", "INSURANCE_CHARGES", "RATE_ANNUALISED_PENAL_CHARGES", "KYC_MODE", "CO_APPLICANT"]
448
+
449
+ **REQUIRED_LOAN_OFFER**
450
+ `group: ON_SELECT_ITEM_TAGS | type: leaf | scope: $.message.order.items[*].tags[?(@.descriptor.code == LOAN_OFFER)]`
451
+
452
+ - All elements of $.message.order.items[*].tags[?(@.descriptor.code == LOAN_OFFER)].list[*].descriptor.code must be in ["PRINCIPAL_AMOUNT", "INTEREST_AMOUNT", "PROCESSING_FEE", "OTHER_UPFRONT_CHARGES", "INSURANCE_CHARGES", "NET_DISBURSED_AMOUNT", "OTHER_CHARGES", "OFFER_VALIDITY", "WORKING_CAPITAL_LIMIT", "CURRENT_UTLIZATION"]
453
+
454
+ ---
455
+
456
+ ## ON_INIT_FULFILLMENTS
457
+
458
+ This group contains **3** sub-group(s)/validation(s): REQUIRED_FULFILLMENT_ITEMS, VALID_FULFILLMENT_ITEMS, and VALID_FULFILLMENT_TAGS.
459
+
460
+ ---
461
+
462
+ ### REQUIRED_FULFILLMENT_ITEMS
463
+
464
+ This group contains **7** sub-group(s)/validation(s): REQUIRED_FULFILLMENT_ID, REQUIRED_FULFILLMENT_TYPE, REQUIRED_CREDS, REQUIRED_CUSTOMER_NAME, REQUIRED_CUSTOMER_CONTACT_DETAILS, REQUIRED_CUSTOMER_ORG_DETAILS, and REQUIRED_FULFILLMENT_STATE_CODE.
465
+
466
+ ---
467
+
468
+ **REQUIRED_FULFILLMENT_ID**
469
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS | type: leaf`
470
+
471
+ - $.message.order.fulfillments[*].id must be present in the payload
472
+
473
+ **REQUIRED_FULFILLMENT_TYPE**
474
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS | type: leaf`
475
+
476
+ - $.message.order.fulfillments[*].type must be present in the payload
477
+
478
+ #### REQUIRED_CREDS
479
+
480
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_CUSTOMER_CREDS_ID and REQUIRED_CUSTOMER_CREDS_TYPE.
481
+
482
+ > **Skip if:**
483
+ > - $.message.order.fulfillments[*].customer.person.creds[*].id must **not** be present in the payload
484
+
485
+ ---
486
+
487
+ **REQUIRED_CUSTOMER_CREDS_ID**
488
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CREDS | type: leaf`
489
+
490
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.creds[*].id must be present in the payload
491
+
492
+ **REQUIRED_CUSTOMER_CREDS_TYPE**
493
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CREDS | type: leaf`
494
+
495
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.person.creds[*].id must be present in the payload
496
+
497
+ **REQUIRED_CUSTOMER_NAME**
498
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS | type: leaf`
499
+
500
+ - $.message.order.fulfillments[*].customer.person.name must be present in the payload
501
+
502
+ > **Skip if:**
503
+ > - $.message.order.fulfillments[*].customer.person.name is not in the payload
504
+
505
+ #### REQUIRED_CUSTOMER_CONTACT_DETAILS
506
+
507
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_CUSTOMER_CONTACT_NUMBER and REQUIRED_CUSTOMER_CONTACT_EMAIL.
508
+
509
+ > **Skip if:**
510
+ > - $.message.order.fulfillments[*].customer.contact.phone must **not** be present in the payload
511
+
512
+ ---
513
+
514
+ **REQUIRED_CUSTOMER_CONTACT_NUMBER**
515
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_CONTACT_DETAILS | type: leaf`
516
+
517
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.contact.phone must be present in the payload
518
+
519
+ **REQUIRED_CUSTOMER_CONTACT_EMAIL**
520
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_CONTACT_DETAILS | type: leaf`
521
+
522
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.contact.phone must be present in the payload
523
+
524
+ #### REQUIRED_CUSTOMER_ORG_DETAILS
525
+
526
+ This is a group of **6** sub-validation(s) that all must pass: REQUIRED_ORG_ADDRESS, REQUIRED_ORG_STATE, REQUIRED_ORG_CITY, REQUIRED_ORG_CODE, REQUIRED_ORG_CONTACT_PHONE, and REQUIRED_ORG_CONTACT_EMAIL.
527
+
528
+ > **Skip if:**
529
+ > - $.message.order.fulfillments[*].customer.organization.address must **not** be present in the payload
530
+
531
+ ---
532
+
533
+ **REQUIRED_ORG_ADDRESS**
534
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_ORG_DETAILS | type: leaf`
535
+
536
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.organization.address must be present in the payload
537
+
538
+ **REQUIRED_ORG_STATE**
539
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_ORG_DETAILS | type: leaf`
540
+
541
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.organization.address must be present in the payload
542
+
543
+ **REQUIRED_ORG_CITY**
544
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_ORG_DETAILS | type: leaf`
545
+
546
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.organization.address must be present in the payload
547
+
548
+ **REQUIRED_ORG_CODE**
549
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_ORG_DETAILS | type: leaf`
550
+
551
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.organization.address must be present in the payload
552
+
553
+ **REQUIRED_ORG_CONTACT_PHONE**
554
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_ORG_DETAILS | type: leaf`
555
+
556
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.organization.address must be present in the payload
557
+
558
+ **REQUIRED_ORG_CONTACT_EMAIL**
559
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS > REQUIRED_CUSTOMER_ORG_DETAILS | type: leaf`
560
+
561
+ - $._EXTERNAL._SELF.message.order.fulfillments[*].customer.organization.address must be present in the payload
562
+
563
+ **REQUIRED_FULFILLMENT_STATE_CODE**
564
+ `group: ON_INIT_FULFILLMENTS > REQUIRED_FULFILLMENT_ITEMS | type: leaf`
565
+
566
+ - $.message.order.fulfillments[*].state.descriptor.code must be present in the payload
567
+
568
+ ### VALID_FULFILLMENT_ITEMS
569
+
570
+ This is a group of **2** sub-validation(s) that all must pass: VALID_FULFILLMENT_TYPE and VALID_FULFILLMENT_STATE_CODE.
571
+
572
+ ---
573
+
574
+ **VALID_FULFILLMENT_TYPE**
575
+ `group: ON_INIT_FULFILLMENTS > VALID_FULFILLMENT_ITEMS | type: leaf`
576
+
577
+ - All elements of $.message.order.fulfillments[*].type must be in ["ONLINE", "SEMI_ONLINE"]
578
+
579
+ > **Skip if:**
580
+ > - $.message.order.fulfillments[*].type is not in the payload
581
+
582
+ **VALID_FULFILLMENT_STATE_CODE**
583
+ `group: ON_INIT_FULFILLMENTS > VALID_FULFILLMENT_ITEMS | type: leaf`
584
+
585
+ - All elements of $.message.order.fulfillments[*].state.descriptor.code must be in ["INITIATED", "SANCTIONED", "DISBURSED"]
586
+
587
+ > **Skip if:**
588
+ > - $.message.order.fulfillments[*].state.descriptor.code is not in the payload
589
+
590
+ ### VALID_FULFILLMENT_TAGS
591
+
592
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_FULFILLMENT_TAGS and REQUIRED_CHECKLISTS_ITEM.
593
+
594
+ ---
595
+
596
+ **REQUIRED_FULFILLMENT_TAGS**
597
+ `group: ON_INIT_FULFILLMENTS > VALID_FULFILLMENT_TAGS | type: leaf`
598
+
599
+ - All elements of $.message.order.fulfillments[*].tags[*].descriptor.code must be in ["CHECKLISTS"]
600
+
601
+ > **Skip if:**
602
+ > - $.message.order.fulfillments[*].tags[*].descriptor.code is not in the payload
603
+
604
+ **REQUIRED_CHECKLISTS_ITEM**
605
+ `group: ON_INIT_FULFILLMENTS > VALID_FULFILLMENT_TAGS | type: leaf | scope: $.message.order.fulfillments[*].tags[?(@.descriptor.code == CHECKLISTS)]`
606
+
607
+ - All elements of $.message.order.fulfillments[*].tags[?(@.descriptor.code == CHECKLISTS)].list[*].descriptor.code must be in ["PERSONAL_INFORMATION", "CONSENT_APPROVAL", "SET_LOAN_AMOUNT", "KYC", "KYC_OFFLINE", "EMANDATE", "LOAN_AGREEMENT", "ACCOUNT_MONITORING", "ORGANIZATION_INFORMATION", "INDIVIDUAL_KYC", "ENTITY_KYC", "MERCHANT_AND_PRDOUCT_DETAILS", "SET_DOWN_PAYMENT", "ESIGN", "BANK_STATEMENT_AND_GST_RETURNS", "BUSINESS_AND_FINANCIAL_DOCUMENTS", "BUSINESS_KYC", "PERSONAL_DISCUSSION", "PHYSICAL_VERIFICATION", "ENACH", "PROCESSING_FEE", "MANUAL_VERIFICATION", "LIEN_MARKING", "PERSONAL_INFORMATION_TERM", "PERSONAL_INFORMATION_LAMF", "PERSONAL_INFORMATION_TERM_GST"]
608
+
609
+ ---
610
+
611
+ ## ON_SELECT_QUOTE
612
+
613
+ This group contains **2** sub-group(s)/validation(s): REQUIRED_COMMON_QUOTE_ITEMS and VALID_COMMON_QUOTE_ITEMS.
614
+
615
+ > **Skip if:**
616
+ > - $.message.order.quote.id must **not** be present in the payload
617
+
618
+ ---
619
+
620
+ ### REQUIRED_COMMON_QUOTE_ITEMS
621
+
622
+ This is a group of **7** sub-validation(s) that all must pass: REQUIRED_QUOTE_ID, REQUIRED_QUOTE_PRICE_VALUE, REQUIRED_QUOTE_PRICE_CURRENCY, REQUIRED_BREAKUP_TITLE, REQUIRED_BREAKUP_PRICE_VALUE, REQUIRED_BREAKUP_PRICE_CURRENCY, and REQUIRED_QUOTE_TTL.
623
+
624
+ ---
625
+
626
+ **REQUIRED_QUOTE_ID**
627
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
628
+
629
+ - $.message.order.quote.id must be present in the payload
630
+
631
+ **REQUIRED_QUOTE_PRICE_VALUE**
632
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
633
+
634
+ - $.message.order.quote.price.value must be present in the payload
635
+
636
+ **REQUIRED_QUOTE_PRICE_CURRENCY**
637
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
638
+
639
+ - $.message.order.quote.price.currency must be present in the payload
640
+
641
+ **REQUIRED_BREAKUP_TITLE**
642
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
643
+
644
+ - $.message.order.quote.breakup[*].title must be present in the payload
645
+
646
+ **REQUIRED_BREAKUP_PRICE_VALUE**
647
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
648
+
649
+ - $.message.order.quote.breakup[*].price.value must be present in the payload
650
+
651
+ **REQUIRED_BREAKUP_PRICE_CURRENCY**
652
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
653
+
654
+ - $.message.order.quote.breakup[*].price.currency must be present in the payload
655
+
656
+ **REQUIRED_QUOTE_TTL**
657
+ `group: ON_SELECT_QUOTE > REQUIRED_COMMON_QUOTE_ITEMS | type: leaf`
658
+
659
+ - $.message.order.quote.ttl must be present in the payload
660
+
661
+ ### VALID_COMMON_QUOTE_ITEMS
662
+
663
+ This is a group of **2** sub-validation(s) that all must pass: VALID_ENUM_BREAKUP_PRICE_CURRENCY and VALID_ENUM_BREAKUP_TITLE.
664
+
665
+ ---
666
+
667
+ **VALID_ENUM_BREAKUP_PRICE_CURRENCY**
668
+ `group: ON_SELECT_QUOTE > VALID_COMMON_QUOTE_ITEMS | type: leaf`
669
+
670
+ - At least one of $.message.order.quote.breakup[*].price.currency must be in ["INR"]
671
+
672
+ **VALID_ENUM_BREAKUP_TITLE**
673
+ `group: ON_SELECT_QUOTE > VALID_COMMON_QUOTE_ITEMS | type: leaf`
674
+
675
+ - At least one of $.message.order.quote.breakup[*].title must be in ["PRINCIPAL_AMOUNT", "INTEREST_AMOUNT", "PROCESSING_FEE", "OTHER_UPFRONT_CHARGES", "INSURANCE_CHARGES", "NET_DISBURSED_AMOUNT", "OTHER_CHARGES", "WORKING_CAPITAL_LIMIT", "CURRENT_UTLIZATION"]
676
+
677
+ ---
678
+
679
+ ## ON_INIT_PAYMENTS
680
+
681
+ This group contains **1** sub-group(s)/validation(s): REQUIRED_PAYMENT_ITEMS.
682
+
683
+ ---
684
+
685
+ ### REQUIRED_PAYMENT_ITEMS
686
+
687
+ This group contains **10** sub-group(s)/validation(s): REQUIRED_PAYMENT_ITEMS, REQUIRED_PAYMENT_ID, REQUIRED_PAYMENT_STATUS, REQUIRED_PAYMENT_COLLECTED_BY, REQUIRED_PAYMENT_BANK_ACCOUNT_NUMBER, REQUIRED_PAYMENT_BANK_CODE, REQUIRED_PAYMENT_LABEL, REQUIRED_PARAMS_DETAILS, REQUIRED_PAYMENT_URL, and REQUIRED_TIME_RANGE.
688
+
689
+ ---
690
+
691
+ **REQUIRED_PAYMENT_ITEMS**
692
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS | type: leaf`
693
+
694
+ - $.message.order.payments[*].type must be present in the payload
695
+
696
+ **REQUIRED_PAYMENT_ID**
697
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS | type: leaf`
698
+
699
+ - $.message.order.payments[*].id must be present in the payload
700
+
701
+ **REQUIRED_PAYMENT_STATUS**
702
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS | type: leaf`
703
+
704
+ - $.message.order.payments[*].status must be present in the payload
705
+
706
+ **REQUIRED_PAYMENT_COLLECTED_BY**
707
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS | type: leaf`
708
+
709
+ - $.message.order.payments[*].collected_by must be present in the payload
710
+
711
+ > **Skip if:**
712
+ > - not all elements of $.message.order.payments[*].time.label are in ["LOAN_DISBURSMENT"]
713
+
714
+ **REQUIRED_PAYMENT_BANK_ACCOUNT_NUMBER**
715
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS | type: leaf`
716
+
717
+ - $.message.order.payments[*].params.bank_account_number must be present in the payload
718
+
719
+ > **Skip if:**
720
+ > - not all elements of $.message.order.payments[*].time.label are in ["LOAN_DISBURSMENT"]
721
+
722
+ **REQUIRED_PAYMENT_BANK_CODE**
723
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS | type: leaf`
724
+
725
+ - $.message.order.payments[*].params.bank_code must be present in the payload
726
+
727
+ > **Skip if:**
728
+ > - not all elements of $.message.order.payments[*].time.label are in ["LOAN_DISBURSMENT"]
729
+
730
+ **REQUIRED_PAYMENT_LABEL**
731
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS | type: leaf`
732
+
733
+ - $.message.order.payments[*].time.label must be present in the payload
734
+
735
+ #### REQUIRED_PARAMS_DETAILS
736
+
737
+ This is a group of **3** sub-validation(s) that all must pass: REQUIRED_TRANSACTION_ID, REQUIRED_PAYMENTS_AMOUNT, and REQUIRED_PAYMENTS_CURRENCY.
738
+
739
+ > **Skip if:**
740
+ > - Not all elements of $.message.order.payments[*].status may be in ["PAID"]
741
+
742
+ ---
743
+
744
+ **REQUIRED_TRANSACTION_ID**
745
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS > REQUIRED_PARAMS_DETAILS | type: leaf`
746
+
747
+ - $.message.order.payments[*].params.transaction_id must be present in the payload
748
+
749
+ **REQUIRED_PAYMENTS_AMOUNT**
750
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS > REQUIRED_PARAMS_DETAILS | type: leaf`
751
+
752
+ - $.message.order.payments[*].params.amount must be present in the payload
753
+
754
+ **REQUIRED_PAYMENTS_CURRENCY**
755
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS > REQUIRED_PARAMS_DETAILS | type: leaf`
756
+
757
+ - $.message.order.payments[*].params.currency must be present in the payload
758
+
759
+ #### REQUIRED_PAYMENT_URL
760
+
761
+ This is a group of **1** sub-validation(s) that all must pass: REQUIRED_TIME_DURATION.
762
+
763
+ > **Skip if:**
764
+ > - $.message.order.payments[*].url must **not** be present in the payload
765
+
766
+ ---
767
+
768
+ **REQUIRED_TIME_DURATION**
769
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS > REQUIRED_PAYMENT_URL | type: leaf`
770
+
771
+ - $.message.order.payments[*].time.duration must be present in the payload
772
+
773
+ #### REQUIRED_TIME_RANGE
774
+
775
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_TIME_START_RANGE and REQUIRED_TIME_END_RANGE.
776
+
777
+ > **Skip if:**
778
+ > - Not all elements of $.message.order.payments[*].time.label may be in ["INSTALLMENT"]
779
+
780
+ ---
781
+
782
+ **REQUIRED_TIME_START_RANGE**
783
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS > REQUIRED_TIME_RANGE | type: leaf`
784
+
785
+ - $.message.order.payments[*].time.range.start must be present in the payload
786
+
787
+ **REQUIRED_TIME_END_RANGE**
788
+ `group: ON_INIT_PAYMENTS > REQUIRED_PAYMENT_ITEMS > REQUIRED_TIME_RANGE | type: leaf`
789
+
790
+ - $.message.order.payments[*].time.range.end must be present in the payload
791
+
792
+ ---
793
+
794
+ ## ON_INIT_PAYMENT_TAGS
795
+
796
+ This is a group of **3** sub-validation(s) that all must pass: VALID_PAYMENT_TAGS, REQUIRED_ACCOUNT_DETAILS, and REQUIRED_BREAKUP_DETAILS.
797
+
798
+ ---
799
+
800
+ **VALID_PAYMENT_TAGS**
801
+ `group: ON_INIT_PAYMENT_TAGS | type: leaf`
802
+
803
+ - All elements of $.message.order.payments[*].tags[*].descriptor.code must be in ["ACCOUNT_DETAILS", "BREAKUP"]
804
+
805
+ > **Skip if:**
806
+ > - $.message.order.payments[*].tags[*].descriptor.code is not in the payload
807
+
808
+ **REQUIRED_ACCOUNT_DETAILS**
809
+ `group: ON_INIT_PAYMENT_TAGS | type: leaf | scope: $.message.order.payments[*].tags[?(@.descriptor.code == ACCOUNT_DETAILS)]`
810
+
811
+ - All elements of $.message.order.payments[*].tags[?(@.descriptor.code == ACCOUNT_DETAILS)].list[*].descriptor.code must be in ["ACCOUNT_TYPE", "ACCOUNT_HOLDER_NAME"]
812
+
813
+ **REQUIRED_BREAKUP_DETAILS**
814
+ `group: ON_INIT_PAYMENT_TAGS | type: leaf | scope: $.message.order.payments[*].tags[?(@.descriptor.code == BREAKUP)]`
815
+
816
+ - All elements of $.message.order.payments[*].tags[?(@.descriptor.code == BREAKUP)].list[*].descriptor.code must be in ["PRINCIPAL_AMOUNT", "INTEREST_AMOUNT"]
817
+
818
+ ---
819
+
820
+ ## ON_INIT_CANCELLATION_TERMS
821
+
822
+ This group contains **2** sub-group(s)/validation(s): EXTERNAL_REF_TERMS and FULFILLMENT_STATE_TERMS.
823
+
824
+ ---
825
+
826
+ ### EXTERNAL_REF_TERMS
827
+
828
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_EXTERNAL_REF_MIME_TYPE and REQUIRED_EXTERNAL_REF_URL.
829
+
830
+ > **Skip if:**
831
+ > - $.message.order.cancellation_terms[*].external_ref.mimetype must **not** be present in the payload
832
+
833
+ ---
834
+
835
+ **REQUIRED_EXTERNAL_REF_MIME_TYPE**
836
+ `group: ON_INIT_CANCELLATION_TERMS > EXTERNAL_REF_TERMS | type: leaf`
837
+
838
+ - $.message.order.cancellation_terms[*].external_ref.mimetype must be present in the payload
839
+
840
+ **REQUIRED_EXTERNAL_REF_URL**
841
+ `group: ON_INIT_CANCELLATION_TERMS > EXTERNAL_REF_TERMS | type: leaf`
842
+
843
+ - $.message.order.cancellation_terms[*].external_ref.url must be present in the payload
844
+
845
+ ### FULFILLMENT_STATE_TERMS
846
+
847
+ This is a group of **2** sub-validation(s) that all must pass: REQUIRED_FULFILLMENT_STATE_CODE and REQUIRED_CANCELLATION_FEE.
848
+
849
+ > **Skip if:**
850
+ > - $.message.order.cancellation_terms[*].fulfillment_state.descriptor.code must **not** be present in the payload
851
+
852
+ ---
853
+
854
+ **REQUIRED_FULFILLMENT_STATE_CODE**
855
+ `group: ON_INIT_CANCELLATION_TERMS > FULFILLMENT_STATE_TERMS | type: leaf`
856
+
857
+ - $.message.order.cancellation_terms[*].fulfillment_state.descriptor.code must be present in the payload
858
+
859
+ **REQUIRED_CANCELLATION_FEE**
860
+ `group: ON_INIT_CANCELLATION_TERMS > FULFILLMENT_STATE_TERMS | type: leaf`
861
+
862
+ - $.message.order.cancellation_terms[*].cancellation_fee.percentage must be present in the payload
863
+
864
+ ---
865
+
866
+ ## CONFIRM_TAGS
867
+
868
+ This is a group of **3** sub-validation(s) that all must pass: REQUIRED_PAYMENT_TAGS, REQUIRED_BAP_TERMS, and REQUIRED_BPP_TERMS.
869
+
870
+ ---
871
+
872
+ **REQUIRED_PAYMENT_TAGS**
873
+ `group: CONFIRM_TAGS | type: leaf`
874
+
875
+ - All elements of $.message.order.tags[*].descriptor.code must be in ["BAP_TERMS", "BPP_TERMS"]
876
+
877
+ > **Skip if:**
878
+ > - $.message.order.tags[*].descriptor.code is not in the payload
879
+
880
+ **REQUIRED_BAP_TERMS**
881
+ `group: CONFIRM_TAGS | type: leaf | scope: $.message.order.tags[?(@.descriptor.code == BAP_TERMS)]`
882
+
883
+ - All elements of $.message.order.tags[?(@.descriptor.code == BAP_TERMS)].list[*].descriptor.code must be in ["STATIC_TERMS", "OFFLINE_CONTRACT"]
884
+
885
+ **REQUIRED_BPP_TERMS**
886
+ `group: CONFIRM_TAGS | type: leaf | scope: $.message.order.tags[?(@.descriptor.code == BPP_TERMS)]`
887
+
888
+ - All elements of $.message.order.tags[?(@.descriptor.code == BPP_TERMS)].list[*].descriptor.code must be in ["STATIC_TERMS", "OFFLINE_CONTRACT"]
889
+
890
+ ---
891
+
892
+ ## REQUIRED_ORDER_DOCUMENTS
893
+
894
+ This is a group of **5** sub-validation(s) that all must pass: REQUIRED_DOCUMENT_CODE, REQUIRED_DOCUMENT_NAME, REQUIRED_DOCUMENT_TYPE, REQUIRED_DOCUMENT_URL, and VALID_DESCRIPTOR_CODE.
895
+
896
+ ---
897
+
898
+ **REQUIRED_DOCUMENT_CODE**
899
+ `group: REQUIRED_ORDER_DOCUMENTS | type: leaf`
900
+
901
+ - $.message.order.documents[*].descriptor.code must be present in the payload
902
+
903
+ **REQUIRED_DOCUMENT_NAME**
904
+ `group: REQUIRED_ORDER_DOCUMENTS | type: leaf`
905
+
906
+ - $.message.order.documents[*].descriptor.name must be present in the payload
907
+
908
+ **REQUIRED_DOCUMENT_TYPE**
909
+ `group: REQUIRED_ORDER_DOCUMENTS | type: leaf`
910
+
911
+ - $.message.order.documents[*].mime_type must be present in the payload
912
+
913
+ **REQUIRED_DOCUMENT_URL**
914
+ `group: REQUIRED_ORDER_DOCUMENTS | type: leaf`
915
+
916
+ - $.message.order.documents[*].url must be present in the payload
917
+
918
+ **VALID_DESCRIPTOR_CODE**
919
+ `group: REQUIRED_ORDER_DOCUMENTS | type: leaf`
920
+
921
+ - All elements of $.message.order.documents[*].descriptor.code must be in ["LOAN_AGREEMENT", "LOAN_CANCELLATION"]